数据库系统概率(1~11章)课本知识点课件_第1页
数据库系统概率(1~11章)课本知识点课件_第2页
数据库系统概率(1~11章)课本知识点课件_第3页
数据库系统概率(1~11章)课本知识点课件_第4页
数据库系统概率(1~11章)课本知识点课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库系统概论 课本知识点第1章 绪论1.1 数据库系统概述一、基本概念1.数据:描述事物的符号记录称为数据。数据的含义称为语义,数据与其语义不可分。2.数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户共享。(1)数据库利用数据模型把数据组织起来。(2)数据库的基本特点:永久存储、有组织、可共享。3.数据库管理系统DBMS:数据库管理系统是位于用户和操作系统之间的一层数据管理软件。DBMS和OS一样是计算机的基础软件。4.数据库管理系统的主要功能(1)数据定义功能。(

2、数据定义语言DDL)(2)数据组织、存储和管理。(3)数据操作功能。(数据操纵语言DML)(4)数据库的事务管理和运行管理。(5)数据库的建立和维护功能。(6)其他功能。5. 数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。6.从文件系统到数据库系统标志着数据管理技术的飞跃。7.数据库系统的特点:(1)数据结构化:数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。“整体”结构化是指数据库中的数据不再仅仅针对某一应用,而是面向整个组织或企业;不仅数据内部是结构化的,而且

3、整体是结构化的,数据之间是具有联系的。(2)数据的共享性高、冗余度低且易扩充数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性和不一致性。数据面向整个系统,是有结构的数据,使得数据库系统弹性大,易于扩充。(3)数据独立性:包括物理独立性、逻辑独立性。物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。数据库的独立性由数据库管理系统提供的二级映象功能来保证。(4)数据由数据库管理系统统一管理和控制。数据库提供以下数据控制功能:数据的安全性保护、数据的完整性检查、并发控制、数据库恢复。数据的安全

4、保护是指保护数据以防止不合法使用造成的数据泄密和破坏;数据的完整性是指数据的正确性、有效性和相容性。8.综上所述,数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。1.2 数据模型1.数据模型是对现实世界数据特征的抽象,现有的数据库系统军事基于某种数据模型的。数据模型是数据库系统的核心和基础。2.两类数据模型:根据模型应用的不同目的,将数据模型分为两类(两个层次):第一类是概

5、念模型,第二类是逻辑模型和物理模型。概念模型:也称信息模型。它是按用户的观点来对数据和信息建模,主要用于数据库设计。逻辑模型:它是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。物理模型:是面向计算机系统的,数据在计算机系统内部的表示方法和存取方法。它是对数据最底层的抽象,3.首先将现实世界中抽象为信息世界,然后将信息世界转换成机器世界。4.概念模型:概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。5.信息世界的基本概念:实体、属性、码、实体型、实体集、联系(1)实体:客观存在并可相

6、互区别的事物称为实体。(2)属性:实体所具有的某一特性称为属性。(3)码:唯一标识实体的属性集称为码。(4)实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。(5)实体集:同一类型尸体的集合称为实体集。(6)联系:分为内部联系和之间的联系。实体内部的联系是指组成实体的各属性之间的联系;实体之间的联系是指不同实体集之间的联系,有一对一、一对多、多对多等多种类型。6.实体-联系方法是最常用的概念模型的表示方法,由P.P.S.chen与1976年提出。该方法用E-R图来描述现实世界的概念。7.数据模型的组成要素“数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。(1)数

7、据结构描述数据库的组成对象以及对象之间的联系;(2)数据操作是指数据库中各种对象的实例允许执行的操作的集合,包括操作及其有关的操作规则;(3)数据的完整性约束条件是一组完整性约束规则。数据结构是刻画模型性质最基本的方面8.常用的数据模型有:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型,其中层次模型和网状模型统称为格式化模型。9.层次模型:满足下面两个条件的基本层次联系的集合为层次模型:(1)有且只有一个结点没有双亲结点,这个结点称为根结点;(2)根以外的其他节点有且只有一个双亲结点。10.层次模型的实例:行政机构系统、行政区域系统、学校层次系统。11.层次

