SQL最详细的文档.docx

上传人:p** 文档编号:1062513 上传时间:2024-06-29 格式:DOCX 页数:11 大小:23.59KB
下载 相关 举报
SQL最详细的文档.docx_第1页
第1页 / 共11页
SQL最详细的文档.docx_第2页
第2页 / 共11页
SQL最详细的文档.docx_第3页
第3页 / 共11页
SQL最详细的文档.docx_第4页
第4页 / 共11页
SQL最详细的文档.docx_第5页
第5页 / 共11页
SQL最详细的文档.docx_第6页
第6页 / 共11页
SQL最详细的文档.docx_第7页
第7页 / 共11页
SQL最详细的文档.docx_第8页
第8页 / 共11页
SQL最详细的文档.docx_第9页
第9页 / 共11页
SQL最详细的文档.docx_第10页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SQL最详细的文档.docx》由会员分享,可在线阅读,更多相关《SQL最详细的文档.docx(11页珍藏版)》请在第壹文秘上搜索。

1、必需有CREATEANYPROCEDURE权限。执行procedure的时候,可能须要excute权限。或者EXCUTEANYPROCEDURE权限。假如单独给予权限,如下例所示:grantexecuteonMY_PROCEDUREtoJelly;6.存储过程(PrOCedUre)和函数(function)的区分function有返回值,并且可以干脆在执行QUCry中引用function或者运用function的返回值。两者本质上没有区分,都是P1./SQ1.程序,都可以有返回值。最根本的区分是:存储过程是吩咐,函数是表达式的一部分。比如:selectmax(NAME)FROM但是不能exec

