Y第2章关系数据库及其语言.ppt_第1页
Y第2章关系数据库及其语言.ppt_第2页
Y第2章关系数据库及其语言.ppt_第3页
Y第2章关系数据库及其语言.ppt_第4页
Y第2章关系数据库及其语言.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2.1关系模型,2.2关系代数,2.3关系演算,2.4数据库标准语言SQL,第2章关系数据库,2.1关系模型,1.关系模型的特点及组成特点:结构简单,表达力强语言的一体化非过程化的操作坚实的数学基础操作效率较低组成:关系数据结构关系数据操作关系完整性约束,关系DB系统是支持关系模型的DB系统,2.1关系模型,2、关系数据结构1)域:是一组具有相同数据类型的值的集合。2)笛卡尔积给定一组域D1,Dn(可有相同的域)。其笛卡尔积为:DlXD2XXDn=(d1,d2,dn)|diDi,i=1,2,n,例:姓名集D1=a,b,c性别集D2=0,1,D1XD2:,a0b0c0a1b1c1,2.1关系模型,3)关系笛卡尔积的有限子集称作对应域上的关系。关系:是元组的集合。R(D1,D2,Dn)R是n元(目)关系4)术语:候选键主键、主属性非主属性外键(外来关键字)外键提供了一种表示两个关系联系的方法。,S(Sno,Cardno,Sname,Sage)SC(Sno,Cno,Grade),主键,两个主属性,非主属性,2.1关系模型,5)关系的性质:(1)每列的值为同一类型。(2)每列具有不同的属性名(3)任意两元组不能完全相同。(4)行的次序可以互换。(5)列的次序可以互换。(6)分量值是原子的。,+5?,学号姓名年龄,;网虫?,不允许,元组,分量值,属性名,关系的类型:基本关系查询表视图表,2.1关系模型,6)关系模式与关系数据库,关系模式:是关系结构的描述和定义,即二维表的表结构定义。关系实质上是一张二维表。因此,关系模式必须指出表的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的对应关系。关系模式简记为关系的属性名表:R(U)=R(A1,A2,A3,.An)例:学生(学号,姓名,总成绩)关系数据库:对应关系模型的一个应用领域的全部关系的集合。联系?,2.1关系模型,3.关系模型的数据操作关系模型中常用的关系数据操作有四种:(1)数据查询。基本操作有:关系属性的指定;关系元组的选择;两个关系的合并。(2)数据插入。在关系内插入一些新元组。(3)数据删除。在关系内删除一些元组。(4)数据修改。修改关系元组的内容。可分解为:先删除要改的元组,再插入新元组。关系数据操作是一种集合式操作。复杂的关系数据操作可通过基本的关系数据运算获得。此外,还需要有关系的操作规则及具体的关系数据语言来实现这些操作。关系数据语言可分为研究用的抽象语言和可使用的实现语言。关系数据语言大体分成三类,如表2-3。,2.1关系模型,4.关系的完整性三类完整性约束:实体完整性参照完整性用户定义的完整性,说明:(1)该规则是对基本关系的约束和限定。(2)实体有唯一性标识主键。(3)主键上的属性不能取空值。,1)实体完整性实体完整性规则:若属性A是基本关系R的主码属性,则属性A不能取空值。,由关系系统自动支持,是应用领域需要遵循的约束条件,2.1关系模型,2)参照完整性引用关系:关系中的某属性的值需要参照另一关系的属性来取值。例1:学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名),例2:学生(学号,姓名,性别,专业号,年龄,合作者号),引用,引用,2.1关系模型,设:基本关系R、S(可为同一关系)。若F是R的一个(组)属性,但不是R的键。如果F与S的主键K相对应,则称F是R的外键。,例:学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名),目标关系,参照关系,外键,说明:S的主键K和R的外键F必须定义在同一个(组)域上R为参照关系,S为目标关系。,2.1关系模型,参照完整性规则若属性(组)F是R的外键它与S的主键K相对应,则对于R中每个元组在F上的值必为下列之一:(1)取空值(F的每个属性值均为空);(2)等于S中某个元组的主键值。例:学生(学号,专业号,姓名,.)关系中每个元组的专业号取值:(1)空值(未知值);(2)非空值。,3)用户定义的完整性反映具体应用所涉及的数据应满足的语义要求、约束条件。例:学生关系中的年龄在1545之间,选修关系中的成绩在0100之间。,定义了外键与主键之间的引用规则。指外键不能引用不存在的主键值。,2.2关系代数,关系数据语言分类:1)关系代数2)关系演算元组关系演算域关系演算3)具有双重特点的语言(SQL)共同特点是:具完备的表达能力是非过程化的集合操作语言功能强可嵌入、又可独立使用,2.2关系代数,关系代数是一种抽象的查询语言。它以关系为运算对象,通过对关系进行“组合”或“分割”,得到所需的数据集合关系。分类:集合运算(并、交、差;广义笛卡尔积)关系运算及其扩充,一、集合运算设:t为元组变量;R、S为同类(相同元、相应属性同域)关系;下列运算结果为同类关系:1.并运算:RUS=t|(tR)(tS)2.差运算:RS=t|(tR)(tS)3.交运算:RS=t|(tR)(tS)RS=R(RS),2.2关系代数,集合运算示例,2.2关系代数,4.广义笛卡尔积:设:R、S为不同类关系,则结果为不同类关系:RS=trts|(trR)(tsS),连接为m+n元关系,n元关系,m元关系,2.2关系代数,记号:设t为R的元组变量设:R(A1,A2,An)=R(U)tAi(Ai为属性)tA(A为属性集)例:t学号-R中学号上的值t学号,姓名,学号姓名年龄,t,2.2关系代数,二、关系运算1.选择():是关系行上的选择,产生同类关系。F(R)=t|(tR)F(t)=true含义:由R中满足F条件的元组组成。其中:F由属性名(值)、比较符、逻辑运算符组成。例:Sage19(Student)例:A25A3“f”(R),2.2关系代数,2.投影运算():是关系列的选择,产生不同类关系A(R)=tA|(tR)含义:R中取属性名表A中指定的列,消除重复元组。,例:Sno,Cno(SC)用关系代数表示查询:例:查选2号课程的学生记录。例:成绩在90分以上的学生号。,解:Cno=2(SC),解:Sno(Grade90(SC),2.2关系代数,3.连接运算:连接也称为连接。它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。RS=trts|(trR)(tsS)trAtsBAB,比较运算符,大于连接:为“”的连接。等值连接:为“=”的连接。RS=R.A=S.B(RS)A=B,例:,=R.AS.B(RS)含义:从RS中选取R关系在A属性组上的值与S关系在B属性组上值满足关系的元组。,2.2关系代数,3.连接运算:自然联接:设R、S有同名属性Bi(i=1,2.k)RS=属性名表(R.Bi=S.Bi(RS),例:,2.2关系代数,例:查询至少选修了一门其直接先行课为005号课程的学生名。,学生-课程数据库表见教材:S(sno,sname,sex,age,dept)C(cno,cname,credit,pcno)SC(sno,cno,grade),sname(pcno=005(CSCS),A(F(R),例:查选修002号课程的学生姓名与年龄。sname,age(Scno=002(SC),2.2关系代数,4.除(Division)关系代数定义了除运算。但实际应用中,当关系R真包含了关系S时,RS才有意义。R能被S除尽的充分必要条件是:R中的属性包含S中的所有属性;R中有一些属性不出现在S中。设R为r元、S为s元关系(rs0),当关系R真包含了关系S时,RS可用下式计算:RS=1,2,r-s(R)-1,2,r-s(1,2,r-s(R)S)-R)【例2.8】设R(S#,P#)、W1(P#)、W2(P#)、W3(P#)。则RW1可表示为:S#(R)-S#(S#(R)W1)-R)同理可列出另外两式。,R,S,2.2关系代数,除法示例(例2.8):,例RWi的运算结果可理解为:R中包含Wi属性值的那些元组在R与Wi的属性名之差(即S#)上的投影。,2.2关系代数,例:查所选课程包含学生210101所选全部课程的学生号和姓名。,sno,sname(S)(sno,cno(SC)cno(sno=210101(SC),例:查询选修了全部课程的学生学号与姓名。,sno,sname(S),(sno,cno(SC)cno(C),设学生-课程数据库(S、SC、C),2.2关系代数,关系代数五种基本运算:投影,选择,并,差,笛卡尔积5种基本运算的作用:1)关系的属性指定A1,A2,An(R)2)关系的元组选择F(R),3)两个关系的归并R1R24)关系中元组的插入R1R25)关系中元组的删除R1R2,2.3关系代数,5.扩充的关系运算:(1)广义投影:E1,E2En(R),(2)赋值:R-S,(3)外连接:R和S自然连接时,保留原该舍弃的元组,同时在这些元组新增加的属性上填空值(NULL),(4)半连接:R和S的自然连接只在关系R(或关系S)的属性集上的投影。R和S的半连接记为RS,(5)聚集:G聚集函数名(属性)(关系表达式),见教材例:,5.扩充的关系运算,(6)外部并:由R和S中的所有属性(无重复)组成,其元组由属于R或属于S的元组组成,并在增加的属性填上空值。说明:R、S可不同类,5.扩充的关系运算,(7)重命名x(E):返回表达式E的结果,并把名字x赋给E。x(A1,A2,An)(E):其含义为返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,An。,(课程=数学S(R)R.成绩S.成绩,S.姓名(,),(课程=数学姓名=王红(R),例:设R(姓名,课程,成绩),求数学成绩比王红高的学生名,2.3关系演算,(1)元组关系演算中的原子公式R(t)表示:t是关系R的一个元组,关系演算:以谓词演算为基础表示的关系运算。关系演算分类元组关系演算域关系演算1.元组关系演算用t|(t)表示关系,命题公式,元组变量,表示所有使得为真的元组组成的集合。,关系R可表示为:t|R(t)tiuj,表示:元组t的第i个分量与元组u的第j个分量之间满足关系tiC或Cti,常量,表示:元组t的第i个分量与常量C之间满足关系。,2.3关系演算,(2)公式的递归定义每个原子公式是公式。若1和2是公式,则12、12、1也是公式。若是公式,则t()、t()也是公式。有限次使用上述3条规则得到的公式都是元组关系演算表达式。公式中各种运算符的优先级:算术运算符、量词、逻辑运算符,高,低,1.元组关系演算,2.3关系演算,域关系演算:以域变量作为谓词变元的基本对象。用t1,t2,tk|(t1,t2,tk)表示关系。,t1,t2,tk是元组变量t的各个域变量,(1)域演算中的原子公式R(t1,t2,tk)表示:由分量t1,t2,tk组成的元组属于R。tiuj表示:元组变量t的第i个分量与t的第j个分量间满足关系。tiC或Cti表示:元组变量t的第i个分量与常量C间满足关系。(2)公式的递归定义与元组演算定义类似。,2.域关系演算,2.3关系演算,例:在S表中查学生年龄小于20岁的学生姓名。1.元组演算:R1=t(1)|(u)(S(u)t1=u2u420)2.域演算:R2=t2|(t1)(t3)(t4)(t5)(S(t1t2t3t4t5)t488;,三、SQL的数据查询,例:找出选课学生超过30人课程的平均成绩及选课人数。SELECTcno,AVG(grade),COUNT(*)ASst_numberFROMSCGROUPBYsnoHAVINGst_number=30;,例:求学生关系中女生每一年龄组(超过20人)有多少,查询结果按人数升序排列,人数相同时按年龄降序排SELECTage,COUNT(sno)ASnumberFROMStudentWHEREsex=女GROUPBYageHAVINGnumber20ORDERBYnumber,ageDESC,练习:查询至少选修4门课程的学生学号?,三、SQL的数据查询,3.多表查询(1)子查询(嵌套查询)查询块:SELECTFROMWHERE子查询:一个查询块嵌套在另一查询块中作为条件的查询。子查询一般跟在IN、SOME(ANY)、ALL和EXIST等谓词后面。,例:查平均成绩最高的学生号SELECTsnoFROMSCGROUPBYsnoHAVINGAVG(grade)=ALL(SELECTAVG(grade)FROMSCGROUPBYsno);,三、SQL的数据查询,例:找出籍贯为湖北或河北,选课成绩为90分以上的学生的姓名、课号和成绩。SELECTsname,cno,gradeFROMStudent,SCWHEREStudent.sno=SC.snoANDplaceIN(湖北,河北)ANDgrade90;,三、SQL的数据查询,SELECTStudent.sno,sname,sex,age,dept,cno,gradeFROMStudent,SCWHEREStudent.sno=SC.sno;,(2)条件连接查询连接条件的一般格式为:.当连接运算符为=时,称为等值连接。例:查询每个学生的情况及其选课成绩。,三、SQL的数据查询,(3)带存在谓词的子查询EXISTS作用:若子查询结果非空,则父查询的WHERE子句返回真,否则返回假产生逻辑值,例:查询所有选修了1号课程的学生姓名。SELECTsnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHEREsno=Student.snoANDcno=1);,执行过程:,相关子查询:子查询的条件依赖于外层父查询的某个属性值,三、SQL的数据查询,(3)自身连接查询例:找出年龄比“王迎”同学大的同学的姓名及年龄。SELECTs1.sname,s1.ageFROMSASs1,SASs2WHEREs1.ages2.ageANDs2.sname=王迎;,练习:查每一门课的间接先修课(即先修课的先修课)SELECTFIRST.cno,SECOND.pcnoFROMCourseFIRST,CourseSECONDWHEREFIRST.pcno=SECOND.cno;,三、SQL的数据查询,4.自然连接与外连接1)自然连接(NATURALJOIN)例:查籍贯为湖北、课程成绩在90分以上的学生档案及其成绩情况。SELECT*FROMStudentNATURALJOINSCWHEREplace=湖北ANDgrade=90;2)外连接左外连接。LEFTOUTERJOIN,保留左关系所有元组右外连接。RIGHTOUTERJOIN,保留右关系所有元组全外连接。FULLOUTERJOIN,保留两关系所有元组,三、SQL的数据查询,例:查每个学生及其选课情况。SELECT*FROMStudent,SCFROMStudentNATURALRIGHTOUTERJOINSC;,未选课?用右外连接产生未选课的空行。,教师表:Teacher(教师号,姓名,所属大学,职称)任职表:Post(编号,姓名,职务)例:SELECT*FROMTeacherFULLOUTERJOINPost;例:SELECT*FROMTecherLEFTOUTERJOINPost;,三、SQL的数据查询,5.SQL中的空值处理1)空值的含义值暂未知。值不适用。值需隐瞒。2)空值的若干规则(1)空值与数值型数据进行算术运算,结果为空值(2)空值和任何值(包括空值)进行比较运算,结果为UNKNOWN。,空值的测试:ISNULL和ISNOTNULL。例:查询缺少选课成绩的学生号和相应的课程号SELECTSno,CnoFROMSCWHEREgradeISNULL;,三、SQL的数据查询,6.递归合并查询递归合并语句格式:WITHRECURSIVEASUNION例:对表2-12航班表Flight(airline,from,to,depart,arrive),求出:能从一个城市飞到另一个城市的城市对集合(含直接到达和间接中转到达)。,三、SQL的数据查询,直达:Reach(f,t)=Flight(a,f,t,d,r)间接到达:Reach(f,t)=Flight(a,f,t1,d,r)ANDReach(t1,t)SQL语句:WITHRECURSIVEReach(from,to)AS(SELECTfrom,to/选出直接到达城市对FROMFlight)UNION(SELECTFlight.from,Reach.to/选出间接到达城市对FROMFlight,Reach/递归WHEREFlight.to=Reach.from)SELECT*FROMReach;,四、SQL的数据更新,插、删数据注意:插入时,表定义中说明了NOTNULL的列不能取空值。向参照表中插入元组,关系系统自动支持:实体完整性参照完整性删除时:需维护一致性,修改基本表注意:新增加的列一律为空值。修改列定义可能会破坏已有数据。删除基本表注意:基本表定义一旦删除,表中的数据、此表上建立的索引和视图都将自动被删掉。,四、SQL的数据更新,1.插入数据1)插入单个元组格式:INSERTINTO(,)VALUES(,);说明:(1)若插入全部属性,则属性列可省略。(2)表定义中说明为NOTNULL的列不能取空值。(3)属性值与相对应的属性列的数据类型要匹配(4)向参照表中插入元组,关系系统自动支持:实体完整性参照完整性,四、SQL的数据更新,2)插入子查询结果格式:INSERTINTO(,);2.修改数据格式:UPDATESET=,=WHERE;3.删除数据格式:DELETEFROMWHERE;,五、视图机制,1、视图的概念及作用视图:从实(基本)表或视图中导出的虚表。1)视图与表的关系:在表上建立的表。是用户用来看数据的窗口。对视图的操作最终将转为对实表的操作。对视图的更新有一定的限制。,2)视图的作用简化结构及复杂操作多角度地、灵活地共享提高逻辑独立性提供安全保护,虚表,实表,五、视图机制,2、创建与使用视图1)创建视图:CREATEVIEW(列名1,n)ASWITHCHECKOPTION;,其中:子查询不允许含有ORDERBY子句和DISTINCT短语例:建立信息系学生的视图。要求:进行更新时仍保证该视图只有信息系的学生。CREATEVIEWIS_StudentASSELECT*FROMStudentWHEREsdept=信息院WITHCHECKOPTION;,更新时保证操作的行满足视图定义的条件,五、视图机制,带虚拟列的视图:是指设置了一些基本表中并不存在的派生列(虚拟列)的视图。例:定义一

温馨提示

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

评论

0/150

提交评论