8、模型像一棵道理的树,结点双亲是唯一的。12.层次模型的优缺点:优点:数据结构简单清晰、查询效率高、提供了良好的完整性支持。缺点:(1)现实世界中的非层次联系不适合用层次模型表示(2)用户必须清楚数据库的层次结构,对用户要求比较高。13.网状模型:满足以下两个条件的基本层次联系集合称为网状模型:(1)允许一个以上的结点无双亲。(2)一个结点可以有多余一个的双亲。14.层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。15.网状数据库的优缺点:优点:能够更为直观地描述现实世界,性能良好、效率高。缺点:DDL、DML比较复杂,要求用户掌握数据库结构和存取路径,不容易使用。

9、16.关系模型由E.F.Codd与1970提出,他因此于1981年获得ACM图灵奖。17.关系模型与以往的模型不同,它是建立在严格的数学概念基础上。18.关系模型的基本概念:(1)关系:一个关系对应一张表(2)元组:表中的一行称为一个元组(3)属性:表中的一列称为一个属性(4)码:可以唯一确定一个元组的属性组(5)域:域是一组具有相同数据类型的值的集合(6)分量:元组中的一个属性值(7)关系模式:即对关系的描述。一般表示为:关系名(属性1,属性2,属性n)19.关系模型要求关系必须是规范化的,关系的每个分量必须是一个不可分的数据项。20.关系模型中操作对象和操作结果都是关系;关系模型的存取路径

10、对用户隐蔽,提高了数据独立性,提高了用户生产率。21.关系数据流的优缺点:优点:具有严格的数学基础,概念单一,存取路径对用户透明,提高了数据独立性和安全保密性,也提高了应用程序员和数据库开发程序员的效率。缺点:存取路径透明,降低了数据库的查询效率,需要对查询进行优化。1.3 数据库系统的结构1.数据库有“型”和“值”的概念,模式是相对稳定的,而实例是相对变动的。2.数据库的三级模式:模式、外模式、内模式3.模式:模式也称逻辑模式, 是数据库中全体数据的逻辑结构和特征的描述, 是所有用户的公共数据视图。一个数据库只有一个模式。4.数据库提供模式数据定义语言(模式DDL)来严格定义模式。5.外模式

11、:也称子模式或用户模式。它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述, 是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。6.外模式通常是模式的子集,一个数据库可以有多个外模式,外模式是保证数据库安全性的一个有力措施。7.数据库管理系统提供外模式数据定义语言(模式DDL)来严格定义外模式。8.内模式:内模式也称存储模式。一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。9.数据库的二层映象:外模式/模式映象、模式/内模式映象。正是这两层映象保证了数据库系统中的数据能具有较高的逻辑独立性和物理独立性。(1)外模式/模式映象保证逻辑独

12、立性:当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。(2)模式/内模式映象保证物理独立性:当数据库的存储结构改变时,由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。1.4 数据库系统的组成1.数据库系统的组成:(1)硬件平台及数据库(内存、硬盘、通道)(2)软件(数据库管理系统、操作系统、编译系统应用开发工具)(3)人员(DBA、系统分析员和数据库设计人员、应用程序员、用户)【课

13、后题补充】1.数据库技术管理数据的技术,数据是数据库管理的基本对象。2.常见DBMS举例:IBM的DB2(关系型)和IMS(层次型)Oracle的Oracle、微软的SQL Server国产:人大金仓:金仓数据库管理系统、武汉达梦公司:达梦、神通公司:Oscar3.文件系统与数据库系统的联系与区别:联系: DBMS是在操作系统的基础上实现的,数据库中数据的组织与存储是通过操作系统中的文件系统来实现的。数据库实现的基础是文件,对数据库的任何操作最终要转化成对文件的操作。区别:(1)文件系统是操作系统的重要组成部分,DBMS是独立与操作系统的软件。(2)文件系统的数据是面向某一应用的,共享差,冗余