2、max(NAME)假如此时max是函数。7.存储过程值得留意的几个地方(D在Oracle中,数据表别名不能加as(2)在存储过程中,select某一字段时.后面必需紧跟into,假如select整个记录,利用游标的话就另当别论了。(3)(SQ1.Server)存储过程一般用来完成数据查询和数据处理操作,所以在存储过程中不行以运用创建数据库对象的语句,即在存储过程中一般不能含有以下语句:CREATETAB1.E:CREATEVIEW;CREATEDEFAU1.T:number,a_idnumberconstraintb_fkreferencesa(ID),namevarchar2(20)notn

3、ull):2.外键约束的添加createtablea(IDNUMBERPRIMARYKEY,namevarchar2(20),PaSSM)rdvarchar2(8)notnull);createtableb(idnumber,a_idnumber,namevarchar2(20)notnull);altertablebaddconstraintb_fkforeignkey(a_id)referencesa(id);3.外键约束的删除altertablebdropconstraintb_fk;v.检查约束1.检查约束的建立createtableb(idnumberconstraintb_ckch

4、eck(id=0),namevarchar2(20);2.检查约束的添加Createtablepig(pigldnumber,pigNamevarchar2(20);AltertablepigaddconstraintCK_pigIDCheck(pigID=O);3.检查约束的删除altertablebdropconstraintb_fk:vi.无效化,激活或者及连约束1.无效化约束altertableadisableconstrainta_pkcascade;一运用CASCADE选项将相关的约束也无效化2.激活约束altertableaenableconstrainta_pk;3.及连约束A

5、1.TERTAB1.EtestlDROP(pk字段)CASCADECONSTRAINTS;A1.TERTAB1.EtestlDROP(pk,fk,coll)CASCADECONSTR/MNTS;b)连接OraCle中的连接可分为,内连接(innerjoin)、外连接(OUterjOin)、全连接(fulljoin),不光是Oracle,其他许多的数据库也都有这3种连接杳询方式连接可以在SE1.ECT语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜寻条件区分开来。OUTERJOIN与I.EFT相同,但两个表的角色互换FU1.1.O

6、UTERJOIN1.EFTOUTER和RIGHToUTER中全部行的超集i.内连接内连接innerjoin,这是我们常常用的杳询方式,比如SeIeCt*fromA,Bwhere.fieldl=B.field2,这样的连接就是内连接,内连接查询只能查询出匹配的记录,匹配不上的记录时无法查询出来的其中join.table指出参加连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接乂称做自连接。join_type指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接查询操作列出与连接条件匹配的数据行,它运用比较运算符比较被连接列的列值。内连接分三种:1、等值连接:在连接

7、条件中运用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的全部列,包括其中的重复列。2、不等连接:在连接条件运用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括、=、=、!、!和。3、自然连接:在连接条件中运用等于(=)运算符比较被连接列的列值,但它运用选择列表指出查询结果集合中所包括的列,并删除连接表中的1刘德华2财务部21张惠妹3人事部35张学友比如现在有需求,要进行部门表和职工表的关联暂询,并要杳询出全部的部门信息,这时候,下面的左连接查询就能够查询出想要的结果,左连接就是以leftjoin前面的表为主表,即使有些记录关联不上,主表的信息能够查询出来

8、的select*fromdeptleftouterjoinemployeeondept,deptid=employee.deptid比如现在有需求,要进行部门表和职工表的关联查询,并要查询出全部的职工信息,这时候,下面的右连接查询就能够查询出想要的结果,右连接就是以rightjoin后面的表为主表,即使有些记录关联不上,主表的信息能够查询出来select*fromdeptrightouterjoinemployeeondept,deptid=employee.deptid总之,外连接就是在关联不上的时候,把其中的部分信息杳询出来下面结合案例说明:假设有如下表:一个为投票主表,一个为投票者信息表

9、记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准1:如右接连rightjoin或rightouterjoin:右向外联接:右向外联接是左向外联接的反向联接。将返回右表的全部行。假如右表的某行在左表中没有匹配行,则将为左表返回空值。我们以右边voter表为准,则左表(VoteMaSter)中的记录只有当其ID在右边(Voter)中存在时才会显示出来,如上图,左边中ID为3.4.5.6因为这些ID右表中没有相应记录,所以没有显示!留意:多个表也同样可以做外连接,如有三个表test,testB,testC,各有A,B两列,可有如下的三个表的外连接:SE1.ECT*FROM

10、TEST1.EFTOUTERJOINTESTBONTESTA.A=TESTB.A1.EFTOUTERJOINTESTCONTESTA.A=TESTC.2:因此我们自然能理解左连接leftjoin或者Ieftouterjoin左向外联接:左向外联接的结果集包括1.EFTOUTER子句中指定的左表的全部行,而不仅仅是联接列所匹配的行。假如左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的全部选择列表列均为空值。可见,现在右边中ID在中存在时才会显示,当右边中没有相应数据时则用Nll1.1.代替!3:全连接fulljoin或者fullouterjoin,为二个表中的数据都出来,这里演示效果与

11、上一样!完整外部联接:完整外部联接返回左表和右表中的全部行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。假如表之间有匹配行,则整个结果集行包含基表的数据值。全外连接返回参加连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再运用消去重任行的并操作将上述两个结果集合并为一个结果集。在现实生活中,参照完整性约束可以削减对于全外连接的运用,一般状况下左外连接就足够了。在数据库中没有利用清楚、规范的约束来防范错误数据状况下,全外连接就变得特别有用了,你可以运用它来清理数据库中的数据。select*fro

12、mVoteMastervmfullouterjoinvotervtonvm.id=vt.id留意:mysql不支持全外连接,不过可以运用union达到同样的目的,如下:selectvm.id,vm.voteTitle,vt.ipfromVoteMasterasvmleftjoinvotervtonvm.id=vt.idunionselectvm.id,vm.VOteTitle,vt.ipfromVoteMasterasvmrightjoinvotervtonvm.id=vt.idiii.全连接fulljoin,语法为fuljoin.on.,全连接的查询结果是左外连接和右外连接查询结果的并集,即

13、使一些记录关联不上,也能够把部分信息杳询出来交叉连接(CRoSSJOlN)没有WHERE子句,它返回连接表中全部数据行的笛卡尔积,其结果交叉连接集合中的数据行数等于第一个表中符合杳询条件的数据行数乘以其次个表中符合查询条件的数据行数交叉连接(完全连接)CrOSSjoin不带where条件的没有WHERE子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以其次个表的行数等于笛卡尔积结果集的大小。(Ublel和table2交叉连接产生6*3=18条记录)等价selectvm.id,vm.voteTitle,vt.ipfromVoteMasterasvm,voterasvt留意:交叉连接

14、不带ON条件子句3.数据操作语言(DM1.)DM1.是SQ1.的一个子集,主要用于修改数据,下表列出了ORAC1.E支持的DM1.语句。语句用途INSERT向表中添加行UPDATE更新存储在表中的数据DE1.ETE删除行SE1.ECTFORUPDATE禁止其他用户访问DV1.语句正在处理的行。1.OCKTAB1.E禁止其他用户在表中运用DM1.语句3.1插入语句(insert)插入行的数据的数量和数据类型必需和列的数量和数据类型相匹配。不符合列定义的数据类型将对插入值实行隐式数据转换。NU1.1.字符串将一个NU1.1.值插入适当的列中。关键字Nlr1.1.常常用于表示将某列定义为NU1.1.

15、值。下面的两个例子是等价的。INSERTINTOcustomers(cust_id,state,post_code)V1.UE(4Ariel,NU1.1.,94501);或INSERTINTOcustomers(cust_id,state,post_code)VA1.UE(*Ariel,94501);常用语句:Insertintoaselect*fromb;一将b表中数据插入到a表中3.2更新语句(UPdate)UPDATE吩咐用于修改表中的数据。UPDATEtab_nameSET(qty,price)=(SE1.ECTSUM(qty),SUM(price)FROMOrdejIineSWHER

16、ECUStomerJd=KOH1.WHERECUStjd=4KOH1.,ANDOrdeJPeriOd=T(1.DATE(01-0ct-2000,)3.3删除语句(delete和IrUnCaIe)1.删除表的内容DE1.ETE语句用来从表中删除一行或实行数据,该吩咐包含两个语句:1、关键字DE1.ETEFROM后跟打算从中删除数据的表名。2、WHERE后跟删除条件deletefroma;一删除表中全部行的数据deletefromawhereid=1;一删除id=l的行的数据2.清空表假如你想删除表中全部数据,清空表,可以考虑运用DD1.语言的TRUNCATE语句。TRUNCATE就像没有WHERE子句的DE1.ETE吩咐一样。TR

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据库

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!