收藏 分销(赏)

数据库系统概论复习资料.doc

上传人:1587****927 文档编号:1479722 上传时间:2024-04-28 格式:DOC 页数:58 大小:974.54KB 下载积分:14 金币
下载 相关 举报
数据库系统概论复习资料.doc_第1页
第1页 / 共58页
数据库系统概论复习资料.doc_第2页
第2页 / 共58页


点击查看更多>>
资源描述
<p>数据库系统概论笔记 数据(Data):是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文字、图形、图象、声音等 数据的特点:数据与其语义是不可分的 数据库(Database,简称DB):是长期储存在计算机内、有组织的、可共享的大量数据集合 数据库的特征: n 数据按一定的数据模型组织、描述和储存 n 可为各种用户共享 n 冗余度较小 n 数据独立性较高 n 易扩展 数据库管理系统(Database &nbsp;Management System,简称DBMS):是位于用户与操作系统之间的一层数据管理软件。 DBMS的用途:科学地组织和存储数据、高效地获取和维护数据 DBMS的主要功能: 数据库的运行管理 保证数据的安全性、完整性、 多用户对数据的并发使用 发生故障后的系统恢复 n 数据库的建立和维护功能(实用程序) &nbsp; 数据库数据批量装载 &nbsp; 数据库转储 &nbsp; 介质故障恢复 &nbsp; 数据库的重组织 &nbsp; 性能监视等 数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成。 n 数据库系统的构成 n 由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。 n 数据管理 n 对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题 数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。 n 数据模型应满足三方面要求 n 能比较真实地模拟现实世界 n 容易为人所理解 n 便于在计算机上实现 n 数据模型分成两个不同的层次 (1) 概念模型 &nbsp; 也称信息模型,它是按用户的观点来对数据和信息建模。 (2) 数据模型 &nbsp; 主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。 n 客观对象的抽象过程---两步抽象 n 现实世界中的客观对象抽象为概念模型; n 把概念模型转换为某一DBMS支持的数据模型。 n 数据结构 n 对象类型的集合 数据结构是对系统静态特性的描述 n 两类对象 n 与数据类型、内容、性质有关的对象 n 与数据之间联系有关的对象 n 数据操作 n 对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则 n 数据操作的类型 n 检索 n 更新(包括插入、删除、修改) n 数据模型对操作的定义 n 操作的确切含义 n 操作符号 n 操作规则(如优先级) n 实现操作的语言 n 数据操作是对系统动态特性的描述。 n 数据模型对约束条件的定义 n 反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。 信息世界中的基本概念 (1) 实体(Entity) 客观存在并可相互区别的事物称为实体。 (2) 属性(Attribute) 实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。 &nbsp; (3) 码(Key) 唯一标识实体的属性集称为码。 (4) 域(Domain) 属性的取值范围称为该属性的域。 (5) 实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画 同类实体称为实体型 (6) 实体集(Entity Set) 同型实体的集合称为实体集 联系(Relationship) &nbsp; 现实世界中事物内部以及事物之间的联系在信息世界 中反映为实体内部的联系和实体之间的联系 实体型间联系 两个实体型 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;一对一联系(1:1)   三个实体型 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;一对多联系(1:n) 一个实体型 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 多对多联系(m:n) &nbsp; 两个实体型间的联系 n 一对一联系   n 如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1。 n 一对多联系 n 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系 &nbsp; 记为1:n n 多对多联系(m:n) n 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系。记为m:n 概念模型的表示方法 n 实体-联系方法(E-R方法) n 用E-R图来描述现实世界的概念模型 n E-R方法也称为E-R模型 常用数据模型 n 非关系模型 n 层次模型(Hierarchical Model) n 网状模型(Network Model ) n 数据结构:以基本层次联系为基本单位 &nbsp;基本层次联系:两个记录以及它们之间的一对多(包括一对一)的联系 n 关系模型(Relational Model) &nbsp; n 数据结构:表 n 面向对象模型(Object Oriented Model) n 数据结构:对象 n 层次模型 满足下面两个条件的基本层次联系的集合为层次模型。 1. 有且只有一个结点没有双亲结点,这个结点称为根 &nbsp; &nbsp;结点 2. 根以外的其它结点有且只有一个双亲结点 n 表示方法 实体型:用记录类型描述。 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;每个结点表示一个记录类型。 属性:用字段描述。每个记录类型可包含若干个字段。 联系:用结点之间的连线表示记录(类)型之间的 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;一对多的联系 网状数据模型的数据结构 n 网状模型 满足下面两个条件的基本层次联系的集合为网状模型。 1. 允许一个以上的结点无双亲; 2. 一个结点可以有多于一个的双亲。 n 表示方法(与层次数据模型相同) 实体型:用记录类型描述。 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 每个结点表示一个记录类型。 属性:用字段描述。 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 每个记录类型可包含若干个字段。 联系:用结点之间的连线表示记录(类)型之 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;间的一对多的父子联系。 关系模型的基本概念 n 关系(Relation) 一个关系对应通常说的一张表。 n 元组(Tuple) 表中的一行即为一个元组。 n 属性(Attribute) 表中的一列即为一个属性,给每一个属性起一个名称即属性名。 n 关系必须是规范化的,满足一定的规范条件 最基本的规范条件:关系的每一个分量必须是一个不 可分的数据项。 n 查询、插入、删除、更新 n 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合 n 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干” 关系模型的完整性约束 n 实体完整性 n 参照完整性 n 用户定义的完整性 关系数据模型的存储结构 n 表以文件形式存储 n 有的DBMS一个表对应一个操作系统文件 n 有的DBMS自己设计文件结构 关系模型的优缺点 n 优点 n 建立在严格的数学概念的基础上 n 概念单一。数据结构简单、清晰,用户易懂易用 n 实体和各类联系都用关系来表示。 n 对数据的检索结果也是关系。 n 关系模型的存取路径对用户透明 n 具有更高的数据独立性,更好的安全保密性 n 简化了程序员的工作和数据库开发建立的工作 n 缺点 存取路径对用户透明导致查询效率往往不如非 关系数据模型 为提高性能,必须对用户的查询请求进行优化 增加了开发数据库管理系统的难度 数据库系统外部的体系结构 n 单用户结构 n 主从式结构 n 分布式结构 n 客户/服务器结构 n 浏览器/应用服务器/数据库服务器结构 分布式结构的数据库系统 n 数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。 n 网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用 n 同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用 n 优点 n 适应了地理上分散的公司、团体和组织对于数据库应用的需求。 n 缺点 n 数据的分布存放给数据的处理、管理与维护带来困难。 n 当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约 数据库管理员(DBA) n 决定数据库中的信息内容和结构 n 决定数据库的存储结构和存取策略 n 定义数据的安全性要求和完整性约束条件 关系数据库 n 关系模型的组成 n 关系数据结构 n 关系操作集合 n 关系完整性约束 n 1) 常用的关系操作 n 查询 n 选择、投影、连接、除、并、交、差 n 数据更新 n 插入、删除、修改 n 查询的表达能力是其中最主要的部分 n 2) 关系操作的特点 n 集合操作方式,即操作的对象和结果都是集合。 n 非关系数据模型的数据操作方式:一次一记录 n 文件系统的数据操作方式 n 3) 关系数据语言的种类 n 关系代数语言 &nbsp; n 用对关系的运算来表达查询要求 n 4) 关系数据语言的特点 n 关系语言是一种高度非过程化的语言 n 存取路径的选择由DBMS的优化机制来完成 n 用户不必用循环结构就可以完成数据操作 n 能够嵌入高级语言中使用 n 关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价 关系 n ⒈ 域(Domain) n &nbsp;2. 笛卡尔积(Cartesian Product) n &nbsp;3. 关系(Relation) n 域是一组具有相同数据类型的值的集合。例: n 整数 n 实数 n 介于某个取值范围的整数 n 长度指定长度的字符串集合 n {‘男’,‘女’} n 介于某个取值范围的日期 n 笛卡尔积 给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为: D1×D2×…×Dn={(d1,d2,…,dn)|diÎDi,i=1,2,…,n} n 所有域的所有取值的一个组合 n 不能重复 n 2) 元组(Tuple) n 笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。 &nbsp; n 3) 分量(Component) n 笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。 n 4) 基数(Cardinal number) n 若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为: n 5)笛卡尔积的表示方法 n 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。 关系(Relation) 1) 关系 D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; R(D1,D2,…,Dn) &nbsp; &nbsp; &nbsp; &nbsp; R:关系名 &nbsp; &nbsp; &nbsp; &nbsp; n:关系的目或度(Degree) 2) 元组 关系中的每个元素是关系中的元组,通常用t表示。 3) 单元关系与二元关系 当n=1时,称该关系为单元关系(Unary relation)。 当n=2时,称该关系为二元关系(Binary relation) 4) 关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。 5) 属性 关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。 n目关系必有n个属性。 6) 码 候选码(Candidate key) 若关系中的某一属性组的值能唯一地标识 一个元组,则称该属性组为候选码 在最简单的情况下,候选码只包含一个属性。 称为全码(All-key) 在最极端的情况下,关系模式的所有属性组 是这个关系模式的候选码,称为全码(All- key) 主码 若一个关系有多个候选码,则选定其中一个 为主码(Primary key) 主码的诸属性称为主属性(Prime attribute)。 不包含在任何侯选码中的属性称为非码属性 (Non-key attribute) 7) 三类关系 基本关系(基本表或基表) 实际存在的表,是实际存储数据的逻辑表示 查询表 查询结果对应的表 视图表 由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据 基本关系的性质 ① 列是同质的(Homogeneous) 每一列中的分量是同一类型的数据,来自同 一个域 ② 不同的列可出自同一个域 其中的每一列称为一个属性 不同的属性要给予不同的属性名 ③ 列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品(如ORACLE), 增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一 性质,例如FoxPro仍然区分了属性顺序 ④ 任意两个元组不能完全相同 由笛卡尔积的性质决定 但许多关系数据库产品没有遵循这一性质。 例如: Oracle,FoxPro等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件。 ⑤ 行的顺序无所谓 行的次序可以任意交换 遵循这一性质的数据库产品(如ORACLE), 插入一个元组时永远插至最后一行 但也有许多关系数据库产品没有遵循这一性 质,例如FoxPro仍然区分了元组的顺序 ⑥ 分量必须取原子值 每一个分量都必须是不可分的数据项。 这是规范条件中最基本的一条 关系模式(Relation Schema)是型 关系是值 关系模式是对关系的描述 元组集合的结构 属性构成 属性来自的域 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 属性与域之间的映象关系 元组语义以及完整性约束条件 属性间的数据依赖关系集合 &nbsp; &nbsp; 定义关系模式 关系模式可以形式化地表示为: &nbsp; &nbsp; R(U,D,dom,F) R &nbsp; &nbsp; &nbsp;关系名 U &nbsp; &nbsp; &nbsp; 组成该关系的属性名集合 D &nbsp; &nbsp; &nbsp; 属性组U中属性所来自的域 dom &nbsp; 属性向域的映象集合 F &nbsp; &nbsp; &nbsp; &nbsp;属性间的数据依赖关系集合 关系模式通常可以简记为 R (U) &nbsp; &nbsp;或 &nbsp; &nbsp;R (A1,A2,…,An) &nbsp; &nbsp;R &nbsp; 关系名 A1,A2,…,An &nbsp; &nbsp; &nbsp;属性名 注:域名及属性向域的映象常常直接说明为 &nbsp; &nbsp; &nbsp; &nbsp;属性的类型、长度 关系模式 对关系的描述 静态的、稳定的 关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系 通过上下文加以区别 1. 关系数据库 在一个给定的应用领域中,所有实体及实 体之间联系的关系的集合构成一个关系数 据库。 2. 关系数据库的型与值 关系数据库也有型和值之分 关系数据库的型称为关系数据库模式,是对关系数据库的描述 若干域的定义 在这些域上定义的若干关系模式 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库 3 &nbsp;关系的完整性 关系模型的完整性规则是对关系的某种约束条件。 关系模型中三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。 实体完整性 实体完整性规则(Entity Integrity) 若属性A是基本关系R的主属性,则属性 A不能取空值 关系模型必须遵守实体完整性规则的原因 (1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。 (2) 现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。 (3) 相应地,关系模型中以主码作为唯一性标识。 关系模型必须遵守实体完整性规则的原因(续) (4) 主码中的属性即主属性不能取空值。 &nbsp; 空值就是“不知道”或“无意义”的值。 &nbsp;主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。 注意 实体完整性规则规定基本关系的所有 主属性都不能取空值 参照完整性 1. 关系间的引用 2. 外码 3. 参照完整性规则 1. 关系间的引用 在关系模型中实体及实体间的联系都是用 关系来描述的,因此可能存在着关系与关 系间的引用。 2.外码(Foreign Key) 设F是基本关系R的一个或一组属性,但不 是关系R的码。如果F与基本关系S的主码 Ks相对应,则称F是基本关系R的外码 基本关系R称为参照关系(Referencing Relation) 基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)。 说明 n 关系R和S不一定是不同的关系 n 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上 n 外码并不一定要与相应的主码同名 &nbsp; 当外码与相应的主码属于不同关系时,往往 &nbsp; 取相同的名字,以便于识别 3. 参照完整性规则 若属性(或属性组)F是基本关系R的外码 它与基本关系S的主码Ks相对应(基本关 系R和S不一定是不同的关系),则对 于R中每个元组在F上的值必须为: · 或者取空值(F的每个属性值均为空值) · 或者等于S中某个元组的主码值。 2.3.3 用户定义的完整性 n 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 n 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。 Operation &nbsp;运算,操作 Operator &nbsp; &nbsp;算子 Operand &nbsp; &nbsp; 操作数 1.关系代数 一种抽象的查询语言 用对关系的运算来表达查询 2.关系代数运算的三个要素 运算对象:关系 运算结果:关系 运算符:四类 关系代数运算符 集合 运算 符 ∪ - ∩ × 并 差 交 广义笛卡尔积 比较运算符 > ≥ < ≤ = &nbsp; &nbsp; ≠ 大于 大于等于 小于 小于等于 等于 不等于 专门的关系 运算符 σ π &nbsp; ÷ 选择 投影 连接 除 逻辑运算符 Ø ∧ ∨ &nbsp; 非 与 或 4.关系代数运算的分类 传统的集合运算 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;并、差、交、广义笛卡尔积 专门的关系运算 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;选择、投影、连接、除 5.表示记号 (1) R,tÎR,t[Ai] 设关系模式为R(A1,A2,…,An) 它的一个关系设为R。tÎR表示t是R的一个元组 t[Ai]则表示元组t中相应于属性Ai的一个分量 (2) A,t[A], &nbsp;A &nbsp; 若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。 n (3) tr ts &nbsp; &nbsp;R为n目关系,S为m目关系。tr ÎR,tsÎS, tr ts称为元组的连接。它是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。 n 4)象集Zx &nbsp;给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(Images Set)为: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zx={t[Z]|t ÎR,t[X]=x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合。 1. 并(Union) n R和S n 具有相同的目n(即两个关系都有n个属性) n 相应的属性取自同一个域 n R∪S n 仍为n目关系,由属于R或属于S的元组组成 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; R∪S = { t|t Î R∨t ÎS } n R和S n 具有相同的目n n 相应的属性取自同一个域 n R - S n 仍为n目关系,由属于R而不属于S的所有元组组成 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;R -S = { t|tÎR∧tÏS } n R和S n 具有相同的目n n 相应的属性取自同一个域 n R∩S n 仍为n目关系,由既属于R又属于S的元组组成 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;R∩S = { t|t Î R∧t ÎS } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;R∩S = R –(R-S) 4. 广义笛卡尔积(Extended Cartesian Product) n R n n目关系,k1个元组 n S n m目关系,k2个元组 n R×S n 列:(n+m)列的元组的集合 n 元组的前n列是关系R的一个元组 n 后m列是关系S的一个元组 n 行:k1×k2个元组 n R×S = {tr ts |tr ÎR ∧ tsÎS } 专门的关系运算 1. 选择(Selection) n 1) 选择又称为限制(Restriction) n 2) 选择运算符的含义 n 在关系R中选择满足给定条件的诸元组 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; σF(R) = {t|tÎR∧F(t)= &#39;真&#39;} n F:选择条件,是一个逻辑表达式,基本形式为: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [Ø( ] X1θY1 [ )][φ [Ø( ] X2θY2 [ )]]… n θ:比较运算符(>,≥,<,≤,=或&lt;&gt;) n X1,Y1等:属性名、常量、简单函数;属性名也可以用它的序号来代替; n φ:逻辑运算符(∧或∨) n [ ]:表示任选项 n …:表示上述格式可以重复下去 3) 选择运算是从行的角度进行的运算 2. 投影(Projection) n 1)投影运算符的含义 n 从R中选择出若干属性列组成新的关系 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;πA(R) = { t[A] | t ÎR } A:R中的属性列 2)投影操作主要是从列的角度进行运算 n 但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行) 3. 连接(Join) n 1)连接也称为θ连接 n 2)连接运算的含义 n 从两个关系的笛卡尔积中选取属性间满足一定条件的元组 R &nbsp; &nbsp; &nbsp; &nbsp; S = { &nbsp; &nbsp; &nbsp; | tr Î R∧ts ÎS∧tr[A]θts[B] } n A和B:分别为R和S上度数相等且可比的属性组 n θ:比较运算符&nbsp; n 连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。 n 3)两类常用连接运算 n 等值连接(equijoin) n 什么是等值连接 n θ为“=”的连接运算称为等值连接 n 等值连接的含义 n 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为: &nbsp; &nbsp; &nbsp; &nbsp;R &nbsp; &nbsp;S = { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| tr ÎR∧ts ÎS∧tr[A] = ts[B] } &nbsp; 4)一般的连接操作是从行的角度进行运算。 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。 4)象集Z 给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(Images Set)为: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zx={t[Z]|t ÎR,t[X]=x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合。 4. 除(Division) 给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。 R中的Y与S中的Y可以有不同的属性名,但必须出自相同 的域集。R与S的除运算得到一个新的关系P(X),P是R中 满足下列条件的元组在X属性列上的投影:元组在X上分 量值x的象集Yx包含S在Y上投影的集合。 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; R÷S = {tr [X] | tr Î R∧πY (S) Í Yx } Yx:x在R中的象集,x = tr[X] 2)除操作是同时从行和列角度进行运算 第三章 关系数据库标准语言SQL 3.1 SQL概述 n SQL的特点 n 1. 综合统一 n 2. 高度非过程化 n 3. 面向集合的操作方式 n 4. 以同一种语法结构提供两种使用方法 n 5. 语言简洁,易学易用 5. 语言简捷,易学易用 3.2 &nbsp;数 据 定 义 3.2.1 定义语句格式 CREATE TABLE &lt;表名&gt; &nbsp; &nbsp; &nbsp;(&lt;列名&gt; &lt;数据类型&gt;[ &lt;列级完整性约束条件&gt; ] &nbsp; &nbsp; &nbsp;[,&lt;列名&gt; &lt;数据类型&gt;[ &lt;列级完整性约束条件&gt;] ] … &nbsp; &nbsp; &nbsp;[,&lt;表级完整性约束条件&gt; ] ); n &lt;表名&gt;:所要定义的基本表的名字 n &lt;列名&gt;:组成该表的各个属性(列) n &lt;列级完整性约束条件&gt;:涉及相应属性列的完整性约束条件 n &lt;表级完整性约束条件&gt;:涉及一个或多个属性列的完整性约束条件 n 常用完整性约束 n 主码约束: &nbsp; &nbsp;PRIMARY &nbsp;KEY n 唯一性约束:UNIQUE n 非空值约束:NOT NULL n 参照完整性约束 三、删除基本表 DROP TABLE &lt;表名&gt;; &nbsp; 基本表删除 &nbsp; &nbsp; &nbsp; 数据、表上的索引都删除 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 表上的视图往往仍然保留,但 无法引用 删除基本表时,系统会从数据字典中删去有关该 基本表及其索引的描述 (标准中没有,认为表建立后就永久存在) 二、修改基本表 ALTER TABLE &lt;表名&gt; [ ADD &lt;新列名&gt; &lt;数据类型&gt; [ 完整性约束 ] ] [ DROP &lt;完整性约束名&gt; ] [ MODIFY &lt;列名&gt; &lt;数据类型&gt; ]; n &lt;表名&gt;:要修改的基本表 n ADD子句:增加新列和新的完整性约束条件 n DROP子句:删除指定的完整性约束条件 n MODIFY子句:用于修改列名和数据类型 ALTER TABLE Student ADD Scome DATE; 不论基本表中原来是否已有数据,新增加的列一律为空值。&nbsp; n 删除属性列 &nbsp; 直接/间接删除 n 把表中要保留的列及其内容复制到一个新表中 n 删除原表 n 再将新表重命名为原表名 直接删除属性列:(新) 例:ALTER TABLE Student &nbsp;Drop Scome; ALTER TABLE Student MODIFY Sage SMALLINT; n 注:修改原有的列定义有可能会破坏已有数据 建立与删除索引 n 建立索引是加快查询速度的有效手段 n 建立索引 n DBA或表的属主(即建立表的人)根据需要建立 n 有些DBMS自动建立以下列上的索引 n &nbsp;PRIMARY &nbsp;KEY n &nbsp;UNIQUE n 维护索引 n &nbsp;DBMS自动完成&nbsp; n 使用索引 n &nbsp;DBMS自动选择是否使用索引以及使用哪些索引 一、建立索引 n 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX &lt;索引名&gt; &nbsp; &nbsp; ON &lt;表名&gt;(&lt;列名&gt;[&lt;次序&gt;][,&lt;列名&gt;[&lt;次序&gt;] ]…); n 用&lt;表名&gt;指定要建索引的基本表名字 n 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 n 用&lt;次序&gt;指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC n UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 n CLUSTER表示要建立的索引是聚簇索引 n 唯一值索引 n 对于已含重复值的属性列不能建UNIQUE索引 n 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束 n 聚簇索引 n 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致 例: CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一个聚簇索引,而 且Student表中的记录将按照Sname值的升序存放 n 在一个基本表上最多只能建立一个聚簇索引 n 聚簇索引的用途:对于某些类型的查询,可以提高查询效率 n 聚簇索引的适用范围 n &nbsp;很少对基表进行增删操作 n &nbsp;很少对其中的变长列进行修改操作 二、删除索引 DROP INDEX &lt;索引名&gt;; n 删除索引时,系统会从数据字典中删去有关该索引的描述。 3.3 &nbsp;查 &nbsp; &nbsp;询 n 语句格式 SELECT [ALL|DISTINCT] &lt;目标列表达式&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[,&lt;目标列表达式&gt;] … FROM &lt;表名或视图名&gt;[, &lt;表名或视图名&gt; ] … [ WHERE &lt;条件表达式&gt; ] [ GROUP BY &lt;列名1&gt; [ HAVING &lt;条件表达式&gt; ] ] [ ORDER BY &lt;列名2&gt; [ ASC|DESC ] ]; n SELECT子句:指定要显示的属性列 n FROM子句:指定查询对象(基本表或视图) n WHERE子句:指定查询条件 n &nbsp;GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。 n HAVING短语:筛选出只有满足指定条件的组 n ORDER BY子句:对查询结果表按指定列值的升序或降序排序 3.3.2 &nbsp;单表查询 查询仅涉及一个表,是一种最简单的查询操作 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用集函数 五、对查询结果分组 查询经过计算的值 SELECT子句的&lt;目标列表达式&gt;为表达式 n 算术表达式 n 字符串常量 n 函数 n 列别名 n 等 二、选择表中的若干元组 n 消除取值重复的行 n 查询满足条件的元组 1. 消除取值重复的行 n 在SELECT子句中使用DISTINCT短语 假设SC表中有下列数据 2.查询满足条件的元组 WHERE子句常用的查询条件 (1) 比较大小 在WHERE子句的&lt;比较条件&gt;中使用比较运算符 n =,&gt;,&lt;,&gt;=,&lt;=,!= 或 &lt;&gt;,!&gt;,!&lt;, n 逻辑运算符NOT &nbsp;+ &nbsp;比较运算符 (2) 确定范围 n 使用谓词 &nbsp; BETWEEN … &nbsp;AND &nbsp;… &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NOT BETWEEN &nbsp;… &nbsp;AND &nbsp;… (3) 确定集合 使用谓词 &nbsp; &nbsp; IN &lt;值表&gt;, &nbsp;NOT IN &lt;值表&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;值表&gt;:用逗号分隔的一组取值 (4) 字符串匹配 n [NOT] LIKE &nbsp;‘&lt;匹配串&gt;’ &nbsp;[ESCAPE ‘ &lt;换码字符&gt;’] &lt;匹配串&gt;:指定匹配模板 &nbsp; &nbsp; &nbsp;匹配模板:固定字符串或含通配符的字符串 &nbsp; &nbsp; &nbsp;当匹配模板为固定字符串时, &nbsp; &nbsp; &nbsp;可以用 = 运算符取代 LIKE 谓词 &nbsp; &nbsp; &nbsp;用 != 或 &lt; &gt;运算符取代 NOT LIKE 谓词 通配符 w % (百分号) &nbsp;代表任意长度(长度可以为0)的字符串 n 例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串 ² _ (下横线) &nbsp;代表任意单个字符 n 例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串 查询DB_Design课程的课程号和学分。 &nbsp; &nbsp; &nbsp;SELECT Cno,Ccredit &nbsp; &nbsp; &nbsp;FROM Course &nbsp; &nbsp; &nbsp;WHERE Cname LIKE &#39;DB\_Design&#39; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ESCAPE &#39;\&#39; (5) 涉及空值的查询 n 使用谓词 IS NULL 或 IS NOT NULL n &nbsp;“IS NULL” 不能用 “= NULL” 代替 (6) 多重条件查询 用逻辑运算符AND和 OR来联结多个查询条件 n &nbsp;AND的优先级高于OR n &nbsp;可以用括号改变优先级 可用来实现多种其他谓词 n &nbsp;[NOT] IN n &nbsp;[NOT] BETWEEN … &nbsp; AND &nbsp;… 三、对查询结果排序 使用ORDER BY子句 n &nbsp;可以按一个或多个属性列排序 n &nbsp;升序:ASC;降序:DESC;缺省值为升序 当排序列含空值时 n ASC:排序列为空值的元组最后显示 n DESC:排序列为空值的元组最先显示 四、使用集函数 5类主要集函数 n 计数 COUNT([DISTINCT|ALL] *) COUNT([DISTINCT|ALL] &lt;列名&gt;) n 计算总和 SUM([DISTINCT|ALL] &lt;列名&gt;) n &nbsp;计算平均值 AVG([DISTINCT|ALL] &lt;列名&gt;) 求最大值 MAX([DISTINCT|ALL] &lt;列名&gt;) &nbsp; &nbsp;求最小值 MIN([DISTINCT|ALL] &lt;列名&gt;) – DISTINCT短语:在计算时要取消指定列中的重复值 – ALL短语:不取消重复值 – ALL为缺省值 五、对查询结果分组 使用GROUP BY子句分组 细化集函数的作用对象 n &nbsp;未对查询结果分组,集函数将作用于整个查询结果 n &nbsp;对查询结果分组后,集函数将分别作用于每个组 n GROUP BY子句的作用对象是查询的中间结果表 n 分组方法:按指定的一列或多列值分组,值相等的为一组 n 使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和集函数 使用HAVING短语筛选最终输出结果 n 只有满足HAVING短语指定条件的组才输出 n HAVING短语与WHERE子句的区别:作用对象不同 n WHERE子句作用于基表或视图,从中选择满足条件的元组。 n HAVING短语作用于组,从中选择满足条件的组。 连接查询 同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 一般格式: n [&lt;表名1&gt;.]&lt;列名1&gt; &nbsp;&lt;比较运算符&gt; &nbsp;[&lt;表名2&gt;.]&lt;列名2&gt; &nbsp; 比较运算符:=、&gt;、&lt;、&gt;=、&lt;=、!= n [&lt;表名1&gt;.]&lt;列名1&gt; BETWEEN [&lt;表名2&gt;.]&lt;列名2&gt; AND [&lt;表名2&gt;.]&lt;列名3&gt; n 连接字段 n 连接谓词中的列名称为连接字段 n 连接条件中的各连接字段类型必须是可比的</p><!--列名3--><!--表名2--><!--列名2--><!--表名2--><!--列名1--><!--表名1--><!--、--><!--列名2--><!--表名2--><!--比较运算符--><!--列名1--><!--表名1--><!--列名--><!--列名--><!--列名--><!--列名--><!--列名--><!--匹配串--><!--换码字符--><!--匹配串--><!--值表--><!--值表--><!--值表--><!--,--><!--比较条件--><!--目标列表达式--><!--列名2--><!--条件表达式--><!--列名1--><!--条件表达式--><!--表名或视图名--><!--表名或视图名--><!--目标列表达式--><!--目标列表达式--><!--索引名--><!--次序--><!--表名--><!--次序--><!--列名--><!--次序--><!--列名--><!--表名--><!--索引名--><!--表名--><!--数据类型--><!--列名--><!--完整性约束名--><!--数据类型--><!--新列名--><!--表名--><!--表名--><!--表级完整性约束条件--><!--列级完整性约束条件--><!--列名--><!--表名--><!--表级完整性约束条件--><!--列级完整性约束条件--><!--数据类型--><!--列名--><!--列级完整性约束条件--><!--数据类型--><!--列名--><!--表名-->
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服