14、大,独立性差,文件的记录是由结构的,但整体是无结构的;数据库的数据是面向整个组织或企业,数据的共享性高、荣誉小,具有高度的物理独立性和逻辑独立性,数据库中的数据用数据模型组织和描述,有数据库管理系统提供数据安全性、完整性、并发控制和恢复能力。4.独立性是指相互不依赖。第2章 关系数据库2.1 关系数据结构及形式化定义1.关系数据库的提出:论文“A Relational Model of Data for Shared Data Banks”2.关系模型的数据结构是关系,即一张二维表。3.基本概念(1)域:一组具有相同数据类型的值的集合。 基数:一个域允许的不同取值个数称为这个域的基数。(2)笛

15、卡尔积:是域上的一种集合运算D1×D2××Dn= d1,d2,dn diDi,i=1,2,n(3)关系:在域上的笛卡尔积的子集称为关系。(4)元组:关系中的每个元素称为元组。 表的每一行对应一个元组,每一列对应一个域。表的每一列起一个名字,称为属性。(5)候选码:若某一属性组的值能够唯一标识一个元组,而其子集不能,则称该属性组为候选码。(6)若一个关系有多个候选码,则选定其中一个为主码。(7)候选码的诸属性称为主属性,不包含任何候选码中的属性称为非主属性或非码属性。(8)全码:关系模式的所有属性是这个关系模式的候选码,称为全码。4.关系三种类型:基本关系(基本表)

16、、查询表、视图表5.基本关系的性质(6条)(1)列是同质的(2)不同的列可出自同一个域(3)列的顺序无所谓(4)任意两个元组的候选码不能取相同的值(5)行的顺序无所谓(6)分量必须取原子值6.关系模型要求关系必须是规范化的,规范化的关系简称范式。其中组基本的一条就是:关系的每一个分量必须是不可分的数据项。7.关系模式:关系的描述称为关系模式。它可以表示为R(U,D,DOM,F).其中R为关系名,U为组成该关系的属性名集合,D为U中枢性所来来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。8.关系数据库的型也称关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在

17、某一时刻对于的关系的集合,通常就成为数据关系数据库。9.关系模式和关系:(1)关系是关系模式的在某一时刻的状态或内容。关系模式是型,关系是值, 是关系模式的实例。(2)关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的。2.2 关系操作1.基本的关系操作:选择、投影、并、差、笛卡尔积(5种)2.关系操作的对象和结果都是集合3.早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数用对关系的运算来表达查询要求,关系演算则用谓词来表达查询要求。关系演算又可按谓词边缘的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算

18、三种语言在表达能力上等价的,都具有完备的表达能力。4.介于关系代数和关系演算之间的关系数据语言是结构化查询语言,他是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。2.3 关系的完整性1.关系模型中有三类完整性约束:实体完整性、参照完整性、用户定义的完整性,其中实体完整性和操作完整性是关系模型必须满足的约束条件,被称是关系的两个不变性。2.实体完整性规则:“主属性不空”若属性(一个或一组)A是基本关系R的主属性,则A不能取空值(null)。空值是指“不知道”、“不存在”、“无意义”的值3.参照完整性: “参照属性有效”(1)外码:设F是基本关系R的一个或一组属性,但不是关

19、系R的码,Ks 是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系。基本关系S为被参照关系或目标关系。(2)参照完整性规则:或者取空值或者等于S中某个元组的主码值。注意:(1)外码为被参照关系的主码(2)若外码同时为参照关系的主码,则该外码不能为空。4.用户定义的完整性:反映某一具体应用所涉及的数据必须满足的语义要求。5.任何关系数据库系统都用支持实体完整性和参照完整性。2.4 关系代数1.关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。2.运算对象、运算符、运算结果是运算的三大要素。3.关系代数的运算按运算法的不同可分为传统的集合运算和专门的关系运算

