数据库系统基础教程PPT完整版.ppt
第一章 数据库系统的世界The Worlds of Database Systems,数据库系统的发展数据库管理系统的结构未来的数据库系统,2,1.1 数据库系统的发展c,一、术语1.数据库是长期储存在计算机内的、有组织的、可共享的数据的集合。,3,2.数据库管理系统,数据库系统基础教程A First Course in Database SystemsDBMS-DataBase Management System是处理数据库访问的软件。提供数据库的用户接口。DBMS的目的:提供一个可以方便地、有效地存取数据库信息的环境,5,3.数据库系统是指在计算机系统中引入数据库后的系统,6,数据库系统构成,7,保存信息的两种不同方法:永久性的系统文件、数据库系统。文件方式的问题:数据的冗余和不一致数据访问困难数据孤立完整性问题原子性问题并发访问异常安全性问题,二、文件系统与数据库系统,8,数据库方法能较好地解决以上的问题数据的独立性有效地访问数据减少应用程序的开发时间数据的一致性和安全性统一的数据管理并发的数据访问,三、为什么用数据库,9,几种模型:基于树的层次模型基于图的网状模型物理相关、无高级查询语言基于表的关系模型物理无关、支持高级查询语言,基于对象的面向对象模型OOOR,四、数据库模型的发展,定长记录,10,关系数据库系统,11,关查询语言SQL语言SELECT balanceFROM AccountsWHERE accountNO=67890;,关系数据库系统,12,DBMS的组成数据、元数据存储管理程序事务管理程序查询处理程序,1.2 数据库管理系统的结构,13,数据、元数据关于数据结构的信息(关于数据的数据)索引(INDEX),DBMS的组成,14,存储管理程序文件管理程序缓冲区管理查程序,DBMS的组成,15,查询处理程序查询优化磁盘访问,是查询的主要代价;索引是查询优化的利器,DBMS的组成,16,事务管理程序事务:是用户定义的一个数据库操作序列事务的四个特性原子性A一致性C隔离性I持久性D,DBMS的组成,17,客户-服务器程序体系结构浏览器-服务器体系结构,DBMS的组成,18,客户-服务器程序体系结构浏览器-服务器体系结构,1.3 未来的数据库系统,第二章 数据库建模Database Modeling,20,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现,21,数据库的设计步骤,需求收集和分析用户关心什么用户要什么结果设计概念结构设计逻辑结构设计物理结构物理实现,22,数据库的设计步骤,需求收集和分析设计概念结构存什么关系(联系)如何ODL或E/R图,是各种数据模型的共同基础设计逻辑结构设计物理结构物理实现,23,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构用什么数据模型数据库的模式(database schema)用户子模式设计物理结构物理实现,24,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构数据怎么存根据DBMS产品、环境特点物理实现,25,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现运行DDL装入测试数据应用程序,26,数据库的设计步骤,想法需求,ODL,E/R,关系,RDBMS,OODBMS,27,2.1 ODL,对象定义语言 Object Definition Language以面向对象的观点、方法,说明数据库的概念结构可方便地直接转换成 OODBMS 的说明经过努力,可以转换成 RDBMS 的说明,28,面向对象的设计,对象标识 OID对象与对象的区别类具有相同特性的对象归为一类对象的归并必须有意义属于同一类的对象其特性必须相同,29,面向对象的设计,对象的三个特性属性:特性联系:引用方法:函数接口说明interface,30,属性对象某方面的特征,属性就是数据只由基本数据类型构成属性的类型,不能是类、也不能从类中构造Interface Movie/Movie Class 的ODL说明attribute stringtitle;attribute integeryear;attribute integerlength;attribute enum Film color,blackAndWhite filmType;,31,Interface Star attribute stringname;attribute StructAddr string street,string city address;,32,联系对象的引用对象的关联对象集合的引用(1:N)Relationship Set stars;单一对象集合的引用(1:1)Relationship Star starOf;,33,反向联系ODL要求显式表示存在的反向联系Interface Movie/Movie Class 的ODL说明attribute stringtitle;attribute integeryear;attribute integerlength;attribute enum Film color,blackAndWhite filmType;relationship Set stars inverse Star:starredIn;/Star与Movie的联系;,34,联系的多重性N:N在联系中,每个C都和D的集合有关,而在反向联系中,每个D都和C的集合有关N:1在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和C的集合有关1:1 在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和唯一的C有关,35,Interface Moiverelationship Set starsinverse Star:staredIn;relationship Studio ownedByinverse Studio:owns;Interface Starrelationship Set staredIninverse Moive:stars;Interface Studiorelationship Set ownsinverse Moive:ownedBy;,36,ODL中的类型基本类型原子类型接口类型结构类型,可由以下类型组合而成集合无重复,次序无关包可重复,次序无关列表可重复,次序相关数组结构,37,2.2 实体联系图(E/R),用图形的方法,描述实体及实体间的联系世界由一组称作实体的基本对象及这些对象间的联系组成元素实体(Entity)客观存在并可相互区别的事件或物体对应于ODL中的对象实体集(Entity Set)同类(具有相同类型、相同性质)实体的集合对应于ODL中的类用矩形表示,38,2.2 实体联系图(E/R),元素属性(Attribute)实体所具有的某一特性用与实体集相连的椭圆表示联系(Relationship)实体集之间的关联可涉及多个实体集可表示双向的联系用与相应的实体集相连的菱形表示,39,Movies,Stars,Stars-in,lenght,filmType,title,year,name,address,40,E/R联系的多重性N与1的表示,Movies,Stars,Stars-in,Studios,Presidents,Runs,Movies,Studios,Owns,41,联系的多向性E/R图能方便地描述两个以上实体集间的联系,42,联系中的角色实体集在联系中的作用参与联系的实体集互异只标注联系名同一实体集在一个联系中多次出现标注联系名及角色名,43,联系中的属性联系中可以包含属性由联系而产生的属性可为由联系产生的属性建立实体集,Stars,Movies,Contracts,Studios,salary,44,将多向联系转换成二元联系新增连接实体集引入连接实体集至原实体集的多对一的联系,45,2.3 设计原则,真实性设计应当忠于规范存什么避免冗余任何事物只表达一次避免引入过多的元素选择合适的元素类型属性?类/实体集?联系集?,46,2.4 子类,特殊化与概括子类与超类属性的继承,47,ODL中的子类子类继承其超类的所有特性属性联系Interface Cartoon:Movie relationship set voices;,48,ODL中的多重继承类的层次一个类可以有多个超类Interface MurderMystery:Movieattribute string weapon;Interface Cartoon-MurderMystery:Cartoon,MurderMystery,49,E/R中的子类IsaE/R中的继承,50,2.5 对约束的建模,建模包含对现实世界的对象及联系的描述,也包含对它们的一些约束键码单值约束参照完整性约束域的约束一般约束,51,键码在类的范围内唯一标识一个对象(或者在实体集的范围内唯一标识一个实体)的属性或属性集一个类中的两个对象(或一个实体集中的两个实体)在构成键码的属性集上取值不能相同ODL中键码的表示interface Movie(key(title,year),52,超码一个或多个属性的集合,能在一个实体集中唯一地标识一个实体一个类(或实体集)中可能有多个超码候选码其任意真子集都不为超码的超码一个类(或实体集)中可能有多个候选码主码从候选码中选取的一个,一个类(实体集)中只有一个主码E/R图中只能表示主码:主码属性名加上下划线,53,单值约束要求某个角色的值是唯一的,如键码当一个属性为单值时可以要求该属性值存在(not null)可以允许该属性值任选(null)构成键码的属性,必须有值存在(not null),54,参照完整性约束要求由某个对象引用的值在数据库中确实存在参照与被参照、引用与被引用参照完整性约束的操作(各产品不同)禁止删除被引用的对象级联删除/修改E/R图中参照完整性的表示,55,2.6 弱实体集,弱实体集的属性不足以形成主码有主码的实体集称为强实体集弱实体集只有作为一对多联系的一部分(多)才有意义弱实体集与其拥有者之间的联系是标识性联系,56,2.7 关于联系集,联系集的成份参加联系的实体集的主码联系集的属性联系中属性的决策(二元联系)1:1 联系集的属性:放到任意一端1:N 联系集的属性:放到 N 端N:M联系集的属性:只能留在联系集中,57,联系集的取舍(二元联系)1:1联系:将一端的主码作为另一端的属性1:N联系:将一端的主码作为 N 端的属性N:M联系:必须保留联系集联系集的键码(二元联系)1:1联系:任意一端的主码1:N联系:N端的主码N:M联系:参加联系的所有实体集的主码,58,ODL、E/R建模关心:存什么数据、关系如何不关心:用什么数学模型、DBMS产品透过E/R图,便于与用户交流,59,作业思考所有带*的练习,并上网查阅解答练习2.1.7/2.2.8/2.3.2/2.5.3/2.5.4/2.6.4(a),第三章 关系数据模型The Relational Data Model,61,ODL、E/R到关系模型的转换关系模型的设计理论,62,3.1 关系模型的基本概念,逻辑数据模型是用户从数据库所看到的数据模型与DBMS有关层次、网状、关系、面向对象,63,关系数据模型数据结构两维的扁平表数据操作关系代数关系演算数据的完整性实体完整性参照完整性用户定义的完整性,64,现实世界的实体以及实体间的各种联系均用关系表示关系数据库系统是建立在关系模型上的数据库系统关系数据库是表的集合,65,模型和模式数据模型是描述数据的手段数据模式是用给定的数据模型对具体数据的描述属性元组域型值联系关系的联系是通过关联属性的值连接的,66,Student(sno,sname,ssex,sage,sdept),67,关系实例关系 实体集、类关系的实例 元组的集合元组 实体、对象数据库实例 给定时刻数据库中数据的一个快照,68,3.2 从ODL设计到关系设计,ODL设计是概念设计的产物(Using OO)ODL描述 关系模式 实现,69,ODL属性 关系属性原子属性类 关系属性 属性非原子属性(复杂数据类型)必须转换成原子属性记录结构结构的每个item对应一个属性多值集合针对每个值建立一个元组会产生冗余 需规范化,70,ODL属性 关系属性(续)其他类型属性(包、数组、列表)针对每个元素建立一个元组增加一个记数属性,表示包的成员号定长数组扩展为多个属性,71,ODL联系 关系描述单值联系联系的类型为一个类增加一个(组)属性,存放相关类的键码属性(组)将类之间的联系 关系之间的联系,72,ODL联系 关系描述(续)多值联系联系的类型为某个类的集合类型1:N、N:M增加一个键码属性为集合的每个成员建立一个元组其他原始属性重复多次(与集合成员的个数相等)导致大量的冗余,需要规范化,73,键码是必需的选择合适的属性(组)作为键码学号、工号、身份证号.增加计数属性联系与反向联系在联系的双方均有联系的描述 冗余ODL:双向描述E/R:相关的键码值进行连接,74,3.3 从E/R图到关系的设计,E/R与ODL描述的差异联系作为独立的概念 联系嵌套在类定义中结构化数据 允许使用集合、聚集类型联系可以有属性 联系无属性E/R 关系模式 实现,75,实体集到关系的转换非弱实体集实体集名 关系名属性 属性弱实体集为弱实体集建立关系属性:弱实体集的属性+辅助实体集的键码,76,E/R联系到关系的转换用关系表示联系联系名 关系名属性 属性+相关实体集的键码属性(集)多向联系的转换注意,属性的命名,77,3.4 子类结构到关系的转换,ODL中的子类一个对象完全属于一个类子类继承其超类的特性E/R中的子类分层结构通过与ISA联系有关的实体集进行扩展,78,用关系表示ODL子类每个子类都有自己的关系包含该子类的所有特性(含继承特性)在一个关系中含有所有属性Movie(title,year,length,filmType,studioName,starName)Cartoon(title,year,length,filmType,studioName,starName,voice)MurderMystery(title,year,length,filmType,studioName,starName,weapon)Cartoon-MurderMystery(title,year,length,filmType,studioName,starName,voice,weapon),79,在关系模型中表示 isa 联系子类的信息被分散到上层的几个关系中与ISA联系有关的实体集拥有相同的键码Movie(title,year,length,filmType)Cartoon(title,year)MurderMystery(title,year,weapon)Voice(title,year,name),80,使用NULL值合并关系将关系描述成一个全集属性:所有可能的属性描述:允许Null值层次越高,取Null值的属性越多Movie(title,year,length,filmType,studioName,starName,voice,weapon)只是一种方法而已,81,作业思考所有带*的练习,并上网查询解答练习3.2.3/3.3.1/3.4.1/3.5.3/,82,3.5 函数依赖,数据依赖函数依赖多值依赖数据依赖是针对数据模式,而不是特定的实例,83,函数依赖(FD)属性之间的联系假设给定 X 属性的值,就知道 Y的值,那么 X 函数决定 Y如果R的两个元组在属性A1,A2,An上一致,则它们在另一个属性B上也一致,那么 A1,A2,An函数决定B,记作A1A2AnBif A1A2AnB1then A1A2AnB2A1A2An B1 B2.Bm A1A2AnBm,84,关系的键码如果一个或多个属性的集合A1A2An满足如下条件,则该集合为关系R的键码:1.这些属性函数决定该关系的所有其他属性2.A1A2An的任何真子集都不能函数决定R的所有其他属性,85,超键码包含键码的属性集称为超键码,86,寻找关系的键码(来自E/R)来自实体集的关系的键码就是该实体集的键码属性对于二元联系R:N:M,相关两个实体的键码都是R的键码属性N:1,多端实体集的键码是R的加码属性1:1,任意一端实体集的键码是R的键码对于多向联系R:如果多向联系R有一个箭头指向实体集E,则响应的关系中,除了E的键码以外,至少还存在一个键码。,87,寻找关系的键码(来自ODL)来自ODL的关系的键码不一定就是该类的键码属性对于单值联系R:类C有一个指向类D的单值联系,C的关系中包含D的键码。C的键码仍是相应关系的键码对于多值联系R:被引用类的键码加入到引用类的键码组合称为键码,88,3.6 函数依赖规则,分解规则A1A2An B1 B2.Bm等价于A1A2An Bi 合并规则A1A2An Bi等价于A1A2An B1 B2.Bm,89,平凡的函数依赖如果对于函数依赖 A1A2An B,B是A中的一个,则该函数依赖就是平凡的函数依赖平凡依赖是永恒的title,year title非平凡如果B中至少有一个属性不在A中title,year year,length完全非平凡如果B中没有一个属性在A中title,year length,90,计算属性的闭包闭包F的闭包是指F逻辑蕴涵的所有函数依赖的集合,记作F+闭包的意义检验给定的函数依赖是否蕴涵于某个函数依赖集S从给定的函数依赖,可以推导出蕴涵的函数依赖求闭包例:对关系R(A,B,C,D,E,F),给定函数依赖ABC,BCAD,DE,CFB,求 A,B+,91,关系的基与最小基任何一个能从中导出关系的所有依赖的给定依赖集,称为该关系的一个基如果一个基的任何真子集都不能推导出该关系的依赖全集,则称此基为最小基求函数依赖的最小基例:对关系R(A,B,C,D),有ABC,BC,A B,AB C,AC D,求最小函数依赖集,92,3.7 关系数据库模式设计,什么是好的数据库设计体现客观世界的信息无过度的冗余无插入异常无更新复杂无删除异常,93,更新复杂!,删除异常!,94,异常的原因数据依赖的约束解决方法数据库设计的规范化分解,95,范式(Normal Forms)规范化一个关系满足某个范式所规定的一系列条件时,它就属于该范式可以用规范化要求来设计数据库也可以用来验证设计结果的合理性,用其指导优化过程1NF2NF3NFBCNF4NF,96,第一范式(1NF)当且仅当一个关系R中,每一个元组的每一个属性只含有一个值时,该关系属于第一范式。要求属性是原子的,97,第二范式(2NF)对于关系R,若R1NF,且每一个非主属性完全函数依赖于码,则R2NF。不能部分依赖于码sc(sno,sname,cno,grade)sno,cnogradesnosname,98,第三范式(3NF)对于关系R,若R2NF,且每个非主属性都不传递依赖于码,则R3NF。主属性可以传递依赖于码student(sno,sname,sdept,dept_manager)snosname,sdept sdeptdept_manager传递依赖:snodept_manager,99,Boyce/Codd范式(BCNF)对于关系R,若R1NF,且所有非平凡的函数依赖,其决定因素是候选码,则RBCNF。sct(s,c,t)/学生,课程,教师tc/每位教师只上一门课(s,c)t(s,t)c/每门课有若干位教师,100,最高范式BCNF是基于函数依赖的最高范式但不是数据库模式设计的最高范式,101,范式优化分解A1,A2,An=B1,B2,BnC1,C2,Cn分解的要求无损连接BCB或BCC保持依赖范式要求,102,分解到高层范式(基于FD)找出一个不符合范式要求的FD(XY),并使其右端的属性尽可能地多(求出X+)创建新的模式,包含上述FD的所有(左右)属性(X+的所有属性)创建另一模式,包含前述FD中的决定因素及剩余的所有属性(U-X+)X)反复13,直至符合范式要求,103,3.8 多值依赖,BCNF仍有异常,104,多值依赖(MVD)按P.110的定义,105,多值依赖(MVD)设R(U)是属性集U上的一个关系。X、Y、Z是U的子集,且Z=U-X-Y。关系R(U)中多值依赖XY成立,当且仅当对R(U)的任一元组r,给定一对(x,z)值,有一组y的值,这组值仅仅取决于x值,而与z值无关。对给定X的值,则Y的取值与Z的取值无关,106,给定一对(x,z)值,有一组y的值,107,nametitle,year,108,平凡的多值依赖如果X包含Y或 XY=U,则XY是平凡的多值依赖性质If XY,and YZ then XZ-YIf XY,and Z=U-X-Y then XZIf XY then XY 无分解/合并规则,109,第四范式(4NF)对于关系R,若R1NF,且所有非平凡的多值依赖,其决定因素是候选码,则R4NF。基于数据依赖的最高范式分解要求无损连接保持依赖4NF,110,nametitle,yearnamestreet,cityAll Keyis BCNFisnt 4NF,R1(name,title,year)R2(name,street,city)All Keyis 4NF,111,范式间的联系高层范式包含低层范式分解特性,112,作业思考所有带*的练习,并上网查询解答练习3.7.5/3.8.3/,第四章 关系模型中的运算,Operations In The Relational Model,114,概述,数据库的核心应用是数据库的查询查询语言用户用来从数据库中请求获取信息的语言关系代数是过程化的查询语言关系代数是一种抽象的查询语言,115,4.1 关系代数,运算对象:关系运算结果:关系,116,关系代数,关系代数的运算普通的集合运算并、交、差删除部分关系的运算选择、投影合并两个关系元组的运算连接、积改名运算,117,关系代数 并Union(),R和S的并,RS,是在R或S或两者中的元素的集合一个元素在并集中只出现一次R和S必须同类型(属性集相同、次序相同,但属性名可以不同),118,关系代数 交Intersect(),R和S的交,RS,是在R和S中都存在的元素的集合一个元素在交集中只出现一次R和S必须同类型(属性集相同、次序相同,但属性名可以不同),119,关系代数 差Minus(-),R和S的差,R-S,是在R中而不在S中的元素的集合R和S必须同类型(属性集相同、次序相同,但属性名可以不同),120,关系代数投影Projection(),从关系R中选择若干属性组成新的关系A1,A2,An(R),表示从R中选择属性集A1,A2,An组成新的关系列的运算投影运算的结果中,也要去除可能的重复元组例:ssex,sage(student)?,121,关系代数选择Selection(),从关系R中选择符合条件的元组构成新的关系C(R),表示从R中选择满足条件(使逻辑表达式C为真)的元组行的运算例:sage=23 AND sdep=CS(student)?例:列出CS系的学号及姓名sno,sname(sdep=CS(student),122,关系代数笛卡儿积(),关系R、S的笛卡儿积是两个关系的元组对的集合所组成的新关系RS:属性是R和S的组合(有重复)元组是R和S所有元组的可能组合是R、S的无条件连接,使任意两个关系的信息能组合在一起例:student sc(注意sno的命名),123,关系代数自然连接(),从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系R、S的公共属性属性集的交集(名称及类型相同)公共属性在结果中只出现一次等值连接例:student sc(注意sno的命名),124,关系代数条件连接(),从RS的结果集中,选取在指定的属性集上满足条件的元组,组成新的关系是一个关于属性集的逻辑表达式R C S,125,关系代数改名(),对关系R实施改名运算,可显式地改变关系名及属性名将关系R改名为S:s(R)将关系R(B1,B2,Bn)改名S(A1,A2,An):S(A1,A2,An)(R),126,关系代数查询中的复合运算,例:找出比95001年龄大的学生的学号和姓名、年龄s.sno,s.sname,s.sage(s(student)s.sage stu.sage(stu.sno=95001(stu(student),127,关系代数查询中的复合运算,例:找出比95001年龄大的学生的学号和姓名、年龄(与前例的结果有何差异?)s.sno,s.sname,s.sage(stu.sno=95001 and s.sage stu.sage(s(student)(stu(student),128,关系代数外连接,是连接运算的扩展,可以处理缺失信息保留非匹配元组外连接左外连接右外连接全外连接,129,关系代数左外连接,取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到自然连接的结果上例:列出影星的当官情况(是影星,可能不是官)MovieStar MovieExec,130,关系代数右外连接,与左外连接对称例:列出行政长官的从影情况(是长官,可能不是影星)MovieStar MovieExec,131,关系代数全外连接,左外连接与右外连接的合成例:列出所有行政长官和所有影星的关系MovieStar MovieExec,132,4.5 对关系的约束,关系数据模型数据结构关系操作关系的完整性约束实体完整性参照完整性用户定义的完整性,133,用关系代数作为约束语言,用关系代数可以表达约束R=0;R 0R S;R-S=0,134,参照完整性约束,如果对象(实体)A与对象(实体)B相关,那么B必须存在如果一个关系R的一个元组有个分量值为v,那么期望v将出现在另一个关系S的某个元组的特定分量中v(R)v(S),135,参照完整性约束例,Movie关系中,每部电影的制片人必须出现在MovieExec关系中Movie(title,year,length,incolor,studioName,producerC#)MoiveExec(name,address,cert#,networth)每个Movie元组的producerC#分量必须出现在MovieExec元组的cert#分量中producerC#(Movie)cert#(MovieExec)producerC#(Movie)-cert#(MovieExec)=0,136,参照完整性约束例,影星只能于存在的Movie中出演角色Movie(title,year,length,incolor,studioName,producerC#)starsIn(movieTitle,movieYear,starName)movieTitle,movieYear(starsIn)title,year(Movie),137,附加约束函数依赖,对关系student,有snosnamestu1.sno=stu2.sno AND stu1.snamestu2.sname(stu1stu2)=0,138,附加约束用户定义的约束,某些属性的取值有特定的要求genderFAND gender M(MovieStar)=0,139,4.6 包的关系运算,集合无重复顺序无关包可重复顺序无关商业数据库系统往往是基于包的采用包可以获得比集合快的运算速度,140,包的关系运算,并、交、差投影、选择乘积、连接不必去除重复元组!,141,作业,练习4.1.1/4.5.1/4.5.4/4.5.5,第五章 数据库语言SQL,143,概述,SQL的发展1974年,由Boyce和Chamberlin提出19751979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言SQL-86是第一个SQL标准SQL-89、SQL-92(SQL2)、SQL-99(SQL3),144,概述,现状大部分DBMS产品都支持SQL,成为操作数据库的标准语言有方言,支持程度不同,145,数据定义(DDL)定义、删除、修改关系模式(基本表)定义、删除视图(View)定义、删除索引(Index)数据操纵(DML)数据查询数据增、删、改数据控制(DCL)用户访问权限的授予、收回,概述SQL的功能,146,交互式SQL一般DBMS都提供联机交互工具用户可直接键入SQL命令对数据库进行操作由DBMS来进行解释,概述SQL的形式,147,嵌入式SQL能将SQL语句嵌入到高级语言(宿主语言)使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句,概述SQL的形式,148,数据定义Create、Drop、Alter数据操纵数据查询:Select数据修改:Insert、Update、Delete数据控制Grant、Revoke,概述SQL的动词,149,数据查询是数据库应用的核心功能基本结构Select A1,A2,.,AnFrom r1,r2,.,rmWhere PA1,A2,.,An(p(r1r1.rm),数据查询,150,Select语句的含义,对 From 子句中的各关系,作笛卡儿积()对 Where 子句中的逻辑表达式进行选择()运算,找出符合条件的元组根据 Select 子句中的属性列表,对上述结果作投影()操作,151,Select语句的含义,结果集查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集,152,Select子句,对应于关系代数的投影()运算,用以列出查询结果集中的期望属性,153,SQL具有包的特性Select 子句的缺省情况是保留重复元组(ALL),可用 Distinct 去除重复元组Select Distinct sdept From StudentSelect All sdept From Student去除重复元组:费时需要临时表的支持,Select子句重复元组,154,Select子句*与属性列表,星号*表示所有属性星号*:按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性显式列出属性名:按用户顺序排列Select*From StudentSelect Student.*,cno,gradeFrom Student,SCWhere Student.sno=SC.sno,155,Select子句更名,为结果集中的某个属性改名使结果集更具可读性Select sno as stu_no,cno as course_no,gradeFrom SCSelect sno,sname,2001-sage as birthdayFrom Student,156,Where 子句,where子句对应与关系代数中的选择()查询满足指定条件的元组可以通过Where子句来实现使where子句中的逻辑表达式返回True值的元组,是符合要求的元组,将被选择出来,157,Where 子句运算符,比较:、=、=、not+确定范围:Between A and B、Not Between A and B确定集合:IN、NOT IN字符匹配:LIKE,NOT LIKE空值:IS NULL、IS NOT NULL多重条件:AND、OR、NOT,158,Where 子句Like,字符匹配:Like、Not Like通配符%匹配任意字符串_ 匹配任意一个字符大小写敏感,159,Where 子句Like,例:列出姓张的学生的学号、姓名。Select sno,snameFrom StudentWhere sname LIKE 张%,160,Where 子句Like,例:列出张姓且单名的学生的学号、姓名。Select sno,snameFrom StudentWhere sname LIKE 张_ _,161,Where 子句转义符 escape,例:列出课程名称中带有_的课号及课名。Select cno,cnameFrom CourseWhere cname LIKE%_%escape,162,From 子句,From子句对应与关系代数中的笛卡儿积()列出将被扫描的关系(表)例:列出所有学生的学号、姓名、课号、成绩。Select Sudent.sno,sname,SC.cno,gradeFrom Student,SCWhere Student.sno=SC.sno,163,From 子句元组变量,为 From 子句中的关系定义元组变量方便关系名的引用在同一关系的笛卡儿积中进行辨别例:列出与95001同岁的同学的学号,姓名,年龄SelectT.sno,T.sname,T.sageFromStudent as T,Student as SWhereS.sno=95001 ANDT.sage=S.sage,164,Order By子句,指定结果集中元组的排列次序耗时ASC(缺省)、DESC、未选中的属性例:列出CS系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)Select sno,sname,sageFrom StudentWhere sdept=CSOrder By sage ASC,165,SQL的集合操作,SQL的结果集是“包”多个 Select 语句的结果可以进行集合操作,使结果为“集合”(default)SQL-92支持参加集合操作的关系(结果集)必须是相容的,166,SQL的集合操作相容,属性个数必须一致对应的类型必须一致属性名无关最终结果集采用第一个结果的属性名缺省为自动去除重复元组除非显式说明ALLOrder By放在整个语句的最后,167,SQL的集合操作并,union(并,对应与关系代数的),标准SQL都支持的采用集合的观点,合成多个查询的结果select-without-order by.UNION ALL select-without-order by.UNION ALL select-without-order by.ORDER BY integer ASC|DESC,.,168,例:查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序。,SQL的集合操作并,169,intersect(交,对应与关系代数的),并不是所有的DBMS都支持例:查询计算机系的学生并且年龄不大于19岁的学生,并按年龄倒排序。源码网整理:,SQL的集合操作交,170,except(差,对应与关系代数的-),并不是所有的DBMS都支持例:查询计算机系的男生。,SQL的集合操作差,171,数据定义语言(Data Definition Language)Create、Drop、Alter定义一组关系(基本表)、说明各关系的信息各关系的模式各属性的值域完整性约束索引安全性和权限,数据定义语言(DDL),172,字符型char(n)、varchar(n)数值型integer、smallintnumeric(p,d)real、double、float(n)日期/时间型datetime,DDLSQL中的域类型,173,域定义语句(SQL-92支持)需重复使用的Create Domain stu_name varchar(20)Create Domain zip_code char(6),DDLSQL中的域类型,174,Create Table r(A1D1,A2D2,AnDn,)其中:r 关系名(表名)、Ai 关系 r 的一个属性名Dn 属性Ai域值的域类型主键声明:primary key(Aj1,Aj2,Ajvm),DDLSQL的模式定义,175,Create 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),DDLSQL的模式定义,176,Create