2014 数据库系统概论 期末 总复习 全部知识点_第1页
2014 数据库系统概论 期末 总复习 全部知识点_第2页
2014 数据库系统概论 期末 总复习 全部知识点_第3页
2014 数据库系统概论 期末 总复习 全部知识点_第4页
2014 数据库系统概论 期末 总复习 全部知识点_第5页
已阅读5页,还剩195页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1数据库系统概论高分为用户WANG定义了一个模式ST例2CREATESCHEMAAUTHORIZATIONWANG;隐含为用户名WANG如果没有指定,那么隐含为定义模式实际上定义了一个命名空间在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。在CREATESCHEMA中可以接受CREATETABLE,CREATEVIEW和GRANT子句。CREATESCHEMAAUTHORIZATION|例3CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1COL1SMALLINT,COL2INT,COL3CHAR20,COL4NUMERIC10,3,COL5DECIMAL5,2;为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。二、删除模式DROPSCHEMA63CASCADE级联删除模式的同时把该模式中所有的数据库对象全部删除RESTRICT限制如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。当该模式中没有任何下属的对象时才能执行。例4DROPSCHEMAZHANGCASCADE;删除模式ZHANG同时该模式中定义的表TAB1也被删除332基本表的定义、删除与修改一、定义基本表CREATETABLE(,);如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。例5建立“学生”表STUDENT,学号是主码,姓名取值唯一。CREATETABLESTUDENTSNOCHAR9PRIMARYKEY,/列级完整性约束条件/SNAMECHAR20UNIQUE,/SNAME取唯一值/SSEXCHAR2,SAGESMALLINT,SDEPTCHAR20;例6建立一个“课程”表COURSECREATETABLECOURSECNOCHAR4PRIMARYKEY,CNAMECHAR40,CPNOCHAR4,CCREDITSMALLINT,FOREIGNKEYCPNOREFERENCESCOURSECNO例7建立一个“学生选课”表SCCREATETABLESCSNOCHAR9,CNOCHAR4,GRADESMALLINT,PRIMARYKEYSNO,CNO,/主码由两个属性构成,必须作为表级完整性进行定义/FOREIGNKEYSNOREFERENCESSTUDENTSNO,/表级完整性约束条件,SNO是外码,被参照表是STUDENT/FOREIGNKEYCNOREFERENCESCOURSECNO64/表级完整性约束条件,CNO是外码,被参照表是COURSE/二、数据类型SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度选用哪种数据类型取值范围要做哪些运算数据类型含义CHARN长度为N的定长字符串VARCHARN最大长度为N的变长字符串INT长整数(也可以写作INTEGER)SMALLINT短整数NUMERICP,D定点数,由P位数字(不包括符号、小数点)组成,小数后面有D位数字REAL取决于机器精度的浮点数DOUBLEPRECISION取决于机器精度的双精度浮点数FLOATN浮点数,精度至少为N位数字DATE日期,包含年、月、日,格式为YYYYMMDDTIME时间,包含一日的时、分、秒,格式为HHMMSS三、模式与表每一个基本表都属于某一个模式一个模式包含多个基本表定义基本表所属模式方法一在表名中明显地给出模式名CREATETABLE“ST”STUDENT()/模式名为ST/CREATETABLE“ST”COURCE()CREATETABLE“ST”SC()方法二在创建模式语句中同时创建表方法三设置所属的模式创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式RDBMS会使用模式列表中第一个存在的模式作为数据库对象的模式名若搜索路径中的模式名都不存在,系统将给出错误显示当前的搜索路径SHOWSEARCH_PATH搜索路径的当前默认值是USER,PUBLICDBA用户可以设置搜索路径,然后定义基本表SETSEARCH_PATHTO“ST”,PUBLIC;CREATETABLESTUDENT()结果建立了STSTUDENT基本表。RDBMS发现搜索路径中第一个模式名ST存在,就把该65模式作为基本表STUDENT所属的模式。四、修改基本表ALTERTABLEADD完整性约束DROPALTERCOLUMN;例8向STUDENT表增加“入学时间”列,其数据类型为日期型。ALTERTABLESTUDENTADDS_ENTRANCEDATE;不论基本表中原来是否已有数据,新增加的列一律为空值。例9将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。ALTERTABLESTUDENTALTERCOLUMNSAGEINT;例10增加课程名称必须取唯一值的约束条件。ALTERTABLECOURSEADDUNIQUECNAME五、删除基本表DROPTABLERESTRICT|CASCADE;RESTRICT删除表是有限制的。欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除CASCADE删除该表没有限制。在删除基本表的同时,相关的依赖对象一起删除例11删除STUDENT表DROPTABLESTUDENTCASCADE基本表定义被删除,数据被删除表上建立的索引、视图、触发器等一般也将被删除例12若表上建有视图,选择RESTRICT时表不能删除CREATEVIEWIS_STUDENTASSELECTSNO,SNAME,SAGEFROMSTUDENTWHERESDEPTIS;DROPTABLESTUDENTRESTRICTERRORCANNOTDROPTABLESTUDENTBECAUSEOTHEROBJECTSDEPENDONIT例12如果选择CASCADE时可以删除表,视图也自动被删除DROPTABLESTUDENTCASCADENOTICEDROPCASCADESTOVIEWIS_STUDENTSELECTFROMIS_STUDENTERRORRELATION“IS_STUDENT“DOESNOTEXISTDROPTABLE时,SQL99与3个RDBMS的处理策略比较序标准及主流数据库的处理方式SQL99KINGBASEESORACLE9IMSSQLSERVER200066号依赖基本表的对象RCRC1索引无规定2视图保留保留保留3DEFAULT,PRIMARYKEY,CHECK(只含该表的列)NOTNULL等约束4FOREIGNKEY5TRIGGER6函数或存储过程保留保留保留保留保留R表示RESTRICT,C表示CASCADE表示不能删除基本表,表示能删除基本表,保留表示删除基本表后,还保留依赖对象333索引的建立与删除建立索引的目的加快查询速度谁可以建立索引DBA或表的属主(即建立表的人)DBMS一般会自动建立以下列上的索引PRIMARYKEYUNIQUE谁维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用哪些索引索引RDBMS中索引一般采用B树、HASH索引来实现B树索引具有动态平衡的优点HASH索引具有查找速度快的特点采用B树,还是HASH索引则由具体的RDBMS来决定索引是关系数据库的内部实现技术,属于内模式的范畴CREATEINDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引一、建立索引语句格式CREATEUNIQUECLUSTERINDEXON,;例13CREATECLUSTERINDEXSTUSNAMEONSTUDENTSNAME;在STUDENT表的SNAME(姓名)列上建立一个聚簇索引67在最经常查询的列上建立聚簇索引以提高查询效率一个基本表上最多只能建立一个聚簇索引经常更新的列不宜建立聚簇索引例14为学生课程数据库中的STUDENT,COURSE,SC三个表建立索引。CREATEUNIQUEINDEXSTUSNOONSTUDENTSNO;CREATEUNIQUEINDEXCOUCNOONCOURSECNO;CREATEUNIQUEINDEXSCNOONSCSNOASC,CNODESC;STUDENT表按学号升序建唯一索引COURSE表按课程号升序建唯一索引SC表按学号升序和课程号降序建唯一索引二、删除索引DROPINDEX;删除索引时,系统会从数据字典中删去有关该索引的描述。例15删除STUDENT表的STUSNAME索引DROPINDEXSTUSNAME;34数据查询语句格式SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;341单表查询查询仅涉及一个表一、选择表中的若干列二、选择表中的若干元组三、ORDERBY子句四、聚集函数五、GROUPBY子句一、选择表中的若干列1查询指定列例1查询全体学生的学号与姓名。SELECTSNO,SNAMEFROMSTUDENT;例2查询全体学生的姓名、学号、所在系。SELECTSNAME,SNO,SDEPTFROMSTUDENT;682查询全部列选出所有属性列在SELECT关键字后面列出所有列名将指定为例3查询全体学生的详细记录。SELECTSNO,SNAME,SSEX,SAGE,SDEPTFROMSTUDENT;或SELECTFROMSTUDENT;3查询经过计算的值SELECT子句的可以为算术表达式字符串常量函数列别名例4查全体学生的姓名及其出生年份。SELECTSNAME,2004SAGE/假定当年的年份为2004年/FROMSTUDENT;输出结果SNAME2004SAGE李勇1984刘晨1985王敏1986张立1985例5查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名SELECTSNAME,YEAROFBIRTH,2004SAGE,ISLOWERSDEPTFROMSTUDENT;输出结果SNAMEYEAROFBIRTH2004SAGEISLOWERSDEPT李勇YEAROFBIRTH1984CS刘晨YEAROFBIRTH1985IS王敏YEAROFBIRTH1986MA张立YEAROFBIRTH1985IS使用列别名改变查询结果的列标题SELECTSNAMENAME,YEAROFBIRTHBIRTH,2000SAGEBIRTHDAY,LOWERSDEPTDEPARTMENTFROMSTUDENT;69输出结果NAMEBIRTHBIRTHDAYDEPARTMENT李勇YEAROFBIRTH1984CS刘晨YEAROFBIRTH1985IS王敏YEAROFBIRTH1986MA张立YEAROFBIRTH1985IS二、选择表中的若干元组1消除取值重复的行如果没有指定DISTINCT关键词,则缺省为ALL例6查询选修了课程的学生学号。SELECTSNOFROMSC;等价于SELECTALLSNOFROMSC;执行上面的SELECT语句后,结果为SNO200215121200215121200215121200215122200215122指定DISTINCT关键词,去掉表中重复的行SELECTDISTINCTSNOFROMSC;执行结果SNO2002151212002151222查询满足条件的元组表34常用的查询条件查询条件谓词比较,,NOTIN例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECTSNAME,SSEXFROMSTUDENTWHERESDEPTINIS,MA,CS例13查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。SELECTSNAME,SSEXFROMSTUDENTWHERESDEPTNOTINIS,MA,CS4字符匹配谓词NOTLIKEESCAPE1匹配串为固定字符串例14查询学号为200215121的学生的详细情况。SELECTFROMSTUDENTWHERESNOLIKE200215121;等价于SELECT71FROMSTUDENTWHERESNO200215121;2匹配串为含通配符的字符串例15查询所有姓刘学生的姓名、学号和性别。SELECTSNAME,SNO,SSEXFROMSTUDENTWHERESNAMELIKE刘;例16查询姓“欧阳“且全名为三个汉字的学生的姓名。SELECTSNAMEFROMSTUDENTWHERESNAMELIKE欧阳_;例17查询名字中第2个字为“阳“字的学生的姓名和学号。SELECTSNAME,SNOFROMSTUDENTWHERESNAMELIKE_阳;例18查询所有不姓刘的学生姓名。SELECTSNAME,SNO,SSEXFROMSTUDENTWHERESNAMENOTLIKE刘;3使用换码字符将通配符转义为普通字符例19查询DB_DESIGN课程的课程号和学分。SELECTCNO,CCREDITFROMCOURSEWHERECNAMELIKEDB_DESIGNESCAPE;例20查询以“DB_“开头,且倒数第3个字符为I的课程的详细情况。SELECTFROMCOURSEWHERECNAMELIKEDB_I_ESCAPE;ESCAPE表示“”为换码字符5涉及空值的查询谓词ISNULL或ISNOTNULL“IS”不能用“”代替例21某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。SELECTSNO,CNOFROMSCWHEREGRADEISNULL例22查所有有成绩的学生学号和课程号。SELECTSNO,CNO72FROMSCWHEREGRADEISNOTNULL;6多重条件查询逻辑运算符AND和OR来联结多个查询条件AND的优先级高于OR可以用括号改变优先级可用来实现多种其他谓词NOTINNOTBETWEENAND例23查询计算机系年龄在20岁以下的学生姓名。SELECTSNAMEFROMSTUDENTWHERESDEPTCSANDSAGE)计算总和SUM(DISTINCT|ALL)计算平均值AVG(DISTINCT|ALL)最大最小值MAX(DISTINCT|ALL)MIN(DISTINCT|ALL)例26查询学生总人数。SELECTCOUNTFROMSTUDENT;例27查询选修了课程的学生人数。SELECTCOUNTDISTINCTSNOFROMSC;例28计算1号课程的学生平均成绩。SELECTAVGGRADEFROMSCWHERECNO1;例29查询选修1号课程的学生最高分数。SELECTMAXGRADEFROMSCWHERCNO1;例30查询学生200215012选修课程的总学分数。SELECTSUMCCREDITFROMSC,COURSEWHERSNO200215012ANDSCCNOCOURSECNO五、GROUPBY子句GROUPBY子句分组细化聚集函数的作用对象未对查询结果分组,聚集函数将作用于整个查询结果对查询结果分组后,聚集函数将分别作用于每个组作用对象是查询的中间结果表按指定的一列或多列值分组,值相等的为一组例31求各个课程号及相应的选课人数。SELECTCNO,COUNTSNOFROMSCGROUPBYCNO;查询结果CNOCOUNTSNO12223474344433548例32查询选修了3门以上课程的学生学号。SELECTSNOFROMSCGROUPBYSNOHAVINGCOUNT3;HAVING短语与WHERE子句的区别作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组HAVING短语作用于组,从中选择满足条件的组。342连接查询连接查询同时涉及多个表的查询连接条件或连接谓词用来连接两个表的条件一般格式BETWEENAND连接字段连接谓词中的列名称连接条件中的各连接字段类型必须是可比的,但名字不必是相同的连接操作的执行过程嵌套循环法NESTEDLOOP首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。重复上述操作,直到表1中的全部元组都处理完毕排序合并法SORTMERGE常用于连接首先按连接属性对表1和表2排序对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续重复上述操作,直到表1或表2中的全部元组都处理完毕为止索引连接INDEXJOIN75对表2按连接字段建立索引对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组一、等值与非等值连接查询等值连接连接运算符为例33查询每个学生及其选修课程的情况SELECTSTUDENT,SCFROMSTUDENT,SCWHERESTUDENTSNOSCSNO;查询结果STUDENTSNOSNAMESSEXSAGESDEPTSCSNOCNOGRADE200215121李勇男20CS200215121192200215121李勇男20CS200215121285200215121李勇男20CS200215121388200215122刘晨女19CS200215122290200215122刘晨女19CS200215122380自然连接例34对例33用自然连接完成。SELECTSTUDENTSNO,SNAME,SSEX,SAGE,SDEPT,CNO,GRADEFROMSTUDENT,SCWHERESTUDENTSNOSCSNO;二、自身连接自身连接一个表与其自己进行连接需要给表起别名以示区别由于所有属性名都是同名属性,因此必须使用别名前缀例35查询每一门课的间接先修课(即先修课的先修课)SELECTFIRSTCNO,SECONDCPNOFROMCOURSEFIRST,COURSESECONDWHEREFIRSTCPNOSECONDCNO;FIRST表(COURSE表)76SECOND表(COURSE表)查询结果CNOPCNO173556三、外连接外连接与普通连接的区别普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出例36改写例33SELECTSTUDENTSNO,SNAME,SSEX,SAGE,SDEPT,CNO,GRADEFROMSTUDENTLEFTOUTJOINSCONSTUDENTSNOSCSNO;执行结果STUDENTSNOSNAMESSEXSAGESDEPTCNOGRADE200215121李勇男20CS192200215121李勇男20CS285200215121李勇男20CS388200215122刘晨女19CS290200215122刘晨女19CS380200215123王敏女18MANULLNULL200215125张立男19ISNULLNULL左外连接列出左边关系(如本例STUDENT)中所有的元组右外连接列出右边关系中所有的元组四、复合条件连接复合条件连接WHERE子句中含多个连接条件例37查询选修2号课程且成绩在90分以上的所有学生SELECTSTUDENTSNO,SNAMEFROMSTUDENT,SC77WHERESTUDENTSNOSCSNOAND/连接谓词/SCCNO2ANDSCGRADE90;/其他限定条件/例38查询每个学生的学号、姓名、选修的课程名及成绩SELECTSTUDENTSNO,SNAME,CNAME,GRADEFROMSTUDENT,SC,COURSE/多表连接/WHERESTUDENTSNOSCSNOANDSCCNOCOURSECNO;343嵌套查询嵌套查询概述一个SELECTFROMWHERE语句称为一个查询块将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询SELECTSNAME/外层查询/父查询/FROMSTUDENTWHERESNOIN(SELECTSNO/内层查询/子查询/FROMSCWHERECNO2);子查询的限制不能使用ORDERBY子句层层嵌套方式反映了SQL语言的结构化有些嵌套查询可以用连接运算替代不相关子查询子查询的查询条件不依赖于父查询由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。相关子查询子查询的查询条件依赖于父查询首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表然后再取外层表的下一个元组重复这一过程,直至外层表全部检查完为止一、带有IN谓词的子查询例39查询与“刘晨”在同一个系学习的学生。此查询要求可以分步来完成确定“刘晨”所在系名SELECTSDEPTFROMSTUDENTWHERESNAME刘晨;结果为CS查找所有在IS系学习的学生。78SELECTSNO,SNAME,SDEPTFROMSTUDENTWHERESDEPTCS;结果为SNOSNAMESDEPT200215121李勇CS200215122刘晨CS将第一步查询嵌入到第二步查询的条件中SELECTSNO,SNAME,SDEPTFROMSTUDENTWHERESDEPTINSELECTSDEPTFROMSTUDENTWHERESNAME刘晨;此查询为不相关子查询。用自身连接完成例39查询要求SELECTS1SNO,S1SNAME,S1SDEPTFROMSTUDENTS1,STUDENTS2WHERES1SDEPTS2SDEPTANDS2SNAME刘晨;例40查询选修了课程名为“信息系统”的学生学号和姓名SELECTSNO,SNAME最后在STUDENT关系中FROMSTUDENT取出SNO和SNAMEWHERESNOINSELECTSNO然后在SC关系中找出选FROMSC修了3号课程的学生学号WHERECNOINSELECTCNO首先在COURSE关系中找出FROMCOURSE“信息系统”的课程号,为3号WHERECNAME信息系统用连接查询实现例40SELECTSNO,SNAMEFROMSTUDENT,SC,COURSEWHERESTUDENTSNOSCSNOANDSCCNOCOURSECNOANDCOURSECNAME信息系统;二、带有比较运算符的子查询79当能确切知道内层查询返回单值时,可用比较运算符(,)。与ANY或ALL谓词配合使用例假设一个学生只可能在一个系学习,并且必须属于一个系,则在例39可以用代替INSELECTSNO,SNAME,SDEPTFROMSTUDENTWHERESDEPTSELECTSDEPTFROMSTUDENTWHERESNAME刘晨;子查询一定要跟在比较符之后错误的例子SELECTSNO,SNAME,SDEPTFROMSTUDENTWHERESELECTSDEPTFROMSTUDENTWHERESNAME刘晨SDEPT;例41找出每个学生超过他选修课程平均成绩的课程号。SELECTSNO,CNOFROMSCXWHEREGRADESELECTAVGGRADEFROMSCYWHEREYSNOXSNO可能的执行过程1从外层查询中取出SC的一个元组X,将元组X的SNO值(200215121)传送给内层查询。SELECTAVGGRADEFROMSCYWHEREYSNO2002151212执行内层查询,得到值88(近似值),用该值代替内层查询,得到外层查询SELECTSNO,CNOFROMSCXWHEREGRADE88;3执行这个查询,得到(200215121,1)(200215121,3)4外层查询取出下一个元组重复做上述1至3步骤,直到外层的SC元组全部处理完毕。结果为(200215121,1)(200215121,3)(200215122,2)80三、带有ANY(SOME)或ALL谓词的子查询谓词语义ANY任意一个值ALL所有值需要配合使用比较运算符ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值ANY大于等于子查询结果中的某个值ALL大于等于子查询结果中的所有值)ANY不等于子查询结果中的某个值(或)ALL不等于子查询结果中的任何一个值例42查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄SELECTSNAME,SAGEFROMSTUDENTWHERESAGECS/父查询块中的条件/结果SNAMESAGE王敏18张立19执行过程1RDBMS执行此查询时,首先处理子查询,找出CS系中所有学生的年龄,构成一个集合20,192处理父查询,找所有不是CS系且年龄小于20或19的学生用聚集函数实现例42SELECTSNAME,SAGEFROMSTUDENTWHERESAGECS81例43查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。方法一用ALL谓词SELECTSNAME,SAGEFROMSTUDENTWHERESAGECS方法二用聚集函数SELECTSNAME,SAGEFROMSTUDENTWHERESAGECS表35ANY(或SOME),ALL谓词与聚集函数、IN谓词的等价转换关系四、带有EXISTS谓词的子查询1EXISTS谓词存在量词带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“TRUE”或逻辑假值“FALSE”。若内层查询结果非空,则外层的WHERE子句返回真值若内层查询结果为空,则外层的WHERE子句返回假值由EXISTS引出的子查询,其目标列表达式通常都用,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义2NOTEXISTS谓词若内层查询结果非空,则外层的WHERE子句返回假值若内层查询结果为空,则外层的WHERE子句返回真值例44查询所有选修了1号课程的学生姓名。思路分析本查询涉及STUDENT和SC关系在STUDENT中依次取每个元组的SNO值,用此值去检查SC关系若SC中存在这样的元组,其SNO值等于此STUDENTSNO值,并且其CNO1,则取此STUDENTSNAME送入结果关系用嵌套查询82SELECTSNAMEFROMSTUDENTWHEREEXISTSSELECTFROMSCWHERESNOSTUDENTSNOANDCNO1;用连接运算SELECTSNAMEFROMSTUDENT,SCWHERESTUDENTSNOSCSNOANDSCCNO1例45查询没有选修1号课程的学生姓名。SELECTSNAMEFROMSTUDENTWHERENOTEXISTSSELECTFROMSCWHERESNOSTUDENTSNOANDCNO1;不同形式的查询间的替换一些带EXISTS或NOTEXISTS谓词的子查询不能被其他形式的子查询等价替换所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换用EXISTS/NOTEXISTS实现全称量词难点SQL语言中没有全称量词(FORALL)可以把带有全称量词的谓词转换为等价的带有存在量词的谓词XPXP例例39查询与“刘晨”在同一个系学习的学生。可以用带EXISTS谓词的子查询替换SELECTSNO,SNAME,SDEPTFROMSTUDENTS1WHEREEXISTSSELECTFROMSTUDENTS2WHERES2SDEPTS1SDEPTANDS2SNAME刘晨;例46查询选修了全部课程的学生姓名。SELECTSNAMEFROMSTUDENTWHERENOTEXISTS(SELECTFROMCOURSEWHERENOTEXISTSSELECTFROMSC83WHERESNOSTUDENTSNOANDCNOCOURSECNO);用EXISTS/NOTEXISTS实现逻辑蕴函难点SQL语言中没有蕴函IMPLICATION逻辑运算可以利用谓词演算将逻辑蕴函谓词等价转换为PQPQ例47查询至少选修了学生200215122选修的全部课程的学生号码。解题思路用逻辑蕴函表达查询学号为X的学生,对所有的课程Y,只要200215122学生选修了课程Y,则X也选修了Y。形式化表示用P表示谓词“学生200215122选修了课程Y”用Q表示谓词“学生X选修了课程Y”则上述查询为YPQ等价变换YPQYPQYPQYPQ变换后语义不存在这样的课程Y,学生200215122选修了Y,而学生X没有选。用NOTEXISTS谓词表示SELECTDISTINCTSNOFROMSCSCXWHERENOTEXISTSSELECTFROMSCSCYWHERESCYSNO200215122ANDNOTEXISTSSELECTFROMSCSCZWHERESCZSNOSCXSNOANDSCZCNOSCYCNO;344集合查询集合操作的种类并操作UNION交操作INTERSECT差操作EXCEPT参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同例48查询计算机科学系的学生及年龄不大于19岁的学生。方法一SELECT84FROMSTUDENTWHERESDEPTCSUNIONSELECTFROMSTUDENTWHERESAGE19;345SELECT语句的一般格式SELECTALL|DISTINCT别名,别名FROM别名,别名WHEREGROUPBYHAVINGORDERBYASC|DESC35数据更新351插入数据两种插入数据方式1插入元组2插入子查询结果可以一次插入多个元组一、插入元组语句格式INSERTINTO,VALUES,功能将新元组插入指定表中86INTO子句属性列的顺序可与表定义中的顺序不一致没有指定属性列指定部分属性列VALUES子句提供的值必须与INTO子句匹配值的个数值的类型例1将一个新学生元组(学号200215128;姓名陈冬;性别男;所在系IS;年龄18岁)插入到STUDENT表中。INSERTINTOSTUDENTSNO,SNAME,SSEX,SDEPT,SAGEVALUES200215128,陈冬,男,IS,18;例2将学生张成民的信息插入到STUDENT表中。INSERTINTOSTUDENTVALUES200215126,张成民,男,18,CS例3插入一条选课记录200215128,1。INSERTINTOSCSNO,CNOVALUES200215128,1;RDBMS将在新插入记录的GRADE列上自动地赋空值。或者INSERTINTOSCVALUES200215128,1,NULL;二、插入子查询结果语句格式INSERTINTO,子查询;功能将子查询结果插入指定表中INTO子句与插入元组类似子查询SELECT子句目标列必须与INTO子句匹配值的个数值的类型例4对每一个系,求学生的平均年龄,并把结果存入数据库。第一步建表87CREATETABLEDEPT_AGESDEPTCHAR15/系名/AVG_AGESMALLINT;/学生平均年龄/第二步插入数据INSERTINTODEPT_AGESDEPT,AVG_AGESELECTSDEPT,AVGSAGEFROMSTUDENTGROUPBYSDEPT;RDBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性NOTNULL约束UNIQUE约束值域约束342修改数据语句格式UPDATESET,WHERE;功能修改指定表中满足WHERE子句条件的元组SET子句指定修改方式要修改的列修改后取值WHERE子句指定要修改的元组缺省表示要修改表中的所有元组三种修改方式1修改某一个元组的值例5将学生200215121的年龄改为22岁UPDATESTUDENTSETSAGE22WHERESNO200215121;2修改多个元组的值例6将所有学生的年龄增加1岁UPDATESTUDENTSETSAGESAGE1;3带子查询的修改语句88例7将计算机科学系全体学生的成绩置零。UPDATESCSETGRADE0WHERECSSELETESDEPTFROMSTUDENTWHERESTUDENTSNOSCSNO;RDBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性NOTNULL约束UNIQUE约束值域约束353删除数据语句格式DELETEFROMWHERE;功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要删除表中的全部元组,表的定义仍在字典中三种删除方式1删除某一个元组的值例8删除学号为200215128的学生记录。DELETEFROMSTUDENTWHERESNO200215128;2删除多个元组的值例9删除所有的学生选课记录。DELETEFROMSC;3带子查询的删除语句例10删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERECSSELETESDEPTFROMSTUDENTWHERESTUDENTSNOSCSNO;8936视图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不存放视图对应的数据基表中的数据发生变化,从视图中查询出的数据也随之改变基于视图的操作查询删除受限更新定义基于该视图的新视图361定义视图一、建立视图语句格式CREATEVIEW,ASWITHCHECKOPTION;组成视图的属性列名全部省略或全部指定子查询不允许含有ORDERBY子句和DISTINCT短语RDBMS执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。例1建立信息系学生的视图。CREATEVIEWIS_STUDENTASSELECTSNO,SNAME,SAGEFROMSTUDENTWHERESDEPTIS;例2建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATEVIEWIS_STUDENTASSELECTSNO,SNAME,SAGEFROMSTUDENTWHERESDEPTISWITHCHECKOPTION;对IS_STUDENT视图的更新操作修改操作自动加上SDEPTIS的条件删除操作自动加上SDEPTIS的条件插入操作自动检查SDEPT属性值是否为IS90如果不是,则拒绝该插入操作如果没有提供SDEPT属性值,则自动定义SDEPT为IS基于多个基表的视图例3建立信息系选修了1号课程的学生视图。CREATEVIEWIS_S1SNO,SNAME,GRADEASSELECTSTUDENTSNO,SNAME,GRADEFROMSTUDENT,SCWHERESDEPTISANDSTUDENTSNOSCSNOANDSCCNO1;基于视图的视图例4建立信息系选修了1号课程且成绩在90分以上的学生的视图。CREATEVIEWIS_S2ASSELECTSNO,SNAME,GRADEFROMIS_S1WHEREGRADE90;带表达式的视图例5定义一个反映学生出生年份的视图。CREATEVIEWBT_SSNO,SNAME,SBIRTHASSELECTSNO,SNAME,2000SAGEFROMSTUDENT;分组视图例6将学生的学号及他的平均成绩定义为一个视图假设SC表中“成绩”列GRADE为数字型CREATVIEWS_GSNO,GAVGASSELECTSNO,AVGGRADEFROMSCGROUPBYSNO;不指定属性列例7将STUDENT表中所有女生记录定义为一个视图CREATEVIEWF_STUDENTF_SNO,NAME,SEX,AGE,DEPTASSELECTFROMSTUDENTWHERESSEX女;91缺点修改基表STUDENT的结构后,STUDENT表与F_STUDENT视图的映象关系被破坏,导致该视图不能正确工作。二、删除视图语句的格式DROPVIEW;该语句从数据字典中删除指定的视图定义如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除例8删除视图BT_SDROPVIEWBT_S;删除视图IS_S1DROPVIEWIS_S1;拒绝执行级联删除DROPVIEWIS_S1CASCADE362查询视图用户角度查询视图与查询基本表相同RDBMS实现视图查询的方法视图消解法(VIEWRESOLUTION)进行有效性检查转换成等价的对基本表的查询执行修正后的查询例9在信息系学生的视图中找出年龄小于20岁的学生。SELECTSNO,SAGEFROMIS_STUDENTWHERESAGE90;S_G视图的子查询定义CREATEVIEWS_GSNO,GAVGASSELECTSNO,AVGGRADEFROMSCGROUPBYSNO;错误SELECTSNO,AVGGRADEFROMSCWHEREAVGGRADE90GROUPBYSNO;正确SELECTSNO,AVGGRADEFROMSCGROUPBYSNOHAVINGAVGGRADE90;363更新视图例12将信息系学生视图IS_STUDENT中学号200215122的学生姓名改为“刘辰”。UPDATEIS_STUDENTSETSNAME刘辰WHERESNO200215122;转换后的语句UPDATESTUDENTSETSNAME刘辰WHERESNO200215122ANDSDEPTIS;例13向信息系学生视图IS_S中插入一个新的学生记录200215129,赵新,20岁INSERTINTOIS_STUDENTVALUES95029,赵新,20;转换为对基本表的更新INSERTINTOSTUDENTSNO,SNAME,SAGE,SDEPTVALUES200215129,赵新,20,IS;例14删除信息系学生视图IS_STUDENT中学号为200215129的记录DELETEFROMIS_STUDENTWHERESNO200215129;转换为对基本表的更新DELETE93FROMSTUDENTWHERESNO200215129ANDSDEPTIS;更新视图的限制一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新例视图S_G为不可更新视图。UPDATES_GSETGAVG90WHERESNO200215121;这个对视图的更新无法转换成对基本表SC的更新允许对行列子集视图进行更新对其他类型视图的更新不同系统有不同限制364视图的作用1视图能够简化用户的操作2视图使用户能以多种角度看待同一数据3视图对重构数据库提供了一定程度的逻辑独立性4视图能够对机密数据提供安全保护5适当的利用视图可以更清晰的表达查询第四章数据库安全性内容概述介绍计算机以及信息安全技术标准的进展。详细讲解数据库安全性问题和实现技术。RDBMS实现数据库系统安全性的技术和方法有多种,本章讲解最重要的存取控制技术、视图技术和审计技术。讲解存取控制机制中用户权限的授权与回收,合法权限检查。数据库角色的概念和定义等。94本章目标掌握什么是数据库的安全性问题,牢固掌握数据库管理系统实现数据库安全性控制的常用方法和技术。重点和难点重点使用SQL中的GRANT语句和REVOKE语句来实现数据库的实现自主存取控制功能。使用SQL中CREATEROLE语句创建角色,用GRANT语句给角色授权。掌握视图机制在数据库安全保护中的作用。难点强制存取控制(MAC)机制中确定主体能否存取客体的存取规则,同学们要理解并掌握存取规则为什么要这样规定。问题的提出数据库的一大特点是数据可以共享数据共享必然带来数据库的安全性问题数据库系统中的数据共享不能是无条件的共享例军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据数据库安全性41计算机安全性概述411计算机系统的三类安全性问题计算机系统安全性为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。三类计算机系统安全性问题技术安全类、管理安全类、政策法律类95412安全标准简介TCSEC标准CC标准信息安全标准的发展历史TCSEC/TDI标准的基本内容TCSEC/TDI,从四个方面来描述安全性级别划分的指标安全策略责任保证文档TCSEC/TDI安全级别划分按系统可靠或可信程度逐渐增高各安全级别之间偏序向下兼容B2以上的系统还处于理论研究阶段应用多限于一些特殊的部门,如军队等美国正在大力发展安全产品,试图将目前仅限于少数领域应用的B2安全级别下放到商业应用中来,并逐步成为新的商业标准CC提出国际公认的表述信息技术安全性的结构把信息产品的安全要求分为安全功能要求安全保证要求CC文本组成安全级别定义A1验证设计(VERIFIEDDESIGN)B3安全域(SECURITYDOMAINS)B2结构化保护(STRUCTURALPROTECTION)B1标记安全保护(LABELEDSECURITYPROTECTION)C2受控的存取保护(CONTROLLEDACCESSPROTECTION)C1自主安全保护(DISCRETIONARYSECURITYPROTECTION)D最小保护(MINIMALPROTECTION)96简介和一般模型安全功能要求安全保证要求CC评估保证级划分评估保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论