20、两类。4.传统的集合运算时二目运算,包括并、差、交、笛卡尔积。5.专门的关系运算包括选择、投影、连接、除运算等 (4个)6.引入记号(1)tR:t是关系R的一个元组,tAi:元组t中的Ai分量(2)A表示一个属性组,A表示去掉A中的属性后剩下的属性组。(3)若R为n目关系,S为m目关系,trR , tsS, trts称为元组的连接(串接)。(4)像集:若给定关系RX,Z,X和Z为属性组。当tX=x时,x在R中的像集定义为:Zx=tX | tR, tX=x7.【选择】又称为限制,它在关系中选择满足给定条件的诸元组,记作:FR=t|tR Ft='真' F表示选择条件,它是一个逻辑表

21、达式。 选择运算实际上是从关系中选取使逻辑表达式为真的元组,这是从行的角度进行的运算。8.【投影】关系上的投影是从关系中选择出若干属性组成新的关系。记作:AA=tA|tR其中A为R中的属性。 投影操作时从列的角度进行的运算。9.【连接】也称连接,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:RAB= trts|trR tsStrA tsB 从行列角度进行运算。10.等值连接:当 为“=”的连接运算称为等值连接,它是从广义笛卡尔积中选取属性值相等的那些元组。11.等值连接:是自然连接时一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列

22、去掉。 等值连接是同时从行和列的角度进行运算。12.悬浮元组:自然连接时被舍弃的元组称为悬浮元组。13.如果把悬浮元组也保存在结果关系中,而在其他属性上填空值,那么这种连接就叫做外连接;如果只保留左边关系中的悬浮元组就叫做左外连接;如果只保留右边关系中的悬浮元组就叫做右外连接。14.【除运算】设关系 R 除以关系 S 的结果为关系 T ,则 T 包含所有在 R 但不在 S 中的属性及其值,且 T 的元组与 S 的元组的所有组合都在 R 中。R÷S=trX|trRYSYx 除操作是同时从行和列的角度进行的运算。15.关系代数中,这些运算经有限次复合后形成的表达式称为关系代数表达式。16

23、.8种关系运算中,并、差、笛卡尔积、投影和选择5种运算为基本运算;其他三种运算即交、连接和除,均可用这5种基本运算来表达。第3章 关系数据库标准语言SQL结构化查询语言是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。其功能不仅仅是查询,而且包括数据库模式的创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。3.1 SQL概述1. SQL是1974年提出,最初叫Sequel,并在IBM公司研制的关系数据库管理系统圆形SystemR实现。2. 目前,没有一个数据库管理系统能够支持SQL标准的所有概念和特性。同时,许多软件厂商对SQL基本命令集还进行了不同程度的

24、扩充和修改,又可以支持标准以外的一些功能特性。3. SQL集数据查询、数据操纵、数据定义和数据控制功能与一体,其主要特点包括:(1)综合统一(2)高度非过程化(3)面向集合的操作方式(4)以同一种语法结构提供多种使用方式(5)语言简洁、易学易用4. 支持SQL的关系数据库系统同样支持关系数据库三级模式结构:(1)外模式包括若干视图和部分基本表(2)数据库模式包括若干基本表(3)内模式包括若干存储文件5. 基本表和视图一样都是关系。3.2 学生-课程数据库3.3 数据定义1. 关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有模式、表、视图和索引等。因此SQL的数据定义功能包括

25、模式定义、表定义、视图和索引的定义。2. SQL标准不提供修改模式定义和修改视图定义的操作,要想修改只能删除后重建。3. SQL标准也没有提供索相关语句。4. 现代的数据库管理系统提供了一个层次化的数据对象命名机制:一个数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。5. 为用户ZHANG 创建一个模式TEST,并且在其中定义一个表TAB1CREATE SCHEMA TEST AUTHORIZATION ZHANGCREATE TABLE TAB1(COL1 SMALL,COL2 INT,COL3 CHAR(20)COL

26、4 NUMBER(10,3),COL5 DECIMAL(5,2);6. 删除模式ZHANG:DROP SCHEMA ZHANG CASCASE;同时模式中定义的表TAB1也被删除了。7. 创建里一个模式就建立了一个数据库的命名空间,一个框架。在这个空间中首先要定义的是该模式包含的数据库基本表。8. 建立一个学生表:CRAETE TABLE Sudent(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),);9. 在SQL中域的概念用数据类型来实现。NUMBER、DECI

