关系模型-SQL简介-20140708_第1页
关系模型-SQL简介-20140708_第2页
关系模型-SQL简介-20140708_第3页
关系模型-SQL简介-20140708_第4页
关系模型-SQL简介-20140708_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、关系数据模型和关系数据模型和关系数据库标准语言关系数据库标准语言结构化结构化查询语言查询语言 (SQL) (SQL) 介绍介绍浙江大学软件学院浙江大学软件学院杭诚方杭诚方 教授教授关系数据语言概述关系数据语言概述 抽象的查询语言抽象的查询语言关系代数:用对关系的运算来表达查询,需要指关系代数:用对关系的运算来表达查询,需要指明所用操作。明所用操作。关系演算:用谓词来表达查询,只需描述所需信关系演算:用谓词来表达查询,只需描述所需信息的特性。息的特性。 元组关系演算:谓词变元的基本对象是元组变量。元组关系演算:谓词变元的基本对象是元组变量。 域关系演算:谓词变元的基本对象是域变量。域关系演算:谓

2、词变元的基本对象是域变量。 具体系统中的实际语言具体系统中的实际语言SQLSQL:介于关系代数和关系演算之间,由:介于关系代数和关系演算之间,由IBMIBM公司公司在研制在研制System RSystem R时提出的。时提出的。QUELQUEL:基于:基于CoddCodd提出的元组关系演算语言提出的元组关系演算语言ALPHAALPHA,在在INGRESINGRES上实现。上实现。QBEQBE:基于域关系演算,由:基于域关系演算,由IBMIBM公司研制。公司研制。关系数据语言概述(关系数据语言概述(2 2) 关系数据语言的特点关系数据语言的特点一体化一体化 一般关系系统的数据语言都同时具有数据定

3、义、数一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。而非关系型系单一,都是关系,因此操作符也单一。而非关系型系统,如统,如DBTGDBTG,有对记录的操作,有对系的操作。,有对记录的操作,有对系的操作。非过程化非过程化 用户只需提出用户只需提出“做什么做什么”,无须说明,无须说明“怎么做怎么做”,存取路径的选择和操作过程由系统自动完成。存取路径的选择和操作过程由系统自动完成。面向集合的存取方式面向集合的存取方式 操作对象是一个或多个关系,结果是一个新的关系操作对象是一个或

4、多个关系,结果是一个新的关系(一次一个关系)。非关系系统是一次一个记录的方(一次一个关系)。非关系系统是一次一个记录的方式。式。SQLSQL 全名是结构化查询语言(全名是结构化查询语言(Structured Query LanguageStructured Query Language),),用于数据库中的标准数据查询语言,用于数据库中的标准数据查询语言,IBMIBM 公司最早使用在其公司最早使用在其开发的数据库系统中。开发的数据库系统中。19861986年年1010月,美国国家标准学会月,美国国家标准学会(ANSI) (ANSI) 对对 SQL SQL 进行规范后,以此作为关系式数据库管理系

5、统进行规范后,以此作为关系式数据库管理系统的标准语言的标准语言 (ANSI X3. 135-1986)(ANSI X3. 135-1986),19871987年得到国际标准组织年得到国际标准组织的支持下成为国际标准。不过各种数据库系统都对的支持下成为国际标准。不过各种数据库系统都对 SQL SQL 规范规范作了某些编改和扩充。所以,不同数据库系统之间的作了某些编改和扩充。所以,不同数据库系统之间的SQLSQL不能不能完全相互通用。完全相互通用。SQL SQL 是高级的非过程化编程语言,它以记录是高级的非过程化编程语言,它以记录项目项目recordsrecords的合集(的合集(setset)作

6、为操纵对象(项集),所有)作为操纵对象(项集),所有 SQL SQL 语句接受项集作为输入,以项集作为输出,这使它拥有语句接受项集作为输入,以项集作为输出,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他编程语极大的灵活性和强大的功能。在多数情况下,在其他编程语言中需要用一大段程序才可实践的一个单独事件,在言中需要用一大段程序才可实践的一个单独事件,在 SQL SQL 上上只需要一个语句就可以被表达出来。所以用只需要一个语句就可以被表达出来。所以用 SQL SQL 可以写出非可以写出非常复杂的语句。常复杂的语句。关系数据模型关系数据模型关系数据模型是建立在集合代数理论基础上关系数据模型

7、是建立在集合代数理论基础上的,有着坚实的数学基础。的,有着坚实的数学基础。E.F.CoddE.F.Codd于于7070年代初提出关系数据模型和关年代初提出关系数据模型和关系理论,他因此获得系理论,他因此获得19811981年的年的ACMACM图灵奖。图灵奖。早期代表系统早期代表系统SystemSystem:由:由IBM San JoseIBM San Jose研究室研制。研究室研制。INGRESINGRES:由加州大学:由加州大学BerkeleyBerkeley分校研制。分校研制。目前主流的商业数据库系统目前主流的商业数据库系统OracleOracle,SybaseSybase,SQL Ser

8、verSQL Server,DB2DB2关系数据模型关系数据模型 关系的基本概念关系的基本概念 关系数据模型三要素关系数据模型三要素 关系的基本概念关系的基本概念 域(域(DomainDomain)一组值的集合,这组值具有相同的数据类型。一组值的集合,这组值具有相同的数据类型。如整数的集合、字符串的集合、全体学生的集合。如整数的集合、字符串的集合、全体学生的集合。 笛卡尔积(笛卡尔积(Cartesian ProductCartesian Product)一组域一组域D D1 1 , D, D2 2 , , D, Dn n的笛卡尔积为的笛卡尔积为: :D D1 1D D2 2D Dn n = (

9、d= (d1 1 , d, d2 2 , , , d , dn n) | d) | di iDDi i , , i=1,i=1,n,n笛卡尔积的每个元素笛卡尔积的每个元素(d(d1 1 , d, d2 2 , , , d , dn n) )称作一个称作一个n-n-元组(元组(n-tuplen-tuple)。)。元组的每一个值元组的每一个值d di i叫做一个分量(叫做一个分量(componentcomponent)。)。若若D Di i的基数为的基数为m mi i,则笛卡尔积的基数为,则笛卡尔积的基数为m m1 1m m2 2m mn n关系的基本概念(关系的基本概念(2 2)例:设例:设 D

10、 D1 1为教师集合(为教师集合(T T)= t= t1 1,t t2 2 D D2 2为学生集合(为学生集合(S S)= s= s1 1,s s2 2 ,s s3 3 D D3 3为课程集合(为课程集合(C C)= c= c1 1,c c2 2 则则D D1 1D D2 2D D3 3是个三元组集合,元组个数为是个三元组集合,元组个数为2 23 32 2, 是所有可能的(教师,学生,课程)元组集合。是所有可能的(教师,学生,课程)元组集合。 笛卡尔积可表示为二维表的形式:笛卡尔积可表示为二维表的形式:TSCt1s1c1t1s1c2t1s2c1t2s3c2关系的基本概念(关系的基本概念(3 3

11、) 关系关系笛卡尔积笛卡尔积D D1 1D D2 2D Dn n的子集叫做在域的子集叫做在域D D1 1 , D, D2 2 , , D, Dn n上的关上的关系,用系,用R(DR(D1 1 , D, D2 2 , , D, Dn n ) )表示。表示。R R是关系的名字,是关系的名字,n n是关系的度或目。是关系的度或目。关系是笛卡尔积中有意义的子集。关系是笛卡尔积中有意义的子集。关系也可以表示为二维表。关系也可以表示为二维表。关系关系TEACH(T, S, C)TSCt1s1c1t1s1c2t1s2c1t2s3c2元组元组属性属性关系的基本概念(关系的基本概念(4 4) 关系的性质关系的性

12、质列是同质的列是同质的即每一列中的分量来自同一域,是同一类型的数据。即每一列中的分量来自同一域,是同一类型的数据。如如TEACH(T, S, C)=(tTEACH(T, S, C)=(t1 1 , s, s1 1 , c, c1 1), (t), (t1 1 , , t t2 2 , c, c1 1)是错误的。是错误的。不同的列可来自同一域,每列必须有不同的属性名。不同的列可来自同一域,每列必须有不同的属性名。如如P=tP=t1 1,t t2 2 , s s1 1,s s2 2 ,s s3 3 ,C= cC= c1 1,c c2 2 ,则,则TEACHTEACH不能写成不能写成 TEACH (

13、P, P, C)TEACH (P, P, C),而应写成,而应写成TEACH(T, S, C)TEACH(T, S, C)。行的顺序无关紧要。行的顺序无关紧要。列的顺序无关紧要。列的顺序无关紧要。任意两个元组不能完全相同(集合内不能有相同的两个元素)。任意两个元组不能完全相同(集合内不能有相同的两个元素)。每一分量必须是不可再分的数据。满足这一条件的关系称作满足第一范每一分量必须是不可再分的数据。满足这一条件的关系称作满足第一范式(式(1NF1NF)的。)的。关系数据模型三要素关系数据模型三要素数据模型三要素数据模型三要素 数据结构数据结构 数据操作数据操作 数据的完整性约束数据的完整性约束

14、数据结构数据结构单一的数据结构单一的数据结构关系关系实体集、联系都表示成关系。实体集、联系都表示成关系。关系数据模型三要素(关系数据模型三要素(2 2)DEPT(D# , DN , DEAN)S(S# , SN , SEX , AGE , D#)C(C# , CN , PC# , CREDIT)SC(S# , C# , SCORE)PROF(P# , PN, D# , SAL)TEACH(P# , C#)学生学生课程课程选修选修属于属于系系教师教师教授教授工作工作管理管理1111nnnnmm关系数据模型三要素(关系数据模型三要素(3 3)关系模式关系模式关系的描述称作关系模式,包括关系名、关系

15、中的属性名关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,记作、属性向域的映象、属性间的数据依赖关系等,记作R(AR(A1 1 , A, A2 2 , , A, An n ) ) 。属性向域的映象一般直接说明为属性的类型、长度等。属性向域的映象一般直接说明为属性的类型、长度等。某一时刻对应某个关系模式的内容(元组的集合)称作关某一时刻对应某个关系模式的内容(元组的集合)称作关系。系。关系模式是型,是稳定的。关系模式是型,是稳定的。关系是某一时刻的值,是随时间不断变化的。关系是某一时刻的值,是随时间不断变化的。关系数据库关系数据库其型是关系模式的集合,

16、即数据库描述。其型是关系模式的集合,即数据库描述。其值是某一时刻关系(二维表)的集合其值是某一时刻关系(二维表)的集合。关系数据模型三要素(关系数据模型三要素(4 4)候选码(候选码(Candidate KeyCandidate Key)关系中的一个属性组,其值能唯一标识一个元组。若从属性组关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。组称作候选码。例如例如DEPTDEPT中的中的D#D#,DNDN都可作为候选码。都可作为候选码。任何一个候选码中的属性称作主属性。任何一

17、个候选码中的属性称作主属性。例如例如SCSC中的中的S#S#,C#C#。主码(主码(Primary KeyPrimary Key)进行数据库设计时,从一个关系的多个候选码中选定一个作为进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。主码。例如可选定例如可选定D#D#作为作为DEPTDEPT的主码。的主码。 外部码(外部码(Foreign KeyForeign Key)关系关系R R中的一个属性组,它不是中的一个属性组,它不是R R的码,但它与另一个关系的码,但它与另一个关系S S的码的码相对应,则称这个属性组为相对应,则称这个属性组为R R的外部码。的外部码。例如例如S S关系中的

18、关系中的D#D#属性。属性。关系数据模型三要素(关系数据模型三要素(5 5) 关系操作关系操作关系操作是集合操作,操作的对象及结果都是集合关系操作是集合操作,操作的对象及结果都是集合,是一次一个集合(,是一次一个集合(Set-at-a-timeSet-at-a-time)的方式。)的方式。 而非关系型的数据操作方式是一次一个记录(而非关系型的数据操作方式是一次一个记录(Record-at-a-timeRecord-at-a-time)。)。关系操作可以用关系代数和关系演算两种方式来表关系操作可以用关系代数和关系演算两种方式来表示,它们是相互等价的。示,它们是相互等价的。 如用关系代数来表示关系

19、的操作,可以有选择、如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并等。投影、连接、除、交、差、并等。关系数据模型三要素(关系数据模型三要素(6 6) 关系的完整性关系的完整性实体完整性实体完整性关系的主码中的属性值不能为空值。关系的主码中的属性值不能为空值。空值:不知道或无意义。空值:不知道或无意义。意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的。的实体,这是不容许

20、的。参照完整性参照完整性如果关系如果关系R R2 2的外部码的外部码F Fk k与关系与关系R R1 1的主码的主码P Pk k相对应,则相对应,则R R2 2中的每一个元组中的每一个元组的的F Fk k值或者等于值或者等于R R1 1 中某个元组的中某个元组的P Pk k 值,或者为空值。值,或者为空值。意义:如果关系意义:如果关系R R2 2的某个元组的某个元组t t2 2参照了关系参照了关系R R1 1的某个元组的某个元组t t1 1,则,则t t1 1必须必须存在。存在。用户定义的完整性用户定义的完整性用户针对具体的应用环境定义的完整性约束条件。用户针对具体的应用环境定义的完整性约束条

21、件。例如例如S#S#要求是要求是8 8位整数,位整数,SEXSEX要求取值为要求取值为“男男”或或“女女”。关系代数关系代数用对关系的运算来表达查询。运算的对象是用对关系的运算来表达查询。运算的对象是关系,运算的结果也是关系。关系,运算的结果也是关系。 基本运算基本运算 一元运算一元运算选择、投影选择、投影 二元运算二元运算并、差、广义笛卡儿积并、差、广义笛卡儿积 其它运算其它运算 交、自然连接、除交、自然连接、除关系代数(关系代数(2 2) 选择运算选择运算 F F(R)(R)在关系在关系R R中选择满足给定条件的元组(从行的角度)。中选择满足给定条件的元组(从行的角度)。F F是选择的条件

22、,是选择的条件, t t R R, F(t)F(t)要么为真,要么为假。要么为真,要么为假。F F的形式:由逻辑运算符连接算术表达式而成。的形式:由逻辑运算符连接算术表达式而成。 逻辑运算符:逻辑运算符: , , 算术表达式:算术表达式:X X Y Y X X,Y Y是属性名、常量、或简单函数。是属性名、常量、或简单函数。 是比较算符,是比较算符, , , , , , , , , , , 例:找年龄不小于例:找年龄不小于2020的男学生。的男学生。 AGE20 AGE20 SEX=SEX=malemale(S S)关系代数(关系代数(3 3) 投影运算投影运算 A A(R)(R)从关系从关系R

23、 R中取若干列组成新的关系(从列的角度)中取若干列组成新的关系(从列的角度)投影的结果中要去掉相同的行。投影的结果中要去掉相同的行。 例例 找找001001号学生所选修的课程号。号学生所选修的课程号。 C#C#( ( S#=001S#=001 (SCSC)cbcfedcbaCBABCbcef R R B , C(R)关系代数(关系代数(4 4) 并并 R R S S所有至少出现在两个关系中之一的元组集合。所有至少出现在两个关系中之一的元组集合。两个关系两个关系R R和和S S若进行并运算,则它们必须是相容的:若进行并运算,则它们必须是相容的: 关系关系R R和和S S必须是同元的,即它们的属性

24、数目必须相同。必须是同元的,即它们的属性数目必须相同。 对对 i i,R R的第的第i i个属性的域必须和个属性的域必须和S S的第的第i i个属性的域相同。个属性的域相同。 例:求选修了例:求选修了001001号或号或002002号课程的学生号。号课程的学生号。方案方案1 1:S#S#( ( C# = 001C# = 001 C# = 002C# = 002(SC)(SC)方案方案2 2:S#S#( ( C# = 001 C# = 001 (SC)(SC)S#S#( ( C# = 002C# = 002(SC)(SC)R S关系代数(关系代数(5 5) 差差 R R S S所有出现在关系所有

25、出现在关系R R而不在关系而不在关系S S中的元组集合中的元组集合R R和和S S必须是相容的。必须是相容的。 例:求选修了例:求选修了001001号而没有选号而没有选002002号课程的学生号。号课程的学生号。S#S#( ( C# = 001 C# = 001 (SC) (SC) S#S#( ( C# = 002C# = 002(SC)(SC)R S关系代数(关系代数(6 6) 交交 R R S S 所有同时出现在两个关系中的元组集合。所有同时出现在两个关系中的元组集合。交运算可以通过差运算来重写:交运算可以通过差运算来重写:R R S = R S = R (R (R S) S) 例:求选修

26、了例:求选修了001号和号和002号课程的学生号。号课程的学生号。S#( C# = 001 (SC)S#( C# = 002(SC)R S关系代数(关系代数(7 7) 广义笛卡尔积广义笛卡尔积 R R S S两个关系两个关系R R,S S,其度分别为,其度分别为n n,m m,则它们的笛卡尔积,则它们的笛卡尔积是所有这样的元组集合:元组的前是所有这样的元组集合:元组的前n n个分量是个分量是R R中的中的一个元组,后一个元组,后m m个分量是个分量是S S中的一个元组。中的一个元组。R R S S的度为的度为R R与与S S的度之和,的度之和, R R S S的元组个数为的元组个数为R R和和

27、S S的的元组个数的乘积。元组个数的乘积。关系代数(关系代数(8 8) 学号姓名0811张英0812李明0813赵红SCSC课号 课程名学分C01操作系统4C02数据库3学号姓名课号课程名学分0811张英C01操作系统40811张英C02数据库30812李明C01操作系统40812李明C02数据库30813赵红C01操作系统40813赵红C02数据库 3关系代数(关系代数(9 9) 连接连接 R SR S从两个关系的广义笛卡儿积中选取给定属性间满足从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组。一定条件的元组。R S R S = = rArA SBSB( ( R RS)S)A,BA

28、,B为为R R和和S S上度数相等且可比的属性列。上度数相等且可比的属性列。 为算术比较符,为等号时称为等值连接。为算术比较符,为等号时称为等值连接。 A BA B关系代数(关系代数(1010)例例 找出所有这样的教师、学生对,学生的年龄大于教师的找出所有这样的教师、学生对,学生的年龄大于教师的年龄。年龄。PROF.PN,S.SN,PROF.AGE,S.AGE(PROF S)987654321CBADE3162ABCDE123311236245662 R S R S B D R R S S例例PROF.AGE S.AGE关系代数(关系代数(1111) 自然连接自然连接 R SR S从两个关系的

29、广义笛卡儿积中选取在相同属性列从两个关系的广义笛卡儿积中选取在相同属性列B B上上取值相等的元组,并去掉重复的列。取值相等的元组,并去掉重复的列。自然连接与等值连接的不同:自然连接中相等的分量自然连接与等值连接的不同:自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。属性,而等值连接则不必。当当R R与与S S无相同属性时,无相同属性时,R S R S R RS S。关系代数(关系代数(1212)例:求例:求001001号学生所在系的名称。号学生所在系的名称。DNDN( ( S# = 001S# = 001(S)

30、 DEPT)(S) DEPT)987654321CBACD3162 R R S SABCD12314562 R SR S例例关系代数(关系代数(1313) 除除 R(X , Y) R(X , Y) S(Y) S(Y) R R S S只包含只包含X X中的属性中的属性 元组元组t t属于属于R R S S,当且仅当以下两个条件同时成立,当且仅当以下两个条件同时成立t t在在 X X(R)(R)中。中。对对S S中的每一个元组中的每一个元组s s,都有,都有R R中的元组中的元组r r,使得:,使得: rY=sYrY=sY rX=trX=t除法运算适合于回答除法运算适合于回答“所有的所有的”这类查

31、询。这类查询。例例 找出选修了所有课程的学生找出选修了所有课程的学生 S#S#,C#C#(SC) (SC) C#C#(C)(C)关系代数(关系代数(1414) 课程数学物理姓名课程成绩张军物理93王红数学86张军数学93刘英数学88王红物理92 课程数学物理姓名课程张军物理王红数学张军数学刘英数学王红物理姓名张军王红姓名成绩张军93选修了所有课选修了所有课程并且成绩都程并且成绩都相同的学生相同的学生选修了所有选修了所有课程的学生课程的学生关系代数(关系代数(1515)关系代数查询实例关系代数查询实例求选修了其先修课为求选修了其先修课为001001号课程的学生名。号课程的学生名。 方案方案1 1

32、:SNSN( ( PC# = 001 PC# = 001 (SC C S)(SC C S) 方案方案2 2:SNSN( ( PC# = 001 PC# = 001 (C) SC S)(C) SC S)求未选修求未选修001001号课程的学生号。号课程的学生号。 方案方案1 1:S#S#( ( C# 001 C# 001 (SC)(SC) 方案方案2 2:S#S#(S)(S)S#S#( ( C# = 001 C# = 001 (SC)(SC)求仅选修了求仅选修了001001号课程的学生号。号课程的学生号。 选修选修001001号课程的学生选修了号课程的学生选修了001001号之外课程的学生号之外

33、课程的学生 S#S#( ( C# = 001 C# = 001 (SC)(SC)S#S#(SC(SC C# = 001 C# = 001 (SC)(SC)哪一个效哪一个效率更高?率更高?哪一个哪一个正确?正确?关系代数(关系代数(1616)外连接外连接例:列出老师的有关信息,包括姓名、工资、所教授的课程例:列出老师的有关信息,包括姓名、工资、所教授的课程P# ,PN , SAL , C# , CNP# ,PN , SAL , C# , CN(PROF) PC)(PROF) PC)500李三李三P04600700800SAL孙立孙立P03钱广钱广P02赵明赵明P01PNP#P04C02P02C02P01C01P#C#问题:有关问题:有关P03号职工的姓名和号职工的姓名和工资信息没有显工资信息没有显示出来。示出来。P#PNSALC#P01赵明800C01P02钱广700C02P04李三500C02关系代数(关系代数(1717) 外连接外连接为避免自然连接时因失配而发生的信息丢失,可以假定往参与连为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另接的一方表中附加一个取值全

温馨提示

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

评论

0/150

提交评论