数据库基础与应用课件.ppt
数据库基础与应用,第一章数据库系统概述,学习目标了解数据处理技术的各个阶段的不同特点;了解和掌握实体、联系、属性、码等概念的含义,以及ER图的应用;了解数据库设计中的各种逻辑结构模型和特点,特别是关系数据模型的特点;了解数据库系统的构成,数据库用户的分类,数据库体系结构,存取数据库中数据的大致工程等内容。,1.1数据处理技术发展经历,基本概念:数据:是人们描述客观事务及其活动的抽象符号表示。是人们互相之间进行思想文化交流的工具。是数据库系统研究和处理的对象。通常指用符号记录下来的、可以识别的信息。数据可以是声音、文字、图形、绘画、图像等。,基本概念:数据处理:是对数据进行加工的过程,对数据进行的查找、统计、分类、修改、变换等运算都属于加工。数据处理是指从某些已知的数据出发,推导加工出一些新的数据,这些新的数据又表示了新的信息。,数据处理手段的发展:人工管理文件管理数据库管理分布式数据库管理,1.1.1人工管理阶段,人工管理阶段的数据管理有下列特点:数据不保存在计算机内。没有专用的软件对数据进行管理。只有程序(program)的概念,没有文件(file)的概念。数据的组织方式必须由程序员自行设计与安排。数据面向程序。即一组数据对应一个程序。,1.1.2文件管理阶段,文件系统阶段的数据管理有以下特点:数据以“文件”形式可长期保存在外部存储器的磁盘上。数据的逻辑结构与物理结构有了区别,但比较简单。文件组织已多样化。有索引文件、链接文件和直接存取文件等。数据不再属于某个特定的程序,可以重复使用,即数据面向应用。对数据的操作以记录为单位。随着数据管理规模的扩大,数据量急剧增加,文件系统显露出三个缺陷:数据冗余(redundancy)数据不一致(inconsistency)数据联系弱(poor data relationship),1.1.3数据库管理阶段,数据库阶段的数据管理具有以下特点:采用数据模型表示复杂的数据结构。数据共享。有较高的数据独立性。增加了系统的灵活性,数据粒度缩小。数据库系统为用户提供了方便的用户接口。数据库管理系统提供以下四方面的数据控制功能:数据安全性,数据的一致性,数据库的并发控制和数据库的恢复。,1.1.4分布式数据库管理阶段,分布式数据库系统主要有以下特点数据库的数据物理上分布在各个场地,但逻辑上是一个整体。每个场地既可以执行局部应用(访问本地DB),也可以执行全局应用(访问异地DB)。各地的计算机由数据通信网络相联系。本地计算机单独不能胜任的处理任务,可以通过通信网络取得其它DB和计算机的支持。,1.2概念数据模型,概念数据模型:是人们对现实世界的认识和抽象,不考虑在计算机上的具体实现,也可以说与计算机的具体实现无关,而只考虑数据本身的结构和相互之间的自然联系。表示概念数据模型最常用的工具:实体联系(Entity Relationship)模型,简称ER模型。由于是以图形方式表现,又称为实体联系图,简称ER图。,1.2.1 ER模型的有关概念,1、实体:是现实世界中存在的可以相互区别的事务或活动的抽象(数据描述)。通常,直接称事务或活动为实体。例如:一本书。实体集:是指同一个实体的集合。例如:一个班级的学生。实体型:是对同类实体的共有特征的抽象定义。例如:人的共有特征为姓名、年龄、籍贯、职业、学历等由此可以定义人这个实体型。实体值:就是符合实体型定义的每个具体实体。例如:由上面实体型定义张三、35、江苏、教师、研究生 实体、实体集、实体型、实体值在以后的叙述中均用实体一词代替。,2、联系:是实体之间的相互联系,它通常表示一种活动。例如:在一张订单中涉及商品、顾客和销售员之间的关系,即某个客户从某个销售员手里订购某件商品。联系集:是同一类联系的集合。例如:一次展销会上的全部订单。联系型:是对同类联系的共有特征的抽象定义。联系、联系集、联系型在本课程中也将由联系一词代替。,3、属性:是描述实体或联系中的一种特征,一个实体或联系通常具有多个特征,需要多个相应属性来描述。例如:描述人需要使用姓名、年龄、籍贯、职业、学历、住址、电话等属性。码:或称键是实体间互相区别的一种唯一标识。例如:人的身份证号码。主属性与非主属性 域:是实体中相应属性的取值范围。例如:性别E男,女,4、联系分类:是讨论两实体型之间的联系情况。按照一个实体型中的实体个数与另一个实体型中的实体个数的对应关系,可分类为:1对1联系、1对多联系、多对多联系。(1)1对1联系 若一个实体型中的一个实体至多与另一个实体型中的一个实体发生关系,同时另一个实体型中的一个实体至多与该实体型中的一个实体发生关系,则这两个实体型之间的联系被定义为1对1联系,简记为1:1。例如:一个学生与其学生证号码。,(2)1对多联系 若一个实体型中的一个实体与另一个实体型中的任意多个实体(含0个)发生关系,而另一个实体型中的一个实体至多与该实体型中的一个实体发生关系,则这两个实体型之间的联系被定义为1对多联系,简记为1:n。例如:一个班级对多个学生。(3)多对多联系 若一个实体型中的一个实体与另一个实体型中的任意多个实体(含0个)发生关系,而另一个实体与该实体型中的任意多个实体(含0个)发生关系,则这两个实体型之间的联系被定义为多对多联系,简记为m:n。例如:一个学生选修多门课程;一门课程被多个学生选修。,1.2.2 ER模型,ER模型是人们描述数据及其联系的概念数据模型,是数据库应用系统设计人员和普通非计算机专业用户进行数据建模和沟通与交流的有力工具。特点:直观易懂、简单易行。进行数据库应用系统设计时,首先要根据用户需要建立合理的ER模型,然后再建立与计算机管理系统相匹配的逻辑数据模型和物理数据模型,最后才能在计算机系统上安装、调试和运行数据库。,1、ER模型中的基本构件 矩形实体,框内标注实体名 菱形联系,框内标注联系名 椭圆型属性,框内标注属性名 连线表示实体、联系与属性之间的所属关系或实体与联系之间的相连关系。2、各种联系的ER图表示1对1 1 1,实体1,联系,实体2,1对n 1 nm对n m n3、使用ER模型举例 book page16,实体1,联系,实体2,实体1,联系,实体2,1.3逻辑数据模型,数据库的逻辑数据模型又称为结构数据模型,或直接简称为数据模型,相继出现:层次、网状、关系和对象四种数据模型。,1.3.1层次数据模型,层次数据模型是最早出现和使用的数据模型,层次模型是一个树型结构模型,整个树有且只有一个根结点;其余结点都是它的孩子或子孙;每个结点只有1个双亲结点,但可以有0n个孩子结点,没有孩子的结点被称为叶子结点。每个结点对应一个记录型,即概念模型中的一个实体型。层次模型有两个缺点:一是只能表示1:N联系,虽然系统有多种辅助手段实现M:N联系但较复杂,用户不易掌握;二是由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也比较复杂。,1.3.2网状数据模型,网状数据模型是一个图结构模型,是对层次模型的扩展。允许有多个结点无双亲,允许每个结点无双亲。层次模型是网状模型的一个特例。网状模型的特点是记录之间联系通过指针实现,M:N联系也容易实现(一个M:N联系可拆成两个1:N联系),查询效率较高。网状模型的缺点是数据结构复杂和编程复杂。,1.3.3关系数据模型,关系数据模型是数据库产品的主导数据模型。它是建立在集合论、数理逻辑、关系理论等数学理论基础之上。关系数据模型结构简单,符合人的思维逻辑。关系模型是一种简单的二维表格结构,概念模型中的每个实体和实体之间的联系都可以直接转化为二维表格形式。每个二维表称为一个关系。表头称为关系的型;表体称为关系的值;每一行数据称为一个元组;每一列数据称为属性,列标题称为属性名。,采用关系模型建立数据库具有的特点:1、数据结构单一 二维表,符合人的习惯,也便于计算机实现。2、采用集合运算 操作对象是关系,结果依然是关系,对关系的操作可以一次一集合。3、数据完全独立 用户对数据库的查询和更新,只要知道数据的逻辑表示以及数据间的逻辑结构,就可以直接操作数据库中的数据。4、数学理论支持 关系模型具有严格的数学定义,具有成熟的数学理论依据。,1.3.4对象数据模型,对象数据模型是数据库技术与面向对象程序设计的方法相结合的成果。主要适用于一些特殊领域,处理对象不仅是数值、文本还包括图形、图像、声音等多媒体数据信息。面向对象数据模型表达信息的基本单位为对象。面向对象模型中也有型和值的区别。对象型(类)是对具有共同特征的事务的抽象定义。对象值是对象型中的一个具体事务。面向对象模型区别于传统数据模型的本质特征在于对象具有封装性、继承性和多态性。,1.4数据库系统简介,1.4.1数据库系统构成 数据库系统是安装了数据库和数据库管理系统的计算机系统。数据库管理系统在计算机操作系统的支持下对保存在外部存储器上的数据库进行有效的管理、维护和使用。在数据库管理系统之上通常需要数据库应用系统开发工具软件,应用程序系统。数据库应用系统通常提供可视化操作界面共终端用户使用。,1.4.2数据库系统用户,数据库系统用户通常包括四种:数据库管理员DBA:负责数据库系统的建立、管理、运行、维护、监控等系统工作,以及用户登记、存取数据权限分配等服务性工作。数据库设计员:根据用户的需求,负责建立相应的数据库。应用程序员:负责相关数据库的程序开发。终端用户:使用数据库的群体,是建立数据库为之服务的对象。,1.4.3数据库体系结构,三级模式结构和两级存储结构概念模式是数据库中全部数据的整体逻辑结构的描述。外模式是用户与数据库系统的接口,是用户用到的那部分数据的描述。内模式是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。模式内模式映象存在于概念级和内部级之间,用于定义概念模式和内模式之间的对应性。外模式模式映象存在于外部级和概念级之间,用于定义外模式和概念模式之间的对应性。,数据库系统的三级模式和两级映像确保了数据的逻辑独立性和物理独立性。数据的逻辑独立性是当数据库的整体逻辑结构发生变化时,通过调整外模式和模式之间的映像使得外模式中的局部数据及其结构(外模式定义)不变,从而使外模式上的应用程序也不用修改。数据的物理独立性是当数据库的存储结构(内模式定义)发生变化时,通过调整模式和内模式之间的映像,仍然能够保持数据库的整体模式不变,当然其所有的外模式及应用程序都不变。,1.4.4 DBMS的主要功能,1、数据的定义和操纵 DBMS提供数据定义语言DDL和数据操纵语言DML及其相应的编译或解释程序,使用户能够进行数据库系统的各级模式定义,并能够对数据库进行查询、插入、删除、修改等操纵数据库的操作。2、数据库管理控制 DBMS提供一组数据库管理控制程序,用以控制数据库系统的正常运行。3、数据库辅助服务 DBMS提供一组数据库服务程序,完成诸如数据库初始创建、数据库转存、数据库恢复等辅助服务。4、提供使用数据库工具 DBMS提供一组高效、简单方便的使用数据库的工具,帮助用户按照提示内容操作完成各种相应的任务。5、建立和维护数据字典 数据库系统的三级模式定义都被DBMS保存到数据字典。DBMS的每一步操作都得到数据字典的检查和验证,以确保数据库操作的合法、安全、有效。,1.4.5使用数据库系统存取数据过程 Book page291.4.6关系数据库系统简介 Book page30,第二章 关系运算,学习目标了解和掌握关系数据结构中涉及到的域、笛卡尔积、关系、关系模式等有关内容的含义。掌握关系的实体完整性和参照完整性的定义。掌握关系代数中的并、交、差、笛卡尔积运算,以及选择、投影和连接运算。,2.1关系数据结构,关系数据结构非常单一,它就是一张具有行列结构的二维表。1、域:是具有相同特性的数据集合。例如:东、南、西、北2、笛卡尔积:是定义在一组域上的集合。例如:一组域D1、D2Dn,笛卡尔积表 示为D1xD2xDn 笛卡尔积的每个元素由下式求出:D1xD2xDn|(d1,d2dn)|di E Di,1=1,3、关系:是笛卡尔积的一个子集,若笛卡尔积具有n个域,则该笛卡尔积上的关系被称为n元关系。一个n元关系具有下面六个性质:(1)关系中每列的数据属于同一个域,每一列称为一个属性,列名称为属性名,每一列的值称为属性值,同一关系中的所有属性名必须是可区分的。(2)不同列允许对应同一个域,此时列名不宜直接采用域名,当一个列对应一个域时,既可以直接采用域名,也可以重新命名。,(3)一个关系中属性的次序在理论上可以任意。(4)一个关系中的任意两个元组不允许完全相同。(5)一个关系中的元组的次序可以任意。(6)一个元组中的每个属性值都必须是单值,不可再分。,4、关系模式:是一个关系的型,即一个关系的具体结构,通常被形式化定义为:R(U,D,DOM,F,I)R为关系名;U为该关系中的所有属性名集合;D为该关系的所有定义域的集合;DOM为属性向域映射的集合,给出属性和域之间的对应关系;F为该关系中各属性之间的数据依赖的集合;属性间的数据依赖的分析主要是找出关系的主码属性。,I为该关系中所定义的完整性规则的集合。关系的完整性规则的建立是为了保证数据库数据的正确性和一致性。一个关系模式可以简化为R(A1、A2、.An)R为关系名;A1、A2、.An为各属性名;主码属性下用下划线标记。一个关系可以只有模式而没有值(空关系),但不能没有模式只有值。,5、码:又称为键(1)超键:关系中能唯一标识每个元组属性或属性组。(2)候选码:关系中能唯一标识每个元组的最少属性或属性组。(3)主码:从候选码中选择一个作为该关系的主码,数据库系统将按主码标识和排序每个元组。(4)备用码:除了主码之外的所有候选码。(5)外码:在关系R1中的属性或属性组在关系R2中作为主码。(6)主属性和非主属性:包含在任何候选码中的属性称为主属性,其他属性称为非主属性。,2.2关系完整性,关系完整性就是关系模型中的数据的正确性、一致性和有效性。1、实体完整性 在一个关系中,主码是对象的唯一标识,若主码为空,则表明该对象无法表示,主码绝对不能为空值。实体完整性规则:关系的主码不能取空值。,2、参照完整性 在一个关系模型中,关系R1的外码对应关系R2的主码,外码与主码不仅要定义在同一个域上,而且外码的取值不能超出主码的取值,否则将为非法数据。参照完整性规则:在两个参照和被参照关系中,参照关系中每个元组的外码或者为空,或者等于被参照关系中的某个元素的主码。,3、用户定义完整性 当用关系模型来描述对象时,关系中的每个属性除了用定义域或对应的数据类型进行取值约束外,有时还需要定义一些附加条件。用户定义完整性规则包括对每个关系每个属性的取值限制的具体定义,它和其它两个完整性规则都被记录在DBMS的数据字典中。,2.3关系运算,关系是元组的集合,因此关系比一般的集合运算复杂,对关系运算不仅可以采用传统的集合运算,还可以采用专门的运算。,2.3.1传统的集合运算,传统的集合运算包括并()、交()、差()和笛卡尔积()。设一个元组变量t t属于关系R:tR;t不属于关系R:tR;假定关系R中一个属性A,则t.A表示属性A在元组t中的值;六个比较运算符(运算符):大于()、小于(=)、小于等于()逻辑表达式由与、或、非连接比较运算符构成,1、并运算 设两个关系R和S具有完全相同的结构,则R和S并仍是一个关系,结构与R和S相同,值是R和S的所有元组组成的集合。(R和S的共同元组,则结果只出现一个)RS=t|tRtS(满足交换率RS=SR)2、交运算 设两个关系R和S具有完全相同的结构,则R和S交仍是一个关系,结构与R和S相同,值是R和S共同具有的元组组成的集合。RS=t|tRtS(满足交换率RS=SR),3、差运算 设两个关系R和S具有完全相同的结构,则R和S差仍是一个关系,结构与R和S相同,值是从R中去掉S中同时出现的元组后,有R中剩余的元组组成的集合。RS=t|tRtS4、笛卡尔积 设一个具有n个属性的关系R和另一个具有m个属性的关系S,则R和S的笛卡尔积仍是一个关系,结构是R和S的结构之连接,即前n个属性来自R,后m个属性来自S,属性个数为n+m,值是R中每个元素连接S中每个元素构成的元组集合。RS=tRtS|tRRtSS,2.3.2专门的关系运算,专门的关系运算包括选择()、投影()、连接()和除()。1、选择运算(select)单目运算,它从一个关系R中选择满足条件的所有元组,同R具有相同的结构。选择运算提供横向划分关系的手段。设F(t)为元组逻辑表达式 F(R)t|tR F(t)=true 2、投影运算(project)单目运算,它从一个关系R中按所需顺序选择若干个属性构成新关系,新关系的元组数小于等于原关系的元组数。选择运算提供纵向划分关系的手段。A(R)t.A|tR,3、连接运算(join)双目运算,把两个关系R和S按相应的属性值的比较条件连接起来,它是R和S的笛卡尔积的一个子集。比较条件就是比较运算表达式,相应的连接就称为该运算符连接。4、除法(division)设关系R和S的元数分别为r和s(设rs0),那么RS是一个(r-s)元的元组的集合。(RS)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组必在关系R中。,2.3.3综合运算举例,Book Page 47,第三章 关系规范化基础,学习目的:会根据一个关系的定义,分析出属性间的各种函数依赖,并能够得出相应的最小函数依赖集。掌握关系的第一、第二、第三以及BC范式的定义,会根据一个关系的最小函数依赖集确定它的规范化级别。会对一个具体关系进行规范化,使之达到所要求的规范化级别。,3.1数据依赖,每一种类型的数据和数据之间的联系,在关系数据库系统中都是利用相应的关系来描述的。这样事务之间以及事务内部的各特征之间的相互依赖和相互制约关系就自然反映到关系数据库中的各个关系之间和关系内部的各属性之间。因为关系是由属性构成的,所以数据依赖的基础是属性之间的数据依赖。数据依赖包括函数依赖和多值依赖,本课只讨论函数依赖。,定义1:设一个关系为R(U),X和Y为属性集U上的子集,若对于元组中X上的每个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X函数决定Y,或称Y函数依赖于X,记作X-Y,称X为决定因素。例如:身份证号码-姓名,定义2:设一个关系为R(U),X和Y为属性集U上的子集,若X-Y且Y不属于X,则称X-Y 为非平凡函数依赖,否则若Y属于X则必有X-Y,称此X-Y 为平凡函数依赖。例如:身份证号-姓名 非平凡函数依赖 身份证号、性别-性别 平凡函数依赖,定义3:设一个关系为R(U),X和Y为属性集U上的子集,若X-Y,同时X的一个真子集X也能够函数决定Y,即X-Y,则称X部分函数决定Y,或Y部分函数依赖于X,记作XPY,否则若不存在一个真子集X,使得X也能够函数决定Y,则称X完全函数决定Y,或Y完全函数依赖于X,记作XFY。X-Y的部分函数依赖也称为局部函数依赖。例如:book page 53,定义4:设一个关系为R(U),X、Y和Z为属性集U上的子集,其中X-Y、Y-Z,但Y十 X,Z不属于Y,则存在X-Z,称为传递函数依赖,即X传递函数决定Z,Z传递函数依赖于X。必须强调Y十 X,否则X-Z则称为直接函数依赖,而非传递函数依赖。同理必须强调Z不属于Y。例如:学号-系号;系号-系主任;则学号-系主任,定义5:设一个关系为R(U),X、Y和Z为属性集U上的子集,若X-Y,则存在XZ-YZ和XZ-Y。(增广性规则)例如:职工号-职务 则(职工号、性别)-(职务、性别),定义6:设一个关系为R(U),X和Y为属性集U上的子集,若X-Y,并且为完全非平凡函数依赖,同时Y为单属性,则称X-Y为R的最小函数依赖。由R中所有最小函数依赖构成R的最小函数依赖集,其中不含有冗余的传递函数依赖。例如:book page 54 例3-4、3-5,定义7:设一个关系为R(U),X为U的子集,若X能够函数决定U中的每个属性,并且X的任何真子集都不能函数决定U中的每个属性,则称X为关系R的一个候选码。例如:book page 55 例3-7 分析一个关系的函数依赖,完全是根据关系模式的语义进行,绝不能根据一个关系的某个实例来判定。例如属性在元组上是否可以为空或重复,由语义决定而非实例。,函数依赖的一些常用规则:(1)自反性(2)增广性(3)传递性(4)合并性(5)分解性(6)伪传递性(7)复合性(8)自增性,3.2关系规范化,在关系数据库中的每个关系都需要进行规范化,使之达到一定的规范化程度,从而提高数据的结构化程度、共享性、一致性和可操作性。关系规范化分为六个级别,从低到高:第一范式、第二范式、第三范式、BC范式、第四范式、第五范式 通常只要求规范到第三范式,再向后有可能破坏数据的无损连接性和函数依赖性。,3.2.1第一范式,定义8:设一个关系为R(U),若U中的每个属性都是不可再分的,或者都是不被其他属性所包含的独立属性,则称关系R(U)符合第一范式(1NF)。关系数据库中的每个关系都必须达到第一范式(最低要求),否则称为非规范化的关系。若一个关系数据库中的所有关系都达到第一范式要求,则称为第一范式数据库。,3.2.2第二范式,定义9:设一个关系为R(U),它满足第一范式,若R中不存在非主属性对候选码的部分函数依赖,则称关系符合第二范式(2NF)。一个关系只满足第一范式,那可能会带来数据冗余和操作异常。操作异常具体包括插入异常、删除异常和修改异常。操作异常又常常称为更新异常或存储异常。若一个关系的所有候选码都是单属性,满足第一范式也就满足第二范式。,1、修改异常。譬如教师教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。2、插入异常。如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性课程和课程号上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。3、删除异常。如果要取消教师的教学任务,那么就要把这个教师的元组删去,同时也把教师的地址信息从表中删去了。这是一种不合适的现象。,3.2.3第三范式,设一个关系为R(U),它满足第一范式,若R中不存在非主属性对候选码的传递函数依赖,则称关系符合第三范式(3NF)。若关系R中不存在非主属性对候选码的传递函数依赖,也就不包括部分函数依赖。因此若达到第三范式也就包括达到第二范式。若关系只满足第二范式,而不满足第三范式,则仍然存在由传递依赖带来的数据冗余和操作异常问题。,3.2.4 BC范式,定义11:设一个关系为R(U),它满足第一范式,若R中不存在任何属性对候选码的传递函数依赖,则称关系符合BC范式(BCNF)。等价描述:若R中的所有属性都完全直接依赖于候选码,或者说R的最小函数集中的的所有函数依赖的决定因素都是候选码,则R符合BCNF。BCNF要求去除第三范式中因主属性存在部分依赖或传递依赖而带来的数据冗余和操作异常。若一个第三范式关系的都只存在单个候选码,满足第三范式也就满足BC范式。,小结:关系规范化的过程就是合理分解关系的过程,就是概念单一化的过程,就是把不适当的属性依赖转化为关系联系的过程。在建立和设计数据库时,要切记概念单一化的原则,即用一个关系反映一个对象,每个关系的所用属性都是对主码的具体描述,或者是依附于主码的,另外在必要时附加一些联系属性,作为外码使用。千万不要让一个关系大而全的包含许多对象的信息,出现不是直接描述主码的属性的存在。,第四章 结构化查询语言SQL,学习目标掌握数据库模式的建立和删除的命令格式与作用。掌握基本表结构的建立、修改与删除的命令格式与作用。掌握基本表内容的插入、修改与删除的命令格式与作用。掌握图的建立、修改与删除的命令格式与作用。熟练掌握查询语句的格式与各个选项的作用,能够按照查询要求写出相应的查询语句。,SQL是Structued Query Language的缩写,是美国国家标准局(ANSI)从1986年首次推出的一种关系数据库语言。SQL具有数据定义(DDL)、数据操纵(DML)和数据控制(DCL)等丰富功能。它定义有一组操作命令(语句),用户通过命令交互方式或程序执行方式使用命令能够实现相应功能。SQL的数据定义功能能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。其中外模式又叫试图(View),全局模式简称模式(Schema)或数据库(Database),内模式由系统根据数据库模式自动实现。,在SQL中,每个关系又叫基本表或表(Table),每个关系中的属性又叫做字段(Field)或列(Column),元组又叫做行(Row)。一个数据库由若干基本表组成,通常一个基本表对应存储在外存数据库空间的一个存储文件中。每个视图也是一个关系,它由基本表产生,有自己独立的结构定义,但没有独立的数据存在,它的数据来自基本表,间接地来自存储基本表的数据存储文件。所以,视图又称为虚表。SQL的数据操纵功能包括对基本表和视图的数据查询、插入、删除和修改,特别具有很强的数据查询功能。SQL是一种高度非过程化的面向集合的语言。SQL的数据控制功能主要是对用户的访问权限加以控制,以保证系统的安全性。,4.1数据库模式的建立和删除,4.1.1 建立数据库模式语句格式:CREATE SCHEMA|DATABSAE AUTHORRIZATION语句功能:在计算机系统中建立一个只有名字的空数据库,并定义出它的所有者名称。语句举例:Create schema xuesh authorization 刘勇Create database 教学库,4.1.2删除数据库模式语句格式:DROP SCHEMA|DATABSAE 语句功能:从计算机系统中删除(撤销)一个数据库。语句举例:Drop database xuesh 在设计操作中建立和删除数据库模式通常是通过窗口界面实现。,4.2 表结构的建立、修改和删除,4.2.1建立表结构语句格式:CREATE TABLE.(,)语句功能:在当前或给定的数据库中定义一个表的结构(即关系模式)。语句举例:Create table stu(stu_no char(7)primary key,stu_name char(6)not null unique,stu_sex char(2)not null check(stu_sex=m or str_sex=f),stu_birth datetime check(stu_birth=1 and stu_grade=4),Create table course(course_no char(4)primary key,course_name char(10)not null unique,course_point int check(course_point=1 and course_point=0 and grade=100),primary key(stu_no,course_no),Foreign key(stu_no)reference stu(stu_no),Foreign key(course_no)reference course(course_no),4.2.2修改表结构语句格式:ALTER TABLE.ADD(列定义),|ADD,|DROP COLUMN,|DROP,语句功能:向已定义过的表中添加一些列的定义或一些表级完整性约束,或者从已定义过的表中删除一些列或一些完整性约束。语句举例:alter table stu add 籍贯 char(6)alter table stu drop column 籍贯,4.2.3 删除表结构语句格式:DROP TABLE.语句功能:从当前或给定的数据库中删除一个表,在删除表结构的同时也删除全部内容。语句举例:drop table stu,4.3 表内容的插入、修改和删除,4.3.1插入记录(单行插入)语句格式:INSERT INTO TABLE.(,)VALUES(,)(多行插入)语句格式:INSERT INTO TABLE.(,)语句功能:向一个表中所指定的若干列插入一行或多行数据。语句举例:insert into stu(stu_no,stu_name)values(0001,tom)insert into stu(stu_no,stu_name)select stu_no,stu_name from stu1 where stu_sex=m,4.3.2 修改记录语句格式:UPDATE.SET,FROM WHERE 语句功能:按条件修改一个表中一些列的值。语句举例:update 职工 set 年龄年龄+1 update 职工 set 基本工资职工1.基本工资职工1.加班津贴 from 职工1 where 职工.职工号职工1.职工号 update 职工 set 基本工资基本工资*1.2 where 职工号0001,4.3.3 删除记录语句格式:DELETE FROM.FROM WHERE 语句功能:删除一个表中满足条件的所有行。语句举例:delete from 职工 where 年龄45 delete 职工 from 职工1 where 职工.职工号职工1.职工号 delete 职工,4.4 视图的建立、修改和删除,视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。在数据库三级模式结构中,基本表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。视图的建立和删除只影响视图本身,不影响对应的基本表,而对视图内容的更新直接影响基本表(一般只允许对非主属性修改,不许做插入和删除的操作)。,4.4.1 建立视图语句格式:CREATE VIEW(,)AS 语句功能:在当前数据库中根据select子句的查询结果建立一个视图,包括视图的结构和内容。语句举例:create view 成绩视图(学生号,姓名,课程号,课程名,成绩)as select 选课.学生号,姓名,选课.课程号,课程名,成绩 from 学生,课程,选课 where 学生.学生号选课.学生号 and 课程.课程号选课.课程号 and 专业电子,4.4.2 修改视图内容语句格式:UPDATE.SET,FROM,WHERE 语句功能:按照一定条件对当前或指定数据库中的一些列值进行修改。语句举例:update 成绩视图表 set 成绩80 where 学生号0001 and 课程号f001,4.4.3 修改视图定义语句格式:ALTER VIEW(,)AS 语句功能:在当前数据库中修改已知视图的列,它与select子句的查询结果相对应。语句举例:create view 学生视图表(学生号,姓名)as select 学生号,姓名 from 学生 alter view 学生视图(学生号,专业)as select 学生号,专业 from 学生,4.4.4 删除视图语句格式:DROP VIEW 语句功能:删除当前数据库中一个视图。语句举例:drop view 学生视图表,4.5 SQL 查询,SQL查询只对应一条语句,即select语句。该语句带有丰富的选项,每个选项由一个特定的关键字标识,后跟一些需要用户指定的参数。,4.5.1 select语句格式SELECT ALL|DISTINCT AS,AS|*|.*INTO FROM AS,AS WHERE GROUP BY,HAVING ORDER BY asc/desc,asc/desc 语句功能:根据一个或多个表按条件进行查询,产生出一个新表(即查询结果),该新表被显示出来或者被命名保存起来。,语句说明:Select选项给出在查询结果中每一行所包含的列。Into选项决定是否把查询结果以基本表的形式保存。From选项提供用于查询的基本表和视图,均可带表别名,这些表称为源表,查询结果称为目的表。Where选项用来指定不同源表之间记录的连接条件和每个源 表中记录的筛选条件。Group by选项用于使查询结果只包含按指定列的值进行分组 的统计信息。Having子句通常同group by选项一同使用,筛选出符合条件 的分组统计信息。Order by选项用于将查询结果按指定列值的升序或降序排列。,4.5.2 select选项 在该选项中,all/distinct为任选项。All为允许结果出现重复,distinct在结果中不允许重复,系统默认all。select语句中使用的函数:count()统计个数 max()求最大值 min()求最小值 avg()求平均数 sum()求和 例:book page 8892,4.5.3 from选项 该选项提供用于查询的基本表和视图,并可以为每个基本表起一个别名,此别名只限于该select语句使用,作为列名的前缀限定符。例:Select x.stu_no,x.stu_name from stu x,4.5.4 where 选项 该子句的功能是指定源表之间的连接条件和对记录的筛选条件。条件之间需用and运算符连接成一个逻辑表达式。例:book page 94,在新版sql中,查询连接条件从where选项转移到from选项中,并且丰富了连接的功能。中间连接 frominner join on.左连接fromleftouter join on.右连接fromrightouter join on.每一种连接都隐含着双重循环的执行过程。,中间连接:外循环依次扫描第一个表中的每个元组,内循环依次扫描第二个表中的每个元组,当满足连接条件时就连接起来形成中间表中的一个新元组。左连接:按中间连接形成中间表的新元组外,还把第一个表中没有形成连接的所有元组也加入到中间表中,这些元组在第二个表上所对应的列值被自动置为空。右连接:按中间连接形成中间表的新元组外,还把第二个表中没有形成连接的所有元组也加入到中间表中,这些元组在第一个表上所对应的列值被自动置为空。,用于查询语句中的专门比较式又称为判断式,它实现单值与集合数据之间的比较。常用的有六种格式。1、ALL()是一条完整的select子句,被嵌套在该比较式中使用。当的查询结果中的每一个值都满足所给的比较条件时,此比较式的值才为真,否则为假。例:Select*from stu where ageall(select age from stu),2、ANY|SOME()当的查询结果中的任一个值满足所给的比较条件时,此比较式的值才为真,否则为假。例:Select*from stu where age some(select age from stu)3、NOT BETWEEN AND 此格式中要小于等于。当由所指定列的当前值在(或不在,用NOT关键字)所指定的和之间(包括两个端点的值)时,此时比较式的值才为真,否则为假。例:Select*from stu where age between 18 and 20,4、NOT EXIST()当子查询结果中至少存在着一个元组时,表明查询结果非空,此时判断式的值才为真,否则为假;但是当判断式中带有NOT关键字时,情况刚好相反,即当查询结果为空时,判断式的值才为真,否则为假。例:Select*from stu where exist(select*from course where course.no=stu.no)5、NOT IN()|()当所指定列的当前值包含在由或的结果所给定的值之内时,此时判断式的值才为真,否则为假,出现NOT关键字则判断结果相反。Select*from stu where age in(18,19,20),6、NOT LIKE 当的当前值与的值相匹配时,此时判断式的值才为真,否则为假,出现NOT关键字则判断结果相反。下划线_代表任一字符;百分号代表任意多个字符。