27、MAL、REAL、DOUBLE PRECISON、FLOAT(n)、BOOLEAN、DATE、TIME、TIMESTAMP、TINTERVAL10.每个基本表都属于某一个模式,一个模式包含多个基本表,当定义基本表时一般有三种方法定义它所属的模式:(1)在表名明显地给出模式名(2)在创建模式语句中同时创建表(3)设置所属的模式,这样在创建表时表名中不必给出模式名11. 当用创建基本表(其他数据对象也一样)时若没有指定模式,系统根据搜索路径来确定该对象所属的模式。12. 搜索路径包含一组模式列表,关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名,若搜索路径中的模式名都不存在

28、,系统将给出错误。13.修改基本表(1)ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。(2)DROP COLUMN子句用于删除表中的列,如果指定了CASCADE短语,则自动删除引用了该列的其他对象,比如视图;如果指定了RESTRICT短语,则如果该列被其他对象引用,DBMS将拒绝删除该列。(3)DROP CONSTRAINT 子句用于删除指定的完整性约束条件。(4)ALTER COLUMN子句用于修改原有的列定义,包含修改列名和数据类型。14. 实例:(1)增加入学时间一列,时间为日期型ALTER TABLE Sudent ADD S_entrance DATE;(

29、2)将年龄的数据类型由字符型改为整数ALTER TABLE Sudent ALTER COLUMN Sage INT;(3)增加课程名称必须取唯一值的约束条件ALTER TABLE Course ADD UNIQUE(Cname);15. 删除基本表:DROP TABLE Suden CASCADE;16. 基本表定义一旦删除,不仅表中的数据和此表的定义将被删除,而且此表上建立的索引、触发器等对象一般也都将删除。有的关系数据库管理系统还会同时删除在此表上建立的视图。如果欲删除的的基本表被其他基本表所引用,则这些表也可能被删除。17. 数据库索引有多种类型,常见的索引包括顺序文件上的索引、B+索

30、引、散列索引、位图索引等。(1)顺序文件上的索引是针对按指定属性值升序和降序存储的关系,在该属性上建立一个顺讯索引文件,索引文件由属性值和相应的元组指针。(2)B+树索引是将索引属性组织称B+树形式,B+的叶结点为属性值和相应的元组指针。B+树索引具有动态平衡的优点。(3)散列索引是建立若干个桶,将索引属性按照其散列函数值映射到相应的桶中,桶中存放索引属性值和相应的元组指针。散列索引具有查找速度快的特点。(4)位图索引是用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值。18. 关系数据库管理系统在执行查询时会自动选择合适的索引作为存取路径,用户不必也不能显示地选择索引。索引是关系数

31、据库管理系统的内部实现技术,属于内模式的范畴。19. 索引关键字: UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。20. 建立索引:(1)CREATE UNIQUE INDEX Stusno ON Student(Sno);(2)CREATE UNIQUE INDEX Stusno ON Course(Cno);(3)CREATE UNIQUE INDEX Stusno ON SCno ON SC(Sno ASC,Cno DEC);21 删除索引:DROP INDEX Stusname;删除索引时,系统同时从数据字典删去有关该索引的描述。

32、3.4 数据查询1. 数据查询是数据库的核心操作。2. SELECT语句的含义:根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。(1)如果有GROUP BY 子句,则将结果按列名的值进行分组,该属性列值相等的元组为一个组,通常会在每组中作用聚集函数。如果GROUP BY子句带HAVING短语,则只有满足指定条件的组才予以输出。(2)如果有ORDER BY 子句,则结果还要按列质的值升序或降序排列。【单表查询】一、选择表中的若干列1. 选择表中的全部或部分类即关系代数的投影运算(1) 查

