版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲教师:XXX数据库原理与应用目录01数据库与数据库系统02数据库的发展03教学实训PARTONE数据库与数据库系统数据库的本质与应用数据库的本质是对现实世界进行建模。它将现实世界中的业务逻辑抽象为数据结构和关系,把人、物、景等各种实体,以及思维、逻辑、经验等的抽象,加上各种行为和规律等映射到计算机中,作为数值运算、逻辑推理、信息处理等工作的基础。例如在电商系统中,将商品、用户、订单等实体及其关系进行数字化建模。数据库是现实世界的建模工具1以12306火车票售票系统为例,数据库存储了车次信息、座位信息、用户购票记录等大量数据。通过对这些数据的有效管理和操作,实现了车票的售卖、余票查询等功能,方便了人们的出行。数据库在12306系统中的应用2除了12306系统,数据库还广泛应用于高校教务管理系统,存储学生信息、课程信息、成绩信息等;在购物网站中,管理商品信息、用户订单等数据;在企事业单位内部办公系统中,处理各类流程数据等。数据库在其他常见场景的应用数据库的本质与应用1.1.1数据库的基本概念数据库(Database,DB)是一个由数据集成的大型集合,主要由实体(Entity)和关系(Relationship)构成,它们被存储在计算机系统中,以便进行管理、处理和访问。存储在计算机中的数据可以有各种不同的组织方式,如组成若干个表格或者集合,每个表格或集合包含一组相似的数据。1、数据库的相关概念数据是指可以被计算机处理和存储的信息。数据可以是数字、字符、图像、音频等各种类型的信息。数据库中的数据是有意义的信息,可以被组织、管理和检索。数据集合是数据库中存储数据的基本单元,最常用的存储方式是数据表。数据表由行和列组成,行表示记录,列表示字段。表格中的每个单元格包含一个值,该值对应于表格中的一个字段和一条记录。集合1、数据库的相关概念一个字段中的数据必须具有相同的类型,常用的类型包括数字、字符、日期、时间、布尔值等。每个字段都有一个名称,用于唯一标识该字段。字段每条记录包含一组字段值。在一个集合中,记录的数量可以是零个或多个。记录主键是一条记录的唯一标识符,用于区分集合中不同的记录。主键可以是一个或多个字段的组合,主键的值不能重复。主键2、数据库的类型层次型数据库(HierarchicalDatabase)是最早的数据库类型之一,它的数据结构类似于树形结构,数据之间存在一对多的层次关系。网状型数据库(NetworkDatabase)是在层次型数据库的基础上发展起来的一种数据库类型。网状型数据库的数据结构类似于网状结构,数据之间存在多对多的关系。关系型数据库(RelationalDatabase)是指采用关系模型来组织数据的数据库,是目前应用最广泛的一种数据库类型,它的数据结构由多个表格组成,表格之间可以建立关系。关系型数据库可以使用SQL语句进行查询、插入、更新、删除等操作,支持事务处理和索引等高级功能。2、数据库的类型面向对象数据库(Object-orientedDatabase)是一只新型的数据库类型,它的数据结构类似于面向对象程序设计中的对象和类。面向对象数据库将数据存储在对象中,对象之间可以建立关系和继承关系,支持多态和封装等面向对象的特性。分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库在逻辑上是一个统一的整体,在物理上则将数据分别存储在不同的物理节点上。它的分布性表现在数据库中的数据不是存储在同一计算机的存储设备上。从用户的角度看,分布式数据库系统在逻辑上和集中式数据库系统一样,就好像那些数据存储在同一台计算机上,用户可以在任何一个场景执行全局应用。1.1.2数据库管理系统数据库管理系统(DataBaseManagementSystem,DBMS)是一种操纵和管理数据库的大型软件,一方面它需要具备对数据进行分类、组织、编码、存储、检索和维护的能力,同时也要具备建立、使用和维护数据库,以及对数据库进行统一管理和控制的能力。DBMS是一个能够提供数据录入、修改、查询、删除的数据操作软件,具有数据定义、数据操作、数据存储与管理、数据维护、通信等功能,且能够允许多用户使用。1.1.2数据库管理系统DBMS提供数据操作语言DML,供用户实现对数据的追加、删除、更新、查询等操作。数据操作DBMS提供数据定义语言DDL,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息存放在数据字典(DataDictionary)中。数据定义1.1.3数据库应用系统数据库应用系统(DBAS)是在数据库管理系统支持下建立的计算机应用系统,一般由数据库(DB)、数据库管理系统(DBMS)、应用系统(AS)、数据库管理员(DBA)和用户(EndUser)构成。图1-1PARTTWO数据库的发展1.2.1数据管理方式的演变在计算机技术的萌芽时期,数据管理任务主要依赖于人工操作。工作人员需要进行大量的数据分类、比较,并通过操作那些能够处理数百万张穿孔卡片的机器来进行数据处理。数据管理的核心任务便是对这些物理形态的穿孔卡片进行妥善的存储和有效处理。磁带驱动器和磁盘驱动器诞生后,文件系统用于数据管理。磁盘随机存取优化了读写速度,但存在诸多弊端。如不同文件创建者使用不同字段间隔符,导致数据管理程序不通用;相同数据可能存于多个文件,带来数据冗余等问题。人工管理阶段文件系统管理阶段数据库管理阶段网状型数据库和层次型数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。网状型数据库、层次型数据库非关系型数据库(NoSQL)种类繁多,共同特点是不再保证关系数据的ACID(原子性、一致性、隔离性、持久性)特性。数据之间无关系,因此在架构的层面上带来了可扩展的能力,在大数据量下具有非常高的读写性能。非关系型数据库关系型数据库通过范式理论和衡量关系系统的12条标准,用数学理论奠定了基础。关系模型因严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和应用。传统的关系型数据库在处理超大规模和高并发的数据时,出现了很多难以克服的问题。关系型数据库1.2.2数据库产业发展简史阿里云通过创新技术和服务模式,打破Oracle在数据库领域的技术壁垒。以其自主研发的数据库产品和云计算服务,满足用户多样化需求,逐渐在市场竞争中占据一席之地,推动数据库产业的变革。云计算服务平台-阿里云IBM公司的EdgarF.Codd在1970年发表了论文ARelationalModelofDataforLargeSharedDataBanks,这是数据库产业发展史上的一个里程碑事件,拉开了关系型数据库发展的序幕。1977年6月,LarryEllison、BobMiner和EdOates在硅谷共同创办Oracle公司的前身,开发可商用的通用关系型数据库产品Oracle数据库。在Oracle数据库发展的同时,微软于1988年推出了SQLServer系列关系数据库产品、于1992年推出了Access关系数据库,Sybase公司推出了ASE产品系列,IBM公司研制了DB2关系数据库产品,以及现属甲骨文公司的MySQL关系数据库等也得到应用。关系型数据库数据库产业诞生的早期,市场上的数据库产品主要以层次型数据库和网状型数据库为主,如由CharlesW.Bachman创建的Cullinet公司开发的网状型数据库产品IDMS、IBM公司开发的层次型数据库产品IMS等。层次型数据库和网状型数据库1.2.3国产化与产品替代在早期的市场上,甲骨文、微软、IBM等公司的数据库产品占据了绝大部分的市场份额,垄断了国内的信息基础设施。它们制定了国内数据库的底层技术标准,并控制了整个数据库产业生态。由于国家对信息技术应用创新(信创)产业的支持力度不断加大,国产数据库厂商经过多年的技术研发和经验积累,从引进技术、研究,再到自主创新,实力不断提升。我国数据库产业从2013年开始呈现高速发展态势,平均每年新增约10家数据库产业1.2.4数据库产业生态数据库不是独立存在的,它并非一个直接服务于大众的通用软件产品。从数据库使用方面来说,它伴随着应用系统、中间件、操作系统、硬件平台等上下游产品;从数据库销售方面来说,它涉及分销商、增值渠道商、独立软件开发商、系统集成商、数据库运维合作伙伴等一系列的商业链条。因此,一款数据库产品是否经得起时间的检验,除了自身的硬实力之外,产业链条是否完备也至关重要。阿里巴巴集团抓住云计算的发展机遇,细分赛道,定义出一个局部占优的场景,建立起自己的产业生态,把竞争对手拉到其不擅长的场景中,不失为破解数据库领域“赢者通吃”现状的一条可行之策。PARTTHREE教学实训2、初始化数据库1、安装达梦数据库3、建立数据库1.3.1达梦数据库的安装与配置2、设置数据库管理员密码1、下载MySQL数据库安装包并运行安装程序3、MySQL配置导向4、设置环境变量5、接和断开MySQL数据库1.3.2MySQL数据库的安装与配置谢谢主讲教师:XXX数据库原理与应用目录01关系模型02完整性约束03函数依赖04教学实训05模式分解06范式PARTONE关系模型2.1关系模型数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。数据结构用来确定数据库对象以及对象之间联系的描述和组织方式。数据操作是数据库中各种对象允许执行的操作的集合,包括操作语言及有关的操作规则。数据的完整性约束条件是一组完整性规则的集合,是对给定的数据模型中的数据及其联系所具有的约束条件的描述。在关系模型中,无论是实体集,还是实体之间的联系,均采用单一的结构类型——关系来描述。2.1.1关系数据结构及形式化定义域是一组具有相同数据类型的值的集合。域笛卡尔积是域上的一种集合运算。给定一组域D1,D2,...,Dn,在这些域中,允许部分域相同,则
D1,D2,...,Dn的笛卡尔积为D1×D2×...×Dn={(d1,d2,...,dn)|diϵDi,i=1,2,...,n}即诸域中D1,D2,...,Dn中各元素间的一切匹配组合构成的集合。其中每一个元素(d1,d2,...,dn)称为一个n元组,简称元组。元素中的每个值di(i=1,2,...,n)称为一个分量。笛卡尔积2.1.1关系数据结构及形式化定义关系笛卡尔积的有限子集称为对应域上的关系。D1×D2×...×Dn的子集称作在域D1,D2,...,Dn上的关系,表示为R(D1,D2,...,Dn)其中R表示关系的名字,n表示关系的目或度。关系是笛卡尔积的子集,因此关系也是一个二维表格。2.1.1关系数据结构及形式化定义关系模式在数据库中要区分数据的型和值。在关系型数据库中,关系是值(不稳定),关系模式是型。关系模式是对关系的描述。关系模式是静态的、稳定的,而关系是动态的、随时间变化的。关系模式可以形式化地描述为R(U,D,DOM,F),
其中R表示关系的名字,U为组成该关系模式的属性名集合,D为U中属性所取值的域的集合,DOM为属性到域的映射关系,F为属性间数据的依赖关系集合。关系模式通常可以简单记为R(U)或R(A1,A2,...,An),其中R为关系名,A1,A2,...,An为属性名,属性到域的映射关系通常直接说明为属性的类型和长度。2.1.1关系数据结构及形式化定义关系相关术语元组属性候选码和主码主属性和非主属性外码关系的性质列的同质性
即每一列中的分量是属于同一数据类型的,来自同一域。列名唯一性
即关系中不同的属性可以来自同一域,但不同的属性要给予不同的属性名称以做区分。元组相异性
即关系中不允许存在两个完全相同的元组。列的无序性
即关系中列的次序是可以任意交换的。行的无序性
即关系中行的次序是可以任意交换的。分量原子性
即分量值是原子的,每一个分量必须是不可再分的数据项。2.1.2关系代数在关系模型中,常用的关系操作包括数据查询、数据控制和数据操纵。数据查询是指对数据进行检索、排序、分组等,以满足用户对信息查询的需求。数据控制是为了保证数据的安全性和完整性而采取的数据存取控制。数据操作是指对数据进行增加、删除、修改等数据更新操作。2.1.2关系代数关系代数是关系数据操作的一种传统表达方式,是一种抽象的查询语言,用对关系的运算来表达查询。关系代数的运算对象是关系,运算结果也是关系,关系代数所使用的运算符包含两类:传统集合运算符和专门的关系运算符,如表2-3所示。表2-3关系代数运算符传统集合运算传统的集合运算包括并、差、交、笛卡尔积4种运算。当其中并、差、交运算符作用于关系时,要求参与运算的两个关系必须是相容的,即两个关系的列数是相同的,且对应的属性列都来自同一个域。并:R⋃S={t|t∈R⋁t∈S}差:R-S={t|t∈R⋀t∉S}交:R⋂S={t|t∈R⋀t∈S}笛卡尔积:R×S={trts|tr∈R⋀ts∈S}
传统集合运算例2.1已知关系R和关系S分别如图2-1a、b所示,R⋃S、R-S、R⋂S和R×S的集合运算结果如图2-1c~f所示。图2-1a图2-1b传统集合运算图2-1c图2-1d图2-1e传统集合运算图2-1f专门关系运算专门关系运算包括选择、投影、连接、除等。选择:σcon(R)={t|t∈R⋀con(r)=True}投影:ΠA(R)={t[A]|t∈R}例2.2已知关系R如图2-2a所示,则选择运算和投影运算的结果如图2-2b、c所示。图2-2a图2-2b图2-2c【例2.3】已知关系R和关系S如图2-3(a)和图2-3(b)所示,R和S的θ连接如图2-3(c)所示,等值连接如图2-3(d)所示,自然连接如图2-3(e)所示。专门关系运算连接:R⨝S={trts|(tr∈R)⋀(ts∈S)⋀tR[A]θtS[B]}R⨝S=σtR[A]θtS[B](R×S)等值连接:R⨝S=σtR[A]=tS[B](R×S)自然连接:R⨝S={trts|(tr∈R)⋀(ts∈S)⋀tR[A]=tS[B]}
AθBAθB
AθB专门关系运算除:R÷S={tr[X]|(tr∈R)⋀ΠY(S)⊆YX}求R÷S的步骤可以分解为1)求
ΠX(R);2)求
ΠY(S);3)求YX,即x在R上的象集,它表示R中属性组X上的值xi的诸元组在Y上分量的集合。求象集
YX的方法,对于每个分量值
xi,xi∈ΠX(R),求ΠY(σX=xi(R))。4)R÷S的运算结果为:象集YX包含了ΠY(S)的xi。专门关系运算例2.4设关系R(A,B,C)和关系S(B,C)如图2-5所示,计算R÷S的结果。解
分析R中的属性并划分为X,Y两部分,其中A对应X,B与C对应Y。1)求ΠA(R)。ΠA(R)={a1,a2,a3,a4},即在关系R中,A可以取4个值。2)求ΠB,C(S)。关系S在(B,C)上的投影为{(b1,c1),(b2,c2)}。3)求ai在R中的象集BCai(i=1,2,3,4)。当A取值为a1时,Ya1对应的象集为{(b1,c1),(b2,c2),(b3,c3)};当A取值为a2时,Ya2对应的象集为{(b2,c2)};当A取值为a3时,Ya3对应的象集为{(b3,c3)};当A取值为a4时,Ya4对应的象集为{(b4,c4)};显然只有当A取值为a1时,Ya1对应象集包含ΠB,C(S)。所以R÷S结果为{a1}。图2-5关系代数应用示例例2.5设有一个SPJ数据库,包括S、P、J及SPJ共4个关系,S(Sno,Sname,Status,City)、P(Pno,Pname,Color,Weight)、J(Jno,Jname,City)、SPJ(Sno,Pno,Jno,QTY)。其中,供应商表S由供应商代码(Sno)、供应商名(Sname)、供应商状态(Status)和所在城市(City)组成。零件表P由零件代码(Pno)、零件名(Pname)、颜色(Color)和重量(Weight)组成。工程项目表J由工程项目代码(Jno)、工程项目名(Jname)和工程项目所在城市(City)组成。供应情况表SPJ由供应商代码(Sname)、零件代码(Pno)、工程项目代码(Jno)、供应数量(QTY)组成,QTY表示某供应商供应某种零件给某工程项目的数量。今有若干数据如下,写出下列查询的关系代数表达式。关系代数应用示例S表P表J表SPJ表关系代数应用示例(1)求供应工程J1零件的供应商代码SnoΠSno(σJno=’J1’(SPJ))(2)求供应工程J1零件P1的供应商代码SnoΠSno(σJno=’J1’⋀Pno=’P1’(SPJ))(3)求供应工程J1红色零件的供应商代码SnoΠSno(ΠSno,Pno(σJno=’J1’(SPJ))⨝(ΠPno(σColor=’红’(P)))(4)求没有使用天津供应商生产的红色零件的工程项目代码JnoΠJno(J)-ΠJno(ΠSno(σCity=’天津’(S))⨝ΠSno,Pno,Jno(SPJ)⨝ΠPno(σColor=’红’(P)))(5)求至少使用了供应商S1所供应的全部零件的工程项目代码ΠJno,Pno(SPJ)÷ΠPno(σSno=’S1’(SPJ))PARTTWO完整性约束2.2完整性约束数据库运行时,应当防止输入或输出不符合语义的错误数据,始终保持其中数据的正确性,这就是通常所说的数据库完整性。数据库完整性约束一般是一些规则和约束条件,这些规则和条件定义了数据库中数据的有效性和合法性,以防止不符合规则的数据插入、删除或更新。为了维护数据库完整性,数据库管理系统必须能够实现如下功能:1、提供定义完整性约束条件的机制2、提供检查完整性约束条件的方法3、进行违约处理实体完整性规则:若属于(一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值即“不知道”“不存在”或“无意义”的值。实体完整性约束是针对基本表而言的,一个基本表中的每个元组通常对应现实世界中的一个实体(或联系),而现实世界中的一个实体(或联系)是可区分的,主属性不能为空能够保证实体的唯一性,同时也确保了实体的可区分性(不允许不同元组在主属性上取值相同)。1、实体完整性约束2.2.2常见的约束类型参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组取值必须满足:1)或者取空值(F中的每个属性均为空值)2)或者等于S中某个元组的主码值并称基本关系R为参照关系,基本关系S为被参照关系。2、参照完整性约束2.2.2常见的约束类型唯一性约束用于确保表中的特定列或列的组合取值是唯一的,即不允许有重复值,防止重复数据的插入。唯一性约束允许表中某个元组在唯一性约束的列上取NULL值,但不允许多个行都包含NULL值。3、唯一性约束2.2.2常见的约束类型4、非空约束2.2.2常见的约束类型5、默认值约束6、用户自定义约束非空约束确要求表中某些列的取值不为空(NULL值),以确保在插入或更新操作时为具有非空约束的列提供相应的值。默认值约束指定在基本关系中插入新的记录时,如果用户未提供相应值,将在新插入元组中自动设置对应列的值为默认值。用户自定义约束就是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。2.2.4存储过程与函数图2-6图2-7存储过程是一种在数据库中创建、存储和执行的预编译程序单元,通常包含一组操作语句和程序逻辑,用于执行特定的数据库操作和任务。数据库函数的主要目的是计算值或执行操作,然后返回结果。它们通常用于处理和转换数据,以及执行一些通用的计算,如数学运算、日期处理、字符串操作等。2.2.5断言1、触发器的作用断言是一种用于强制实施数据库完整性和业务规则的数据库对象,通过声明断言可以指定更具一般性的约束。触发器是针对数据表的特殊存储过程,主要是通过事件进行触发而被自动执行的程序。(a) 触发器可以强制数据完整性(b) 触发器自动执行(c) 实现数据库中多张表级联更改(d) 返回自定义的错误信息2.2.6触发器2.2.6触发器2.触发器的分类(a) DML触发器(b) DDL触发器(c) 登录触发器3.触发器的管理对数据库中现有的触发器可以进行修改、删除、查看、启用和禁用等。当触发器不满足需求时,可以修改触发器的定义以及各种属性。当触发器不再使用时,也可以将其删除,删除触发器并不影响它所操作的数据表。PARTTHREE函数依赖2.3函数依赖1、函数依赖的定义设R(U,F)是属性集U上的关系模式,X和Y是U上的两个子集,F是属性集U上的函数依赖集合。r是R(U)上的任意关系,如果对于r的任意两个元组u和v,只要有u[X]=v[X],就有
u[Y]=v[Y],则称X函数确定Y或Y函数依赖于X,记作X→Y。函数依赖不是指关系模式R(U)上的某个或某些关系要满足的约束条件,而是指在R(U)上的一切关系均需满足的条件。2.3.1函数依赖的定义和分类2.3.1函数依赖的定义和分类函数依赖的特性:1)X→Y但Y⊄X,则称X→Y是非平凡的函数依赖。平凡的函数依赖是必然成立的,并不反映新的语义信息。若无特殊声明,总是讨论平凡的函数依赖。2)若X→Y成立,对于任意的两个元组,若X属性值相等,Y属性值必然相等,则称X为决定因素。3)若X→Y与Y→X都成立,则记作X⟷Y。4)若Y不函数依赖于X,则记作X↛Y。2.3.1函数依赖的定义和分类
2.3.1函数依赖的定义和分类2、函数依赖的分类设R(U)是属性集U上的关系,X、Y、Z是U的子集,如果X→Y(Y⊄X),Y→Z成立,且Y→X不成立,则称Z对于X传递函数依赖。例如,在关系模式学生(学号,姓名,系号,系主任)中,学号→系号,系号→系主任成立,则系主任对于学号传递函数依赖。
1、函数依赖的逻辑蕴涵2.3.2函数依赖的公理系统设有关系模式R(U,F),U是关系模式R上的属性集,F是U上的函数依赖集,对于R(U,F)来说有以下推理规则:A1自反律
若Y⊆X⊆U,则X→Y为F所蕴涵。A2增广律
若X→Y为F所蕴涵,且Z⊆U,则XZ→YZ为F所蕴涵。A3传递律
若X→Y和Y→Z为F所蕴涵,则X→Z为F所蕴涵。2、Armstrong公理2.3.2函数依赖的公理系统Armstrong公理的证明2.3.2函数依赖的公理系统(1)自反律
设Y⊆X⊆U,对于关系模式R(U,F)上的任一关系r的任意两个元组u和v,若u[X]=v[X],由于Y⊆X,有
u[Y]=v[Y],所以X→Y成立,自反律得证。(2)增广律
对于关系模式R(U,F)上的任一关系r的任意两个元组u和v,若u[XZ]=v[XZ],则有u[X]=v[X]和u[Z]=v[Z]成立。由于X→Y为F所蕴涵,则u[Y]=v[Y],那么u[YZ]=v[YZ],XZ→YZ成立,增广律得证。(3)传递律
对于关系模式R(U,F)上的任一关系r的任意两个元组u和v,若u[X]=v[X],由于X→Y为F所蕴涵,则u[Y]=v[Y]。又因Y→Z为F所蕴涵,则u[Z]=v[Z],X→Z成立,传递律得证。根据Armstrong公理可以得到下面三条推论:(1)合并规则
由X→Y,X→Z,有X→YZ。(2)伪传递规则
由X→Y,WY→Z,有WX→Z。(3)分解规则
由X→Y,及Z⊆Y,有X→Z。3、Armstrong公理的推论2.3.2函数依赖的公理系统Armstrong公理的有效性是指在F中,根据Armstrong公理推导出来的每一个函数依赖一定为F所逻辑蕴涵。Armstrong公理的完备性是指F所逻辑蕴涵的每一个函数依赖都可以由F出发根据Armstrong公理推导出来。4、Armstrong公理的有效性和完备性2.3.2函数依赖的公理系统
1、属性集闭包的定义2.3.3属性集闭包
定理2.12.3.3属性集闭包
2、属性集闭包的求解算法2.3.3属性集闭包
2.3.3属性集闭包2.3.4函数依赖集等价与最小函数依赖集
1、函数依赖集等价2.3.4函数依赖集等价与最小函数依赖集如果函数依赖集F满足下列条件,则称为一个最小函数依赖集,也称为极小函数依赖集或最小覆盖。1)F中任一函数依赖的右部仅含有一个属性。2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。3)F中不存在这样的函数依赖X→A,X有真子集Z,使得F-{X→A}∪{Z→A}与F等价。上述最小函数依赖集的条件不仅保证了最小函数依赖集中无冗余的函数依赖,而且每个函数依赖都具有最简形式。定理2.3每一个函数依赖集F均等价于一个最小函数依赖集Fmin。2、最小函数依赖集
2.3.4函数依赖集等价与最小函数依赖集PARTFOUR范式2.4范式所谓范式(NormalForm,NF),就是规范化的关系模式。关系型数据库中的关系模式是要满足一定约束条件的,且要达到一定的规范化程度。满足不同程度要求的关系模式符合不同的范式。如果一个关系模式属于某级别的范式,是指该关系模式满足了某种确定的约束条件,具有一定的性质。E.F.Codd最早提出了关系模式规范化的问题,根据规范化程度的不同,他系统地提出了第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等不同层次范式要满足的约束条件。1974年,Codd与Boyce合作共同提出了Boyce-Codd范式(BCNF)。随后还提出了比BCNF更高层的范式—第四范式(4NF)和第五范式(5NF)。因此,可以把范式理解成符合某一条件的关系模式的集合。将低一级别的关系模式通过模式分解的方法分解为若干个符合高一级范式要求的关系模式的集合,这个过程叫作关系模式的规范化。2.4.1范式的判定条件1、第一范式(1NF)在一个关系模式R中,若其所有的属性都是不可再分的数据项,则称R属于第一范式,记作R∈1NF。满足第一范式是对关系模式的基本要求,关系型数据库中所有的关系模式都要符合第一范式。例如,下面的学生和职工关系模式由于存在属性可再分的情况,不符合第一范式。学生(学号,姓名,性别,年龄,家庭住址(省,城市)),职工(职工号,姓名,部门,工资(基本工资,奖金,补贴))。可以通过分解属性,使不满足1NF的关系模式达到规范化。如上述两个例子可以转换为:学生(学号,姓名,性别,年龄,省,城市),职工(职工号,姓名,部门,基本工资,奖金,补贴)。2.4.1范式的判定条件2、第二范式(2NF)若关系模式R∈1NF,且每一个非主属性完全函数依赖于候选码,则称R属于第二范式,记作R∈2NF。根据2NF的定义,可以将关系模式学生(学号,姓名,性别,年龄,课程号,成绩)分解成满足2NF的关系模式集合:学生(学号,姓名,性别,年龄),成绩(学号,课程号,成绩)。2.4.1范式的判定条件3、第三范式(3NF)若关系模式R∈2NF,且每一个非主属性都不传递函数依赖于候选码,则称R属于第三范式,记作R∈3NF。根据3NF的定义,可以将关系模式职工(职工号,职工职级,职工工资)分解成满足3NF的关系模式集合:职工(职工号,职工职级),职级工资(职工职级,职工工资)。2.4.1范式的判定条件4、Boyce-Codd范式(BCNF)若关系模式R∈1NF,且关系模式中的任一函数依赖X→Y,且Y⊄X,X必须含有码,则称R属于Boyce-Codd范式,记作R∈BCNF。BCNF通过消除关系模式中函数依赖决定因素中不含码的情况,从而消除主属性之间的部分函数依赖和传递函数依赖。BCNF同时检查主属性和非主属性,是比第三范式更严格的约束。任何满足BCNF的关系模式必然满足第三范式。PARTFIVE模式分解2.5.1模式分解的定义定义2.15关系模式R(U,F)上的一个分解是指用一组子关系模式:ρ={R1(U1,F1),R2(U2,F2),...,RK(UK,FK)}来代替它,其中U=U1∪U2∪...∪UK,且Ui
⊄Uj(i≠j),Fi是F在Ui上的投影。定义2.16函数依赖集合{X→Y|X→Y∈F+
⋀XY⊆Ui}的一个覆盖Fi叫作F在属性Ui上的投影。2.5.1模式分解的定义对于一个给定的关系模式,分解是多种多样的,分解后的关系模式应与原模式等价。人们从不同角度对于等价进行考量:1)分解具有无损连接性。2)分解具有函数依赖保持性。3)分解既要具有函数依赖保持性,又要具有无损连接性。这三条定义了模式分解的不同准则,按照不同准则进行分解,关系模式所能达到的分解程度也不相同,而范式则可以对分解程度进行衡量。2.5.2分解的无损连接性1.无损连接性的形式化定义定义2.17对于关系模式R(U,F),U是属性集,F为U上的函数依赖集,ρ={R1(U1,F1),R2(U2,F2),...,RK(UK,FK)}是R的一个分解,如果对于关系模式R的任一关系r,它向ρ的投影记为mρ(r),有r=mρ(r)则称ρ是关系模式R对
于F的
一
个
无
损
连
接
分
解,
具
有
无
损
连
接
性。
其
中,mρ(r)=πR1(r)⨝πR2(r)⨝...⨝πRk(r),且πRi(r)={t[Ri]|t∈r,i=1,2,...,k}将一个关系模式分解成多个子关系模式,分解后的关系做自然连接必然包含分解前的关系,分解是不会丢失信息的,但有时分解会额外增加一些信息。例如有关系模式R(A,B,C,D),ρ={R1(A,B,C),R2(B,C,D)}为它的一个分解,r1、r2、r3分别是它们的关系,分别如图2-8a~c所示。r1和r2
的自然连接结果如图2-8d所示,从中可以明显看到,mρ(r)比r多了一些元组,分解不具有无损连接性。2.5.2分解的无损连接性图2-82.5.2分解的无损连接性2.无损连接性的检验算法方法:1)构造一个k行n列的表,可称为Rρ表,其中每一行对应分解后的一个关系模式,每一列对应一个属性。第j列对应属性Aj,第i行对应分解后的关系模式Ri,如果Aj∈Ri,则Rρ表中第i行第j列位置填aj,否则填bij
。2)根据F中的函数依赖对Rρ表中的内容进行更新。对于F中的每一个函数依赖X→Y,在表中寻找对应于X中所有属性分量之列上符号全相同的行。若能找到,则在这些行的对应于Y中属性的那些列上置相同符号。如果其中有一个行相应列上为aj,则使其他行同一列上置aj;如果相应列上均为bij,则使其他行同一列上置某一个bij即可。3)如果某次更新后表中发现有形如a1,a2,...,an的行,算法终止,则分解ρ具有无损连接性;否则继续修改Rρ表中的内容,直到无变化时算法结束,此时没有找到形如a1,a2,...,an的行,则分解ρ不具有无损连接性。例2.9已知关系模式R(U,F),属性集U={A,B,C,D,E},U上
的函数依赖集F={A→C,B→C,C→D,DE→C,CE→A},R上的一个分解ρ为ρ={R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE)},判定分解ρ是否具有无损连接性。解1)构造初始Rρ表,如图2-9a所示。2)根据F中的函数依赖对Rρ表中内容进行更新。检查A→C,表中第一、二、五行在属性A上取值相同,将C列上对应行的值修改为b13
,如图2-9b所示。检查B→C
,表中第二、三行在属性B上取值相同,将C列上对应行的值修改为b13
,如图2-9c所示。检查C→D
,表中第一、二、三、五行在属性C上取值相同,将D列上对应行的值修改为a4
,如图2-9d所示。检查DE→C
,表中第三、四、五行在属性D、E上取值相同,将C列上对应行的值修改为a3
,如图2-9e所示。检查CE→A
,表中第三、四、五行在属性C、E上取值相同,将A列上对应行的值修改为a1
,如图2-9f所示。3)图2-9f中第三行出现a1,a2,a3,a4,a5
的行,判定分解ρ具有无损连接性。2.5.2分解的无损连接性2.5.2分解的无损连接性图2-92.5.3分解的函数依赖保持性1.函数依赖保持性的形式化定义定义2.18对于关系模式R(U,F),U是属性集,F为U上的函数依赖集,ρ={R1(U1,F1),R2(U2,F2),...,RK(UK,FK)}是R的一个分解,如果πRi(F)(i=1,2,...,k)中的所有函数依赖的并集逻辑蕴涵F的每个函数依赖,则称分解ρ为保持函数依赖的分解。其中πRi(F)是F在Ri
上的投影,即对于F中的任一函数依赖X→y
,如果X、Y均包含于Ri,则X→Y∈πRi(F)。可以看出,如果分解后的所有关系模式的函数依赖集与原关系模式的函数依赖集等价,则说明分解具有函数依赖保持性(也称“保持函数依赖”),没有丢失原关系模式在属性间的约束关系。2.5.3分解的函数依赖保持性
2.5.3分解的函数依赖保持性2.5.4模式分解算法无损连接性和保持函数依赖是从不同角度对模式分解程度提出的要求,它们是两个不同的概念。具有无损连接性的分解可能没有保持函数依赖,同样,保持函数依赖的分解也可能不具有无损连接性。不同的模式分解算法所达到的程度也不相同,下面给出几个重要事实:●
如果要求分解保持函数依赖,那么分解后子关系模式可以达到3NF,但不一定能达到BCNF。●
如果要求分解具有无损连接性,那么分解后子关系模式一定可以达到BCNF。●
如果要求分解既要保持函数依赖,又具有无损连接性,那么分解后子关系模式可以达到3NF,但不一定能达到BCNF。2.5.4模式分解算法1.将关系模式转换为3NF的保持函数依赖的分解对于给定关系模式R(U,F),将其转换为3NF的保持函数依赖的分解算法为:1)求R(U,F)中函数依赖集F的最小函数依赖集Fmin代替F,ρ=∅。2)找出所有不在Fmin中出现的属性,称为N类属性,将其单独组成一个关系模式。此时分解ρ=ρ∪{N},并令U=U-N,转下一步。3)如果Fmin中存在一个函数依赖X→A,且X∪A=U,则算法结束,否则转下一步。4)对于任一函数依赖X→A,以XA组成一个关系模式,若有X→A1,X→A2,...,X→An都属于F,则以XA1A2...An组成一个关系模式。5)取ρ与上述关系模式集合,则ρ为所求之分解。2.5.4模式分解算法2.将关系模式转换为3NF,且既保持函数依赖,又具有无损连接性的分解对于给定关系模式R(U,F),将其转换为3NF,且既保持函数依赖,又具有无损连接性的分解算法为:1)设X是关系模式R(U,F)的码,ρ={R1(U1,F1),R2(U2,F2),...,RK(UK,FK)}是按上述算法构造的一个3NF,且保持函数依赖的分解,并令τ=ρ∪RX(X,FX)。2)若有某个Ui,且X⊆Ui,则将RX(X,FX)从τ中去除掉,τ即为所求分解。2.5.4模式分解算法
PARTSIX教学实训案例1:
在
达
梦
数
据
库
中,
在ACADEMICAFFAIRS模式下创建存储过程StudentProcedure,实现通过学生学号查询学生的全部信息。2.6教学实训图2-10案
例2:
在
达
梦
数
据
库
中,
在ACADEMICAFFAIRS模式下创建触发器deleteStudents,当School表中某个学院被删除时,触发执行删除Student表中该学院的全部学生。2.6教学实训图2-11谢谢主讲教师:XXX数据库原理与应用目录01表空间管理02模式管理03表管理04教学实训在数据库系统中,数据库对象是指数据库中管理和存储数据的实体。它们包括表、视图、索引、存储过程、触发器等。通过对数据库对象的合理管理和使用,可以提高数据库的存储效率和可用性,同时保证了数据的安全和完整性。数据库对象PARTONE表空间管理3.1表空间管理在数据库系统中,表空间是数据库存储数据的基本单位,它由一个或多个数据文件组成。根据不同的需求,可以创建不同的表空间,以实现数据的存储和管理。空间管理是确保数据库高效存储和访问数据的关键。空间管理包括对表空间、数据文件和日志文件的管理和维护。3.1.1表空间的概念在数据库领域,“空间”一词与数据的存储和管理有关,是指数据库中的对象和数据等在存储和管理上的物理和逻辑结构,这其中包括了物理空间和逻辑空间。物理空间是指数据在物理存储介质上的分布和组织方式,是数据库实际存储数据的地方。数据库的各种对象和数据是以文件的形式存储在磁盘上的,每个文件都需要占用自己的物理空间,物理空间的大小以字节为单位进行计算。逻辑空间是指数据在逻辑层面上的组织和管理方式,与物理空间无关。数据库中的模式、表、视图、索引等都是逻辑概念,通过建立它们相互间的关系,使这些对象在逻辑层面进行组织和管理,并且有效地存储和访问数据。3.1.1表空间的概念表空间是数据库中用于组织和管理数据库对象的存储空间,属于逻辑空间的范畴。一个数据库可以创建多个表空间。同时,表空间作为独立的逻辑存储单元,还定义了一个或多个数据文件在物理空间上的位置和大小等属性。所以,可以把表空间看作逻辑空间与物理空间的桥梁,它既提供了一个“容器”来组织和管理逻辑对象,又定义了数据文件在物理空间中的属性,是数据库中的重要概念。数据库空间的逻辑关系如图3-1所示。3.1.1表空间的概念图3-1数据库空间的逻辑关系3.1.1表空间的概念简单来讲,从物理空间的角度来看,数据库的对象及数据是存放在数据文件里的,而从逻辑空间的角度来看它们是存放在表空间里的。使用数据库管理系统可以方便地通过对模式、表、视图等逻辑对象的操作,借助表空间桥梁的功能,实际管理物理空间里的数据文件。创建一个新的表空间需要使用CREATETABLESPACE语句。下面是CREATETABLESPACE的语法结构:CREATETABLESPACE<TablespaceName>DATAFILE<‘FileName’>;其中,TablespaceName是待创建的表空间的名称,FileName是表空间对应的数据文件的名称。例3.1创建一个名为MyTableSpace的新表空间,可以使用一下SQL语句:CREATETABLESPACEMyTableSpaceDATAFILE‘TablespaceFileName’;3.1.2创建表空间修改表空间需要使用ALTERTABLESPACE语句。其语法结构如下:ALTERTABLESPACE<TablespaceName>;TablespaceName指定了要修改的表空间的名称。修改表空间的属性时,可以使用ADD/DROPDATAFILE、RENAME、ONLINE/OFFLINE等参数。例3.2给MyTableSpace表空间增加一个新数据文件File1,大小为128MB。ALTERTABLESPACEMyTableSpaceADDDATAFILE‘File1’SIZE128;例3.3将
MyTableSpace表空间重命名为MytblSpc。ALTERTABLESPACEMyTableSpaceRENAMETOMytblSpc;3.1.3修改表空间删除表空间需要使用DROPTABLESPACE语句。其语法结构如下:DROPTABLESPACE<TablespaceName>[cascade];其中,TablespaceName指定了要删除的表空间的名称。在删除表空间前,需要先确认该表空间中的所有对象和数据都已经废弃或被移动到其他表空间。如果删除失败,可能是因为该表空间还有对象,请再次确认以避免数据丢失。如果已确认表空间中的对象都不再需要,可以使用
cascade关键字,通过级联删除的方式将表空间及其内部对象一次性全部删除。3.1.4删除表空间PARTTWO模式管理3.2.1模式的概念在数据库中,模式是用于组织和管理数据库对象的一种机制。模式是相关对象的集合,如表、视图、索引等,它定义了数据库中数据的组织方式和关系,以及数据的完整性约束。模式可以为数据库对象提供逻辑隔离功能,不同用户或者应用程序可以使用各自的模式,实现安全的访问权限控制。数据库管理员通过创建和修改模式,可以方便地组织和管理数据库中的对象,提高数据库的可维护性。一方面,一个模式可以包含多个表、视图、索引等对象,这些对象可以存放在多个表空间中。另一方面,一个表空间内也可以创建多个模式,但一个表、视图、索引等对象只能属于一个模式。创建模式需要使用CREATESCHEMA语句,其语法结构如下:CREATESCHEMA<SchemaName>;其中,SchemaName为需要创建的模式的名称。需要注意的是,必须拥有对数据库创建模式的权限才能创建成功。3.2.2创建模式删除模式需要使用DROPSCHEMA语句,其语法结构如下:DROPSCHEMA<SchemaName>[cascade];其中,SchemaName为需要删除的模式的名称。需要注意的是,删除不存在的模式或者权限不足都会导致报错。3.2.3删除模式PARTTHREE表管理3.3.1表的基本概念与数据类型表是数据库中最重要的对象之一,用于存储和管理数据,是管理数据的核心对象之一。表是结构化数据的基础,每个表都由多列数据组成,每列数据包含的数据类型是相同的,每行数据包含了每个列的一个值,表示存储的一个实例数据。简单来说,数据库中的表就是由行和列构成的二维结构化数据集合,用于存储和组织数据。3.3.1表的基本概念与数据类型在数据库的表中,需要指定每列的属性,属性不同,使用方法和效果就不一样。以下是几种常见的属性。是否允许为空(NULL):一个列所对应的值若为空(NULL),意味着这个列在此行内没有值或值缺失。若允许为空,则该列的值可以缺失。若不允许为空,则该列上必须有值。是否有默认值(DEFAULT):若某列设置了默认值,并且当插入数据时没有指定该列的值的时候,则默认使用该值。是否为主键(PRIMARYKEY):主键是特殊的列,它的值在该列中必须保证唯一性,并且不能为空。主键可以是一列或者多列的组合。3.3.1表的基本概念与数据类型数据库支持多种数据类型,这些类型包括数值类型、日期和时间类型、字符串类型等。1.数值类型数值类型是标准SQL支持的用来存储数字的一类数据类型,主要包括整数类型和小数类型。表3-1整数类型的详细说明3.3.1表的基本概念与数据类型表3-2小数类型的详细说明3.3.1表的基本概念与数据类型2.日期和时间类型日期和时间类型用来存储与时间和日期相关的数据。每一个类型都有合法的取值范围和一个“零”值,当指定不合法的值时,系统将“零”值插入数据库中。表3-3日期和时间类型的详细说明3.3.1表的基本概念与数据类型3.字符串类型字符串类型是用来存储字符相关的一类数据,该类型存储的可以是字符串,也可以是以字符串表示的图片、音频和视频等二进制数据。表3-4字符串类型的详细说明1.创建表在数据库的默认模式中,或者用户创建模式后,就可以创建表来保存数据了。创建一个新的表需要使用CREATETABLE语句,其语法结构如下:CREATETABLE<TableName>( <column1><datatype>, <column2><datatype>, <column3><datatype>, ....);其中,TableName为即将创建的表名,column1、column2、column3等为表中各列的名字,datatype为列的数据类型。3.3.2表的定义与管理例3.4创建一个新生表,保存学号、姓名、性别、入学年份、联系方式,可以使用如下SQL语句:CREATETABLEFreshman( studentIDVARCHAR(8)PRIMARYKEY, studentNameVARCHAR(50), studentGenderVARCHAR(1), enrollmentYearINT, studentTelVARCHAR(50));3.3.2表的定义与管理2.修改表在数据库表创建后,可能经常会遇到变更的需求,有些需求会要求更改数据库表结构。为了满足调整表结构的需求,可对表的结构进行全面的修改,包括修改表名、列名、增加列、删除列、修改列类型等。修改一个已有的表需要使用ALTERTABLE语句,其语法结构如下:ALTERTABLE<TableName>ADDCOLUMN<columnName><datatype>|MODIFYCOLUMN<columnName><datatype>|DROPCOLUMN<columnName>;其中,TableName为待修改的表名,ADD、MODIFY、DROP是修改表语句中的子句,分别代表添加、修改、删除,columnName为表中各列的名字,datatype为列的数据类型。3.3.2表的定义与管理例3.5修改例3.4中创建的新生表,添加新的列studentEmail和studentStatus。SQL语句如下:ALTERTABLEFreshmanADDCOLUMNstudentEmailVARCHAR(50),ADDCOLUMNstudentStatusVARCHAR(1);例3.6删除例3.5中Freshman表里的studentStatus列。SQL语句如下:ALTERTABLEFreshmanDROPCOLUMNstudentStatus;3.3.2表的定义与管理3.删除表当数据库表不再使用后,可以使用DROPTABLE语句来删除已有的表,其语法结构如下:DROPTABLE<TableName>;其中,TableName是即将删除的表的名字。例3.7删除Freshman表。DROPTABLEFreshman;需要注意的是,删除表是不可逆的操作,表一旦被删除,表中的数据和其他对象将一并被删除。因此,在执行删除表操作之前,必须做好备份并确保不再需要该表及其中的内容。3.3.2表的定义与管理PARTFOUR教学实训3.4.1表空间管理图3-2查看表空间属性3.4.1表空间管理图3-3查看SYSDBA用户属性1.查询用户SYSDBA所属表空间3.4.1表空间管理图3-4创建MyTableSpace表空间2.创建一个新的表空间3.4.1表空间管理图3-5修改已有表空间3.修改已有表空间3.4.1表空间管理4.重命名已有表空间将MyTableSpace表空间重命名为MyTblSpc。输入以下SQL语句:ALTERTABLESPACEMyTableSpaceRENAMETOMyTblSpc;执行后,刷新“对象导航”窗格中的表空间对象,可以看到表空间名字已被更改为MyTblSpc。3.4.1表空间管理5.删除已有表空间输入以下SQL语句:DROPTABLESPACEMyTblSpc;执行后,刷新“对象导航”窗格中的表空间对象,表空间MyTblSpc已不存在。3.4.2模式管理图3-6创建模式1.创建模式3.4.2模式管理2.删除模式使
用DROPSCHEMA语
句
可
以
删
除
模
式,
如
输
入
以
下SQL语句可以将STUDENTAFFAIRS模式删除。DROPSCHEMASTUDENTAFFAIRS;3.设置默认模式达梦数据库安装后的默认模式一般是SYSDBA。在默认模式下,使用SQL语句操作非默认模式下的对象时,需要使用“模式名.对象名”的格式进行访问。因此,为减小工作量,建议修改默认模式。例如,将默认模式设置为模式ACADEMICAFFAIRS,可以使用如下SQL语句:SETSCHEMAACADEMICAFFAIRS;3.4.3表管理图3-7创建表1.创建表3.4.3表管理图3-8修改表2.为已存在的表增加字段3.4.3表管理3.为已存在的表删除字段删除VisitingStudent表中的联系方式字段,可以使用如下SQL语句:ALTERTABLEVisitingStudentDROPCOLUMNcontactInfo;重新打开“修改表”对话框,列contactInfo已不存在。4.删除表删除VisitingStudent表可以使用如下SQL语句:DROPTABLEVisitingStudent;刷新ACADEMICAFFAIRS模式下的表对象,可以看到表VisitingStudent已不存在。谢谢主讲教师:XXX数据库原理与应用目录01结构化查询语言02数据查询03数据插入04教学实训05数据删除06数据更新PARTONE结构化查询语言4.1结构化查询语言结构化查询语言(StructuredQueryLanguage,SQL)是用于管理关系型数据库的标准语言。SQL是一种非常强大的语言,它可以执行各种各样的数据库操作,例如创建表、插入数据、查询数据、更新数据、删除数据等。PARTTWO数据查询4.2.1单表查询单表查询需要用到SELECT语句,其基本语法如下:SELECT<column1>,<column2>,...FROM<TableName>[WHERE<condition>];其中,column1,column2,…:待查询的列的名称,用逗号分隔,如果要查询所有的列,可以使用*来代替。TableName:待查询的表的名称。WHERE<condition>:可选,用于指定查询条件。在关系型数据库中,单表查询是指只对一个表进行查询的操作。在单表查询中,只需要指定要查询的表以及所需的列和条件,数据库引擎将根据这些条件从表中检索数据并返回相应列的结果。4.2.1单表查询例4.1从Student表中找出所有学生的姓名和电话号码,可以使用以下SQL语句:SELECTstudentName,studentTelFROMStudent;该语句将在Student表中查询所有学生的姓名和电话号码,并在结果中进行显示。例4.2从Student表中找出所有学生的信息,可以使用以下SQL语句:SELECT*FROMStudent;该语句由*代表表的所有列,所以该语句将在Student表中查询所有信息,并在结果中进行显示。4.2.1单表查询以上两个例子是没有查询条件的查询,将会返回表中所有行的指定列数据。在实际应用中,更多的情况是有查询条件的查询,即在表中查询满足条件的数据。这种查询是通过在查询语句中使用
WHERE
子句实现的。WHERE子句常用的查询条件由谓词和逻辑运算符组成。通过指定一个条件并求解,得到的结果为一个布尔值:真、假或未知。4.2.1单表查询表4-1常见运算符功能描述4.2.1单表查询例4.3从Book表中找出作者是“梁野”的书籍信息,可以使用如下SQL语句:SELECTbookName,publicationDate,publisher,categoryFROMBookWHEREauthor='梁野';该语句将从Book表中查询作者为“梁野”的所有数据,并在结果中显示Book表中的书名、出版日期、出版社和书籍类别这四列信息。例4.4从Book表中找出价格在30元至50元区间的书籍信息。SELECTbookName,publicationDate,publisher,categoryFROMBookWHEREprice>=30ANDprice<=50;该语句将从Book表中查询价格大于等于30元,且小于等于50元的所有数据,并在结果中显示Book表中的书名、出版日期、出版社和书籍类别这四列的信息。4.2.1单表查询例4.5从Book表中找出“机械工业出版社”和“外语教学与研究出版社”出版的书籍信息。SELECT*FROMBookWHEREpublisherIN('机械工业出版社','外语教学与研究出版社');该语句将从Book表中查询出版社是“机械工业出版社”和“外语教学与研究出版社”的所有数据,并在结果中显示所有列的信息。4.2.1单表查询如果想查询不是这两个出版社出版的所有书籍信息,可以在IN前使用NOT,表示否定。例4.6从Book表里找出不是“机械工业出版社”和“外语教学与研究出版社”出版的书籍信息。SELECT*FROMBookWHEREpublisherNOTIN('机械工业出版社','外语教学与研究出版社');该语句将从Book表中查询出版社不是“机械工业出版社”和“外语教学与研究出版社”的所有数据,并在结果中显示所有列的信息。4.2.2多表查询多表查询是指查询语句中包含2个或2个以上的表,并根据特定条件将它们连接成一个结果集的查询操作。一般来说,多表查询主要指内连接和外连接。内连接的关键字是INNERJOIN或者JOIN。外连接的关键字是OUTERJOIN。外连接分为三种情况:左外连接(LEFTOUTERJOIN)、右外连接(RIGHTOUTERJOIN)和完全外连接(FULLOUTERJOIN)。内连接根据连接条件,只返回两个表中联结字段相等的数据,称这样的连接为内连接。这意味着只有当两个表中的指定列具有匹配的值时,相关行才会被包含在结果中。内连接例4.7使用内连接从BookCategory、BookSubCategory中查询图书的类别名称和子类别名称。BookCategory、BookSubCategory表中存储的数据情况如图4-1所示。图4-1BookCategory和BookSubCategory表中存储的数据情况内连接内连接的SQL语句如下:SELECTT1.categoryName,T2.subCate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 癫痫患者的自我管理
- 场所安全教育培训制度
- 包装采购员绩效考核制度
- 小公司电商绩效考核制度
- 安质部绩效考核制度
- 审计局文明创建工作制度
- 审计局决策追究制度
- 医疗保健绩效考核制度
- 印刷企业财务规章制度
- 审计局学法用法规章制度
- 2025年浙江长征职业技术学院单招职业适应性考试题库带答案解析
- 2026年经济学专业知识考试试题及答案
- 2025年河北省邯郸市检察院书记员考试试题及答案
- 二次设备基本知识课件
- 陪玩内部制度规范要求
- 2026年时事政治测试题库100道附答案【满分必刷】
- 2026年销售精英招聘面试问题集
- 国家安全政治安全课件
- 义务教育道德与法治课程标准日常修订版(2022年版2025年修订)
- 击剑运动课件
- (2025年)政工师职称考试题库及答案
评论
0/150
提交评论