数据库系统原理与技术第4章.ppt
《数据库系统原理与技术第4章.ppt》由会员分享,可在线阅读,更多相关《数据库系统原理与技术第4章.ppt(148页珍藏版)》请在三一办公上搜索。
1、数据库原理与技术(第二版),程学先 程传慧 曾 玲 陈永辉 郑秋华 杨晓艳,第四章 关系数据库实现及使用,关 系 代 数,SQL 语 言,本 章 要 点,退 出,第四章 关系数据库实现及应用,4.1 关系代数4.2 关系演算4.3 SQL语言概貌4.4 SQL数据定义功能4.5 SQL数据查询语句4.6 SQL查询语句的加强4.7 视图4.8 SQL数据更新语句 4.9 SQL数据控制功能 4.10 嵌入式SQL4.11 查询优化,关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询。按照表达查询的方式可分为两大类。第一类是用对关系的运算来表达查询的
2、方式,称为关系代数。第二类是用谓词来表达查询要求的方式称为关系演算。,关 系 代 数,一、传统的集合运算 包括四种运算:并()、交()、差()、广义笛卡尔积()。1并(Union)设关系R和关系S具有相同的目n,且相应的属性取自同一个域。则关系R和关系S的并记为RS,其结果仍为n目关系,由属于R或属于S的元组组成。,关 系 代 数,如R和S的元组分别用两个圆表示,则RS的集合如图4.1所示虚影部分元组。,关 系 代 数,R S,关 系 代 数,关 系 代 数,2、交(Intersection)设关系R和关系S具有相同的目n,且相应的属性取自同一个域。关系R和关系S的交记为RS,结果仍为n 目关
3、系,由既属于R又属于S的元组组成。如R和S的元组分别用两个圆表示,则RS集合运算结果可用图4.2示意,则两圆相交部分元组表示R与S的交。,关 系 代 数,关 系 代 数,图4.2 集合RS,关 系 代 数,关 系 代 数,3、差(Difference)设关系R和关系S具有相同的目n,且相应的属性取自同一个域。定义关系R和关系S的差记为R-S,其结果仍为n目关系,由属于R而不属于S的元组组成。,关 系 代 数,关 系 代 数,如R和S的元组分别用两个圆表示,则 R-S的集合如图4.3所示。比较图4.1.2和图4.1.3,显然R(RS)(R-S)或R-SR-(RS)。,图4.3 集合R-S,关 系
4、 代 数,4笛卡尔积(Extended Cartesian Product)两个分别为n,m的关系R和S的广义笛卡尔积RS是一个(nm)元组的集合。元组的前n个分量是R的一个元组,后m个分量是S的一个元组.若R有K1个元组,S有K2个元组,则RS有K1K2个元组。记为RS,关 系 代 数,二、专门的关系运算 包括四种运算即选择()、投影()、连接()和除法(),是关系数据库数据维护、查询、统计等操作的基础。1选择(Selection)设有关系R,在关系R中求取满足给定条件F的元组组成新的关系的运算称为选择。记作:F(R),关 系 代 数,在F(R)中,f 是一个条件表达式,其值为“真”或“假”
5、。F(R)是从关系R中选取使条件表达式 F 为真的元组。这是以行为处理单位进行的运算。条件表达式 F 是由常量、变量及算术比较符,和逻辑运算符(,)等构成。,关 系 代 数,关 系 代 数,关系代数式为:单价5(营业库),结果如下表所示:,2投影(Projection)设有关系R(A,B,C,D),在关系R中求指定的若干个属性列组成新的关系的运算称作投影,记作A(R)。其中A为欲选取的属性的列表。可以用:列名1,列名2形式表示,也可以用1,2,形式表示。这是以列作为处理单位进行的运算,示意图如图4.4所示的阴影部分,aA,cA,dA。,关 系 代 数,关 系 代 数,关系R(a,c,d)在A上
6、的投影,即A(R),A包括:a,c,d等域。,关 系 代 数,3,4(营业库),结果:,注意:在投影后如出现重复元组,应只保留一个,关 系 代 数,【例4.7】求“营业库”中所有单价大于5元的商品品名和单价,求关系运算式。关系运算式:品名,单价(单价5(营业库)表4.9 从表4.6再作投影,关 系 代 数,3连接(Join)从两个分别为n,m元的关系R和S的广义笛卡尔积中选取满足给定条件F的元组组成新的关系称为R和S的连接,记作 R S(F=AB)。其中A和B分别为R和S上度数相等且可比的属性列,是算术比较符(,)。,AB,例如:关系R和S如表4.10,4.11所式,求R S,连接结果如图所示
7、。,A=C,关 系 代 数,4除(Division)给定关系R(x,y)与S(y)其中x,y为属性集(也可为单属性),R中的y 和S中的y可以有不同的属性名,但必须出自相同的域集。在求解RS时,对R按x的值分组,然后检查每一组,如某一组中的y包含S中全部的y,则取该组中的x的值作为商关系中的一个元组,否则不取。如此求出RS的商。,关 系 代 数,关 系 代 数,第四章 关系数据库实现及应用,4.1 关系代数4.2 关系演算4.3 SQL语言概貌4.4 SQL数据定义功能4.5 SQL数据查询语句4.6 SQL查询语句的加强4.7 视图4.8 SQL数据更新语句 4.9 SQL数据控制功能 4.
8、10 嵌入式SQL4.11 查询优化,关系演算以数理逻辑中的谓词演算为基础。谓词(Predicate)指明一个条件,通过对它的求解可得出下列之一的值:“真”、“假”、“未知”。常见的谓词例如:比较谓词:,;包含谓词:IN;存在谓词:EXISTS,关 系 演 算,一、元组关系演算 用表达式t|Q(t)来表示,其中t为元组变量,Q(t)是由关系名、元组变量、常量及运算符组成的公式。t|Q(t)表示使Q(t)为“真”的元组的集合。,关 系 演 算,关系代数的运算均可用关系演算表达式来表示(反之亦然)表示如下:1)并:RSt|R(t)S(t)2)交:RSt|R(t)S(t)3)差:RSt|R(t)S(
9、t)4)投影:i1,i2,ik(R)=tk|(u)(R(u)t1=ui1tk=uik),关 系 演 算,5)选择:其中F是由F用ti代替运算对象i 得到的等价公式。6)连接=t(n+m)|(u(n)(v(m)(R(u)s(v)t1=u1t2=u2tn=untn+1=v1tn+m=vm),关 系 演 算,关 系 演 算,【例4.10】根据表4.2营业库显示所有品名及其单价。C0l=t(2)|(u)(营业库(u)t1=u品名t2=u单价,二、域关系演算 用表达式x1,x2,xk|(x1,x2,xk)来表示,其中x1,x2,xk是域变量,是由关系、域变量、常量及运算符组成的式子。x1,x2,xk|(
10、x1,x2,xk)表示所有使(x1,x2,xk)为“真”的那些x1,x2,xk组成的元组的集合。每一个关系代数表达式有一个等价的域演算表达式,反之亦然。,关 系 演 算,关 系 演 算,【例4.11】如果有关系:学生(学号,姓名,年龄,性别),求用域关系演算式表示年龄大于20的学生的学号,姓名,年龄。解:|性别(学生年龄20),第四章 关系数据库实现及应用,4.1 关系代数4.2 关系演算4.3 SQL语言概貌4.4 SQL数据定义功能4.5 SQL数据查询语句4.6 SQL查询语句的加强4.7 视图4.8 SQL数据更新语句 4.9 SQL数据控制功能 4.10 嵌入式SQL4.11 查询优
11、化,SQL(Structured Query Language):指结构化查询语言,但成为关系数据库标准语言之后它已成为一种综合的、通用的、功能极强的关系数据库语言。,SQL 语 言 概 貌,SQL 语 言 概 貌,(1)一体化的特点。(2)语言简洁,易学易用。(3)高度非过程化。(4)极强适应性。(5)SQL语言支持关系数据库三级模式的结构。,第四章 关系数据库实现及应用,4.1 关系代数4.2 关系演算4.3 SQL语言概貌4.4 SQL数据定义功能4.5 SQL数据查询语句4.6 SQL查询语句的加强4.7 视图4.8 SQL数据更新语句 4.9 SQL数据控制功能 4.10 嵌入式SQ
12、L4.11 查询优化,一、基本表的定义和修改 SQL数据定义功能包括:定义基本表定义视图定义索引,SQL数据定义功能,1、定义基本表的语句:CREATE TABLE 表名(列名1 类型)NOT NULL,列名2 类型NOT NULL)其他参数“其他参数”指与物理存储有关的参数,随具体系统不同而不同;“”表示可选项;“|”表示多选一项,对于其两边内容,用户只能且必需选一项。,SQL数据定义功能,SQL数据定义功能,一般的SQL支持的数据类型有:INTEGER 全字长(31bits精度)的二进制整数。SMALLINT 半字长(精度为15bits)的二进制整数。DECIMAL(p,q)压缩十进制数,
13、共p位,小数点后有q位(15Pq0,q0时可省略)。FLOAT 双字长的浮点数。CHAR(n)长度为n的定长字符串。VARCHAR(n)变长字符串,最大长度为n。,SQL数据定义功能,SQL支持空值(NULL)的概念.空值是不知道的或不确定的值,除了候选关键字外,任何列可以有空值。如不允许空值,则应指定该列NOT NULL,2、修改基本表定义语句 ALTER TABLE 表名 ADD 列名 类型例如 ALTER TABLE 学生 ADD 班级 CHAR(4)在修改基本表定义的列的语句中不允许NOT NULL。ALTER TABLE 表名 RENAME COLUMN 原列名 TO 新列名用于更改
14、某列名。,SQL数据定义功能,ALTER TABLE 表名ALTER COLUMN 列名 类型(宽度),小数位修改字段类型、字段或数值型字段宽度和数值型字段小数点后位数。ALTER TABLE 表名 DROP COLUMN 列名从表中删去一列。,SQL数据定义功能,3、删除基本表的语句 DROP TABLE 表 例如:DROP TABLE 学生 将把一个基本表的定义连同其中记录、索引及它导出的所有视图全部删除或不可引用。,SQL数据定义功能,二、索引的建立和删除1、索引的建立 CAEATE UNIQUE INDEX 索引名 ON 基本表名(列名次序,列名次序)其他参数 索引可以建立在一列或几列
15、上,其中次序可取:ASC(升序)或DESC(降序),缺省值为升序。UNIQUE表示每一个索引值只对应唯一的数据记录。用中括号表示是可选项。例如 CREATE INDEX 学生索引 ON 学生(班级 DESC,学生号)。,SQL数据定义功能,2.删除索引的语句DROP INDEX 索引名例如 DROP INDEX 学生索引,SQL数据定义功能,第四章 关系数据库实现及应用,4.1 关系代数4.2 关系演算4.3 SQL语言概貌4.4 SQL数据定义功能4.5 SQL数据查询语句4.6 SQL查询语句的加强4.7 视图4.8 SQL数据更新语句 4.9 SQL数据控制功能 4.10 嵌入式SQL4
16、.11 查询优化,一、语句格式SQL语言数据库查询语句一般格式是:SELECT*|FROM 基本表|视图WHERE 条件表达式1 GROUP BY 列名1 HAVLNG 条件表达式2ORDER BY 列名2 ASC/DESC注意:这是一条SQL语句,SQL数据查询语句,SQL数据查询语句,“目标列”的格式可以是以下格式:1)列名1,列名2其中列名1,列名2为FROM子句中所指基本表或视图中的列名;如果FROM子句中指定多个表,且列名有相同的时,则列名应写为“表名.列名”的形式。,SQL数据查询语句,2)上述每一项可以是表达式,“目标列”允许使用SQL提供的集合函数形成表达式。常用的集合函数如下
17、:COUNT(*)计算记录条数COUNT(列名)计算一列值的个数SUM(列名)计算某一列值的总和,该列必须为数值类型,AVG(列名)计算某一列值的平均值,该列必须为数值类型MAX(列名)计算某一列值的最大值,该列必须为数值类型MIN(列名)计算某一列值的最小值,该列必须为数值类型如无HAVING 子句,上述函数完成对全表统计,否则作分组统计。,SQL数据查询语句,SQL数据查询语句,3)DISTINCT 列名1,列名2表示在最终结果表中,属性相同的元组只保留一条。在书写时,允许使用通配符“”、“?”。“”表示任意一字符串。“?”表示任意一个字符。“基本表或视图”格式如下所示:表名1(或视图名1
18、)别名1,表名2(或视图名2)别名2,SQL数据查询语句,如果由列名构成,将实现关系投影运算。如果FROM中指定的是一个表,WHERE的描述将实现选择运算。如果FROM中指定的是多个表,WHERE的描述中将包括连接运算。,SQL数据查询语句,二、对单一表查询语句示例下列示例中使用的基本表的结构假设为:学生(学生号,姓名,性别,出生年份,班级,寝室号)课程(课程号,课程名,先行课程名)成绩(学生号,课程号,分数)其中出生年份和分数为整型,其他为字符类型,SQL数据查询语句,例4.12 求所有学生表数据。SELECT FROM 学生例4.13 求所有学生姓名的列表。SELECT 姓名 FROM 学
19、生例4.14 如当前系统设定的年份为YEAR1求显示所有学生姓名、年龄。SELECT 姓名,YEAR1-出生年份 FROM学生,SQL数据查询语句,例4.15 求显示学生人数和学生平均年龄。SELECT COUNT(),AVG(YEAR1出生年份)FROM 学生例4.16 求所有学生班级的列表。SELECT DISTINCT 班级 FROM 学生因为每个学生班级均有许多学生,为在列表中不出现重复班级名,故使用了“DISTINCT”。,SQL数据查询语句,例4.17 显示一个学生表,要求先按班级,在班级相同时按学生号排序。SELECT FROM 学生 ORDER BY 班级,学生号例4.18 求
20、全体男生信息。SELECT FROM 学生 WHERE 性别男例4.19 求1980年以前出生的女生姓名、性别、出生年份。SELECT 姓名,性别,出生年份 FROM 学生 WHERE 性别女 AND 出生年份1980,SQL数据查询语句,例4.20 假设没有安排寝室学生的寝室号为空值,求没有安排寝室学生姓名。SELECT 姓名 FROM 学生 WHERE 寝室号 IS NULL 涉及空值的谓词的一般形式是:列名 IS NOT NULL。在条件表达式中还经常使用谓词IN、BETWEEN、LIKE。,SQL数据查询语句,例4.21 求200101班和200103班的学生表。实现语句1:SELEC
21、T FROM 学生 WHERE 班级 IN(200101,200103)实现语句2:SELECT FROM 学生 WHERE 班级=200101 OR 班级=200103谓词IN实际是一系列逻辑关系词“OR”的缩写。也可用谓词NOT IN表示不在某集合之中。,SQL数据查询语句,例4.22 求出生年份在1982至1985年间的学生姓名和出生年份。SELECT 姓名,出生年份 FROM 学生 WHERE 出生年份 BETWEEN 1982 AND 1985,SQL数据查询语句,例4.23 找出所有2001级学生。SELECT FROM 学生 WHERE 班级 LIKE 2001%使用谓词LIKE
22、时,列名必须为各种字符串类型。可采用一些通配字符:(下横线)表示任意一单个字符。(百分号)表示任意长度字符串。,SQL数据查询语句,例4.23 求选修课程超过了三门的学生号SELECT 学生号 FROM 成绩 GROUP BY 学生号 HAVING COUNT()3以上查询实现了关系运算中投影与选择两种运算。,SQL数据查询语句,三、对两个以上表的连接查询例4.25 求所有学生信息,包括他所学的课程的课程号和成绩,并按课程号和成绩排名。SELECT 学生.,成绩.FROM 学生,成绩WHERE 学生.学生号=成绩.学生号 ORDER BY 课程号,分数 DESC,SQL数据查询语句,例4.26
23、 求分数为优良(80分数及以上)的所有成绩组成的表,要求显示内容包括姓名、课程名和分数。SELECT 姓名,课程名,分数 FROM 学生,成绩,课程 WHERE 学生.学号成绩.学号 AND 成绩.课程号课程.课程号 AND 分数=80,SQL数据查询语句_自连接,例4.27 求每门课程的先行课的先行课。SELECT 表1.课程名,表2.先行课程名 FROM 课程 表1,课程 表2 WHERE 表1.课程号表2.课程号,别名,例4.28 求既选修了课程号为C1,又选修了课程号为C2这两门课的学生的学生号。SELECT 表1.学生号 FROM 成绩 表1,成绩 表 2 WHERE表1.学生号表2
24、.学生号 AND 表1.课号C1 AND 表2.课号C2,SQL数据查询语句_自连接,SQL数据查询语句_嵌套查询,嵌套查询亦称为子查询,它是指一个SELECTFROMWHERE 查询块可以嵌入到另一个查询块之中的查询。例4.29 求选修了课程号为C1的学生姓名。SELECT 姓名 FROM 学生 WHERE 学号 IN(SELECT 学号 FROM 成绩 WHERE 课程号C1),SQL数据查询语句,例4.30 求选修了课程名为C语言的学生姓名。SELECT 姓名 FROM 学生 WHERE 学号 IN(SELECT 学号 FROM 成绩 WHERE 课程号 IN(SELECT 课程号 FR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 技术
链接地址:https://www.31ppt.com/p-6578598.html