33、询指定列:SELECT Sname,Sno,Sdept FROM Student;(2)查询全部列SELECT * FROM Student;(3)查询经计算的值SELECT Sname,2014-age FROM Student;目标表达式不仅可以是算术表达式,还可以是字符串常量、函数等。SELECT Sname,Year of Birth:,2014-Sage,LOWER(Sdept) FROM Student;SELECT Sname NAME,Year of Birth: BIRTH,2014-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Stu

34、dent;二、选择表中的若干元组1. 消除重复的行:两个不完全相同的元组在投影到指定的某些列上后,可能会变成相同的行,可以用DISTINCT消除它们。SELECT DISTINCT Sno FROM SC;2. 查询满足条件的元组:(1)比较大小:=,>,<,>=,<=,!=<>,!>,!<SELECT Sname,Sage FROM Student WHERE Sage<20;SELECT DISTINCT Sno FROM SC WHERE Grade<60;(2)确定范围:谓词BETWEENAND和NOT BETWEENAND可

35、以用来查找属性值在(或不在)指定范围内的元组,其中BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 23 AND 30;SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 23 AND 30;(3)确定集合:谓词IN可以用来查找属性值属于指定集合的元组SELECT Sname,Ssex FROM Student WHERE Sdept IN(CS,MA,IS);SELECT Sname,Ssex

36、 FROM Student WHERE Sdept NOT IN(CS,MA,IS);注:此处IN 实际上是多个OR运算符的缩写。(4)字符匹配:谓词LIKE可以用来进行字符串的匹配通配符:%:代表任意长度(可以为0)的字符串。_ 代表任意单个字符。数据库字符集为ASCII时一个汉字需要两个_;当字符集为GBK时只需要一个_.SELECT * FROM Student WHERE Sno LIKER 201215121;SELECT * FROM Student WHERE Sno = 201215121;SELECT Sname, Sno,Ssex FROM Student WHERE Sn

37、ame LIKER刘%;SELECT Sname FROM Student WHERE Sname LIKER欧阳_;SELECT Sname FROM Student WHERE Sname LIKER _阳%;SELECT Sname FROM Student WHERE Sname NOT LIKER刘%;如果用户要查询的字符串本身就含有通配符 % 或 _ ,这是就要用ESCASPE<换码字符>短语对通配符进行转义。SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_DesignESCAPE;ESCAPE表示为换码字符,这样匹

38、配串中紧跟在后面的字符“_”不再具有通配符的含义,转义为普通的“_”字符。SELECT * FROM Student WHERE Cname LIKE DB_%i_ESCAPE;(5)涉及空值的查询SELECT Sno,Cno FROM SC WHERE Grade IS NULL;SELECT Sno,Cno FROM SC WHERE Grade NOT NULL;注意:此处IS不能用 = 替代。(6)多重条件查询逻辑运算符AND和OR可用来连接多个查询条件。AND的优先级高于OR,单用户可以用括号改变优先级。SELECT Sname FROM Student WHERE Sdept=CS

39、 AND Sage<20;SELECT Sname,Ssex FROM Student WHERE Sdept=CSOR Sdept=MAOR Sdept=IS;3. ORER BY 子句(1)用户可以用ORER BY子句对查询结果按照或多个属性列的升序(ASC)或将序(DESC)排列,默认值为升序。(2)对于空值,排序时显示的次序由具体系统实现决定,各个系统的实现可以不同,只要保持一致就行。4. 聚集函数(1)COUNT(*) 统计元组个数(2)COUNT(DISTINCT|ALL <列名>) 统计一列中值的个数(3)SUM(DISTINCT|ALL <列名>)

