1第一章数据库系统基本概念数据库(Database,简称DB),是一个有结构的、集成的、可共享的、统一管理的数据集合。数据库管理系统(DataBaseManagementSystem,DBMS)是用来管理数据库的一种商品化软件。所有访问数据库的请求都由DBMS来完成的。DBMS提供了操作数据库的许多命令(语言),即SQL语言。DBMS的主要功能:数据定义的功能。DBMS提供数据定义语言(DataDefinitionLanguage,DDL)。通过DDL,可以方便地定义数据库中的各种对象。如定义Students表结构。数据操纵的功能。DBMS提供数据操纵语言(DataManipulationLanguage,DML)。通过DML,实现数据库中数据的基本操作。如向Students表中插入一行数据。安全控制和并发控制的功能。如控制非法用户访问数据库。数据库备份与恢复的功能。对数据库进行定义备份,以便数据库遭遇意外时,能恢复。数据库系统数据库系统的组成:数据库由若干张相互关联的表格组成。数据库系统各个部件之间的关系用户与数据库应用(即应用程序)交互;应用程序与DBMS交互;DBMS访问数据库中的数据,返回给应用程序;应用程序按用户的习惯显示得到的数据。数据库系统管理数据特点:数据是集成的、共享的。--数据库系统中所有的数据都集中存储在一个数据库中。数据重复小。数据独立性好。--应用程序不依赖任何数据的结构与访问技术。数据结构化,易于按用户的视图表示。模式:就是数据的一种抽象描述。数据库的三级模式:外模式、概念模式、内模式。1.内模式是数据库中数据的存储结构、存储方法、存取策略等的描述,也称物理模式、存储模式。2.概念模式是数据库中数据的逻辑结构的描述,也称模式、概念结构。3.外模式是单个用户用到的数据逻辑结构的描述,通常也称视图、子模式。一个数据库只有一个内模式,一个概念模式,但可以有多个外模式。实际的物理数据库与内模式对应,用户使用外模式。2二级映射1)外模式到概念模式的转换,表示为“外模式/概念模式”映射。2)概念模式到内模式的转换,表示为“概念模式/内模式”映射。数据库管理系统(DBMS),不仅提供三级模式的定义语言,而且还提供了三级模式之间相互转换的机制,即二级映射机制。外模式/概念模式映象的用途:保证数据的逻辑独立性当概念模式改变时,数据库管理员修改有关的外模式/概念模式映象,使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。概念模式/内模式映象的用途:保证数据的物理独立性当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改概念模式/内模式映象,使概念模式保持不变应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。数据独立性的定义与内容数据独立性是指应用程序不因物理存储的改变而改变。数据独立性包含逻辑独立性和物理独立性。逻辑独立性是指概念模式改变时,外模式保持不变,从而使应用程序保持不变。当数据库的概念模式改变时,DBMS只要改变外模式到模式的映射,就可保持外模式不变。从而使应用程序保持不变。物理独立性是指内模式改变时,概念模式保持不变。因为当内模式改变(如数据库的存储设备或存储结构改变)时,DBMS只要通过改变概念模式到内模式映射,从而使概念模式保持不变,实现了数据的物理独立性。第二章关系数据库2.1关系模型的数据结构关系:一张满足某些约束条件的二维表,如表2-1Students关系。关系模型的数据结构是关系。元组:关系中的一行称为一个元组。对应表中的一行,存放的是客观世界的一个实体,如表Students关系中的一行,存放的是一个学生的数据。属性:关系中的一列,称为一个属性。对应表中的一列。一个属性表示实体的一个特征,如表Students关系中的Sno属性表示学生实体的学号特征值。域:关系中一个属性的取值范围。例如,Ssex的取值范围是{‘M’,‘F’},代表性别为男性和女性。。3关系的候选码与主码·表中某一列(或若干列的最小组合)的值能惟一标识一个行,称该列或列组为候选码。·对于一个表,可能有多个候选码。·如果一个表有多个候选码,数据库设计者通常选择其中一个候选码作为区分行的惟一性标识符,称为主码(primarykey,PK)。关系模式·关系模式是关系的形式化描述(没有具体的值)。·最简单的表示为:关系名(属性名1,属性名2,…,属性名n)关系数据库·关系数据库是相互关联的表或者说关系的集合(一个DATABASE是Table的集合)·一个关系用一个关系模式表示,所有关系模式集合构成数据库的模式,它是数据库整体逻辑结构的描述。2.2关系的完整性关系模型的完整性指的是完整性规则,是对关系的某种约束条件。完整性规则包括实体完整性规则、参照完整性规则和用户自定义完整性规则三大类。实体完整性和参照完整性是关系模型必须满足的两个完整性规则。实体完整性规则:若属性A(指一个或一组属性)是基本关系R的主属性,则A不能取空值。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性均为空值)或者等于S中某个元组的主码值。用户自定义完整性规则:是表格设计者为了保证表中某些行、列的数据满足具体应用要求而自定义的一些规则。2.3关系模型的数据操作——关系代数关系代数中,运算的对象是关系(表),运算的结果是一个新关系(表)。关系的运算包含两部分,即传统的集合运算和特殊的关系运算。传统的集合运算:∪(并运算),-(差运算),∩(交运算),×(笛卡儿积运算)。4个特殊的关系运算:σ(选择),π(投影),∞(连接),÷(除)。1)传统的关系运算·两个表的兼容性。所谓兼容,即两个表的表头结构相同,且对应列的数据类型相同。·并、差、交运算都要求有两个表参加运算,并且两个表是兼容的。2)专门的关系运算·包含:选择运算、投影运算和连接运算。·选择运算:从指定的R表中选择某些满足条件的行构成一个新表。记作бF(R)·投影运算:从指定的表R中选择某些列构成一个新表。记作∏A(R)。·连接运算:从R与S的笛卡儿积R×S中选择满足连接条件的行。记作:=σAθB(R×S)两种特殊的连接:等值连接和自然连接。·等值连接:连接条件用=,则AθB-A=B·自然连接:若等值连接的连接条件中的列名相同,且结果表中消除了重复列,则把此种等值连接称为自然连接,记作R∞S。自然连接中不必标注连接条件。自然运算与等值连接的区别:4·自然连接要求连接的两个表有相同的列(公共列),等值连接则不要求。·自然连接结果表中去掉了重复的列,等值连接却可能包含重复的列。笛卡儿积:简称积运算,也是二元运算,即要求有两个表参加运算,但这两个表可以不兼容。笛卡儿积运算定义:给定两个表R和S,R和S的积运算的结果是一个新表,新表中的行由R中的每一行和S中的每一行组合而成。记作R×S。新表可能包含重复的列,因此不一定是一个关系。用关系代数表示查询。解题步骤:1)根据题意确定要输出的列以及这些列所在的表,由此确定被操作的表名称,可能有多个。2)根据题意,确定选择条件以及选择条件中用到的列在哪个表中,这里又确定一些被操作的表名称。3)根据1、2两步确定的表名称形成所有要操作的表名集。4)若表名集中只有一个表,则如果要输出的列是这个表的全部列,就只用选择运算;否则先用选择,后用投影选取要输出的(属性)列。5)如表名集中有两个或多个表,则一般用自然连接将它们连接起来,如果发现不存在公共列,即几个表不能进行自然连接,则要在表名集中加入一个或多个中间表,中间表中含有能进行自然连接的公共列,从而使得表名集中全部表可以进行自然连接;将选择条件作用于自然连接后产生的新表上,之后一般用投影操作选取要输出的列。第三章关系数据库语言SQLSQL语言分为三种子语言,分别是:数据定义语言(DDL)用于定义数据库、表、视图等。主要有CREATE、ALTER、DROP语句。数据操纵语言(DML)用于插入、修改、删除和查询数据。主要有:INSERT、DELETE、UPDATE、SELECT语句。数据控制语言(DCL)用于管理数据库用户对数据库中表、视图等的使用权限。主要有GRANT、REVOKE语句。3.1查询语句基本结构语法:SELECT目标列名表FROM数据源表[WHERE查询条件][GROUPBY分组列][HAVING组选择条件][ORDERBY排序列]3.2单表查询单表查询指的是在一个源表中查找所需的数据。因此,单表查询时,FROM子句中的数据源表只要给出一个源表表名。WHERE子句WHERE查询条件查询条件中常用的运算符:比较运算符和逻辑运算符。#比较运算符用于比较两个数值之间的大小是否相等。常用的比较运算符有:=(等于)、(大于)、(小于)、=(大于等于)、=(小于等于)、!=或(不等于)、!((不大于)、!((不小于)共9种。#逻辑运算符主要有:·范围比较运算符:BETWEEN…AND…,NOTBETWEEN…ANDSQL的数据定义语句操作对象操作方式创建删除修改表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEX5·集合比较运算符:IN,NOTIN·字符匹配运算符:LIKE,NOTLIKE·空值比较运算符:ISNULL,ISNOTNULL·条件连接运算符:AND,OR,NOT3.3多表连接查询多表查询指的是从多个源表中检索数据。因此,多表查询时,FROM子句中的数据源表要给出所有源表表名,各个表名之间要用逗号分隔。⑴多表查询的FROM子句格式FROM源表表名集例如,若一个查询用到三个表,表名分别为Students、Enrollment,Courses。则FROM子句为:FROMStudents,Enrollment,Courses⑵多表查询中的WHERE子句多表查询中往往要有多表的连接条件,当然还有表的一个或多个行选择条件,两者用AND操作符组合。3.4子查询·子查询是一个SELECT查询语句,但它嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询语句中。·子查询可分为:非相关子查询和相关子查询。3.5数据更新用SQL的插入语句(INSERT语句)、修改语句(UPDATE语句)、删除语句(DELETE语句)来向表中插入、修改、删除数据。3.6视图视图的建立、查询、更新第四章数据库安全性实现数据库系统安全性的技术和方法存取控制技术视图技术审计技术自主存取控制功能通过SQL的GRANT语句和REVOKE语句实现角色使用角色来管理数据库权限可以简化授权过程CREATEROLE语句创建角色GRANT语句给角色授权第五章数据库完整性数据库的完整性数据的正确性和相容性数据的完整性和安全性是两个不同概念数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取6防范对象:非法用户和非法操作为维护数据库的完整性,DBMS必须:1)提供定义完整性约束条件的机制2)提供完整性检查的方法3)违约处理第六章规范化规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。1.函数依赖·定义6.1:设一个关系模式R(U),R是关系的名称,U是关系R的所有属性的集合,X和Y为属性集U上的子集。若对于任一元组在X上的每一个值,都有Y上的一个惟一值与之对应,则称X函数决定Y,或称Y函数依赖于X,记作XY。X称为这个函数依赖的决定因子。2.平凡函数依赖与非平凡函数依赖·定义6.2:设一个关系模式