版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理与应用第1章数据库系统概述本章知识导图本章学习目标了解:发展历史与系统构成数据管理技术的发展历史,数据库系统的组成,以及层次、网状、面向对象等数据模型的基础信息。理解:核心概念与转换逻辑数据与信息的联系与区别、数据处理与数据管理的异同,数据从现实世界到机器世界的转换逻辑及核心特点。掌握:模型要素与系统结构ER图的基本元素、数据模型三要素,以及数据库系统的三级模式、两级映像结构与数据独立性实现原理。目录01基本概念数据与信息·数据处理与管理·发展历史·系统组成02数据模型三个世界·概念模型·数据模型三要素·关系模型03数据库系统结构三级模式结构·两级映像与数据独立性04本章小结回顾本章重点内容,总结核心知识点1.1基本概念数据与信息数据处理与管理发展历史系统组成1.1.1数据与信息数据对客观事物或现象的原始符号记录,是未经加工的数字、文字、图像、声音等,本身无特定含义。信息经过组织、分析和解释后的数据,被赋予特定含义和实用价值,能反映客观事物的运动状态和变化。核心关系数据是信息的表现形式和载体,信息是数据的语义解释和内涵。案例:数据vs信息原始数据:孤立的数值记录08:00体温测量:37.5℃12:00体温测量:38.0℃18:00体温测量:37.8℃处理后信息:趋势与结论结论:体温持续高于正常水平,提示患者存在发烧症状1.1.2数据处理与数据管理数据处理侧重于数据的“使用”阶段,将原始数据加工分析并转化为有价值的信息。采集清洗分析挖掘可视化数据管理贯穿数据“全生命周期”,侧重于组织、存储与保护,确保数据质量与安全。分类存储备份恢复安全控制二者联系:数据管理是基础,为处理提供高质量数据;数据处理是手段,实现数据价值的转化。两者相辅相成,缺一不可。1.1.3数据管理技术的发展人工管理阶段20世纪50年代中期以前数据不保存,依赖程序管理,无独立性,数据冗余度大。文件系统阶段50年代后期-60年代中期数据可长期保存,由文件系统管理,共享性差,独立性弱。数据库系统阶段20世纪60年代后期至今数据结构化,高共享、低冗余,独立性高,由DBMS统一管理。人工管理阶段(20世纪50年代中期以前)主要特点数据不保存:无长期存储介质应用程序管理:数据由程序自行携带和管理数据不共享:各程序数据独立,无法互通数据不独立:数据结构改变需修改应用程序存在问题数据冗余度高:数据在多个程序间无法共享维护困难:数据与程序强耦合,维护成本高昂应用程序与数据的对应关系文件系统阶段(20世纪50年代后期至60年代中期)技术进步数据可长期保存在外存中,由文件系统统一管理存在局限数据共享性差,冗余度较高数据独立性低,缺乏统一管理控制应用程序与数据的对应关系数据库系统阶段(20世纪60年代后期至今)核心优势与特点数据结构化:结构化存储,面向整个组织数据共享性高:多用户、多应用并发访问数据冗余度低:统一管理,减少重复存储数据独立性高:物理独立性与逻辑独立性统一管理控制:由DBMS统一管理和控制应用程序与数据的对应关系1.1.4数据库系统(DBS)的组成1.数据库(DB)长期存储的、有组织的、可共享的数据集合,是系统的数据基础。2.数据库管理系统(DBMS)位于用户与操作系统之间的系统软件,是DBS的核心管理机构。3.数据的用户包括数据库管理员(DBA)、系统设计员、应用程序员和终端用户。4.计算机平台包括硬件平台(CPU、内存、存储)和软件平台(操作系统)。数据库核心定义数据库是长期存储在计算机内的、有组织的、可共享的大量数据的集合。永久存储数据可以长期保存在存储设备中,不会因为程序结束而消失。有组织数据按一定的数据模型进行组织、描述和存储,结构清晰规范。可共享数据库中的数据能为多个用户、多个应用程序并发共享使用。数据库管理系统数据定义功能负责定义数据库的结构,包括创建和修改表、视图、索引等模式对象,构建数据库的逻辑框架。数据操作功能实现对数据的基本操作,支持用户进行数据的插入(增)、删除、更新(改)和查询(查)等核心业务处理。数据控制功能保障数据安全与一致性,涵盖用户权限管理、数据完整性约束以及多用户并发操作的控制机制。数据库维护功能确保系统长期稳定运行,包括数据的备份与恢复、数据库重构以及系统性能的监控与优化。数据的用户数据库管理员(DBA)负责数据库的整体规划、设计、维护和安全,是系统的最高管理者。数据库设计员专注于数据库的结构设计和概念模型设计,构建高效的数据架构。应用程序员负责编写访问数据库的应用程序,实现业务逻辑与数据的交互。终端用户通过应用程序界面直接使用数据库的普通用户,是系统的最终服务对象。计算机平台硬件平台(Hardware)提供数据库系统运行的物理基础:计算核心:高性能CPU提供强大算力存储系统:大容量内存与高速存储设备网络设施:高带宽网络设备保障数据传输软件平台(Software)连接硬件与应用的逻辑桥梁与运行环境:操作系统:提供底层运行支持接口支持:为DBMS和上层应用提供标准接口开发工具:配套的开发环境与管理工具链1.2数据模型三个世界/概念模型/数据模型三要素/关系模型1.2.1三个世界现实世界客观存在的事物及其联系,是数据库管理的对象来源。信息世界对现实世界的抽象,形成概念模型(如ER图),便于理解。机器世界对信息世界的转换,形成适合计算机处理的数据模型。现实世界核心定义现实世界是指我们生活的客观环境,存在着各种各样的事物(对象)以及事物之间的联系。典型示例以学校环境为例:包含学生、教师、课程等事物;以及选课、授课、班级归属等联系。核心作用现实世界是数据库系统中所有数据的最终来源,是信息处理的起点。信息世界的基本概念实体(Entity)客观存在并可相互区别的事物,是信息世界的基本单元。属性(Attribute)实体所具有的某一特性,用于描述实体的具体特征。实体型(EntityType)用实体名及其属性名集合来抽象和刻画同类实体。实体集(EntitySet)同一类型实体的集合,代表具有相同特征的一类事物。码(Key)唯一标识实体的属性集,确保每个实体都有独一无二的身份。联系(Relationship)实体集之间的关联,描述事物之间的相互作用和关系。机器世界基本定义计算机世界的映射
机器世界也称为计算机世界,它是数据在计算机系统中的具体表示和存储形式。这是现实世界经过抽象后的最终物理载体。概念对应关系实体记录(Record)属性字段(Field)实体集数据表(Table)联系引用/联系表核心作用DBMS的操作层面
机器世界是数据库管理系统(DBMS)实际操作和管理数据的层面。所有的数据查询、插入、更新和删除操作,最终都是在这个层面上对物理存储的数据进行的。三个世界术语关系1.2.2概念模型与ER图概念模型定义现实世界到机器世界的一个中间层次,独立于具体的DBMS,用于描述现实世界的结构。ER图(实体-联系图)基本元素实体——矩形表示代表客观存在的事物,如“学生”、“课程”等。属性——椭圆形表示代表实体的特征,如学生的“学号”、“姓名”等。联系——菱形表示代表实体之间的关联,如学生“选修”课程。实体集间的联系类型一对一(1:1)如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然。
示例:一个班级只有一个班长,一个班长只属于一个班级。一对多(1:N)如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系;反之,实体集B中的每一个实体,实体集A中至多只有一个实体与之联系。示例:一个班级有多个学生,但一个学生只属于一个班级。多对多(M:N)如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系;反之,实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系。
示例:一个学生可以选修多门课程,一门课程可以被多个学生选修。实体集间的联系类型ER图绘制示例:学生选课实体:学生(Student)●属性:学号(主键)●属性:姓名●属性:性别实体:课程(Course)●属性:课程号(主键)●属性:课程名●属性:学分联系:选课(SC)属性:成绩(Grade)联系类型:多对多(M:N)说明:一个学生可选多门课,一门课可被多个学生选。核心概念:实体(矩形)+属性(椭圆)+联系(菱形)ER图绘制示例:学生选课ER图案例职工工号姓名年龄民意测验性别职称领导1m零件代号名称数量价格组装mn医生病人主诊看护1nmnER图综合案例为某百货公司数据库系统设计一个E-R模型。百货公司管辖若干连锁商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。商店的属性有:店号、店名、店址、店经理。商品的属性有:商品号、品名、单价、产地。职工的属性有:工号、姓名、性别、工资。在联系中应反映出职工参加某商店工作的开始时间。E-R模型设计的一般步骤:1、确定实体集2、确定实体集之间的联系和联系的类型3、确定属性(实体属性、联系属性)
ER图综合案例入职时间数据模型三要素数据结构描述数据的类型、内容、性质、结构以及数据之间的联系,是数据库的静态特性。数据操作定义对数据可以执行的操作(如查询、插入、删除、修改)及相应的操作规则,是数据库的动态特性。完整性约束一组完整性规则,用以限定符合数据模型的数据库状态及状态变化,保证数据的正确性与相容性。数据结构基本定义数据结构是数据模型的基础,它描述了数据库的组成对象以及对象之间的联系。核心作用决定数据的组织与存储方式,是数据库设计的核心。不同模型(如关系模型)对应不同结构,例如关系模型的数据结构即二维表。数据操作数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。主要操作类型查询:检索数据库中的数据,获取所需信息。更新:包括插入(Insert)、删除(Delete)和修改(Update)数据。操作规则定义DBMS必须明确定义操作的:确切含义与操作符号具体的操作规则实现操作的语言(如SQL)数据完整性约束数据完整性约束是一组规则的集合,作为数据库的“门卫”,确保存储数据的准确性与一致性。实体完整性确保表中的每一行(实体)都是唯一的,通常通过定义主键(PrimaryKey)来实现唯一性约束。参照完整性维护表之间的引用关系有效性,防止无效数据的引用,通常通过外键(ForeignKey)来建立关联。用户定义完整性根据具体应用需求定义的特定业务规则,例如限制年龄必须大于0或性别只能是特定值。关系模型基础关系一个关系对应通常说的一张二维表,是数据组织的核心形式。元组表中的一行即为一个元组,对应现实世界中的一条记录。属性表中的一列即为一个属性,描述了实体的某个特征或字段。码表中的某个属性组,它可以唯一标识一个元组,选取一个码作为主码。域属性的取值范围,定义了数据的类型和部分约束条件。分量元组中的一个具体属性值(特征值或字段值),是数据的最小组成单元。数据模型对比层次模型结构特征:树形结构,节点间存在严格的层级关系。
特点:结构清晰,但难以表示多对多联系,灵活性较差。网状模型结构特征:图结构,是层次模型的扩展,允许节点有多个父节点。
特点:能表示复杂联系,但结构过于复杂,不易掌握和实现。关系模型结构特征:以二维表(关系)组织数据,理论基础完善。
特点:结构简单清晰,表达能力强,是目前应用最广泛的主流模型。1.3数据库系统结构三级模式结构、两级映像与数据独立性三级模式结构外模式用户视图/局部逻辑也称子模式或用户模式,是数据库用户使用的局部数据的逻辑结构和特征描述。模式全局视图/整体逻辑也称模式,是数据库中全体数据的逻辑结构和特征描述,是所有用户的公共数据视图。内模式存储视图/物理结构也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。外模式核心定义:用户的数据视图外模式是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,本质上是数据库用户所看到的数据视图。主要特点:多视图与安全性一个数据库可以有多个外模式,分别对应不同用户或应用的特定需求。有效保障数据安全,用户只能看见和访问被授权的外模式范围内的数据。模式定义与核心视图概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它综合了所有用户的需求,是数据库设计人员关注的核心。主要特点唯一性:一个数据库实例中只能有一个概念模式。抽象性:仅描述数据的逻辑结构,不涉及物理存储细节。核心地位:概念模式设计是整个数据库系统构建的核心环节。内模式核心定义内模式,也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。唯一性原则一个数据库只有一个内模式,它是数据物理存储的基础蓝图。存储结构描述详细描述了数据的存储结构(如索引、存储文件)和具体的存取路径。性能优化视角主要面向DBA和数据库设计人员,用于底层的性能调优和存储优化。两级映像与数据独立性外模式/模式映像定义外模式与模式的对应关系。当模式改变时,通过调整该映像即可保持外模式不变。保证:数据的逻辑独立性应用程序无需修改。意味着数据库整体逻辑结构改变时,用户程序可以保持稳定。模式/内模式映像定义模式与内模式的对应关系。当内模式改变时,调整该映像即可保持模式不变。保证:数据的物理独立性应用程序无需修改。意味着数据的存储结构或存取方法改变时,不影响上层应用。说明:应用程序直接访问外模式来操作数据,只要保证外模式不变,应用程序就无需修改,即数据的独立性(数据的逻辑或物理结果发生改变,不影响应用程序的正常运行)。数据库系统的特点数据结构化实现整体数据结构化,面向整个组织而非单一应用。用户可灵活存取任意数据项、记录或记录集,是与文件系统的本质区别。共享性高,冗余度低,易扩充多用户、多应用共享数据集合,大幅减少冗余,避免不一致性。面向系统的结构设计使得新增应用更加灵活便捷。数据独立性高包括物理独立性(存储结构改变不影响程序)和逻辑独立性(整体逻辑改变不影响局部应用),实现了程序与数据的解耦。DBMS统一管理与控制提供四大核心功能:数据安全性保护、完整性检查、多用户并发控制以及数据库故障恢复,确保数据的安全可靠。本章小结基本概念体系掌握数据、信息、DB、DBMS、DBS的定义,理清各概念间的层级与包含关系。技术发展历程了解人工管理、文件系统、数据库系统三个阶段的特点演变,理解数据管理的进步。数据模型抽象理解三个世界的转换过程,掌握ER图三要素和数据模型三要素,熟悉关系模型基础。系统体系结构掌握数据库系统的三级模式结构和两级映像机制,深入理解数据独立性的实现原理。数据库原理与应用第2章关系数据库本章知识导图本章学习目标了解:数学基础与抽象描述关系的数学定义、关系模式的抽象描述,以及扩充关系运算的基本定义。理解:性质约束与查询优化关系的性质、三类完整性约束,以及关系代数层面查询优化的核心意义与关键运算特点。掌握:关键概念与底层逻辑候选码、主码和外码的定义,以及传统与专门关系运算的底层逻辑。应用:查询操作与数据意识能够运用关系代数来描述特定查询操作,并养成数据处理的严谨性和效率意识。目录01关系的结构和性质关系的定义、常用术语、基本性质、抽象描述02关系的完整性实体完整性、参照完整性、用户定义的完整性03关系数据操作(关系代数)传统集合运算、专门关系运算、综合习题04查询优化优化意义、基本策略、举例与练习05本章小结2.1关系的结构和性质关系的定义·常用术语·基本性质·抽象描述2.1.1关系的定义-域基本定义域是具有相同类型的值的集合。它可以是有限集,也可以是无限集。核心作用域为属性提供了一个取值范围,定义了属性值的类型和可能的取值。典型示例整数集{...,-1,0,1,2,...}字符集{'a','b','c',...,'z'}性别集合{男,女}2.1.1关系的定义-笛卡尔积数学定义设有域D1,D2,...,Dn,它们的笛卡尔积是:
D1×D2×...×Dn={(d1,d2,...,dn)|di∈Di,i=1,2,…,n}通俗解释从每个域中各取一个值,组成一个n元组。
所有可能的n元组构成的集合就是笛卡尔积。这本质上是一个“全组合”的过程。基数(Cardinality)笛卡尔积的元素个数(基数)计算公式:
基数=各域基数的乘积例如:D1有2个值,D2有3个值,则基数为2×3=6。案例:笛卡尔坐标系几何直观:平面直角坐标系定义与构成:平面直角坐标系可以看作是实数域R与自身的笛卡尔积(R×R)。
点的表示:坐标系中的每一个点(x,y)都是一个二元组,其中x和y分别取自横轴和纵轴的实数域。历史渊源与命名名称由来:正是因为笛卡尔积的数学概念是构建坐标系的基础,因此平面直角坐标系也被称为“笛卡尔坐标系”(CartesianCoordinateSystem)。2.1.1关系的定义-关系核心定义若干个域的笛卡尔积的有限子集称作这些域上的关系。形式化表示表现为二维表格:元组(行)对应笛卡尔积元素,属性(列)对应域。本质属性关系是有实际意义的元组的集合,而非杂乱无章的组合。案例:关系是笛卡尔积的子集D1——学号域,D2——姓名域,D3——高考总分域2.1.2关系中的常用术语-候选码核心定义在一个关系中,能唯一标识每一个元组的最小属性集称为候选码。关键条件1:唯一性对于关系中的任意两个元组,它们在候选码上的值都必须不同,确保了标识的绝对区分。关键条件2:最小性候选码中没有多余的属性。即不存在候选码的真子集也能唯一标识元组,保证了属性集的精简。案例:学生关系的候选码数据集背景:学生信息表包含属性:基本标识:学号、姓名、身份证号个人信息:年龄、性别
分析目标:找出能够唯一确定一个学生记录的最小属性集。属性筛选与分析学号:是候选码可以唯一标识学生,且无多余属性,满足最小性。身份证号:是候选码具备唯一性,且属性不可再分,满足最小性。姓名:非候选码存在重名可能,无法唯一确定学生记录。姓名+年龄:非候选码可能仍有重复。学号+姓名?2.1.2关系中的常用术语-主码基本定义在一个关系的多个候选码中,选定一个作为关系的主要标识,称为主码。核心约束特性唯一性:主码的值必须唯一,不可重复。非空性:主码中的每一个属性都不能取空值。重要结论:主码是候选码的一个特例,是被选中用于唯一标识元组的候选码。2.1.2关系中的常用术语-外码核心定义若关系R1中的一个属性组Fk不是R1的主码,但它与另一个关系R2的主码Pk相对应,则称Fk为关系R1的外码。主要作用外码是关系数据库中实现数据关联的核心机制,其核心作用是:建立并强化不同关系(表)之间的联系相关概念引用关系:R1(包含外码的关系)被引用关系:R2(外码所引用的关系)案例:选课关系的外码学生表(Student)-引用源结构定义:(学号(PK,主码),姓名,性别)
说明:学号是学生表的主键,唯一标识一名学生。选课表(SC)-被引用方结构定义:(学号(FK,外码),课程号,成绩)
说明:学号引用了学生表的主键,用于关联学生信息。核心分析与关联选课表中的“学号”并非其主码,但它引用了学生表的主码。通过这个外码(FK),我们可以准确地将每条选课记录映射到对应的学生,从而建立起两张表之间的关联关系。2.1.2关系中的常用术语-其他术语全码关系的所有属性构成的集合是候选码。意味着必须通过所有属性才能唯一标识一个元组。主属性在任意一个候选码中出现过的属性。非主属性没有在任何一个候选码中出现过的属性。2.1.3关系的性质列是同质的每一列的数据类型相同,来自同一个域。列名是唯一的属性名称不能重复,确保标识唯一性。不同列可出自同一域不同属性可以有相同的数据类型来源。任意两个元组都不同关系中不能有重复的行,确保数据唯一性。列的顺序无所谓列的顺序可以任意交换,不影响关系本质。行的顺序无所谓行的顺序可以任意排列,不影响关系本质。属性值取原子值每个属性值都必须是不可再分的最小单位,这是关系模型规范化的重要原则。2.1.4关系的抽象描述-关系模式基本定义关系模式是对关系结构的抽象描述,对应二维表的表头,用于描述关系的静态结构。完整形式:R<U,D,DOM,F>R(关系名)标识关系的名称U(属性集)属性名的集合D(域集合)属性所来自的域DOM(映射)属性到域的映射F(数据依赖)属性间的依赖关系简化形式(常用)通常仅关注关系名和属性集,简化为:R(U)或R(A1,A2,...,An)案例:学生关系模式学生关系模式(完整形式)R(关系名):学生U(属性集合):{学号,姓名,性别,年龄,院系}D(域集合):数字字符串,汉字,性别,整数等DOM(映射):学号→char(10),姓名→char(10)...F(依赖关系):学号→姓名,学号→性别...学生关系模式(简化形式)学生(学号,姓名,性别,年龄,院系)实际应用场景:在数据库设计与交流中,通常省略复杂的域定义和依赖关系,直接使用简化形式描述结构。2.2关系的完整性实体完整性•参照完整性•用户定义的完整性2.2.1实体完整性约束对象约束的核心对象是关系的主码(PrimaryKey)。约束条件主码中的每一个属性都不能取空值(NULL)。约束目的确保关系中的每个元组(实体)都是可唯一标识的,避免存在无法识别的实体。特别注意是“主码中的每一个属性”都非空,而不是“主码”非空。案例:实体完整性学生表(Student)属性:学号(PK),姓名,性别完整性约束:主码的属性“学号”不能为空。每个学生必须有唯一标识。课程表(Course)属性:课程号(PK),课程名,学分完整性约束:主码的属性“课程号”不能为空。每门课程必须有唯一标识。选课表(SC)属性:学号(PK),课程号(PK),成绩完整性约束:组合主码的属性“学号”和“课程号”均不能为空,否则无法确定选课关系。2.2.2参照完整性约束对象参照完整性约束的直接对象是关系中的外码(ForeignKey)。它定义了两个关系之间的引用联系。约束条件外码的值必须满足以下两个条件之一:取空值(NULL),表示不引用等于被引用关系中某个元组的主码值核心目的确保关系之间的引用是有效的,维护数据的一致性,防止出现引用不存在对象的错误。案例:参照完整性核心场景:选课表结构选课表(SC)学号(Sno)-外键(FK)课程号(Cno)-外键(FK)成绩(Grade)在关系数据库中,选课表作为关联学生与课程的中间表,其外键直接决定了数据的引用关系。约束分析与结论引用学生表(Student)选课表中的“学号”必须是学生表中已存在的学号。引用课程表(Course)选课表中的“课程号”必须是课程表中已存在的课程号。核心结论参照完整性确保了选课记录的有效性,有效防止出现“不存在的学生选课”或“选了不存在的课程”等异常数据。参照完整性的实现策略01拒绝操作当删除被引用元组时,若存在引用记录则直接拒绝。
特点:系统默认策略,最严格的保护机制。02级联删除删除被引用元组时,自动删除引用关系中所有相关元组。
场景:删除学生时,同步删除其所有选课记录。03置空值操作删除被引用元组时,将引用关系中相关元组的外码值置空。前提:外码字段必须允许为空值。2.2.3用户定义的完整性核心定义用户根据具体应用的业务需求自行定义的完整性约束条件,是对数据语义的具体描述。主要作用反映某一具体应用所涉及的数据必须满足的语义要求,补充了系统默认约束的不足。常见约束类型非空约束(NOTNULL):要求属性值不能为空唯一性约束(UNIQUE):要求属性值在关系中唯一检查约束(CHECK):要求属性值满足指定逻辑条件触发器(TRIGGER):实现复杂的、跨表的业务规则案例:用户定义的完整性非空约束(NOTNULL)学生的“姓名”字段不能为空,确保每位学生都有记录在案的姓名。唯一性约束(UNIQUE)学生的“身份证号”必须唯一,避免出现同一个身份信息被多个学生使用的情况。检查约束(CHECK-年龄)限制学生的“年龄”必须大于等于16且小于等于40,符合学校招生的年龄范围规定。检查约束(CHECK-性别)学生的“性别”字段只能是“男”或“女”,确保数据的规范性和一致性。2.3关系数据操作-关系代数传统的集合运算|专门的关系运算|扩充的关系运算2.3.1传统的集合运算基本运算类型并(Union):记作R∪S交(Intersection):记作R∩S差(Difference):记作R-S广义笛卡尔积:记作R×S运算相容性要求注:除广义笛卡尔积外,并、交、差运算要求两个关系必须是相容的。属性个数相同两个关系必须具有相同数量的列(属性)对应属性的类型相同两个关系中对应列(属性)的类型必须相同并运算(∪)核心定义关系R和S的并运算是由属于R或属于S的所有元组组成的集合。数学表达式R∪S={t|t∈R∨t∈S}运算特点自动去除重复的元组(去重)结果关系的结构(属性列)与R、S相同通俗理解将两个表的行合并,去掉重复的行,类似于集合的“并集”操作。案例:并运算案例解析:关系R∪S结构相容性参与运算的关系R和S必须具有相同的属性结构(属性个数、对应域相同)。去重规则结果集包含R和S中所有的元组,但自动剔除重复项。如元组(a,b,c)仅出现一次。结果集构成R∪S的结果是R的全部记录加上S中独有的记录,保证数据的唯一性。运算图示:R∪S练习:并运算关系A(RelationA)IDName1Alice2Bob关系B(RelationB)IDName2Bob3Charlie思考练习请根据上述两个关系,计算A∪B的结果。并运算要求包含两个关系中的所有元组,但需注意去除重复项。差运算(-)定义与数学表达定义:关系R和S的差运算,是由所有属于R但不属于S的元组组成的集合。R-S={t|t∈R∧t∉S}运算特点与直观理解结果关系的结构(属性列)与R、S完全相同运算不满足交换律,即R-S≠S-R直观理解在R表中,去掉那些在S表中也存在的行。即从R中减去R和S的公共部分。案例:差运算运算逻辑解析定义回顾:差运算(R-S)用于找出所有属于关系R但不属于关系S的元组。案例分析:在关系R中,元组(a,b,c)和(g,h,i)同时存在于S中,因此被排除。最终结果:唯一保留下来的元组是(d,e,f),即R-S的结果。关系代数运算图解练习:差运算关系A(RelationA)IDName1Alice2Bob关系B(RelationB)IDName2Bob3Charlie思考与计算请根据差运算的定义,分别计算以下两个表达式的结果,并思考它们的区别:1.A-B(属于A但不属于B)2.B-A(属于B但不属于A)交运算(∩)核心定义由既属于关系R又属于关系S的所有元组组成的集合。简单来说,就是求两个表的公共行。数学表达式R∩S={t|t∈R∧t∈S}其中t代表元组,∧表示逻辑“与”。差运算等价转换R∩S=R-(R-S)R∩S=S-(S-R)直观理解交运算的本质就是求两个表的“公共行”。只有那些在R和S中都出现过的记录,才会被保留下来。案例:交运算运算示例图解(R∩S)案例解析关系R和关系S的交运算(R∩S)结果包含了两个关系中完全相同的元组。公共元组分析:两个关系中都存在的公共元组为:(a,b,c)和(d,e,f)练习:交运算关系A(集合A)IDName1Alice2Bob关系B(集合B)IDName2Bob3Charlie问题:A∩B找出同时存在于关系A和关系B中的元组:IDName2Bob广义笛卡尔积(×)基本定义将关系R中的每个元组与关系S中的每个元组进行所有可能的拼接,从而生成一个新的关系。数学表达式R×S={trts|tr∈R∧ts∈S}其中⌒表示元组的拼接操作结果特征属性个数:R的属性数+S的属性数元组个数:R的元组数×S的元组数运算特点不需要相容性:运算条件最为宽松结果规模庞大:很多元组可能无实际语义⌒案例:广义笛卡尔积案例分析:关系代数运算原始关系结构关系R包含3个元组,关系S同样包含3个元组。笛卡尔积结果(R×S)元组数量呈指数级增长:3×3=9个元组。数据拼接特征结果集中的每个元组,均由R的一个元组与S的一个元组拼接而成,属性列数相加。运算过程图解练习:广义笛卡尔积关系A(2行2列)IDName1Alice2Bob关系B(2行1列)CourseMathEnglish思考与练习计算A×B的结果集维度:有多少行?多少列?请手动写出该笛卡尔积结果集中的两行数据。2.3.2专门的关系运算选择符号:σ(Sigma)从关系中选择满足给定条件的元组(行),是最基础的筛选操作。投影符号:π(Pi)从关系中选择若干属性列组成新的关系,去除重复列。连接符号:⋈(Join)查询的核心,将两个关系的属性拼接成一个更宽的关系。除符号:÷(Division)用于表达“对于所有”的查询,是最复杂的关系运算。核心价值与定位专门的关系运算比传统集合运算更适合表达实际查询需求。其中,选择和投影是基础操作,连接是实现多表查询的核心,而除运算则用于处理复杂的全称量词查询。选择运算(σ)基本定义与数学表达定义:从关系R中选择出满足给定条件F的所有元组,构成一个新的关系。σ(R)={t|t∈R∧F(t)=True}核心特点与理解操作对象:针对关系的行(元组)进行筛选。结果结构:属性结构不变,元组数量可能减少。筛选条件F:由属性名、常量、比较/逻辑运算符组成。本质理解:根据条件横向筛选行,是一种“横向”操作。F案例:选择运算原始关系RABCa1b15a1b26a2b17选择条件σB='b2'∧C>5(B等于b2并且C大于5)运算结果ABCa1b26练习:选择运算(Selection)关系表:学生(Student)学号姓名年龄性别001张三20男002李四19女003王五21男练习任务请基于左侧的学生表,写出关系代数表达式,完成以下操作:选择出所有“男生”的记录。提示:选择运算的符号为σ(Sigma),用于从关系中选择满足给定条件的元组。投影运算(π)基本定义从关系R中选择出指定的属性列,构成一个新的关系。数学表达式π(R)={t[A1,A2,...,Ak]|t∈R}核心特点操作对象:针对关系的“列(属性)”进行操作。自动去重:结果中重复的元组会被自动去除。结果变化:属性个数通常减少,元组数量可能减少。直观理解投影运算是一种“纵向”的筛选操作,只保留感兴趣的列。A1,A2,...,Ak案例:投影运算(Projection)原始数据表:学生表学号姓名年龄性别001张三20男002李四19女003王五21男投影运算逻辑π
(学生表)从关系表中选择特定的列,消除其他列。此处仅保留“姓名”和“年龄”两列,去除“学号”和“性别”。运算结果表姓名年龄张三20李四19王五21姓名,年龄习题:投影运算学生表(Student)学号姓名年龄性别001张三20男002李四19女003张三21男查询需求请写出关系代数表达式,查询所有学生的:“姓名”和“性别”思考方向:投影运算(Projection)用于从关系中选择若干属性列。符号:π<属性列表>(<关系名>)连接运算(⋈)核心定义从两个关系的广义笛卡尔积中,选择出满足连接条件的元组,构成一个新的关系。运算本质连接运算=笛卡尔积(×)+选择运算(σ)数学表达与条件公式:R⋈S=σ(R×S)条件F:通常为比较属性值是否相等(等值连接)。核心作用将多个分散的关系整合连接成一个关系,是实现多表查询的核心。FF连接运算-等值连接与自然连接等值连接(Equi-Join)条件特征:连接条件F中的比较运算符严格为等号(=)结果特征:结果集中会包含重复的属性列(即用于连接的属性的值会出现两次)。自然连接(NaturalJoin)一种特殊的等值连接,要求比较属性名称相同结果中会自动去掉重复的属性列这是实际应用中最常用的连接方式案例:等值连接与自然连接等值连接(Equi-Join)连接条件:S⋈SCS.学号|姓名|SC.学号|课程号|成绩202301|张三|202301|CS101|90202302|李四|202302|CS102|85⚠️结果包含两个重复的“学号”列自然连接(NaturalJoin)连接条件:S⋈SC(自动匹配同名属性“学号”)学号|姓名|课程号|成绩202301|张三|CS101|90202302|李四|CS102|85✅结果仅保留一个“学号”列,结构清晰S.学号=SC.学号练习:连接运算实战学生表(Student)结构定义:S(学号,姓名)
关键信息:查询目标:姓名="张三"选课表(SC)结构定义:SC(学号,课程号,成绩)
核心作用:作为连接S和C的桥梁课程表(Course)结构定义:C(课程号,课程名)
目标字段:需要投影出"课程名"问题描述:请写出关系代数表达式,查询“张三”同学所选的所有“课程名”。(提示:需组合使用选择、投影和连接运算)除运算(÷)核心定义关系代数中最复杂的运算,专门用于表达“对于所有”或“包含全部”的查询需求。运算原理设关系R(X,Y)和S(Y,Z),结果是R中满足以下条件的X分量集合:对于S中的每一个Y分量,R中都存在一个对应的元组(X,Y)。典型场景用于解决如“查询选修了所有课程的学生”或“查询供应了所有零件的供应商”等涉及全称量词的问题。案例:除运算(Division)原始数据准备选课表SC(学号,课程号)学号课程号001C1001C2002C1课程表C(所有课程)课程号C1C2运算逻辑SC÷C学号001选修了{C1,C2},包含了C中的所有课程号,符合条件。学号002仅选修了{C1},缺少C2,不满足包含所有课程的要求。最终结果除运算的本质是筛选出那些与右表中所有元组都有关系的左表元组。学号001习题:除运算关系R(A,B)ABa1b1a1b2a2b1a3b2关系S(B)Bb1思考问题基于上述关系R和S,请计算除法运算R÷S的结果是什么?综合练习:关系代数已知关系模式学生(Student)学号,姓名,年龄,性别,院系课程(Course)课程号,课程名,学分,先修课号选课(SC)学号,课程号,成绩查询练习(请写出关系代数表达式)1查询“计算机学院”的所有学生姓名。2查询年龄大于20岁的男生姓名。3查询课程号为“C001”的课程名和学分。4查询“张三”同学所选的所有课程号。5查询选修了“数据库原理”的学生姓名。6查询没有选修任何课程的学生姓名。7查询选修了全部课程的学生姓名。8查询选修了“C001”或“C002”的学生学号。2.3.3关系代数应用举例P.27~292.3.4关系运算的分类五种基本运算并(∪):关系中元组的插入差(-):关系中元组的删除笛卡尔积(×):两个关系的归并投影(π):关系的属性指定选择(σ):关系的元组选择非基本运算的表示交(∩)R∩S=R-(R-S)或S-(S-R)连接(⋈)R⋈S=σ(R×S)自然连接π(σ(R×S))连接条件去重属性公共属性相等2.3.4关系运算的分类除运算的表示1.投影属性集X(关系R独有的属性)T=π
(R):从R中提取所有X属性值。2.计算不匹配的元组W=(T×π(S))-R:找出无法匹配S所有Y值的X。3.提取不满足条件的XV=π
(W):投影出所有不满足除运算条件的X值。4.得到最终结果R÷S=T-V:从T中排除V,得到满足条件的X。公式总结:R÷S≡π(R)–π((π(R)×π(S))-R)XYXXYXX2.3.5扩充的关系运算扩充的必要性基础关系运算主要实现查询功能。实际应用中,我们还需要处理:数据的插入、更新与删除计算衍生字段与统计汇总保留不匹配的连接元组因此,需要对关系代数进行扩充以覆盖这些操作。核心扩充运算概览广义投影支持常量或算术表达式,增强投影功能。赋值将关系结果赋值给变量,用于表示增删改操作。外连接保留连接中不匹配的元组,避免信息丢失。聚集进行统计汇总,如求和、计数、平均值等。重命名为关系或属性赋予新名称,使表达式更清晰。扩充运算:广义投影基本概念定义:对投影运算的扩充,允许在投影目标列中包含常量或涉及属性的算术表达式。核心特点:突破了基本投影只能选择原属性列的限制。支持对数据进行临时计算和转换,不改变原始数据。案例解析:成绩加分查询需求场景:查询“数据库原理”课程成绩,并将结果临时加1分。关系代数表达式:π(σ(C⋈SC))解析说明:通过grade=grade+1实现计算。仅在查询结果中生效,不修改数据库原始记录。sno,grade=grade+1cname='数据库原理'扩充运算:赋值赋值运算定义基本概念:对于结构相同的关系R和S,运算R⟵S表示将S的元组赋值给R。逻辑上等价于先删除R的所有元组,再将S的元组复制到R中。
核心作用:通过赋值运算,可以方便地表示关系数据库中的三大更新操作:增加(插入)数据删除数据修改数据(先删后增)案例1:插入数据需求:向Course中添加新课(055,C语言,4,NULL)表达式:Course⟵Course⋃{(055,'C语言',4,NULL)}案例2:删除数据需求:从Course中删除课程号为055的课程表达式:Course⟵Course–σ(Course)cno='055'扩充运算:外连接(定义与必要性)什么是外连接?当自然连接中存在无法匹配的元组时,若需保留这些元组并将新增属性置为NULL,这种操作称为外连接。为什么需要它?内连接仅保留匹配项,会丢失部分信息。例如查询“所有学生的选课情况”时,必须用外连接才能包含未选课的学生记录。计算过程计算自然连接作为中间结果将原本应舍弃的元组补回,没有值的属性置空扩充运算:外连接(分类与案例)外连接的三种分类左外连接(LeftOuterJoin)符号:R⟕S|仅保留左表(R)中不匹配的元组,右表独有的属性补NULL。右外连接(RightOuterJoin)符号:R⟖S|仅保留右表(S)中不匹配的元组,左表独有的属性补NULL。全外连接(FullOuterJoin)符号:R⟗S|同时保留两个表中不匹配的元组,没有值的属性补NULL。案例解析:关系R与S的运算扩充运算:外连接(对比与总结)三种外连接核心对比连接类型保留元组典型场景左外连接左表全部+右表匹配查所有学生选课(含无课学生)右外连接右表全部+左表匹配查所有课程(含无人选的课)全外连接两表所有元组查所有学生与课程交叉情况连接类型本质区别内连接(InnerJoin):求“交集”,仅保留两表匹配的记录。外连接(OuterJoin):求“并集”扩展,包含匹配记录及不匹配记录。核心要点总结外连接是处理“缺失信息”查询的关键工具。它确保了在多表连接时,不会因为某张表中没有匹配记录而丢失另一张表中的重要数据,保证了结果集的完整性。扩充运算:聚集基本概念与函数定义:根据关系中的一组值进行统计,最终得到一个聚合值。常用聚集函数(符号G):count:计数统计sum/avg:求和/平均值max/min:最大值/最小值案例:数据统计实战需求1:统计学生的最大年龄G(Student)需求2:计算“数据库原理”课程的平均成绩G(σ(C⋈SC))max(sage)avg(grade)cname='数据库原理'扩充运算:重命名基本定义与形式定义:为关系代数表达式赋予新名称,或为其属性重新命名,以清晰表达语义。形式1:ρ(E)说明:将表达式E命名为X,属性名保持不变。形式2:ρ(A1,A2,...,An)(E)说明:重命名为X,并将属性依次命名为A1...An。典型应用案例案例1:自连接查询(至少选修2门课的学生学号)π(σ(SC×ρ(SC)))说明:通过重命名实现自连接,区分不同关系。案例2:比较查询(较001号学生年长的学生信息)π(Student⋈ρ(σ(Student)))说明:重命名子查询结果,用于比较年龄条件。XXSC.snoSC.sno=SC1.sno⋀SC.cno≠SC1.cnoSC1Student.sno,Student.snamesno='001'Student.sage>S.sageS2.4查询优化关系代数层面的查询优化查询优化的核心意义问题现状同一个查询可能对应多个等价的代数表达式,但它们的执行效率可能相差悬殊。优化目标选择一个高效的查询执行策略,以最小的代价(时间、空间)来执行查询,即最小化资源消耗。核心策略尽可能减少中间结果集的大小,因为笛卡尔积和连接运算产生的大量中间数据是性能瓶颈。关系代数优化的基本策略尽早执行选择运算(σ)在做笛卡尔积或连接之前,先对关系进行选择,减少参与运算的元组数量,从源头降低数据规模。尽早执行投影运算(π)在做笛卡尔积或连接之前,先对关系进行投影,剔除不必要的属性列,减少数据宽度和内存占用。避免直接进行笛卡尔积尽可能用连接运算代替笛卡尔积。连接运算自带选择条件,能直接过滤掉大量无关元组,避免数据爆炸。选择与投影运算结合在扫描关系的同时完成选择和投影操作,避免多次扫描磁盘,有效减少磁盘I/O次数,提升查询效率。举例说明:查询优化查询需求:查找“张三”同学选修的“数据库原理”课程的成绩低效策略:先连接后筛选π(σ(学生⋈选课⋈课程))执行步骤:先连接三个大表,再进行选择。问题:中间结果集非常大,I/O开销极高。优化策略:尽早执行选择π((σ(学生))⋈选课⋈(σ(课程)))执行步骤:先筛选出极小的中间结果,再进行连接。优势:中间结果集极小,显著减少运算量。成绩姓名='张三'∧课程='数据库'成绩姓名='张三'课程='数据库'练习:查询优化低效查询表达式π(σ(学生⋈选课))思考与优化问题:上述表达式的性能瓶颈在哪里?请写出优化后的关系代数表达式。姓名成绩>90本章小结关系的结构与性质掌握关系的数学定义、常用术语(候选码、主码、外码)和基本性质,构建坚实的理论基础。关系的完整性约束理解并掌握实体完整性、参照完整性和用户定义的完整性三类约束,确保数据的准确性与一致性。关系代数(核心重点)熟练掌握传统集合运算与专门关系运算(选择、投影、连接、除),并能运用它们解决实际查询问题。查询优化策略理解查询优化的意义,掌握“尽早执行选择和投影”等基本优化策略,提升数据库检索效率。数据库原理与应用第3章关系数据库语言SQL本章知识导图本章学习目标了解:基础概念与环境熟悉SQL的主要标准、组成架构与运行环境,掌握过程化SQL的基础概念。理解:核心原理与逻辑深入理解SQL非过程化特点、查询逻辑执行顺序及视图消解原理。掌握:核心语法与功能熟练掌握DDL/DML语法,视图定义与使用,以及过程化SQL的核心功能。应用:业务实现与开发能够完成表创建、复杂查询,并使用存储过程、触发器处理实际业务。素养:职业规范与优化养成规范编写SQL的习惯,重视数据完整性与安全性,具备主动优化查询效率的意识。目录01.SQL概述标准、特点、组成、环境02.数据定义(DDL)定义数据库、表、索引03.数据操纵(DML)插入、更新、删除、查询数据04.视图创建、查询、更新、删除视图05.过程化SQL变量、流程控制、游标、自定义函数、存储过程、触发器06.本章小结与习题3.1SQL概述标准·特点·组成·环境3.1.1SQL的主要标准核心制定组织ANSI&ISOSQL标准由美国国家标准协会(ANSI)与国际标准化组织(ISO)联合主导制定,确保了语言的通用性和规范性。标准演进历程SQL-86/89:基础级标准,定义核心框架。SQL-1999:引入面向对象、触发器等,功能大幅扩展。2003-2023:持续迭代,新增XML、JSON支持,适配现代数据场景。标准与扩展厂商扩展语法主流数据库厂商(如MySQL、SQLServer、Oracle)会在标准基础上增加私有扩展。实际应用中需平衡标准兼容性与厂商特性。3.1.2SQL的特点综合统一集DDL、DML、DCL于一体,覆盖数据库操作全流程,避免了语言切换的复杂性。高度非过程化用户只需提出“做什么”,无需指明“怎么做”,存取路径由系统自动完成。支持两种使用方式既是自含式语言(联机交互),又是嵌入式语言(嵌入高级语言),使用场景灵活。简洁、通用、功能强语法简单,接近自然语言,仅用9个核心关键词(如SELECT,INSERT等)即可实现主要功能。3.1.3SQL的组成-数据库层次结构三级模式结构映射外模式:对应视图和部分基本表,面向用户模式:对应基本表,是数据库的整体逻辑结构内模式:对应存储文件,是数据的物理存储方式核心概念解析基本表:独立存在的表,对应一个关系,存储实际数据视图:从基本表导出的虚表,不存储数据,仅保存查询定义存储文件:物理文件,存放数据,对用户透明3.1.3SQL的组成-语句分类数据定义语言(DDL)用于创建、修改、删除数据库对象(如数据库、表、索引)。核心关键字:CREATE,ALTER,DROP数据操纵语言(DML)用于插入、删除、修改和查询数据,是最常用的操作语言。核心关键字:INSERT,DELETE,UPDATE,SELECT数据控制语言(DCL)用于数据库用户授权、角色管理及事务提交回滚等。核心关键字:GRANT,REVOKESQL会话及诊断语句用于建立连接、设置环境参数、诊断数据库状态等。说明:本书暂不涉及此部分内容3.1.3SQL的组成-数据类型数值类型包含整数与浮点数:INT,BIGINT,DECIMAL,FLOAT,DOUBLEPRECISION等,用于存储精确或近似数值。字符串类型用于存储文本数据:CHAR(n),VARCHAR(n),NCHAR(n),NVARCHAR(n)等,支持定长与变长字符。位串类型存储二进制数据:BINARY(n),VARBINARY(n),BLOB等。注意:通常不推荐用BLOB存储大文件。日期类型处理时间相关数据:DATE(日期),TIME(时间),TIMESTAMP(时间戳)等,精确到秒或毫秒级。布尔类型表示逻辑真/假值:BOOLEAN,标准取值为TRUE和FALSE,常用于条件判断和状态标记。用户自定义类型基于现有类型创建新类型:SQL标准支持用户根据特定业务场景(如枚举、结构体)扩展数据类型。3.1.4SQL环境目录(Catalog)顶层容器,可理解为“数据库级命名空间”,是SQL环境的最高逻辑划分。模式(Schema)目录下的二级容器,即“用户级命名空间”,用于逻辑组织表、视图等数据库对象。用户与权限操作主体和许可机制,通过GRANT和REVOKE语句进行精细化的权限管理。连接与会话用户与数据库的物理链路(连接)和逻辑执行上下文(会话),是交互的基础。SQL执行引擎负责解析、优化和执行SQL语句的核心模块,是数据库处理请求的“大脑”。核心逻辑框架SQL环境是支撑语句执行的完整舞台,整合了对象组织、访问控制与执行调度。3.2数据定义(DDL)定义数据库·定义数据表·定义索引3.2.1定义数据库-创建数据库核心作用创建一个新的数据库,作为存储数据表、视图等对象的顶层逻辑容器。这是使用数据库系统的第一步,类似于为数据建立一个“仓库”。基本语法CREATEDATABASE数据库名称;关键说明MySQL兼容性:DATABASE可替换为SCHEMA权限要求:执行此操作通常需要管理员(Admin)权限。案例:创建数据库案例1:创建学生成绩数据库CREATEDATABASEXSCJ;数据库名:XSCJ(学生成绩)案例2:创建公司员工数据库CREATEDATABASECompanyDB;数据库名:CompanyDB(公司员工)执行结果说明执行上述语句后,数据库管理系统会在磁盘上创建相应的文件和目录,用于存储该数据库的数据。3.2.1定义数据库-切换数据库核心作用用于指定当前会话操作的数据库,将操作上下文切换至目标库。使用说明成功执行后,后续所有操作均在指定数据库中进行。可配置用户默认数据库,避免重复使用USE语句。基本语法USE数据库名称
--示例:切换到名为'mydb'的数据库USEmydb案例:切换数据库案例1:直接切换数据库上下文直接切换当前会话的数据库上下文到XSCJ数据库。USEXSCJ案例2:配置用户默认数据库修改用户"user1"的属性,设置其登录时的默认数据库为CompanyDB。ALTERLOGIN'user1'WITHDEFAULT_DATABASE=CompanyDB3.2.1定义数据库-查看与删除数据库查看数据库查看所有数据库列表SQLServer:EXECsp_databasesMySQL:SHOWDATABASES查看指定数据库详情SQLServer:EXECsp_helpdb'DB_Name'MySQL:SHOWCREATEDATABASEDB_Name删除数据库标准语法(通用)DROPDATABASE数据库名称操作警告(Warning)注意:此操作不可逆!执行删除命令将彻底移除数据库及其包含的所有表、视图、存储过程和数据。请务必在操作前进行数据备份,并确认数据库名称无误。3.2.2定义模式核心概念:逻辑命名空间模式是数据库对象的容器,用于隔离不同用户或应用的表、视图等对象,避免命名冲突。SQLServer:多模式独立管理一个数据库包含多个模式,模式独立于用户。访问对象需指定模式名。--创建模式CREATESCHEMASales--在指定模式下创建表CREATETABLESales.Orders(IDINT)--访问跨模式对象SELECT*FROMSales.OrdersMySQL:数据库即模式Database与Schema概念完全等价,创建数据库即创建模式。--创建模式(等同于创建数据库)CREATEDATABASESales--或CREATESCHEMASales--使用模式(切换数据库)USESalesCREATETABLEOrders(IDINT)特性对比总结特性维度SQLServerMySQL与DB关系1DB可包含多个SchemaDB=Schema独立性独立于用户与DB/权限绑定3.2.3定义数据表-创建数据表核心作用在数据库中创建新的数据表,定义表的结构(列名、数据类型、约束),是存储数据的基本单元。常用约束(Constraints)PRIMARYKEY:主键,唯一标识记录FOREIGNKEY:外键,建立表间关联NOTNULL:非空,字段值不能为空UNIQUE:唯一,字段值不能重复基本语法CREATETABLE表名(列名1数据类型[列级约束],列名2数据类型[列级约束],...[表级约束])约束类型
列级约束:针对单个属性的约束,可以置于列定义中。表级约束:针对整个表的约束,必须独立于列定义。涉及该表多个列的约束必须作为表级约束。针对单个列的约束则既可以定义在列级,也可以定义在表级。CHECK:检查,字段值满足一个逻辑表达式的要求案例:创建学生表(Student)Student表的结构信息建表SQL语句CREATETABLEStudent(
snoCHAR(6)PRIMARYKEY,snameVARCHAR(15)NOTNULL,ssexCHAR(2)CHECK(ssexIN('男','女'))DEFAULT'男',
sageSMALLINTCHECK(sage>16),sdeptVARCHAR(10))列名数据类型约束snochar(6)主键snamevarchar(15)非空ssexchar(2)取值范围、默认值sagesmallint大于16sdeptvarchar(10)说明主键及两个CHECK约束均没有通过CONSTRAINT关键字取名,实际项目中建议为其取名。所有的约束都属于列级约束。ssex、sage和sdept三个列都可以取空值。案例:创建课程表(Course)Course表的结构信息建表SQL语句CREATETABLECourse(
cnoCHAR(3),cnameVARCHAR(20)NOTNULL,creditINTNOTNULLCHECK(credit>0ANDcredit<=10),pcnoCHAR(3)REFERENCESCourse(cno),CONSTRAINTPK_CoursePRIMARYKEY(cno),CONSTRAINTUK_Course_cnameUNIQUE(cname))列名数据类型约束cnochar(3)主键cnamevarchar(20)非空、唯一creditINT非空、取值范围pcnochar(3)外键(引用先修课程)说明CONSTRAINT命名部分可以省略,但不建议。外键pcno属于实体集内部的联系。指定主键或外键的属性组成时,括号不能省略(即使只包含单个属性)。案例:创建选课表(SC)Course表的结构信息建表SQL语句CREATETABLESC(
snoCHAR(6)NOTNULL,cnoCHAR(3)NOTNULL,gradeSMALLINTCHECK(grade>=0ANDgrade<=100ORgradeISNULL),CONSTRAINTPK_SCPRIMARYKEY(sno,cno),CONSTRAINTFK_SC_StudentsFOREIGNKEY(sno)REFERENCESStudent(sno),CONSTRAINTFK_SC_CoursesFOREIGNKEY(cno)REFERENCESCourse(cno))列名数据类型约束snochar(6)非空,外键cnochar(3)非空、外键gradesmallint取值范围sno和cno共同构成主键说明设计当前表中多个属性的约束(如复合主键)必须作为表级约束。sno和cno的非空约束是不必要的。为什么?3.2.3定义数据表-修改数据表基本语法(SQLServer)ALTERTABLE表名
{--添加列
ADD列名数据类型[列约束]--修改列
|ALTERCOLUMN列名新数据类型[新约束]--删除列
|DROPCOLUMN列名
--添加约束
|ADD[CONSTRAINT约束名]表级约束
--删除约束
|DROPCONSTRAINT约束名}常用操作添加列、约束修改列的数据类型删除列、约束(需要约束名)作用:用于修改已存在的数据表结构,提供灵活的数据库调整能力。案例:修改数据表案例1:添加新列为“学生”表添加“邮箱”列,数据类型为VARCHAR(50)。ALTERTABLEStudentADDemailVARCHAR(50)案例2:删除列从“学生”表中删除“邮箱”列。ALTERTABLEStudentDROPCOLUMN
email案例3:修改列类型将“学生”表的“院系”列数据类型更改为CHAR(50)。ALTERTABLEStudentALTERCOLUMNsdeptCHAR(50)案例4:删除约束删除“选课”表的主键约束。ALTERTABLESCDROPCONSTRAINT
PK_SC案例5:添加约束为“选课”表添加主键约束。ALTERTABLESCADDCONSTRAINT
PK_SCPRIMAR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年某大型国企财务岗位招聘笔试试卷附答案
- 2025年甘肃省临夏市高考物理一模测试卷必考附答案详解
- 2025年吉林省图们市高考物理真题汇编模拟卷及一套参考答案详解
- 履行国际货物购买合同
- 购买废弃油脂合同范本
- 普通窗户购买合同范本
- 汽车保养套餐购买合同
- 购买仓库出租合同模板
- 跟私人购买宅基地合同
- 制作迈巴赫购买合同模板
- 2026年电工操作证考试试题及答案
- (统编版2026)二年级语文下册全册教案
- 2026龙江银行县域支行招聘43人备考题库含答案详解
- 《2026版防范电信网络诈骗宣传手册》(全文)
- 2026深静脉血栓形成诊断和治疗指南(第四版)全面解读
- 江苏省凤凰出版传媒集团招聘笔试题库2026年
- 江苏省小学科学实验知识竞赛测试题(含答案)
- 清华大学2026年强基计划《化学》模拟试题
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 奶牛常见疾病讲义课件
- 招标代理机构廉洁从业措施
评论
0/150
提交评论