40、计算一列值的总和(此列必须是数值型)(4)AVG(DISTINCT|ALL <列名>)计算一列值的平均值(此列必须是数值型)(5)MAX(DISTINCT|ALL <列名>)求一列值中的最大值(6)MIN(DISTINCT|ALL <列名>)求一列值中的最小值示例:SELECT COUNT(*) FROM Student;SELECT COUNT(DISTINCT Sno) FROM SC;SELECT AVG(Grade) FROM SC WHERE Cno=1;SELECT MAX(Grade) FROM SC WHERE Cno=1;SELECT SU

41、M(Credit) FROM SC,Course WHERE Sno=201215012 AND SC.Cno=Course.Cno;当聚集函数遇到控制时,除COUNT(*),都跳过空值而只处理非空值。注:WHERE 子句中是不能用聚集函数作为条件表达式的。聚集函数只能用于SELECT 子句和GROUP BY中的HAVING子句。5. GROUP BY子句(1) GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。(2)分组后聚集函数将作用于每一个组,即每一个组都有一个函数值。示例:SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;SELE

42、CT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>3;注意:WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)>=90 GROUP BY Sno; (错误)SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=90; (正确)【连接查询】一、等值连接1. 若一个查询同时

43、设计两个以上的表,则称之为连接查询。连接查询是关系数据库最主要的查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合连接查询。2. 连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词。当连接词为=时,称为等值连接。使用其他运算符称为非等值连接。若在等值连接中把目标列中重复的属性列去掉则为自然连接。3. 连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的,但名字不必相同。4. 一条SQL语句可以同时完成选择和连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件。二、自身连接1. 自身连接:连接操作不仅可以在两个表之间

44、进行,也可以是一个表与其自己进行连接,称为表的自身连接。三、外连接1. 把Student的悬浮元组保存在结果关系中外连接SELECT Student Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);2. 左外连接列出左边关系中所有的元组,右外连接列出右边关系所有的元组。四、多表连接连接操作除了可以是两表连接、一个表与其自身连接外,还可以是两个以上的表进行连接,后者通常称为多表连接。SELECT Student.Sno, Sname, Cname, Grade F

45、ROM Student,SC,Course WHERE Student. Sno=SC.Sno AND SC.Cno= Course. Cno;【嵌套查询】1. 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。2. 上层的查询块称为外层查询或父查询,下层查询块称为内层查询或子查询。3. 子查询的SELECT 语句不能使用ORDER BY子句,ORDER BY子句只能对最终的查询结果排序。4. 嵌套查询使用可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力,以层层嵌套的方

46、式构造程序正式SQL中“结构化”的含义。一、带有IN谓词的子查询1. 先分步来完成查询,然后在把两个查询构造称嵌套查询。SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname=刘晨)2. 实现同一个查询请求可以有多种方法,这涉及到数据库性能调优技术。有些嵌套查询可以用连接运算替代,有些是不能替代的。3. 查询条件不依赖父查询,称为不相关子查询;如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。二、带有比较运算符的子查询1. 带

