版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据SQL(StructuredQueryLanguage)是结构化查询语言的缩数据定义语言(DDL):DataDefinition TABLE修改表 TABLE删除表数据语言(DML):DataManipulationINSERTDELETE事务控制语言(TCL):TransactionControl提交(COMMIT)回滚(ROLLBACK):ROLLBACK语句用来取消已经进行的数据库改变,当执行DML操作后(也就是上面说的增加、修改、删除等动作),可以使用COMMIT语句来确认这种改变,或者使用ROLLBACK取消这种改变 SAVEPOINT语句用来设置保存点,使当前的事务可数据查询语言(DQL):DataQuery数据控制语言(DCL):DataControl回(REVOKE)语句,CREATEUSER语句,其中GRANT用于给用户或角色授予权限,REVOKE用于收回用户或角色已有的权限。DCL语句也不需要事务DESCDROPTABLE表名(删除表 表名(删除表中的所有数据NULL,当插入数据时,某个字段没有给值的时候,则会将NULL值作为该字段的值,可以通过DEFAULT关键字为指定的字段设SQL语句不区分 此字段不能为空(不能与DEFAULT连用RENAMEold_nameTO1 )2ALTERTABLEmyemp )3 INSERTINTOMYEMP_LYL(若不指定字段,则是全列插入——————————————————————————————————TO_DATE,当然也可以使用字符串,但是格式必须遵INSERTINTOMYEMP_LYL——————————————————————————————————UPDATESETSALARY=6000,DEPTNO=30WHEREID=1SELECT*FROM——————————————————————————————————DELETEDELETEFROMMYEMPWHEREID=1UPDATEDELETEWHERE条件Charvarchar2Char2000Varchar4000Delete、drop与truncateDelete删除表数据,逐条删除,可以回滚Drop删除表结构,不能回滚(notTruncate删除表中所有数据,速度快,不能回滚(not 字符串的处理CHAR存放定长字符,如果数据存不满定长长度,则补齐空格;VARCHAR2存放变长字符,实际数据有多少长度则占用多少。如保存字符串’OWORLD,共10个英文字母:CHAR(100):1090100VARCHAR2(100):1010字符串在数据库中的默认单位是字节,也可显式指定为字符。如CHAR(10)CHAR(10如果指定单位为字符:CHAR(10CHAR),20VARCHAR2(10),等价于VARCHAR2(10指定单位为字符:VARCHAR2(10CHAR),202-4个字ZHS16GBK:2UTF-82-4Char1,但是varcharLong:变长字节,可以2GB,但是有限制Clob:变长字节,可以4GB,建议使用 STR2):连接str1和str2两个字符串“||:连接字符串,相当于java中的“+”LENGTH(str):返回字符串长度,str是char(定长)类型,还包括后补的空格UPPER(STR)str的所有字母都大写 A1)A2只能是单一字符SELECTTRIM('E'FROM'EEELESTEAEE')FROMDUALLTRIM(C1 C2])C1左边开始数,去除C1中所有包含C2的字符,直到见到非C2中的字符为止(通常在工作中C2只是单一字符)若没有写C2FROMDUALRTRIM:同LTRIMLPAD(C1,NUM,C2):C1需要占够numC2在左边开始补足(当C2为空格时,常称为右对齐C1numC1的最后字母被删除,C2只能为单一字符SELECTLPAD(ENAME,10)FROMEMP_LYL(此处C2为空格 N])char中从m位开始取如果m=0,则从首字符开始,如果m如果没有设置nnchar的长度,则取到字符串末尾为止。字符串的首位计数从1开始。SELECTSUBSTR('DoctorWhotravelsinTARDIS',8,7)FROMDUAL结果:Who M]])char2char1(char2为全匹配,注意大小写)——从n的位置开始搜索,没有指定n1——m用于指定子串的第m——如果在char1中没有找到子串char2NUMBER(p,s)的P为数字的总位数,sNumber1—38p为*38 ——参数中的n——m——m取正数则四舍五入到小数点后第m——m0——m取负数,则四舍五入到小数点前m——m ——n和m的定义和 M])相同,只是不四舍五 N):返回mn后的余数(java的——n0则返回于n的最大整数值比如数字n=4.5ceil5,floorDATE的处理及函ns(纳秒)用7个字 ,与date功能相同,精度为用11个字节 ,则精度大于0(第8—11字节:纳秒,采用4个字节,; NLSARAMS]])SELECTTO_DATE('20080808,'YYYY"年"MM"月"DD"日HH24:MI:SS')FROMDUAL NLSPARAMS]])datefmt的格式输出字符串。Nlsparams用于指定日期语言。需要注意的是,fmtSELECT ‘YYYY”年”MM”月”DD”日FROMADD_MONTHS(date,i)datei——参数i——如果i——如果iiMONTHS_BETWEE(date1date2date1-date2date2date1晚,会得到负值。NEXT_D(date,char:来决定的(离给定日期最近的还没有过的那个正在过的也已经算过了)这种英文的。为避免麻烦,可以直接用数字“1—7”表示“周日—周六。NEXT_DAY不是明天! expr2[,expr3]]……)返回最小的 expr2[,expr3]]……)返回最大的参数类型必须一致。参数可以是date,number,char等。EXTRACT(DATEFROMDATETIME)datetimedate指定的数空值的处理及函赋值为null:显性赋值与隐性赋值CREATETABLESTUDENT_LYL(IDNUMBER(4),NAMECHAR(20),GENDERCHAR(1));INSERTINTOSTUDENT_LYL(1001,'(1002,'DESCSELECT*FROM更新为null:Updateemp(sethiredatenullwhereidis判断是否为nullis,不要用“=”(ISNULL或ISNOTNULL)任何数字与null进行运算,结果仍为null!NULL与字符串拼接,等于什么都没做!NVL(EXPR1EXPR2)null转变为非null——如果expr1null,则直接返回——如果expr1null,则返回expr2,expr2——expr1和expr2NVL2(EXPR1,EXPR2,EXPR3)nvl函数功能类似,都是将nullNvl2用来判断expr1null,如果不是null,返回expr2null数据库基FROM ……>from——Select——from指定要从哪个表中查询当我们在select正式书写应该是使用AS的SELECTENAME,SAL+NVL(COMM,0ASSAL,——AS+STRENAME,SAL+NVL(COMM,0)SAL,——用空格隔开ENAME,SAL+NVL(COMM,0)"SAL"——用双引号引起来(str中有空格,必须用FROM——在select语句中,可以在where——如果和数字比较,可以使用单引号引起,也可以不用(wherejob‘sale使用“ISNOTNULLISANDORSQLand逻辑SQL当一起使用时,AND优先级高于OR SAL>1000ANDJOB=’CLERK’ SAL>1000ORJOB=‘CLERK‘LIKE来实现——LIKE%0_SELECTENAMEFROMWHEREENAMELIKE(查询第二个字符是A的员工名字IN和NOT——比较操作符IN(list)——ListTRUE,OR就替代不了IN使用了) JOBIN(‘MANAGER’,‘CLERK‘——查询职位是MANAGER或者CLERK DEPTNONOTIN(10,1020 SALBETWEEN1500AND15003000之间的员工(15003000,并且小的写在左边,ISNULLISNOT是一个特殊的值,比较的时候不能使用“=ANY和——anyall不能单独使用,需要配合单行比较操作符“<,>,<=,>=”一起使 ANY:大于最小(大于其中一个 ANY:小于最大(小于其中一个 ALL:ALL:大于最大FROMEMP_LYLWHERESELECTENAME,SAL,JOBFROMEMP_LYLWHERESELECTENAME,SAL,JOBFROMEMP_LYLWHEREDISTINCTDISTINCTSELECTDISTINCTJOBFROMEMP_LYL——查询公司共有多少职位(DISTINCTSELECT后面,可以将多列去重SELECTDISTINCTJOB,DEPTNOFROMEMP_LYLORDERBY升序ASC可以不写,因为默认就是升序!——必须出现在selectSELECTENAME,SALFROMEMP_LYLORDERBYSALDESC查看工资情况(降序若排序的字段中含有NULL值,那么NULLSELECTename,deptno,salFROMempORDERBYdeptnoASC,salDESC;MIN(: MAX(SAL),MIN(SAL) FROMEMP——忽略NullSELECTAVG(SAL)AVG_SAL,SUM(SAL)SUM_SALFROM统计非null——若有nullSELECTCOUNT(job)total_jobFROM聚合函数都是忽略nullSELECTCOUNT(COMM)FROMSELECTCOUNT(*)FROM分GROUPGroupbygroupby子句给定的字段的值相同的记FROMEMP_LYLGROUPBY当selectgroupBYgroupbyGROUPBY分组原则是将结果集中,GROUPBY指定的这些字段的值的组合相同的记录看做SELECTCOUNT(*),JOB,DEPTNOFROMEMP_LYLGROUPBYHAVINGHAVINGHAVINGGROUPBY分组的,目的是根据过滤条件取舍某些分组的记录。HAVING必须跟在GROUPBY之后。FROMEMP_LYLGROUPBYDEPTNO2000SELECTMAX(SAL),MIN(SAL),DEPTNOFROMEMP_LYLGROUPBYDEPTNO2000SQL关联查关联查询要添加连接条件,数据库根据条件将满足的记录进行连线,从而提取这些记录中对应查询的字段值构成结果集若不添加连接条件会产生积,SELECTENAME,DNAME不添加连接条件会产生会将表的每一条记录与另一的每条记录连接一次并产生一条记录SELECTENAME,DNAMEEMP中有14条记录,DEPT中有4条记录,产生积后会生成56(14*4)通常N关联查询需要有N-1个连接条件语法:A1表 A2表 A1的字段=A2的字FROMEMP_LYLE DEPT_LYLD join左侧表作为驱动表(主要显示记录的表joinnull作为值。joinjoinSELECTFROMEMP_LYLELEFT|RIGHT|FULLOUTERJOINDEPT_LYLDONE.DEPTNO=D.DEPTNOSELECTFROMEMP_LYLWJOINEMP_LYLLONW.MGR=L.EMPNO子查SQLSELECT子句中(SELECT或from中,SELECT中类似外连接的作用SELECT语句,也可以是其他类型的语句比如DML或SELECTENAME,SALFROMEMP_LYLWHERESAL>(SELECTSALFROMEMP_LYLWHERE查询薪资大于BLAKE的人员子查询用于DDL FROMEMP_LYLELEFTOUTERJOINDEPT_LYLDONE.DEPTNO=D.DEPTNO将下面的表到一个新建的employee_LLLL子查询用于DMLDELETEFROMWHEREDEPTNO=(SELECTFROMWHERE删除与blake=——多行多列(20SELECTENAME,JOB,DEPTNOFROMEMP_LYLWHEREJOBIN(SELECTDISTINCTFROMEMP_LYLWHEREDEPTNO=20)AND20FROMEMP_LYLWHERESAL>ALL(SELECTFROMEMP_LYLWHEREDEPTNO=20)AND——用在where——只要exists后边的子查询至少返回一行数据,则整个条件返回true——NOT EXISTSSELECTDEPTNO,DNAMEFROMDEPT_LYLDWHEREEXISTS(SELECT*WHERE分页查询SQL语句是不一样的(类似方言)下面以oracle为例:1——这个ROWNUMoracleSELECTFROM(SELECTROWNUMRN,T.*FROMEMP_LYLORDERBYSALDESC)T)WHERERN>=6AND分页在oracle根据页数pagepagesize,start(DECODE函数javaSELECTSAL)FROM和decode函数功能相似的有caseif-elseSELECTCASEJOBWHEN'MANAGER'THENSAL*1.2WHEN'YST'THENSAL*1.1WHEN'SALESMAN'THENSAL*1.05ELSESALENDBONUSFROM统计yst与manager为一组,其他职位为另一组,各组共多少人SELECT'FROMGROUPBY'可以利用decode将字段值不一样的记录看做同一组,只需要FROMDEPT_LYLORDERBY排序函数 OVER ——表示根据col1分组,在分组内部根据col2OVER(PARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMPARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMEMP_LYLSELECTENAME,SAL,DEPTNO,PARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMEMP_LYL集合操作(UNION2,全并集(UNIONALL):重复的部分放两次——UNION——UNIONALL——UNION操作符对查询结果排序,UNIONALL不排序差集SELECT——orderby [UNION|UNIONALL|INTERSECT|MINUS] SELECTENAME,JOB,SALFROMEMP_LYLWHEREJOB='MANAGER'SELECTENAME,JOB,SALFROMEMP_LYLWHERESAL>2500;高级分组函数结果后再使用UNIONALL并在一起,书写起来要简便的多。ROLLUPFROMSALES_TAB_LYLGROUPORDERBYGROUPBYCUBE(A,B,C)等同于C共八中统计方式(2的元素个数次方)比rollup多了A,B,CGROU以通过参数传入,所以相比ROLLUP,CUBE的内定分组方式要灵活。FROMSALES_TAB_LYLGROUPGROUORDERBY视SQL语句中体现的角色与表一致,但其并不是FROMEMP_LYLWHERESELECT*FROMSQLCREATEORRECEVIEWV_EMP_10_LYLSELECTEMPNOID,ENAMENAME,SALSALARY,DEPTNOFROMEMP_LYLWHERESELECT语句,SELECT语句中涉及到的列,对基表中的其他列起到安全和的作用,限制数据根据视图所对应的子查询种类分为几种类型——SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函——SELECTGROUPBY子句,叫做复杂视图;——SELECT对视图进行DMLDML操作,就是对视图数据来源的基础表进行的操作。并且只能对SELECT*FROMV_EMP_10_LYLSELECT*FROMEMP_LYLSETSALARY=6000WHEREID=1001WHEREID=1001通过对视图操作的数据(如insert,update,若视图不可见,此时基表中有数据,但视图中没有数据(相当于进基表唯一不会污染基表的操作是delete,因为delete要么都么都WITHCHECKDML操作后对基表有数据污染的情DML操作的数据视图必须对其可见,否则不允许操WITHCHECKOPTIONREADONLYDMLCREATEORRECEVIEWV_EMP_10_LYLSELECTEMPNOID,ENAMENAME,SALSALARY,DEPTNOFROMEMP_LYLWHEREDEPTNO=10WITHREADONLY——例一:在数据字典USER_OBJECTSSELECTobject_nameFROMuser_objectsWHEREobject_type='VIEW';例二:在数据字典USER_VIEWSSELECTtextFROMuser_viewsWHEREview_name='V_EMP_10';例三:在数据字典USER_UPDATABLE_COLUMNSSELECTcolumn_name,insertable,updatable,deletableFROMuser_updatable_columnsWHEREtable_name=复杂视图复杂视图不允许任何DML操作,只能查看视图SELECTMAX(E.SAL)MAX_SAL,MIN(E.SAL)MIN_SAL,AVG(E.SAL)AVG_SAL,SUM(E.SAL)SUM_SAL,FROMEMP_LYLE,DEPT_LYLDWHEREE.DEPTNO=D.DEPTNOGROUPBYD.DEPTNO,D.DNAMESELECT*FROMSELECTFROMEMP_LYLE,V_EMP_DEPT_SALINFO_LYLVSELECTDROPVIEW序列生成的数字常被用作某的主键字段的值STARTWITH1INCREMENTBY新创建的序列至少要调用一次nextval后才可以使用currval。SELECTSEQ_EMP_ID_LYL.NEXTVALFROMFROMDUALINSERTINTOSELECT*FROMDROPSEQUENCEONEMP_LYL(ENAME)enamelike据库会自动使用索引IDX_EMPLYL_ENAME提高查询效率。ORDERBYjobsalary作为排序依据,可以建立复合索CREATEINDEXidx_emp_job_salONemp(job,当做下面的查询时,会自动应用索引SELECTempno,ename,sal,jobFROMemp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024广告发布合同范文
- 公共场所环境卫生承包合同
- 北京交通事故损害赔偿协议书撰写指南
- 2024年交通事故调解协议书范例
- 2024清洁工劳动合同书样本
- 商品采购协议
- 2024工程建设招标投标合同(履约银行保证书)新
- 舞蹈学校教师聘请协议书
- 2024《技术服务合同范本》
- 2024共事协议书样式
- 外墙面砖脱落维修施工方案完整
- 煤场机械车辆操作规程
- GB_T4897-2015刨花板(高清版)
- 地下水环境监测井施工设计方案(共10页)
- 围手术期重症监护
- 世界主要工业区
- 《中小学公共安全教育读本》教案
- 西南油气田对外合作项目基于PSC谈判经济评价
- 6_背景调查表
- 微生物限度方法学验证
- LNG新能源动力船舶制造项目建议书写作模板
评论
0/150
提交评论