版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 结构化查询语言sql 是结构化查询语言(structrued query language)的缩写,它实际上包括查询、定义、操纵和控制四个部分,是一种功能齐全的数据库语言。该语言早在70年代中期由boyce和chamberlin提出。由于sql具有语言简洁、方便实用、功能齐全等突出优点,很快得到推广和应用,随着关系数据库的流行,sql在计算机界和广大用户中已经得到公认。1986年10月美国国家标准局(ansi)的数据库委员会颁布了sql的美国标渡,作为标准关系数据库语言。1987年6月,国际标准化组织(1so)采纳5ql为关系数据库语言的国际标准。我国也在90年制定了sql标准。实际系
2、统中实现的sql语言往往对标准版本有所扩充。 目前,各种数据库管理系统几乎都支持sql,或者提供5ql的接口。这就使得无论是大型机、中型机,或者小型机以至微机上的各种数据库系统都有了共同的存取语言标准接口,为更广泛的数据共享开创了乐观的前景。例如,oracle、sybase的微机版微机关系数据库管理系统dbasen、foxprofor wind。ws等也支持sql。 sql作为查询标准语言的影响已波及到数据库领域之外,在人工智能、软件工程等领域的产品中也开始采用阳l作为数据和图形及其它对象的检索工具。 sql有两种使用方法,一种是以与用户交互的方式联机使用,另一种是作为子语言嵌入到其它程序设计
3、语言中使用。前者称为交互式sql,适合非计算机专业人员,即最终用户即席查询。后者称为宿主型sql,适合于程序设计人员用高级语言编写应用程序并与数据库打交道时嵌入到主语言中使用。这两种使用方法的基本语法结构一致,这里只介绍交互式sql。由于它是在联机条件下直接使用的,有时也将每一个独立的操作叫做命令。 阳l的查询语句也称作select命令,其基本形式是selectfromwhere查询块。多个查询块可以逐层嵌套执行。朗l的查询是高度非过程化的,用户只带明确提出“要干什么”,而不需要指出“怎么去干”。系统将自动对查询过程进行优化,用户感到效率高,其员大优点是查询速度快。 用户要向系统讲清楚“要干什
4、么”,需要把询问用语言规定的查询格式表示出来。sql基本查询模块的结构是: select 表达式l,表达式2,表达式n from 关系1,关系2,关系m where 条件表达式; 其中select子句中用逗号分开的表达式为查询目标。最常用也是最简单的是用逗号分开的同性名,即二维表中的列。系统对查询结果按照所需的届性进行投影运算。 from子句指出上述查询目标及下面whkre子句的条件中所涉及的所有关系的关系名。 where子句指出查询目标必须满足的条件系统根据条件进行选择运算,输出条件为真的元组集合。查询要用分号表示语句结束 在条件表达式中除了常用的比较运算符以外,可用的逻辑运算符和谓词有:
5、and逻辑与 or逻辑或 not逻辑非 in包含 n()t in不包含 exist5存在 unun集合的并 inteesect集合的交 minus集合的差 不同系统所提供的功能有所区别,这里只介绍一般支持sql的系统共有的基本功我们以一个简单的图书管理关系数据模型为基础,通过示例来介绍sql的使用方设,图书管理关系数摆模型包括以厂三个关系模式,图书(总编号,分类号,书名,作者,q版单位,单价)读者(情书证号,姓名,性别,单位,职称,地址) 借阅(惜书证号,总编号,借阅日期备注)例1;找出读者李欣所在的单位。selec丁姓名,单位from读者where姓名r9犷;例2:查看所有读者的全部情况。s
6、e乙ect,from读者;select子句里的星号 由于询问中无条件限制,故省略where于句,但要注意用分号表示查询语句结束。 例3:列出馆中所有藏书的书名及出版单位。 select distinct书名,出版单位 from图书; 询问中只对藏书种类的书名和出版单位感兴趣,无论藏书有多少副伞只列出一个即可。因此,用distinct告诉系统从查询结果中取掉重复元组。由用户决定是否去除重复元组是有实际意义的。若不选用distinct,系统默认all即无论重复与否全部给出。 例4:查找人民出版社的所有图书及单价,结果按单价降序排列,即珍贵书籍在前。seiect 书名,出版单位,单价 from图书
7、where 出版单位”人民出版社” order by单价dsc; 这里用orde硬by对查询结果提出排序要求。ast(ascendiing)表示升序。 例5:查找价格介于10和15元之间的图书,结“ select书名,作者,单价,分类号 f肋m图书 where单价betweenl0and 20 order by分类号,单价asc;e按分类号和单价升序排列。 消between表示在二考之间,低值在and之前肩值在后。其等价的表示方法是(where单价10 and单价20)。用a5c指出升序,也可以省略,由系统默认。 sql允许多重排序。order by后面按次序给出主排序关镊字和次排序关键字。输
8、出结果先按主排序关键字的值排列,在主关键字值相等的情况下,再按次关键字的值排序。 例6:查找人民出版社和科学出版社的所有图书及作者。 select书名,作者,出版单位 from图书 where出版单位in(”人民出版社”,”科学出版社”); 这里的谓词n表示包含在其后面的集合中。也可以用一个或几个or来代替,此问题的等价查询语句是: 驱iect书名,作者,出版单位 from图书 where出版单位”人民出版社”or出版单位研学出版社”; 相比之下,用1n不仅书写简洁,而且会减少出现逻辑错误的机会。由于问题中的“和”字,用户可能将or误写为and。因为同一本书不可能在两家出版单位出版,结果什么也
9、查不到。语法正确,但没有表达出询问的原意周十逻辑错误。逻辑错误是用户把“要干这个”表示成了“要干那个”,往往使查询结果“所答非所问”。 例7:查找书名以“数据库”打头的所有图书及作者。 select书名,作者 from图书 where书名 like“数据库”; 渭词iike后面必须是字符串常量,其中可以使用两个通配特 下划线代表任意一个单个字符。其作用与dos中的?相同。百分号代表任意多个,包括零个任意字符。其作用与飘)5中的,类似。例如:wh更re书名like”数据库”; 包含”数据库”的书名。 where书名iik置”数据库”i 以”数据库防尾的书名。 where作者nkz”强”; 作者姓
10、名至少四字符(两个汉字)且倒数第: 个汉字是“强”字。例8;检索借了总编号为500088和100909两本书的借书证号 5elect x。借书证号 from借问x,借问y wherc x借书证号y借书证号 and x总编号rf500088v and y总编号”100909”; 由于同一个关系在一个查询模块中出现两次wherk子句中用别名加以限定。 以上简单查询只涉及到一个关系,如果查询目标涉及到两个或几个关系,往往要;t联接运算。由于sql是高度非过程化的,用户只要在from子句中指出关系名称where子句写明联接条件即可,联接运算由系统去完成并实现优化* 例9:查找所有俗阅丁图书的读者姓名及
11、所在单位* select distinct姓名,单位 fbom读者,借阂 wher2读者借书证号借闻借书证号; 必须注意,如果不同关系中有相同的属性名,为了避免混淆应当在前面冠以关系名并用分开。用d15了inct表示无论一位读者借几本书,在输出结果中只出现一次。 例10:找出李晶所借的所有图书的书名及借阅日期。 5厦lect姓名,骄借图书:”,书名,借阅日期from图书,借阅,读者w服re读者借书证号借阅俗书证号 and借阅总编号图书总编号 and姓名毕晶”; 查询涉及到三个关系之间的自然联接,用户只需用外关键字指出联接条件,selec丁子句中允许有字符串常量(表达式的简单情况),w中斯借图书
12、:r6用户作为提醒,使查询结果易于阅读。 例11:查找价格在20元以上已借出的图书,结果按单价降序排列。 seiect,from图书,借阅where 图书总编号借阅总编号and单价20order by 单价 desc;这里select * 代表图书和借问两个关系联接后的所有属性313 饯套查询 嵌套查询是指在selectfromwhere查询块内部再嵌入另一个查询块,称为子查询,并允许多层嵌套。由于order子句是对最终查询结果的表示顺序提出要求,因此它不能出现在子查询当中例12:找出借阅了“c语言程序设计”此询问可以用联接查询来完成;select姓名,单位from读者,借阅,图书where读
13、者借书证号借闽借书证号 and倍阅总编号图书总编号 and书名rrc语言程序设计”;对于非专业用户来讲where子句中的条件可能过于复杂,往往丢掉一部分联接条下面的嵌套查询形式则清晰、自然并可体现出结构化程序设计的优点:select姓名,单位from读者where借书证号in (select借书证号 fr()m借问 where总编号in select总编号 from图书 where书名pc语言程序设计”);在执行嵌套查询时,每一个内层子查询是在上一级外层处理之前完成的,即外层用到内层的查询结果。从形式上看是自下向上进行处理的。从这个规律出发,按照手工查询的思路来组织嵌套查询就轻而易举了。 在嵌
14、套查询中最常用的是谓词in。由于查询的外层用到内层的查询结果,用户事先并不知道内层结果,这里的in就不能用一系列or来代替。另外,并非所有的嵌套查询都能用联接查询替代,有时结合使用更显得简洁、方便。例如: 例13:找出读者的姓名、所在单位,他们与玉鸣一在同一天借了书。 select姓名,单位,借阅日期 from读者,借阅 where借问借书证号读者借书证号and借阅日期in (select借书日期 from借阅,读者 where借闻借书证号读者借书证号and姓名”王鸣例14:找出藏书中比高等教育出版社的所有图书单价更高的书籍。select *from图书where单价all (select单价
15、 from图书 where出版单位”高等教育出版社”)其中all表示与子查询结果的所有单价值相比都高才算满足条件。与all对应的是any,它表示与子查询结果的任何个值相比满足条件即可。当子查询的结果不是单值,前面又有比较运算符时,一定要用ali或any指明比较条件。使用时应当特别注意询问目的要求什么。此询问要求比高等教育出版社的所有图书单价更高的书,而不是其中任何一本,故不能用any。 例15:找出藏书中所有与“数据库导论”或“数据库原理”在同一个出版单位出版的sel霓c丁,from图书w邢re出版单位any (select出版单位 卢rom图书 where书名in(”数据库导论”,“数据库原
16、理”);这里的any亦可用in代替,但其它比较运算符,如any或314使用库函数查询 阳l提供了常用的统计函数称为库丙数。这些库函致使检索功能进一步的自变量是表达式的值,是按列计算的,最简单的表达式就是属性,也就是列。阳l的库函数有:计数函数count(x)计算元组的个数; 凹unt 对列的值计算个数:求和函数sum 对某一列的值求和(属性必须是数值类型);计算平均avg 对莱一列的值计算平均值(属性必须是数值类型)求最大值max 找出一列值中的最大值;求最小值min 找出一列值中的最小值。例16:求藏书总册数。select”藏书总册数:”,cotjnt(q)from图书;例17:求科学出版社
17、图书的最高价格、最低价格、平均价格。select”最高:”,max(单价),”最低:”,m1n(单价),”平均:”,avg(单价)from图书where出版单位”科学出版社”;例18:求计算机科学系当前借问了图书的读者人数。selec丁”借书人数:”,coun丁(d15tinct借书证号)from借曰where借书证号in (select 借书证号 from读者 where单位;咐算机科学系”)如果询问的是该系当前借田图书的总人次,则应省略distinct。例19:用库函数查询例14的询问。找出藏书中比高等教育出版社的所有图书单价更高书籍,select *from图书where 单价 (sel
18、ect max(单价) from图书 where出版单位“高等教育出版社”);由于这种形式的子查询肯定只有一个结果,因此可以省赂any或all。例20:求出各个出版让图书的最高价格、最低价格、平均价格。select 出版单位,max(单价)tmin(单价)pavl(单价)from图书group by出版单位;其中group by的作用是按属性的取值对元组分组,然后对每一组分别使用库函数。在此例中,有几个出版单位就分几个组,按组分别计算最高价格、最低价格、平均价格。 请注意,如果在select子句中出现库函数,与之并列的其它项目必须也是库函数或者是groupby的对象,否则会出现逻辑错误。 例2
19、1:分别找出各个单位当前借阅图书的读者入次。 select 单位,”借书人数:”,count(借书证号) from借阅,读者where读者借书证号借阅借书证号group by 单位; 一个读者只有一个借书证号,同一个借书证号可以有若干张借书卡片,表现在借阅关系中借书证号可以重复出现。要查出该单位的借书人次,使用count(借书证号),不用distinct限定。 例22:找出藏书中各个出版单位的册数、价值总额,并按总价降序,总价相同者按册数降序排列。 sel2ct出版单位,栅数:”,count(。),”总价 from图书 group by出版单位 ord2r by sum(单价)count(,)
20、dex2;select姓名,单位from读者where借书证号in (select借书证号 fbom借阅 group by借书证号 having count(。)5);例中的having子句通常跟随在group by之后,其作用是限定检索i中必须包含库函数,否则条件可直接放到whebe子句里。 例24:分别找出借书人数超过10个人的单位及人数。 selec丁单位,“借书人数;”,count(distinct借书证号) from借问,读者 wheee读者借书证号借阅借书证号 group by单位 having count(d15tinct惜书证号)103 从此例中可见,having子句和w服re
21、子句并不矛盾wh霓re限定元组,然后用gkoup by分组,最后用having限句里不能直接用库函数作为条件表达式。 例25:找出没有借阅任何图书的读者及所在单位。 select姓名,单位 from读者 where not置xists (select, from借闻旬中一般先用在where子where借阅借书证号读者借书证号); 其中exlsts表示存在,如果子查询结果非空,则满足条件jnor exis门正叶相反,表示不存在,如果子查询结果为空,则满足条件。 本例中的查询称为相关于查询,子查询的查询条件依赖于外层的某个值(读者借书证号),这里的子查询不能只处理一次,要反复求值以供外层查询使用。
22、 在where子句中,逻辑非not可以放在任何查询条件之前,也可以用在条件表达式之前。例如notike、notin、notbetween、not单价15等等。 sql查询功能很强,表现方式也很灵活,本例也可写为如下形式:select性名单位from读者whre借书证号notin (5zlect借书证号 from借阅 where借阅借书证号读者借书证在这种写法中,于查询只需处理一次*315 集合运算 关系是元组的集合,可以进行传统的集合运算。集合运算包括并union、差mlnus、交in丁ersection。求一个s辽lect子查询的结果与另一个szl置ct子查询结果的并、查、交*集合运算是以整
23、个元组为单位的运算,因此,这些子查询目标的结构与类型必须互相匹配。集合运算结果将去掉重复元组。 例26:有一个校友通讯录关系,包含姓名、职称和单位属性关系一致。求校友与读者中具有教授、副教授职称人员的并集。s2lect姓名,职称,单位from读者where职称in(“教授”,”副教授”) union sel2ct姓名,职称,单位from校友wherc职称in(哟伊,划教授”)316 select小结 sql语言中的select句型灵活多样,所表达的语义可以1例子可知select语句的一般语法如下: sei,ect查询目标 from关系 where条件表达式 group by分组属性名havin
24、g组选择条件表达式iiorderby排序同性序ii其中,sel更ct子句的查询目标可以用以下格式表示: ldistinct251表名x rcount(。)表达式,表达式i·金式可以是由属性、库函数和常旦用算术运算符组成的公式。where子句的条件表达式可以使用下列运算 笆犬冲好话笆符 ,7逻辑运算符and,or,not集合元素包含运算符in,notin存在量词exists(se工ect子查询)集合运算符并unlon,差minus,交通配符like,likesql数据定义 sql除了具有查询功能之外,还包括数据定义、数据操纵和数据控制功能。数据定义是指对关系模式一级的定义。数据操纵是指
25、对关系中的具体数据进行增、删、改和更新等操作。数据控制是指对数据访问权限的授予或撤消。在具体介绍数据定义功能之前,首先需要了解3ql语言支持的关系数据库三级模式结构。321 sql数据库的体系结构 sql支持关系数据库的三级模式结构,如图31所示。此图清晰地描述出了数据库的三级结构、两级独立的特点。在阳l中、有些术语与传统的关系数据库不同,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,局性称为“列”。 1基本表(base table):本身独立存在的表,即实际存储在数据库中的表,而不是从其它表导出来的。 基本表可以有若干个索引。一个基本表可以跨一个或多个
26、存储文件,而一个存储文件可以存放一个或多个基本表。一个存储文件与外存储器上的一个物理文件相对应。存储文件和相关索引组成了关系的内模式,即存储模式。基本表的集合组成关系模型,即全局概念模式(数据的整体逻辑结构)。 2视图(view):从一个或几个基本表或其它视图导出来的表。视图本身并不独立存储数据,系统只保存视图的定义。访问视图时p6统将按照视图的定义从基本表中存取数据。由此可见,视图是个虚表,它动态地反映基本表中的当前数据,这与数据的静态复制不同。从用户的观点出发,基本表和视图都是关系,用sql一样访问。视图可以看作用户按照应用需要定义的外模式,即用户的局部数据逻辑结构。 sql数据定义功能是
27、指定义数据库的结构,包括定义基本表、定义视图、定义索引三个部分。322定义基本表 用sql可以定义、扩充和取消基本表。定义一个基本表相当于建立一个新的关系模式,但尚未输入数据,只是一个空关系框架。系统将基本表的数据描述存入数据字典中,供系统或用户查阅。 1定义基本表 定义基本表就是创建一个基本表,对表名(关系名称)及它所包括的各个同性名及其数据类型作出具体规定。 不同系统支持的数据类型稍有区别,但一般都支持如下数据类型: char(n) 字符串,长度为n个西文字符。 integer 全字长整数,范围从负10位整数到正ll位整数。 smalllnt 半字长整数,范围从一99999到999999。
28、 decimal(x,y) 十进制数,包括小数点及符号位共x位,其中y位小数。 float(x,y) 双字长浮点数,范围从o1e一307到o9e十308 以指数形式表下面通过例子来说明如何定义基本表。例1:create tadle图书(总编号 分类号 书名 单价char(6)no丁null,char(8),char(30),decima汇(10,3) 用not null指出该属性在输入数据时不允许有空值。在一般情况下不允许主关键字为空值,而其它属性可以有暂时不填写,或未知的值。 2。修改基本表 修改基本表是指对已经定义的基本表增加新的属性名(列),扩展关系模式。 例2:alter tabl e
29、图书 add(作者 char(8), 出版单位char(30); 新增加的同性处于表的最后一列。如果被修改的基本表原来已经有了数据各个记录中新增加的属性值全部是空值,有待以后用更新语句修改。因此,不能用alter table增加not null属性。 3取消基本表 取消基本表是把表的定义、表中的数据、其上的索引以及以该基本表为基础所建立的所有视图全部删除,并释放所占用的存储空间。 例3:drop tabie 图书;323 定义视图 数据库系统中的基本表包含多个用户共享的数据,某一个具体应用可能只使用其中一部分数据,基本表的格式也可能并不直接满足用户要求。可以从一个或几个基本表以及已有的视图中导
30、出适合具体应用的视图*用户对视图的查询与基本表一样。从用户观点来看,基本表和视图都是关系。但由于视图是虚表pt并不对应一个存储的数据文件,因此通过视图对数据的修改要受到一定的限制。 建立视图有两个作用:可简化查询命令;可限制某些用户的查询范围。第一个作用是由于在定义视图时已经对数据作丁一定范围的限定。第二个作用是通过对用户授权体现出来的。未经授权的用户不能访问任何基本表或视图,在基本表上建立局部视图之后再将视图授权给用户,就可以避免暴露全部基本表。 1定义视图 例4:建立管理工程系的读者视图,6称为glr口ader。create v12w glreader as select姓名,性别,职称,
31、地址from读者where单位”管理工程系with check option 由于所建视图的属性名与子查询的朋iect子句相同,可省赂不写。其中,withcheck option是可选择的,当要求通过视图更新或插入元组,元组必须满足视图定义条件时选用。 例5;建立各个单位当前借阅图书情况的简单统计视图,名称为dw creat配vi厦w dwreadeb(单位,借书人数,借闻人次) 5elect单位,count(distinct借书证号),count(总编号) from借阅,读者 where读者借书证号借问借书证号 group by 单位; 从此例可见,视图是基本表数据的动态宙口。对这个视图的直
32、接查询便得到各单位当前借阅图书情况的简单统计。每次查询这一视图结果将是变化的,而不是定义视图当时的静态拷贝。 2取消视图 例6:drop viewglreader ; 取消视图后,其定义以及在它基础上所建立的其它视图将自动删除。324 定义别名(同义词) 为了使用方便,用户可以为基本表、视图和已存在的同义词起别名,所起的别名作为原对象的同义词使用。例如,某应用程序中的关系名与数据库的一个视图或基本表完全对应,只是名称不同。此时不必修改应用程序,只要为基本表定义一个程序中使用的别名就行了。例7:为基本表借阅起一个同义词别名loan*createsynonym loan for借阅;例8;删除同义
33、词别名loan。drop synonym loan;325索引的建立 为了提高数据的检索效率,数据库管理员可以根据实际应用情况为一个基本表建立若干个索引。由于数据库的访问路径是由系统自动进行的,一般用户并不能自主选择所用的索引。 1建立索引 例9:为基本表借问建立一个按借书记号升序的索引,名为jsno。create index jsno on惜问(借书证号asc);例10:为基本表图书建立一个按借书记号升序的索引create uniqueindex tsno on图书(借书证号asc); 其中unique是可选项,表示每一个索引关键字的值只对应唯一的元组。 2取消索引 例11:nrop ind
34、ex jsno; 综合上述,用create和drop命令可以分别定义和取消基本表(basetable)、视图(vikw)、同义词(synonym)和索引(index)。33 sql数据操纵 以上sql的数据定义功能是对数据库中各类模式进行描述(参见图3,1sql支持的数据库体系结构),井末涉及库中的实际数据。数据操纵是指对关系中的具体数据进行增、删、改操作。331 括人数据 向基本表中插入数据的命令有两种格式,一种是向具体元组插入常量数据;另一种是把从子查询的结果输入到另一个关系中去。前者进行单元组(一行)插入,后者一次可插入多个元组。 例1:向图书基本表中新加一个元组。 基本表图书所定义的关
35、系模式结构是;图书(总编号,分类号,书名,作者,出版单位,单价)。新增元组各个列(属性)的值必须符合定义。增加一个完整元组,并且属性顺序与定义一致,可在基本表名称后面省略属性名称。insert into图书values(”446943g,jtf31138”,y算机基础”,”杨大华”,噶等教育出版社”f的屑性名称必须指明。例2:向图书基本表中插入一个元组的部分字段。insert int0图书(总编号,书名,单价)values(rr44698088”,墩据库原理及应用”,1650);刨3,建立一个各单位借阅图书情况统计基本表,名称为dw个月,向此基本表里追加一次数据。cr配att table dw
36、jsh单位 char(20), 借书人数 smallint, 借书人次,smallint);inse硬tinto dwj5h(单位,借书人数,借书人次) select单位,凹unt(distinct借书证号),凹u 取om借闭,读者 where读者借书证号借阂借书证号 group by单位2 此例与前面第二节例5中所定义的视图dwreader不同。dw、jsh是基本表数据逐月追加,保存有历史记录。而dwrader是视图动态窗口,每次查询这一视图仅反映当时情况。 332 更新数据 更新就是修改数据c在更新命令中可以用where组予以更新。若不写条件,则对所有元组更新。 例4:将例2插入的图书填上
37、作者和出版单位。 update图书 ·set作者”王为民”pq版单位”电子工业出版社” where总编号电4698088”; 切5:将所有图书的单价上调5。 update图书 set单价单价?105; 例6:将书名中包含“计算机”的书分类号改为叮p31, upnate图书 set分类号叮p31138” where书名”计算机”; 例7:把借书证号”7902070”改为”7912070”。 update读者 set借书证号”7912070” wher2借书证号”7902070”: update借阅 set借书证号”79u070“ where借书证号”7902070”2子句限定条件,对满
38、足条件的元 在修改同名属性时应当特别注意保持数据的一致性。第一个更新命令执行之后库处于不一致状态,因为读者中的借书证号已有变动,而借阅中的借书证号书未动。当下个更新命令执行过之后,数据库才又达到一个新的一致状态。333删除数据 删除命令比较简单,删除单位是元组,不是元组的部分居性。一次可以删除一个、几个元组,以致于将整个表删成空表,只保留表的结构定义。删除同名属性时也要注意保持数据的一致性。 如果要“删除”屑性,需要用更新语句将某个记录的相应届性修改成空值。若要想从结构上取消某个属性,这是屑于修改关系模式的问题,屑于数据定义操作而不是数据操纵问题。 例8:删除借书证号”9011100嘶借总编号
39、为p44698080”的借问登记。 deiete from借阅where借书证号”90llloo”and总编号p44698080”;例9:删除借书证号以90开头的所有读者登记和借阅登记deletefrom读者wher置借书证号dei。e丁efrom借阅where情书证号”90”34 sql数据控制 数据控制是指通过对数据库各种权限的授予或回收来管理数据库系统。每个用户在系统登录时都要输入用户名称和口令,通过了系统的合法性检验之后才能使用系统。用户有定义基本表的权限,有使用自己所定义的基本表的所有权限。数据库管理员(dba)对数据库的所有资源拥有所有权限,包括数据定义、数据查询、数据操纵和数据控
40、制。 数据库管理员和基本表的定义者有权将对基本表的各种权限授予别人,授权者也可以回收权限。非基本表的建立者必须经过授权才能使用不是自己定义的表。这些权限包括对基本表的修改(alter)、插入(则szrt)、删除(d2lete)、更新(upda丁e)、建立索引(1ndex)、查询(select)和all(所有权限)。 授权语句的格式如下: grant权限表ontable表名to用户名表with grant o盯ion 该语句把对指定表的某些权限授予若干用户。当选用with g只ant op丁ion短语时,被授权的用中有权将获得的权限再授予其它用户。被授权的对象可以是public(所有用户),或具
41、体用户名。 例1:将查询和更新各单位借阅图书情况统计基本表dwgbant slect,upidate 0n table dwjsh topublic,注意,系统为了防止滥用权限,with grant optiop短语不能与public同时342 回收权限 例2:回收用户liming和wangwei对基本表dwj5h的更新权限* revoke update on table dwjsr from limingwangwei; 授予和回收权限是有层次的。设用户a把自己所建立的表“通信录”的所有权限授予给了用户b,并用with grant option允许他再向别人授权。用户b又将对“通信录”的up
42、date和select权授予给用户c。后来,用户a回收丁用户b的update权限,用户c的这种权限自然也被取消了。343 sql小给 sql有语言一体化、高度非过程化、语言简洁,易于应用的特点。它可以定义关系数据模式,录入数据从而建立数据库。提供查询、更新、维护、数据库安全控制等一系列操作。亦即sql能够实现数据库系统的全部活动。其全部功能用表31便可概括出来。 sql语言虽然已经被确立为关系数据库的标准语言,但仍然存在某些不足之处。例如,sql没有提供专门的自然联接操作,必须在w邢re子句中显式地给出自然联接条件。另外,一个查询可以有很多种写法,而且执行效率也可能不同原统只能根据用户的表达方式进行优化,这就迫使用户花费时间和精力去寻求一个最佳表达方式。 阳l语言标准经历了一个不断修订和完善的过程,从阳l86、阳l89、到sql2、sql3d现在能够查询对象和表的osql(obje瓤汲l)正在开发,改进的sql将支持对象概念,井提供高级接口。 在第一章中已经提到,数据字典中存放数据库系统中有关数据的数据,称之为元数据(me施dah)。它提供对数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西赣州市石城县2026年中考第二次模拟考试道德与法治(含解析)
- 2025铁塔代维考试核心考点配套试题及参考答案
- 2026年逾期换证考试短时间备考必刷题库及浓缩答案
- 江苏邮储2024校招笔试近3年真题汇编附逐题解析答案
- 全职备考2020幼儿园保健员面试全量题库带深度解析答案
- 2023年IQC常用表单考点笔试题及答案
- 2020菏泽医专单招综评高频考点模拟题附标准答案
- 2024年小升初冲刺城南旧日事阅读测试题及标准参考答案
- 团队建设管理课件
- 物业与装修公司消防协议书
- 岫岩污泥干化项目可行性研究报告1130
- 招标代理机构遴选投标方案(技术标)
- TGXAS-成人急性中毒患者洗胃操作技术规范
- 民事起诉状诈骗范文
- 部编版八年级下册课外古诗李白《送友人》课件35张
- DL-T2528-2022电力储能基本术语
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 《中电联团体标准-220kV变电站并联直流电源系统技术规范》
- 液氮库设计事故排风方案及措施
- 保洁外包服务合同-2024
- 《焦炉煤气脱硫废液干法制酸技术规范》
评论
0/150
提交评论