《数据库语言 》PPT课件.ppt

上传人:wuy****n92 文档编号:71668120 上传时间:2023-02-04 格式:PPT 页数:97 大小:269.99KB
返回 下载 相关 举报
《数据库语言 》PPT课件.ppt_第1页
第1页 / 共97页
《数据库语言 》PPT课件.ppt_第2页
第2页 / 共97页
点击查看更多>>
资源描述

《《数据库语言 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库语言 》PPT课件.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第五章第五章 数据库语言数据库语言SQL1概述概述nSQL的发展的发展n1974年,由年,由Boyce和和Chamberlin提出提出n19751979,IBM San Jose Research Lab的的关系数据库管理系统原型关系数据库管理系统原型System R实施了实施了这种语言这种语言nSQL-86是第一个是第一个SQL标准标准nSQL-89、SQL-92(SQL2)、SQL-99(SQL3)2概述概述n现状现状n大部分大部分DBMS产品都支持产品都支持SQL,成为操作,成为操作数据库的标准语言数据库的标准语言n有方言,支持程度不同有方言,支持程度不同3n数据定义(数据定义(DDL)

2、n定义、删除、修改关系模式(基本表)定义、删除、修改关系模式(基本表)n定义、删除视图(定义、删除视图(View)n定义、删除索引(定义、删除索引(Index)n数据操纵(数据操纵(DML)n数据查询数据查询n数据增、删、改数据增、删、改n数据控制(数据控制(DCL)n用户访问权限的授予、收回用户访问权限的授予、收回概述概述SQL的功能的功能4n交互式交互式SQLn一般一般DBMS都提供联机交互工具都提供联机交互工具n用户可直接键入用户可直接键入SQL命令对数据库进行操作命令对数据库进行操作n由由DBMS来进行解释来进行解释概述概述SQL的形式的形式5嵌入式嵌入式SQLn能将能将SQL语句嵌入

3、到高级语言(宿主语言)语句嵌入到高级语言(宿主语言)n使应用程序充分利用使应用程序充分利用SQL访问数据库的能力、访问数据库的能力、宿主语言的过程处理能力宿主语言的过程处理能力n一般需要预编译,将嵌入的一般需要预编译,将嵌入的SQL语句转化为语句转化为宿主语言编译器能处理的语句宿主语言编译器能处理的语句概述概述SQL的形式的形式6n数据定义数据定义nCreate、Drop、Altern数据操纵数据操纵n数据查询:数据查询:Selectn数据修改:数据修改:Insert、Update、Deleten数据控制数据控制nGrant、Revoke概述概述SQL的动词的动词7数据查询是数据库应用的核心功

4、能数据查询是数据库应用的核心功能n基本结构基本结构Select A1,A2,.,AnFrom r1,r2,.,rmWhere PA1,A2,.,An(p(r1r1.rm)数据查询数据查询SelectWhereFrom8Select语句的含义语句的含义n对对 From 子句中的各关系,作笛卡儿子句中的各关系,作笛卡儿积(积()n对对 Where 子句中的逻辑表达式进行选子句中的逻辑表达式进行选择(择()运算,找出符合条件的元组)运算,找出符合条件的元组n根据根据 Select 子句中的属性列表,对上子句中的属性列表,对上述结果作投影(述结果作投影()操作)操作9Select语句的含义语句的含义n

5、结果集结果集查询操作的对象是关系,结果还是一个关查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集系,是一个结果集,是一个动态数据集10Select子句子句n对应于关系代数的投影()运算,用以列出查询结果集中的期望属性11nSQL具有包的特性nSelect 子句的缺省情况是保留重复元组(ALL),可用 Distinct 去除重复元组Select Distinct sdept From StudentSelect All sdept From Studentn去除重复元组:费时n需要临时表的支持Select子句子句重复元组重复元组12Select子句子句*与属性列表与属性列表

6、n星号星号*表示所有属性表示所有属性n星号星号*:按关系模式中属性的顺序排列,:按关系模式中属性的顺序排列,并具有一定的并具有一定的逻辑数据独立性逻辑数据独立性n显式列出属性名:按用户顺序排列显式列出属性名:按用户顺序排列Select*From StudentSelect Student.*,cno,gradeFrom Student,SCWhere Student.sno=SC.sno13Select子句子句更名更名n为结果集中的某个属性改名为结果集中的某个属性改名n使结果集更具可读性使结果集更具可读性Select sno as stu_no,cno as course_no,gradeFr

7、om SCSelect sno,sname,2001-sage as birthdayFrom Student14Where 子句子句nwhere子句对应与关系代数中的子句对应与关系代数中的选择选择()n查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过Where子句来实现子句来实现n使使where子句中的逻辑表达式返回子句中的逻辑表达式返回True值值的元组,是符合要求的元组,将被选择的元组,是符合要求的元组,将被选择出来出来15Where 子句子句运算符运算符n比较:比较:、=、=、not+n确定范围:确定范围:Between A and B、Not Between A and

8、Bn确定集合:确定集合:IN、NOT INn字符匹配:字符匹配:LIKE,NOT LIKEn空值:空值:IS NULL、IS NOT NULLn多重条件:多重条件:AND、OR、NOT16Where 子句子句Liken字符匹配:字符匹配:Like、Not Liken通配符通配符n%匹配任意字符串匹配任意字符串n_ 匹配任意一个字符匹配任意一个字符n大小写敏感大小写敏感17Where 子句子句Like例:列出姓张的学生的学号、姓名。例:列出姓张的学生的学号、姓名。Select sno,snameFrom StudentWhere sname LIKE 张张%18Where 子句子句Like例:列

9、出张姓且单名的学生的学号、姓名。例:列出张姓且单名的学生的学号、姓名。Select sno,snameFrom StudentWhere sname LIKE 张张_ _19Where 子句子句转义符转义符 escape n例:列出课程名称中带有例:列出课程名称中带有_的课号及课的课号及课名名。Select cno,cnameFrom CourseWhere cname LIKE%_%escape 20From 子句子句nFrom子句对应与关系代数中的笛卡儿积子句对应与关系代数中的笛卡儿积()n列出将被扫描的关系(表)列出将被扫描的关系(表)例:列出所有学生的学号、姓名、课号、成绩。例:列出所

10、有学生的学号、姓名、课号、成绩。Select Sudent.sno,sname,SC.cno,gradeFrom Student,SCWhere Student.sno=SC.sno21From 子句子句元组变量元组变量n为为 From 子句中的关系定义子句中的关系定义元组变量元组变量n方便关系名的引用方便关系名的引用n在同一关系的笛卡儿积中进行辨别在同一关系的笛卡儿积中进行辨别例:列出与例:列出与95001同岁的同学的学号同岁的同学的学号,姓名姓名,年龄年龄SelectT.sno,T.sname,T.sageFromStudent as T,Student as SWhereS.sno=95

11、001 ANDT.sage=S.sage22Order By子句子句n指定结果集中元组的排列次序指定结果集中元组的排列次序n耗时耗时nASC(缺省)、(缺省)、DESC、未选中的属性、未选中的属性n例:列出例:列出CS系中的男生的学号、姓名、年龄,并按系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)年龄进行排列(升序)Select sno,sname,sageFrom StudentWhere sdept=CSOrder By sage ASC 23SQL的集合操作的集合操作nSQL的结果集是的结果集是“包包”n多个多个 Select 语句的结果可以进行集合操语句的结果可以进行集合操作,

12、使结果为作,使结果为“集合集合”(default)nSQL-92支持支持n参加集合操作的关系(结果集)必须是参加集合操作的关系(结果集)必须是相容相容的的24SQL的集合操作的集合操作相容相容n属性个数必须一致属性个数必须一致n对应的类型必须一致对应的类型必须一致n属性名无关属性名无关n最终结果集采用第一个结果的属性名最终结果集采用第一个结果的属性名n缺省为自动去除重复元组缺省为自动去除重复元组n除非显式说明除非显式说明ALLnOrder By放在整个语句的最后放在整个语句的最后25SQL的集合操作的集合操作并并nunion(并,对应与关系代数的(并,对应与关系代数的),标准),标准SQL都支

13、持的都支持的n采用集合的观点,合成多个查询的结果采用集合的观点,合成多个查询的结果select-without-order by.UNION ALL select-without-order by.UNION ALL select-without-order by .ORDER BY integer ASC|DESC,.26例:查询计算机系的学生例:查询计算机系的学生或者或者年龄不大于年龄不大于1919岁岁的学生,并按年龄倒排序。的学生,并按年龄倒排序。SQL的集合操作的集合操作并并27nintersect(交,对应与关系代数的(交,对应与关系代数的),并不),并不是所有的是所有的DBMS都支

14、持都支持n例:查询计算机系的学生例:查询计算机系的学生并且并且年龄不大于年龄不大于1919岁岁的学生,并按年龄倒排序。的学生,并按年龄倒排序。SQL的集合操作的集合操作交交28nexcept(差,对应与关系代数的(差,对应与关系代数的-),并不是),并不是所有的所有的DBMS都支持都支持n例:查询计算机系的男生。例:查询计算机系的男生。SQL的集合操作的集合操作差差29n数据定义语言数据定义语言(Data Definition Language)nCreate、Drop、Altern定义一组关系(基本表)、说明各关系的信息定义一组关系(基本表)、说明各关系的信息n各关系的模式各关系的模式n各属

15、性的值域各属性的值域n完整性约束完整性约束n索引索引n安全性和权限安全性和权限数据定义语言(数据定义语言(DDL)30n字符型字符型nchar(n)、varchar(n)n数值型数值型ninteger、smallintnnumeric(p,d)nreal、double、float(n)n日期日期/时间型时间型ndatentimeDDLSQL中的域类型中的域类型31n域定义语句(域定义语句(SQL-92支持)支持)n需重复使用的需重复使用的nCreate Domain stu_name varchar(20)nCreate Domain zip_code char(6)DDLSQL中的域类型中的

16、域类型32Create Table r(A1D1,A2D2,AnDn,)其中:其中:r 关系名(表名)、关系名(表名)、Ai 关系关系 r 的一个属性名的一个属性名Dn 属性属性Ai域值的域类型域值的域类型主键声明:主键声明:primary key(Aj1,Aj2,Ajvm)DDLSQL的模式定义的模式定义33Create Domain stu_name varchar(20)Create Table Student(sno char(10)primary key(sno),sname stu_name,sage smallint,ssex char(1),sdept char(2)DDLSQ

17、L的模式定义的模式定义34Create Table Course(cno char(10)primary key(cno),cname varchar(20),credit smallint)Create Table SC (sno char(10)not null,cno char(10)not null,grade smallint,primary key(sno,cno)DDLSQL的模式定义的模式定义35n用用SQL删除关系(表)删除关系(表)n将整个关系模式(表结构)彻底删除将整个关系模式(表结构)彻底删除n表中的数据也将被删除表中的数据也将被删除Drop Table rDrop T

18、able student;DDL删除表结构删除表结构 Drop36n删除表中的某属性删除表中的某属性n去除属性及相应的数据去除属性及相应的数据Alter Table r Drop ADDL修改模式修改模式 Alter37n增加表中的属性增加表中的属性n向已经存在的表中添加属性向已经存在的表中添加属性nallow nulln已有的元组中该属性的值被置为已有的元组中该属性的值被置为NullAlter Table r Add A DAlter Table student phone char(16);DDL修改模式修改模式 Alter38n属性的默认值属性的默认值n用户不提供某属性的值时,默认值被使

19、用用户不提供某属性的值时,默认值被使用n初始值初始值nTimeStampnDDL中:中:ModifyDate char(30)Default TimeStamp;Alter Table student Add ID integer Default AutoIncrement;DDL Default Value39n定义一个新的域(用户定义的域)定义一个新的域(用户定义的域)n需要重复使用的域需要重复使用的域n必须具有相同类型的属性必须具有相同类型的属性Create Domain As;Create Domain datelog As char(30)default timestampn域的删除

20、域的删除nDrop Domain datelogn各各DBMS的方法是不同的的方法是不同的Restrict/Cascaden使用该域的属性的处理使用该域的属性的处理DDL 域定义域定义40n索引是一种数据结构,是对照表、指针表索引是一种数据结构,是对照表、指针表n索引是为了索引是为了加速加速对表中元组的检索而创建的一种分散对表中元组的检索而创建的一种分散存储结构(存储结构(B树)树)n索引是对表而建立的,由除存放表的数据页面以外的索引是对表而建立的,由除存放表的数据页面以外的索引页面组成索引页面组成n索引是把双刃剑,减慢更新的速度索引是把双刃剑,减慢更新的速度n索引不是索引不是SQL标准的要求

21、标准的要求DDL 索引索引 Index41n索引的种类索引的种类n聚簇索引(聚簇索引(Clustered Index)n非聚簇索引(非聚簇索引(Non-Clustered Index)DDL 索引索引 Index42n聚簇索引(聚簇索引(Clustered Index)n表中的元组按聚簇索引的顺序物理地存放表中的元组按聚簇索引的顺序物理地存放n根级页面根级页面-中间层页面中间层页面-叶级页面(叶级页面(数据页面数据页面)n一个表中只能有一个聚簇索引一个表中只能有一个聚簇索引n更新的复杂性,需要大量的临时空间更新的复杂性,需要大量的临时空间DDL 索引索引 Index43n非聚簇索引(非聚簇索引

22、(Non-Clustered Index)n表中元组存储的物理顺序与索引的顺序无关表中元组存储的物理顺序与索引的顺序无关n叶级索引页面是指向数据页面的指针叶级索引页面是指向数据页面的指针n每个表可有多个非聚簇索引每个表可有多个非聚簇索引DDL 索引索引 Index44CREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX index-name On TableName(Column,Column,)Create Index YearIndex On Movie(year);Create Clustered Index SnoIndex On student(sno)

23、;Drop Index YearIndex;DDL 索引索引 Index45n查询与更新的评估查询与更新的评估n查询多?查询多?n更新多?更新多?n索引的覆盖索引的覆盖nWhere表达式表达式nWhere表达式的顺序表达式的顺序n索引越多越好吗?索引越多越好吗?n了解优化器了解优化器DDL 索引的使用索引的使用46n数据添加数据添加n用用SQL的插入语句,向数据库表中添加数据的插入语句,向数据库表中添加数据n按关系模式的属性顺序按关系模式的属性顺序Insert Into Student Values(95001,张三张三,27,M,CS)n按指定的属性顺序,也可以只添加部分属性(非按指定的属性

24、顺序,也可以只添加部分属性(非Null属性为必需)属性为必需)Insert Into Student(sno,sname,sage)Values(95002,李四李四,26)47n把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数n五个预定义的聚合函数五个预定义的聚合函数n平均值:平均值:AvgAvgn总和:总和:Sum Sumn最小值:最小值:MinMinn最大值:最大值:MaxMaxn计数:计数:Count CountnCount(*)Count(*)、Count(Distinct)Count(Distinct)数值数值聚合函数聚合函数48nGroup Byn

25、将查询结果集按某一列或多列的将查询结果集按某一列或多列的值值分组,值相等分组,值相等的为一组,一个分组以一个元组的形式出现的为一组,一个分组以一个元组的形式出现n只有出现在只有出现在Group By子句中的属性,才可出现在子句中的属性,才可出现在Select子句中子句中例:统计各系学生的人数。例:统计各系学生的人数。Select sdept,count(*)as stu_countFrom StudentGroup By sdept聚合函数聚合函数49nHavingn针对聚合函数的结果值进行筛选(选择),它作用于针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集分组计算结果集n跟在跟

26、在Group By子句的后面,子句的后面,没有没有Group By则针对全表则针对全表例:列出具有两门(含)以上不及格的学生的学号、不及格的课目数。Select sno,count(sno)From SCWhere grade=2聚合函数聚合函数50nHaving 与与 Where的区别的区别nWhere 决定哪些元组被选择参加运算,作用于关系中的元组nHaving 决定哪些分组符合要求,作用于分组n聚合函数的条件关系必须用Having,Where中不应出现聚合函数聚合函数聚合函数51n聚合函数忽略聚合函数忽略NullnCount:不计不计nSum:不将其计入不将其计入nAvg:具有 Null

27、 的的元组元组不参与不参与nMax/Min:不参与不参与例:例:Select count(sdept)From StudentSelect Avg(sage)From Student聚合函数聚合函数 Null52n子查询是子查询是嵌套嵌套在另一查询中的在另一查询中的 Select-From-Select-From-Where Where 表达式(表达式(Where/HavingWhere/Having)nSQLSQL允许多层嵌套,由允许多层嵌套,由内而外地内而外地进行分析,子进行分析,子查询的结果作为父查询的查找条件查询的结果作为父查询的查找条件n可以用多个简单查询来构成复杂查询,以增强可以用

28、多个简单查询来构成复杂查询,以增强SQLSQL的查询能力的查询能力n子查询中不使用子查询中不使用 Order By Order By 子句,子句,Order ByOrder By子子句只能对最终查询结果进行排序句只能对最终查询结果进行排序子查询(子查询(Subquery)53n返回单值的子查询,只返回返回单值的子查询,只返回一行一列一行一列n父查询与父查询与单值单值子查询之间用比较运算符进行连接子查询之间用比较运算符进行连接n运算符运算符:、=、=、=、例:找出与例:找出与95001同龄的学生同龄的学生Select*From StudentWhere sage=(Select sage Fro

29、m Student Where sno=95001)子查询子查询单值比较单值比较54n子查询返回子查询返回多行一列多行一列n运算符:运算符:In、All、Some(Any)、Exists子查询子查询多值多值55n标量值与子查询返回集中的某一个相等,truen IN 被用来测试多值中的成员被用来测试多值中的成员例:查询选修例:查询选修C01课程的学生的学号、姓名。课程的学生的学号、姓名。Select sno,snameFrom StudentWhere sno IN(Select sno From SCWhere cno=C01)子查询子查询多行一列多行一列子查询子查询多值成员多值成员In56例

30、:例:查询选修了查询选修了 数据库数据库的学生的学号和姓名的学生的学号和姓名Select sno,snameFrom StudentWhere sno IN(Select sno From SC Where cno IN(Select cnoFrom CourseWhere cname=数据库)子查询子查询多值成员多值成员In57n多值比较:多值比较:多行一列多行一列n父查询与多值子查询之间的比较需用父查询与多值子查询之间的比较需用All来连接来连接n标量值标量值s比子查询返回集比子查询返回集R中的每个都大时,中的每个都大时,sAll R 为为True nAll表示所有表示所有n all、al

31、l、=all、alln all 等价于等价于 not in例:找出年龄最小的学生例:找出年龄最小的学生Select*From Student Where sage Some R为为True 或或 ns Any R为为True nSome(早期用早期用Any)表示某一个表示某一个,只要有一个即返回真只要有一个即返回真n some、some、=some、somen=some 等价于等价于 in、some 不等价于不等价于 not in 子查询子查询多值比较多值比较Some/Any59例:找出不是最小年龄的学生例:找出不是最小年龄的学生Select*From studentWhere sage so

32、me(Select sage From Student)子查询子查询多值比较多值比较60例:找出具有最高平均成绩的学号及平均成绩例:找出具有最高平均成绩的学号及平均成绩Select sno,avg(grade)From SC Group By sno Having avg(grade)=all(Select avg(grade)From SC Group By sno)子查询子查询多值比较多值比较61nExists+子查询用来判断该子查询是否返回元组子查询用来判断该子查询是否返回元组n当子查询的结果集非空时,当子查询的结果集非空时,Exists为为Truen当子查询的结果集为空时,当子查询的结

33、果集为空时,Exists为为Falsen不关心子查询的具体内容,因此用不关心子查询的具体内容,因此用 Select*子查询子查询存在判断存在判断Exists62n具有外部引用的子查询,称为相关子查询(Correlated Queries)n外层元组的属性作为内层子查询的条件子查询子查询相关子查询相关子查询63 例:列出选修了例:列出选修了C01课程的学生的学号、姓名课程的学生的学号、姓名Select sno,snameFrom StudentWhere Exists(Select*From SC Where SC.sno=Student.sno And cno=C01)子查询子查询Correl

34、ated&Exists64 例:列出得过例:列出得过100分的学生的学号、姓名分的学生的学号、姓名Select sno,snameFrom StudentWhere Exists(Select*From SCWhere SC.sno=Student.sno Andgrade=100)子查询子查询Correlated&Exists65例:查询选修了例:查询选修了C01课程的学生的系主任课程的学生的系主任Select managerFrom departmentWhere Exists(Select*From studentWhere sdept=department.depid And Exis

35、ts(Select*From SCWhere SC.sno=student.sno Andcno=C01)子查询子查询Correlated&Exists66 例:列出没有选例:列出没有选C01课程的学生的学号、姓名课程的学生的学号、姓名Select sno,snameFrom StudentWhere Not Exists(Select*From SCWhere SC.sno=Student.sno Andcno=C01)子查询子查询Correlated&Not Exists67例:查询选修了所有课程的学生的姓名例:查询选修了所有课程的学生的姓名(ForAll)Select snameFrom

36、 StudentWhere Not Exists(Select*From CourseWhere Not Exists(Select*From SCWhere Student.sno=SC.sno AndSC.cno=Co)这门课他没选这门课他没选这样的课是不存在的这样的课是不存在的子查询子查询Correlated&Not Exists68nSQL-92SQL-92支持多列的成员资格测试(支持多列的成员资格测试(ASA7.0ASA7.0不支持)不支持)例:找出同系、同年龄、同性别的学生例:找出同系、同年龄、同性别的学生Select*Select*from Student as Tfrom St

37、udent as TWhere Where(T.sdept,T.sage,T.ssexT.sdept,T.sage,T.ssex)IN)IN (Select (Select sdept,sage,ssexsdept,sage,ssexsdept,sage,ssexsdept,sage,ssexFrom student as SFrom student as SWhere S.sno T.sno)Where S.sno T.sno)子查询子查询多列元组的比较69nSQL-92允许在允许在 From中使用查询表达式中使用查询表达式n必须为其取名必须为其取名例:查询平均成绩大于例:查询平均成绩大于7

38、5分的学号、姓名、平均成绩分的学号、姓名、平均成绩 Select stu_no,sname,avg_gradeFrom Student,(Select sno,avg(grade)From SCGroup By sno)as S(stu_no,avg_grade)Where Student.sno=S.stu_no Andavg_grade 75派生关系派生关系70nNULLn表示数据的缺失n一个确实存在,但我们不知道的值n对本实体此数值无意义,可能是设计上的失误n是SQL的关键字,用于任何类型描述缺失的值nUNKONWn是三值逻辑的一个真值(True/False/Unkonw)空值和连接空值

39、和连接71nNULL的运算法则n对对NULL值和其他任何值作算术运算时,值和其他任何值作算术运算时,结果为结果为NULLn对对NULL值和其他任何值作比较时,结果值和其他任何值作比较时,结果为为UNKOWNnIs Null/Is Not Null空值和连接空值和连接72nUnkownn视视True为为1,False为为0,Unkown为为1/2nAND:取小取小nOR:取大取大nNOT:取取1的补的补n真值表不必死记硬背真值表不必死记硬背空值和连接空值和连接73n关系的连接关系的连接n连接操作是以两个关系为输入、将另一个关系作为结连接操作是以两个关系为输入、将另一个关系作为结果返回果返回n笛卡

40、儿积、条件连接、自然连接、外连接笛卡儿积、条件连接、自然连接、外连接n自然连接(自然连接(Natural):):n连接条件是两个关系中具有公共名字的所有属性连接条件是两个关系中具有公共名字的所有属性对均相等,不需要其他条件对均相等,不需要其他条件n对每个相等属性对之一进行投影(去除重复属性)对每个相等属性对之一进行投影(去除重复属性)nStudent Natural Join SCnStudent SC74n关系的连接关系的连接n内连接(内连接(Inner Join):):n它是条件连接,要求参加连接的关系中至少有一它是条件连接,要求参加连接的关系中至少有一对元组对元组满足连接满足连接要求,才

41、能生成连接关系要求,才能生成连接关系n可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接n新的关系的属性集是参加连接的关系的属性的组新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性合,不去除重复属性nInner是缺省的连接方式是缺省的连接方式n也可以用笛卡儿积也可以用笛卡儿积+选择的方法实现选择的方法实现nStudent Inner Join SC on Student.sno=SC.sno75n关系的连接关系的连接n外连接(外连接(Outer Join):):n它是条件连接,且条件是必需的。它是条件连接,且条件是必需的。n若一个关系中的元组在另一个关系中没有相匹

42、配的若一个关系中的元组在另一个关系中没有相匹配的元组,则这些元组会在连接结果中出现,并在另一元组,则这些元组会在连接结果中出现,并在另一个关系的其他属性位置上放上个关系的其他属性位置上放上Null,而不是像,而不是像Inner 那样被忽略。那样被忽略。n新的关系的属性集是参加连接的关系的属性的组合,新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性不去除重复属性n有左外连接、右外连接、全外连接有左外连接、右外连接、全外连接76n关系的连接关系的连接n左外连接(左外连接(Left Outer Join):):Select*From (Student Left Outer Join SC

43、on Student.sno=SC.sno)n右外连接(右外连接(Right Outer Join):):Select*From (Student Right Outer Join SCon Student.sno=SC.sno)n全外连接(全外连接(Full Outer Join):):Select*From (Student Full Outer Join SCon Student.sno=SC.sno)77 数据库的修改数据库的修改数据库修改包括插入数据、修改数据、删除数据数据库修改包括插入数据、修改数据、删除数据数据删除(数据删除(Delete)只能对整个元组操作,不能只删除某些属性上

44、的值只能对整个元组操作,不能只删除某些属性上的值只能对一个关系起作用,若要从多个关系中删除元组,只能对一个关系起作用,若要从多个关系中删除元组,则必须对每个关系分别执行删除命令则必须对每个关系分别执行删除命令Delete From r Where P从关系从关系 r 中删除满足中删除满足P的元组,只是删除数据,而不的元组,只是删除数据,而不是定义是定义78n删除单个元组删除单个元组例:删除学号为例:删除学号为95001的学生的选课信息的学生的选课信息Delete From SCWhere sno=95001n删除多个元组删除多个元组例:删除选课而未参加考试的学生的选课信息例:删除选课而未参加考

45、试的学生的选课信息Delete From SCWhere grade is nulln删除整个关系中的所有数据删除整个关系中的所有数据例:删除所有学生的选课信息例:删除所有学生的选课信息Delete From SC79n数据插入(数据插入(Insert)n单行插入:一次只插入一个元组单行插入:一次只插入一个元组例:新增一个学生信息例:新增一个学生信息Insert Into StudentValues(98001,Gloria,25,F,CS)n多行插入:插入一个集合多行插入:插入一个集合例例:给给CS系的学生开设必修课系的学生开设必修课C05,建立选课信息,建立选课信息Insert Into

46、SCSelect sno,cno,nullFrom Student,CourseWhere sdept=CS andcno=C0580n数据更新(数据更新(Update)n改变符合条件的某个(某些)元组的改变符合条件的某个(某些)元组的属性值属性值例:将例:将95001学生转入学生转入MA系系Update StudentSet sdept=MAWhere sno=95001例:所有学生年龄加例:所有学生年龄加1Update StudentSet sage=sage+181n数据更新(数据更新(Update)例:将选修例:将选修C05课程的学生的成绩改为该课的平均课程的学生的成绩改为该课的平均成

47、绩成绩Update SCSet grade=(Select avg(grade)From SCWhere cno=C05)Where cno=C05先计算先计算avg,再做,再做Update82n视图(视图(View)n是从一个或几个基本表(或视图)中导出的虚表是从一个或几个基本表(或视图)中导出的虚表n数据库中只保存它的定义数据库中只保存它的定义n是是RDBMS提供给用户以多种角度观察数据库中提供给用户以多种角度观察数据库中数据的重要机制数据的重要机制n创建视图、删除创建视图、删除Create View v as Drop View v例:计算机系的花名册例:计算机系的花名册Create V

48、iew CS_Stu asSelect sno,sname,ssexFrom StudentWhere sdept=CS83n视图(视图(View)n视图名可以出现在任何关系名可以出现的地方视图名可以出现在任何关系名可以出现的地方例:列出计算机系的男生例:列出计算机系的男生Select sno,snameFrom CS_StuWhere ssex=M 例:建立学生平均成绩视图例:建立学生平均成绩视图Create View avg_grade(sno,avg)asSelect sno,avg(grade)From SCGroup By sno84n视图(视图(View)例:找出平均成绩大于等例:

49、找出平均成绩大于等75的学生的学生Select*From avg_gradeWhere avg=75注意:此例的使用方法是非标准的。注意:此例的使用方法是非标准的。85n视图(视图(View)n视图的更新:单表、原始属性构成的视图可以更视图的更新:单表、原始属性构成的视图可以更新(像基本表那样更新)新(像基本表那样更新)n由多表构成的视图由很大的限制由多表构成的视图由很大的限制n视图中的非原始属性也不能更新视图中的非原始属性也不能更新例:例:Update avg_gradeSet avg=100Where sno=95001avg不是原不是原始属性始属性86n视图(视图(View)视图的作用视

50、图的作用n简化用户的操作简化用户的操作n不同的用户可从不同的角度看待同一数据不同的用户可从不同的角度看待同一数据n支持一定的逻辑数据独立性支持一定的逻辑数据独立性n数据的安全性数据的安全性87n数据定义语言数据定义语言(Data Definition Language)nCreate、Drop、Altern定义一组关系(基本表)、说明各关系的信息定义一组关系(基本表)、说明各关系的信息n各关系的模式各关系的模式n各属性的值域各属性的值域n完整性约束完整性约束n索引索引n安全性和权限安全性和权限n各关系在磁盘上的物理存储结构各关系在磁盘上的物理存储结构数据定义语言(数据定义语言(DDL)88nS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