数据库系统原理课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CONSTRAINT C3 CHECK(成绩 BETWEEN 0 AND 100), CONSTRAINT C4 PRIMARY KEY(学号,课程号), CONSTRAINT C5 FOREIGN KEY(学号) REFERENCES 学生(学号), CONSTRAINT C6 FOREIGN KEY(课程号) REFERENCES
[WITH CHECK OPTION];
视图举例
【例5-6】建立计算机系学生的视图。 CREATE VIEW 计算机系学生 AS SELECT 学号,姓名,年龄 FROM 学生 WHERE 所在系=‘计算机系’;
【例5-7】由学生、课程和选课三个表,定义一个计算机系的 学生成绩视图,其属性包括学号、姓名、课程名和成绩。
DATE TIME TIMESTAMP
类型说明
半字长二进制整数。15bits数据 全字长(四字长)整数。31bits数据 十进制数,共p位,其中小数点后q位。
0≤q≤p,q=0时可省略不写 双字长浮点数
长度为n的定长字符串 最大长度为n的变长字符串 长度为n的定长图形字符串 最大长度为n的变长图形字符串 日期型,格式为YYYY-MM-DD 时间型,格式为HH.MM.SS
DEFAULT C1 20 FOR 年龄, CONSTRAINT C2 CHECK(性别 IN (‘男’,‘女’)));
CREATE TABLE 课程(课程号 CHAR(5) PRIMARY KEY, 课程名 CHAR(20),先行课 CHAR(5));
CREATE TABLE 选课(学号 CHAR(5),课程号 CHAR(5), 成绩 SMALLINT,
〈字段〉 BETWEEN 小值 AND 大值 〈字段〉 IS [NOT] NULL
〈字段〉 LIKE 〈字符常数〉 其中, “_” 单字符通配符和 “%” 多字符通配符 〈条件1〉AND〈条件2〉 〈条件1〉OR〈条件2〉 NOT〈条件〉
(4) 组合查询操作符和其他SQL操作符
〈查询1〉〈组合操作符〉〈查询2〉
5.2.3 视图的定义和维护
1. 视图的优点 1) 视图能够简化用户的操作。 2) 视图机制可以使用户以不同的方式看待同一数据。 3) 视图对数据库的重构提供了一定程度的逻辑独立性。 4) 视图可以对机密的数据提供安全保护。
2. 视图定义的格式 一般格式为:
CREATE VIEW〈视图名〉[(列名组)] AS〈子查询〉
格式为: DISTINCT〈字段〉或 DISTINCT〈字段组〉
5.3.2 数据查询实例
学生课程库结构为:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).
1. 简单查询:查询过程中只涉及到一个表的查询语句。 【例5-9】求数学系学生的学号和姓名。
SELECT 学号,姓名 FROM 学生 WHERE 所在系=‘数学系’;
CONTRAINT〈约束名〉FOREIGN KEY(〈外码〉) REFERENCES〈被参照表名〉(〈与外码对应的主码名〉)
【例5-1】
建立基本表: 学生(学号,姓名,年龄,性别,所在系); 课 程(课程号,课程名,先行课); 选课(学号,课程号,成绩).
CREATE TABLE 学生(学号 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL,年龄 SMALLINT, 性别 CHAR(2),所在系 CHAR(20),
语法说明
(1) SELECT子句:指明目标列(字段、表达式、函数表达式、 常量)。基本表中相同的列名表示为:〈表名〉.〈列名〉
(2) FROM子句:指明数据源。表间用“,”分割。数据源不 在当前数据库中,使用“〈数据库名〉.〈表名〉”表示。一 表多用,用别名标识。定义表别名:〈表名〉〈别名〉
(3) WHERE子句:元组选择条件。 (4) GROUP BY子句:结果集分组。当目标列中有统计函数,
(2) 比较操作符 =(等于)、>(大于)、<(小于)、<=(小于等 于)、>=(大于等于)、!=(不等于)、<>(小于 大于)、!>(不大于)和 !<(不小于),共9种操 作符。
(3) 逻辑操作符
语义 在[不在]其中
任何一个 全部(每个)
[不]存在 在[不在]范围 是[不是]空值
模式比较 与运算 或运算 非运算
CREATE VIEW 学生成绩(学号,姓名,课程名,成绩) AS SELECT 学生.学号,学生.姓名,课程.课程名,选课.成绩 FORM 学生,课程,选课 WHERE 学生.学号=选课.学号 AND 程.课程名=选课.课程号 AND 学生.所在系='计算机系';
3. 视图的删除 、查询和维护
视图删除语句的一般格式为: DROP VIEW〈视图名〉;
ALTER TABLE 学生 DROP C1; 删除基本表的一般格式为: DROP TABLE〈表名〉;
5.2.2 索引的定义和维护
1. 索引的作用 1) 使用索引可以明显地加快数据查询的速度。 2) 使用索引可保证数据的惟一性。 3) 使用索引可以加快连接速度。
2. 建立索引的原则 1) 索引的建立和维护由DBA和DBMS完成。 2) 大表应当建索引,小表则不必建索引。 3) 对于一个基本表,不要建立过多的索引。 4) 根据查询要求建索引。
SQL 语言的动词 动词
CREATE,DROP,ALTER SELECT INSERT,UPDATE DELETE GRANT,REVOKE
5.2 数 据 定 义
操作对 象
表 视图 索引 数据库
表 5.2 SQL 的数据定义语句 操作方式
创建 CREATE TABLE CREATE VIEW CREATE INDEX CREATE DATABASE
则统计为分组统计,否则为对整个结果集统计。子句后带上 HAVING子句表达组选择条件(带函数的表达式)。 (5) ORDER BY子句:排序。当排序要求为ASC时升序排序; 排序要求为DESC时降序排列。
2. SELECT语句的操作符
(1) 算术操作符 +(加号)、-(减号)、*(乘号)和 /(除号)。
SQL用户
用户1
用户2
用户3
用户4
View(外模式)
视图1
视图1
Base table (模式)
基本表1
基本表2
基本表3
Stored file (内模式)
存储文件1
存储文件2
存储文件3
图 SQL 数 据 库 的 体 系结构
基本表4 存储文件4
表 5.1 SQL 功 能 数据定义 数据查询 数据操纵
数据控制
2. SQL的特点
(1) SQL具有自含式和嵌入式两种形式。 (2) SQL具有语言简洁、易学易用的特点。 (3) SQL支持三级模式结构。
① 全体基本表构成了数据库的模式。 ② 视图和部分基本表构成了数据库的外模式。 ③ 数据库的存储文件和它们的索引文件构成了关系数据 库的内模式。
SQL数据库的体系结构
操作符 [NOT] IN
ANY ALL [not]EXISTS BETWEEN…AND… IS [NOT] NULL [NOT] LIKE AND OR NOT
使用格式或示例
〈字段〉 IN (〈数据表|子查询〉) 〈字段〉〈比较符〉ANY (数据表|子查询)
〈字段〉〈比较符〉ALL (数据表|子查询) EXISTS (〈子查询〉)
删除 DROP TABLE DROP VIEW
DROP INDEX DROP DATABASE
修改 ALTER TABLE
ALTER DATABASE
5.2 数据定义语句
5.2.1 基本表的定义和维护 1. 定义基本表 定义基本表语句的一般格式为:
CREATE TABLE [〈库名〉]〈表名〉( 〈列名〉〈数据类型〉[〈列级完整性约束条件〉] , 〈列名〉〈数据类型〉[〈列级完整性约束条件〉]] [,…n]
3. 建立和删除索引的格式
建立格式为: CREATE [UNIQUE] [CLUSTER] INDEX〈索引名〉 ON 〈表名〉(〈列名〉[〈次序〉][,〈列名〉[〈次序〉]]…);
删除索引格式为: DROP INDEX 〈索引名〉;
【例5-4】为学生_课程数据库中的学生、课程和选课三个表建 立索引。其中,学生表按学号升序建立索引;课程表按课程 号升序建惟一索引;选课表按学号升序和课程号降序建惟一 索引。 CREATE UNIQUE INDEX 学号 ON 学生(学号); CREATE UNIQUE INDEX 课程号 ON 课程(课程号); CREATE UNIQUE INDEX 选课号 ON 选课(学号 ASC,课 程号 DESC);
日期加时间
(2) 列级完整性的约束条件
针对属性值设置的限制条件。 1) NOT NULL或NULL约束。NOT NULL约束不允许字段值为空,
而NULL约束允许字段值为空。 2) UNIQUE约束。惟一性约束,即不允许列中出现重复的属
性值。 3) DEFAULT约束。默认值约束。
DEFAULT〈约束名〉〈默认值〉FOR〈列名〉 4) CHECK约束。检查约束。
1) UNION:并查询,并在结果集中去掉重复行。 2) MINUS:差查询操作。 3) INTERSECT:交查询操作。 4) *:取全部字段。格式为: * 或〈表名〉.* 5) ALL:全部。保留重复值(有统计函数时要求计算重复 值)。
格式为: ALL〈字段〉或 ALL〈字段组〉 6) DISTINCT:去掉重复值。在结果集中去掉重复值,或 在统计函数中不计重复值。
视图可以和基本表一样被查询,其使用方法与基本表 相同,但利用视图进行数据增、删、改操作,会受到 一定的限制。
5.3 数据查询语句
5.3.1 数据查询的基本语法 1. SELECT语句的语法 SELECT〈目标列组〉
FROM〈数据源〉 [WHERE〈元组选择条件〉] [GROUP BY〈分列组〉[HAVING 〈组选择条件〉]] [ORDER BY〈排序列1〉〈排序要求1〉 [,…n]];
CONSTRAINT〈约束名〉CHECK (〈约束条件表达式〉)
(3) 表级完整性约束条件
涉及到关系中多个列的限制条件。 1) UNIQUE约束。惟一性约束。 2) PRIMARY KEY约束。定义主码,保证惟一性和非空性。 CONTRAINT〈约束名〉PRIMARY KEY [CLUSTERED] (〈列 组〉) 3) FOREIGN KEY约束。用于定义参照完整性。
数据库系统原理
2019/8/11
第5章 关系数据库标准语言—SQL
5.1 SQL概述及特点 5.2 数据定义语句 5.3 数据查询语句 5.4 数据更新语句 5.5 嵌入式SQLSQL的主要功能 (1) 数据定义功能 定义关系数据库的模式、外模式和内模式,以实现 对基本表、视图以及索引文件的定义、修改和删除等操 作。 (2) 数据操纵功能 包括数据查询和数据更新两种数据操作语句:数据 查询指对数据库中的数据查询、统计、分组、排序操作; 数据更新指数据的插入、删除、修改等数据维护操作。 (3) 数据控制功能 通过对数据库用户的授权和收权命令来实现有关数 据的存取控制,以保证数据库的安全性。
[,〈表级完整性约束条件〉] [,…n] );
(1) SQL支持的数据类型
类型表示
数值型 数据
字符型 数据
特殊数据类型
日期时 间型
SMALLINT INTEGER或INT DECIMAL(p[,q])
FLOAT CHARTER(n)或
CHAR(n) VARCHAR(n) GRAPHIC(n) VARGRAPHIC(n)
课程(课程号));
2. 修改基本表和删除基本表
ALTER TABLE〈表名〉 [ADD(〈新列名〉〈数据类型〉[完整性约束] [,…n])] [DROP〈完整性约束名〉] [MODIFY(〈列名〉〈数据类型〉[,…n])];
(1) 使用ADD子句增加新列 【例5-2】向课程表中增加“学时”字段。
ALTER TABLE 课程 ADD 学时 SMALLINT; (2) 使用MODIFY子句修改列的原定义 (3) 使用DROP子句删除指定的完整性约束条件 【例5-3】删除学生表中对年龄的默认值的定义。
[WITH CHECK OPTION];
视图举例
【例5-6】建立计算机系学生的视图。 CREATE VIEW 计算机系学生 AS SELECT 学号,姓名,年龄 FROM 学生 WHERE 所在系=‘计算机系’;
【例5-7】由学生、课程和选课三个表,定义一个计算机系的 学生成绩视图,其属性包括学号、姓名、课程名和成绩。
DATE TIME TIMESTAMP
类型说明
半字长二进制整数。15bits数据 全字长(四字长)整数。31bits数据 十进制数,共p位,其中小数点后q位。
0≤q≤p,q=0时可省略不写 双字长浮点数
长度为n的定长字符串 最大长度为n的变长字符串 长度为n的定长图形字符串 最大长度为n的变长图形字符串 日期型,格式为YYYY-MM-DD 时间型,格式为HH.MM.SS
DEFAULT C1 20 FOR 年龄, CONSTRAINT C2 CHECK(性别 IN (‘男’,‘女’)));
CREATE TABLE 课程(课程号 CHAR(5) PRIMARY KEY, 课程名 CHAR(20),先行课 CHAR(5));
CREATE TABLE 选课(学号 CHAR(5),课程号 CHAR(5), 成绩 SMALLINT,
〈字段〉 BETWEEN 小值 AND 大值 〈字段〉 IS [NOT] NULL
〈字段〉 LIKE 〈字符常数〉 其中, “_” 单字符通配符和 “%” 多字符通配符 〈条件1〉AND〈条件2〉 〈条件1〉OR〈条件2〉 NOT〈条件〉
(4) 组合查询操作符和其他SQL操作符
〈查询1〉〈组合操作符〉〈查询2〉
5.2.3 视图的定义和维护
1. 视图的优点 1) 视图能够简化用户的操作。 2) 视图机制可以使用户以不同的方式看待同一数据。 3) 视图对数据库的重构提供了一定程度的逻辑独立性。 4) 视图可以对机密的数据提供安全保护。
2. 视图定义的格式 一般格式为:
CREATE VIEW〈视图名〉[(列名组)] AS〈子查询〉
格式为: DISTINCT〈字段〉或 DISTINCT〈字段组〉
5.3.2 数据查询实例
学生课程库结构为:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).
1. 简单查询:查询过程中只涉及到一个表的查询语句。 【例5-9】求数学系学生的学号和姓名。
SELECT 学号,姓名 FROM 学生 WHERE 所在系=‘数学系’;
CONTRAINT〈约束名〉FOREIGN KEY(〈外码〉) REFERENCES〈被参照表名〉(〈与外码对应的主码名〉)
【例5-1】
建立基本表: 学生(学号,姓名,年龄,性别,所在系); 课 程(课程号,课程名,先行课); 选课(学号,课程号,成绩).
CREATE TABLE 学生(学号 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL,年龄 SMALLINT, 性别 CHAR(2),所在系 CHAR(20),
语法说明
(1) SELECT子句:指明目标列(字段、表达式、函数表达式、 常量)。基本表中相同的列名表示为:〈表名〉.〈列名〉
(2) FROM子句:指明数据源。表间用“,”分割。数据源不 在当前数据库中,使用“〈数据库名〉.〈表名〉”表示。一 表多用,用别名标识。定义表别名:〈表名〉〈别名〉
(3) WHERE子句:元组选择条件。 (4) GROUP BY子句:结果集分组。当目标列中有统计函数,
(2) 比较操作符 =(等于)、>(大于)、<(小于)、<=(小于等 于)、>=(大于等于)、!=(不等于)、<>(小于 大于)、!>(不大于)和 !<(不小于),共9种操 作符。
(3) 逻辑操作符
语义 在[不在]其中
任何一个 全部(每个)
[不]存在 在[不在]范围 是[不是]空值
模式比较 与运算 或运算 非运算
CREATE VIEW 学生成绩(学号,姓名,课程名,成绩) AS SELECT 学生.学号,学生.姓名,课程.课程名,选课.成绩 FORM 学生,课程,选课 WHERE 学生.学号=选课.学号 AND 程.课程名=选课.课程号 AND 学生.所在系='计算机系';
3. 视图的删除 、查询和维护
视图删除语句的一般格式为: DROP VIEW〈视图名〉;
ALTER TABLE 学生 DROP C1; 删除基本表的一般格式为: DROP TABLE〈表名〉;
5.2.2 索引的定义和维护
1. 索引的作用 1) 使用索引可以明显地加快数据查询的速度。 2) 使用索引可保证数据的惟一性。 3) 使用索引可以加快连接速度。
2. 建立索引的原则 1) 索引的建立和维护由DBA和DBMS完成。 2) 大表应当建索引,小表则不必建索引。 3) 对于一个基本表,不要建立过多的索引。 4) 根据查询要求建索引。
SQL 语言的动词 动词
CREATE,DROP,ALTER SELECT INSERT,UPDATE DELETE GRANT,REVOKE
5.2 数 据 定 义
操作对 象
表 视图 索引 数据库
表 5.2 SQL 的数据定义语句 操作方式
创建 CREATE TABLE CREATE VIEW CREATE INDEX CREATE DATABASE
则统计为分组统计,否则为对整个结果集统计。子句后带上 HAVING子句表达组选择条件(带函数的表达式)。 (5) ORDER BY子句:排序。当排序要求为ASC时升序排序; 排序要求为DESC时降序排列。
2. SELECT语句的操作符
(1) 算术操作符 +(加号)、-(减号)、*(乘号)和 /(除号)。
SQL用户
用户1
用户2
用户3
用户4
View(外模式)
视图1
视图1
Base table (模式)
基本表1
基本表2
基本表3
Stored file (内模式)
存储文件1
存储文件2
存储文件3
图 SQL 数 据 库 的 体 系结构
基本表4 存储文件4
表 5.1 SQL 功 能 数据定义 数据查询 数据操纵
数据控制
2. SQL的特点
(1) SQL具有自含式和嵌入式两种形式。 (2) SQL具有语言简洁、易学易用的特点。 (3) SQL支持三级模式结构。
① 全体基本表构成了数据库的模式。 ② 视图和部分基本表构成了数据库的外模式。 ③ 数据库的存储文件和它们的索引文件构成了关系数据 库的内模式。
SQL数据库的体系结构
操作符 [NOT] IN
ANY ALL [not]EXISTS BETWEEN…AND… IS [NOT] NULL [NOT] LIKE AND OR NOT
使用格式或示例
〈字段〉 IN (〈数据表|子查询〉) 〈字段〉〈比较符〉ANY (数据表|子查询)
〈字段〉〈比较符〉ALL (数据表|子查询) EXISTS (〈子查询〉)
删除 DROP TABLE DROP VIEW
DROP INDEX DROP DATABASE
修改 ALTER TABLE
ALTER DATABASE
5.2 数据定义语句
5.2.1 基本表的定义和维护 1. 定义基本表 定义基本表语句的一般格式为:
CREATE TABLE [〈库名〉]〈表名〉( 〈列名〉〈数据类型〉[〈列级完整性约束条件〉] , 〈列名〉〈数据类型〉[〈列级完整性约束条件〉]] [,…n]
3. 建立和删除索引的格式
建立格式为: CREATE [UNIQUE] [CLUSTER] INDEX〈索引名〉 ON 〈表名〉(〈列名〉[〈次序〉][,〈列名〉[〈次序〉]]…);
删除索引格式为: DROP INDEX 〈索引名〉;
【例5-4】为学生_课程数据库中的学生、课程和选课三个表建 立索引。其中,学生表按学号升序建立索引;课程表按课程 号升序建惟一索引;选课表按学号升序和课程号降序建惟一 索引。 CREATE UNIQUE INDEX 学号 ON 学生(学号); CREATE UNIQUE INDEX 课程号 ON 课程(课程号); CREATE UNIQUE INDEX 选课号 ON 选课(学号 ASC,课 程号 DESC);
日期加时间
(2) 列级完整性的约束条件
针对属性值设置的限制条件。 1) NOT NULL或NULL约束。NOT NULL约束不允许字段值为空,
而NULL约束允许字段值为空。 2) UNIQUE约束。惟一性约束,即不允许列中出现重复的属
性值。 3) DEFAULT约束。默认值约束。
DEFAULT〈约束名〉〈默认值〉FOR〈列名〉 4) CHECK约束。检查约束。
1) UNION:并查询,并在结果集中去掉重复行。 2) MINUS:差查询操作。 3) INTERSECT:交查询操作。 4) *:取全部字段。格式为: * 或〈表名〉.* 5) ALL:全部。保留重复值(有统计函数时要求计算重复 值)。
格式为: ALL〈字段〉或 ALL〈字段组〉 6) DISTINCT:去掉重复值。在结果集中去掉重复值,或 在统计函数中不计重复值。
视图可以和基本表一样被查询,其使用方法与基本表 相同,但利用视图进行数据增、删、改操作,会受到 一定的限制。
5.3 数据查询语句
5.3.1 数据查询的基本语法 1. SELECT语句的语法 SELECT〈目标列组〉
FROM〈数据源〉 [WHERE〈元组选择条件〉] [GROUP BY〈分列组〉[HAVING 〈组选择条件〉]] [ORDER BY〈排序列1〉〈排序要求1〉 [,…n]];
CONSTRAINT〈约束名〉CHECK (〈约束条件表达式〉)
(3) 表级完整性约束条件
涉及到关系中多个列的限制条件。 1) UNIQUE约束。惟一性约束。 2) PRIMARY KEY约束。定义主码,保证惟一性和非空性。 CONTRAINT〈约束名〉PRIMARY KEY [CLUSTERED] (〈列 组〉) 3) FOREIGN KEY约束。用于定义参照完整性。
数据库系统原理
2019/8/11
第5章 关系数据库标准语言—SQL
5.1 SQL概述及特点 5.2 数据定义语句 5.3 数据查询语句 5.4 数据更新语句 5.5 嵌入式SQLSQL的主要功能 (1) 数据定义功能 定义关系数据库的模式、外模式和内模式,以实现 对基本表、视图以及索引文件的定义、修改和删除等操 作。 (2) 数据操纵功能 包括数据查询和数据更新两种数据操作语句:数据 查询指对数据库中的数据查询、统计、分组、排序操作; 数据更新指数据的插入、删除、修改等数据维护操作。 (3) 数据控制功能 通过对数据库用户的授权和收权命令来实现有关数 据的存取控制,以保证数据库的安全性。
[,〈表级完整性约束条件〉] [,…n] );
(1) SQL支持的数据类型
类型表示
数值型 数据
字符型 数据
特殊数据类型
日期时 间型
SMALLINT INTEGER或INT DECIMAL(p[,q])
FLOAT CHARTER(n)或
CHAR(n) VARCHAR(n) GRAPHIC(n) VARGRAPHIC(n)
课程(课程号));
2. 修改基本表和删除基本表
ALTER TABLE〈表名〉 [ADD(〈新列名〉〈数据类型〉[完整性约束] [,…n])] [DROP〈完整性约束名〉] [MODIFY(〈列名〉〈数据类型〉[,…n])];
(1) 使用ADD子句增加新列 【例5-2】向课程表中增加“学时”字段。
ALTER TABLE 课程 ADD 学时 SMALLINT; (2) 使用MODIFY子句修改列的原定义 (3) 使用DROP子句删除指定的完整性约束条件 【例5-3】删除学生表中对年龄的默认值的定义。