第一章:绪论数据库(DB):长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有娇小的冗余度、交稿的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(DBMS):位于用户和操作系统间的数据管理系统的一层数据管理软件。用途:科学地组织和存储数据,高效地获取和维护数据。包括数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事物管理和运行管理,数据库的建立和维护功能,其他功能。数据库系统(DBS):在计算机系统中引入数据库后的系统,一般由数据库。数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。目的:存储信息并支持用户检索和更新所需的信息。数据库系统的特点:数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由DBMS统一管理和控制。概念模型实体,客观存在并可相互区别的事物称为实体。属性,实体所具有的某一特性称为属性。码,唯一标识实体的属性集称为码。域,是一组具有相同数据类型的值的集合。实体型,具有相同属性的实体必然具有的共同的特征和性质。实体集,同一类型实体的集合称为实体集。联系两个实体型之间的联系一对一联系;一对多联系;多对多联系关系模型关系,元组,属性,码,域,分量,关系模型关系数据模型的操纵与完整性约束关系数据模型的操作主要包括查询,插入,删除和更新数据。这些操作必须满足关系完整性约束条件。关系的完整性约束条件包括三大类:实体完整性,参照完整性和用户定义的完整性。数据库系统三级模式结构外模式,模式,内模式模式:(逻辑模式)数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式的地位:是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。模式定义的内容:数据的逻辑结构(数据项的名字、类型、取值范围等),数据之间的联系,数据有关的安全性、完整性要求外模式:(子模式/用户模式)数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据库和逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的系统的逻辑表示。一个数据库可以有多个外模式。外模式的地位:介于模式与应用之间模式与外模式的关系:一对多。外模式通常是模式的子集。一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求。对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。外模式与应用的关系:一对多。同一外模式也可以为某一用户的多个应用系统所使用但一个应用程序只能使用一个外模式内模式:存储模式或内视图)是数据物理结构和存储方式的描述,是数据在数据库内部实际存储的表示方式:记录的存储方式(顺序,B树,hash方法存储),索引的组织方式,数据是否压缩存储,数据是否加密。数据存储记录结构的规定,一个数据库只有一个内模式三级模式的优点:(1)保证数据的独立性(内模式与模式分开物理独立;外模式与模式分开逻辑独立)(2)简化用户窗口(3)有利于数据共享(4)利于数据的安全保密(5)数据存储由DBMS管理(用户不用考虑存取路径等细节)二级映像功能:(1)外模式/模式映像(应用可扩充性)定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式/模式映象。用途:保证数据的逻辑独立性当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。(2)模式/内模式映像(空间利用率,存取效率)模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关。数据库中模式/内模式映象是唯一的。该映象定义通常包含在模式描述中。用途:保证数据的物理独立性当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。优点:(1)保证了数据库外模式的稳定性。(2)从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。(3)数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?1、数据与程序的逻辑独立性:当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变。从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。2、数据与程序的物理独立性:当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间错提供的二层影响保证了数据系统中的数据具有较高的逻辑独立性和物理独立性。数据库系统的组成硬件平台及数据库,软件,人员第二章:关系数据库关系的完整性约束实体完整性和参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持。用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束。外码,主码,候选码的概念候选码:若关系中的某一属性组的职能唯一地标识一个元组,则称该属性组为候选码。主码:若一个关系有多个候选码,则选定期中一个为主码。外部码:设F是基本关系R的一个或一组属性。但不是关系R的码,如果F与基本关系S的主码K想对应,则称F是基本关系R的外部码,简称外码。关系的3类完整性约束概念实体完整性:若属性(指一个或一组属性)A是基本关系R的主属性,A不能取空值。参照完整性:若属性(或属性组)F是基本关系R的外码,它是基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。用户定义的完整性:针对某一具体关系数据库的约束条件。反映某一具体应用所设计的数据必须满足的语义要求。关系操作的特点,关系代数中的各种运算关系操作的特点是集合操作方式,即操作的对象和结果是集合。关系代数1、并(R∪S)仍为n目关系,由属于R或属于S的元组组成。R∪S={t|tR∨tS}2、差(R–S)仍为n目关系,由属于R而不属于S的所有元组组成。R-S={t|tR∧tS}3、交(R∩S)仍为n目关系,由既属于R又属于S的元组组成。R∩S={t|tR∧tS}R∩S=R–(R-S)4、笛卡尔积R:n目关系,k1个元组;S:m目关系,k2个元组;R×S。9、选择:选择又称为限制(Restriction)σ:对元组按照条件进行筛选。在关系R中选择满足给定条件的诸元组σF(R)={t|tR∧F(t)='真'}。10、投影:投影运算符π的含义:从R中选择出若干属性列组成新的关系πA(R)={t[A]|tR}A:R中的属性列投影操作主要是从列的角度进行运算。但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。11、连接:连接也称为θ连接:两张表中的元组有条件的串接。从两个关系的笛卡尔积中选取属性间满足一定条件的元组RS={|trR∧tsS∧tr[A]θts[B]}外连接:如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接。左外连接:如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)。右外连接:如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。12、除÷:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组;R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集;R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影第三章:关系数据库标准语言SQL注意:SQL(Oracle除外)一般不提供修改视图定义和索引定义的操作,需要先删除再重建定义基本表:CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件]);列级完整性约束--涉及到该表的一个属性NOTNULL:非空值约束UNIQUE:唯一性(单值约束)约束PRIMARYKEY:主码约束DEFAULT默认值:默认(缺省)约束Check(逻辑表达式):核查约束,定义校验条件NOTNULL:非空值约束UNIQUE:唯一性(单值约束)约束PRIMARYKEY:主码约束DEFAULT默认值:默认(缺省)约束Check(逻辑表达式):核查约束,定义校验条件表级完整性约束--涉及到该表的一个或多个属性。UNIQUE(属性列列表):限定各列取值唯一PRIMARYKEY(属性列列表):指定主码FOREIGNKEY(属性列列表)REFERENCES表名[(属性列列表)]Check(逻辑表达式):检查约束PRIMARYKEY与UNIQUE的区别?例:建立“学生”表Student,学号是主码,姓名取值唯一CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/*主码*/SnameCHAR(20)UNIQUE,/*Sname取唯一值*/SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));数据类型修改基本表:ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP列名|完整性约束名][ALTERCOLUMN列名数据类型];例:向Student表增加“入学时间”列,其数据类型为日期型ALTERTABLEStudentADDS_entranceDATE;不论基本表中原来是否已有数据,新增加的列一律为空值将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数ALTERTABLEStudentALTERCOLUMNSageINT;注:修改原有的列定义有可能会破坏已有数据增加课程名称必须取唯一值的约束条件。ALTERTABLECourseADDUNIQUE(Cname);直接删除属性列:(新标准)例:ALTERTABLEStudentDropSage;删除基本表:DROPTABLE表名[RESTRICT|CASCADE];RESTRICT:(受限)欲删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象(触发器,视图等),则此表不能被删除。CASCADE:(级联)在删除基本表的同时,相关的依赖对象一起删除。例:删除Student表DROPTABLEStudentCASCADE;基本表定义被删除,数据被删除;表上建立的索引、视图、触发器等一般也将被删除。删除索引:DROPINDEX索引名;删除索引时,系统会从数据字典中删去有关该索引的描述。例:删除Student表的Stusname索引:DROPINDEXStusname2、数据查询:基本格式单表查询选择表中的若干列(投影)查询指定列(相当于πA(R),A=A1,A2,…,An)例;查询全体学生的学号与姓名SELECTSno,SnameFROMStudent;查询全部列:在SELECT关键字后面列出所有列名按用户指定顺序显示。将目标列表达式指定为*按关系模式中的属性顺序显示。例:查询全体学生的详细记录SELECTSno,Sname,Ssex,Sdept,SageFROMStudent;或SELECT*FROMStudent;P.S:SELECT子句的目标列表达式可以为:查询经过计算的值例:查全体学生的姓名及其出生年份SELECTSname,2011-Sage/*假定当年的年份为2