47、有比较运算符的子查询是指父查询和子查询之间用比较运算符进行连接。2. 求解相关子查询不能像求解不相关子查询那样一次将子查询求解出来,然后求解父查询。内能查询由于与外层查询有关,因此必须反复求值。3. 实例:SELECT Sno, Sname, Sdept FROM Student WHERE Sdept=( SELECT Sdept FROM Student WHERE Sname=刘晨)SELECT Sno, Cno FROM SC X WHERE Grade>=(SELECT AVG(Grade FROM SC y WHERE y. Sno= x. Sno)三、带有ANY(SOME)

48、或ALL谓词的子查询SELECT Sname,Sage FROM Student WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<(SELECT MAX(Sage) FROM Student WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<ALL(SELECT Sage FROM St

49、udent WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<(SELECT MIN (Sage) FROM Student WHERE Sdept=CS) AND Sdept<>CS;事实上,用聚集函数实现子查询通常比直接用ANY或ALL查询效率高。四、带有EXISTS谓词的子查询1. EXISTS代表存在量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真“true”或逻辑假值“false”。2. 使用存在量词EXISTS后,若内层查询结果非空,则外层的WH

50、ERE子句返回真值,否则返回假值; 使用存在量词NOT EXISTS后,若内层查询结果为空,则外层的WHERE子句返回值真值,否则返回假值。SELECT Sname FROM Student WHERE EXISTS(SELECT* FROM SC WHERE Sno= Student. Sno AND Cno=1);SELECT Sname FROM Student WHERE NOT EXISTS(SELECT* FROM SC WHERE Sno= Student. Sno AND Cno=1);SELECT Sno, Sname, Sdept FROM Student S1 WHERE

51、 EXISTS(SELECT* FROM Student S2 WHERE S2. Sdept= S1. Sdept AND S2. Sname=刘晨);3. 一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换,但所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价代换。4. SQL中没有全称量词,但是可以把带有全称量词的谓词转换为等价的带有存在量词的谓词5. SQL中没有蕴涵逻辑运算,但是可以利用谓词运算将一个逻辑蕴涵的谓词等价转化。SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXI

52、STS(SELECT * FROM SC SCY WHERE SCY. Sno=20121522 AND NOT EXISTS(SELECT* FROM SC SCZ WHERE SCZ. Sno= SCX. Sno AND SCZ. Cno=SCY.Cno);【集合查询】1. SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECTION和差操作EXCEPT.2. 参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。3. 使用UNION将多个查询结果合并起来时,系统会自动去掉重复元组。如果

53、要保留重复元组则用UNION ALL操作符。4. 实例:SELECT* FROM Student WHERE Sdept=CS UNION SELECT * FROM Student WHERE Sage<=19;SELECT Sno FROM SC WHERE Cno=1 UNION SELECT Sno FROM SC WHERE Cno=2;SELECT*FROM Student WHERE Sdept=CS INTERSECT SELECT *FROM Student WHERE Sage<=19;SELECT Sno FROM SC WHERE Cno=1 INTERSE

54、CT SELECT Sno FROM SC WHERE Cno=2;SELECT* FROM Student WHERE Sdept=CS EXCEPT SELECT * FROM Student WHERE Sage<=19;【基于派生表的查询】1. 子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这是子查询生成的临时派生表称为主查询的查询对象。2. 通过FROM子句生成派生表时,AS关键字可以省略,但必须为派生关系指定一个别名。3.5 数据更新【插入数据】1. INSERT INTO Student(Sno, Sname,Ssex,Sdept,Sage) VALUE

55、S(201215128,陈冬,男,IS,18);2. 字符串常量要用单引号(英文字符)括起来。3. 如果没有指定属性名,表示新元组要在表的所有属性列上都指定值,属性列的次序与CREATE TABLE中的次序相同,VALUES子句对新元组的各属性列赋值,一定要注意值与属性列要一一对应。指定部分属性名,为指定的列DBMS自动赋空值。【插入子查询结果】INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;【修改数据】1. 修改一个元组的值UPDATE Student SET Sag

56、e=22 WHERE Sno=201215121;2. 修改多个元组的值UPDATE Student SET Sage= Sage+1;3. 带子查询的修改语句UPDATE SC SET Grad=0 WHERE Sno IN(SELECT Sno FROM Student WHERE Sdept=CS);【删除数据】1.删除某一个元组的值DELETE FROM Student WHERE Sno=201515128;2.删除多个元组的值DELETE FROM SC;3.带子查询的删除语句DELETE FROM SC WHERE Sno IN(SELECT Sno FROM Student WHERE Sdept=CS);3.6 空值的处理1. 所谓控制就是“不知道”或“不存在”或“无意义”的值。控制是很特殊的值,含有不确定性。2. 判断一个属性的值是否为控制,用IS NULL 或IS NOT NULL来表示。3. 属性定义(或域定义)中有NOT NULL 约束条件的不能取空值,加了UNIQUE限制的属性不能取空值。码属性不能取空值。4. 有了U

温馨提示

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

评论

0/150

提交评论