数据库系统原理与设计讲义教材

上传人:yuzo****123 文档编号:143746545 上传时间:2020-09-01 格式:PPT 页数:156 大小:483.50KB
返回 下载 相关 举报
数据库系统原理与设计讲义教材_第1页
第1页 / 共156页
数据库系统原理与设计讲义教材_第2页
第2页 / 共156页
数据库系统原理与设计讲义教材_第3页
第3页 / 共156页
数据库系统原理与设计讲义教材_第4页
第4页 / 共156页
数据库系统原理与设计讲义教材_第5页
第5页 / 共156页
点击查看更多>>
资源描述

《数据库系统原理与设计讲义教材》由会员分享,可在线阅读,更多相关《数据库系统原理与设计讲义教材(156页珍藏版)》请在金锄头文库上搜索。

1、“数据库系统原理及应用”课程 第三章 关系数据库语言SQL 主 讲 人:李俊山 教授 联系方式:743419 办公地点:训练楼516房间,SQL语句的分类: 数据定义语句:用于定义数据库的逻辑结构,包括定义基本表、定义视图和定义索引。 数据查询语句:用于按不同查询条件实现对数据库中数据的检索查询。 数据操纵语句:用于更改和操作表中的数据,包括数据插入、数据修改、数据删除及数据查询。 数据控制语句:用于实现用户授权、基本表和视图授权、事务控制、完整性和安全性控制等。,3.1.1 表的定义、修改与撤消 1. 表的定义 表的定义语句格式为: CREATE TABLE ( , , , , );,其中:

2、 典型的 (a)NULL:指出该列可以为空值。 (b)NOT NULL:指出该列不能为空值。每一个表中至少应有一个列的可选项为NOT NULL。 (c)PRIMARY KEY:指出该列名为表的主键。 (d)DEFAULT:给所在的列设置一个缺省值。 (e)CHECK:指出该列的值只能取CHECK约束条件范围的值。,例3.2 创建图1.30所示的教学管理数据库系统中的学生关系表S,可用如下的表定义语句定义: CREATE TABLE S (S# CHAR(9) PRIMARY KEY, SNAME CHAR(10) NOT NULL, SSEX CHAR(2) CHECK(SSEX IN (男,

3、女), SBIRTHIN DATE NOT NULL, PLACEOFB CHAR(16), SCODE CHAR(5) NOT NULL, CLASS CHAR(5) NOT NULL);,其中: (a) 表的主键约束 格式为:PRIMARY KEY() 当该表的主键由2个或2个以上属性组成时,表的主键必须由表的完整性约束给出。,例3.3 创建教学管理数据库系统中的学习关系SC,可用如下的表定义语句定义: CREATE TABLE SC (S# CHAR(9), C# CHAR(7), GRADE INT DEFAULT(0), PRIMARY KEY(S#,C#));, (b) 表的外键约

4、束 格式为: FOREIGN KEY () REFERENCE () 本子句定义了一个列名为“”的外键,它与表“”中的“”相对应,且“”在表“”中是主键。,例3.4 教学管理数据库系统中的学习关系SC,可重新用如下的表定义语句定义如下: CREATE TABLE SC (S# CHAR(9), C# CHAR(7), GRADE INT DEFAULT(0), PRIMARY KEY(S#,C#), FOREIGN KEY (C#) REFERENCES C (C#);, (c) 表检验CHECK约束 格式为: CHECK () 表检验约束CHECK子句的含义和格式与列检验约束相同,所不同的是

5、,表检验约束CHECK子句是一个独立的子句而不是子句中的一部分。表检验约束CHECK子句中的不仅可以是一个条件表达式,而且还可以是一个包含SELECT语句的SQL语句。,例3.5 教学管理数据库系统中的学习关系SC,还可用如下的表定义语句定义如下: CREATE TABLE SC (S# CHAR(9), C# CHAR(7), GRADE INT DEFAULT(0), PRIMARY KEY(S#,C#), FOREIGN KEY (C#) REFERENCES C(C#), CHECK(GRADE BETWEEN 0 AND 100);,2. 表的修改 (1) 改变表名 修改表名的语句格

6、式为: RENAME TO ;,2. 表的修改 (2) 增加列 在表的最后一列后面增加新的一列,但不允许将一个列插入到原表的中间。 增加列语句的格式为: ALTER TABLE ADD ;,例3.7 给专业表SS增加一个新属性NOUSE_COLUMN,设其数据类型为NUMERIC(8,1)。 语句应为: ALTER TABLE SS ADD NOUSE_COLUMN NUMERIC(8,1);,2. 表的修改 (3) 删除列 删除表中不再需要的列,语句格式为: ALTER TABLE DROP CASCADE | RESTRICT; 其中,可选项“CASCADE | RESTRICT”是删除方

7、式。当选择CASCADE时,表示在删除名为“”的表中的列“”时,所有引用到该列的视图或有关约束也一起被删除;当选择RESTRICT时,表示当没有视图或有关约束引用列“”时,该列才能被删除,否则拒绝该删除操作。,例3.8 删除专业表SS中增加的属性NOUSE_COLUMN的两种删除语句分别为: ALTER TABLE SS DROP NOUSE_COLUMN CASCADE; ALTER TABLE SS DROP NOUSE_COLUMN RESTRICT;,2. 表的修改 (4) 修改列的定义 修改属性列的定义语句只用于修改列的类型和长度,列的名称不能改变。当表中已有数据时,不能缩短列的长度

8、,但可以增加列的长度。 修改列定义语句格式为: ALTER TABLE MODIFY ;,例3.8 将专业表SS中的专业名称SSNAME(30)修改为SSNAME(40),即长度增加10。 ALTER TABLE SS MODIFY SSNAME VARCHAR(40);,3. 表的撤销 表的撤消就是将不再需要的表或定义有错误的表删除掉。当一个表被撤消时,该表中的数据也一同被撤消(删除)。 撤消表的语句格式为: DROP TABLE CASCADE | RESTRICT; 其中, CASCADE表示在撤消表“”时,所有引用这个表的视图或有关约束也一起被撤消;RESTRICT表示在没有视图或有关

9、约束引用该表的属性列时,表“”才能被撤消,否则拒绝该撤消操作。,3.1.2 数据的插入、修改、删除、提交与撤消 1. 数据的插入 向表中插入一行数据的单元组值插入方式的INSERT语句格式为: INSERT INTO () VALUES();,其中: (1)如果选择可选项“()”,表示在插入一个新元组时,只向由指出的列中插入数据,其他没有列出的列不插入数据(为空值),且“”中必须至少包括表中那些列约束为“NOT NULL”的列和主键列。如果不选择该可选项,则默认表中所有的列都要插入数据。 (2) 指出要插入列的具体值。如果选择了可选项,则中的属性列值必须与中的属性列名一一对应;如果没有选择可选

10、项,则中的属性列值必须与中的属性列名一一对应。,例3.10 给学习关系SC中插入王丽丽同学(学号为200401003)学习计算机网络课(课程号为C403001)的成绩(89分)。 INSERT INTO SC (S#,C#,GRADE) VALUES(200401003,C403001,89); 或: INSERT INTO SC VALUES(200401003,C403001,89);,3.1.2 数据的插入、修改、删除、提交与撤消 2. 数据的修改 语句格式为: UPDATE SET ,, , WHERE 其中,“”指出将列“”的值修改成。可选项“WHERE ”中的指定修改有关列的数据时

11、所应满足的条件。当不选择该选项时,表示修改表中全部元组中相应列的数据。,例3.13 将学生关系S中的学生名字“王丽丽”改为“王黎丽”。 UPDATE S SET SNAME王黎丽 WHERE S#200401003;,例3.14 将所有女同学的专业改为S0404。 UPDATE S SET SCODES0404 WHERE SSEX女;,3.1.2 数据的插入、修改、删除、提交与撤消 3. 数据的删除 语句格式为: DELETE FROM WHERE 其中,可选项“WHERE ”中的指定所删元组应满足的条件。当不选该可选项时,表示删除表中全部数据。,例3.15 在学生关系S中删除学号为2004

12、03001的学生信息。 DELETE FROM S WHERE S# =200403001; 例3.16 删除专业关系中的全部信息。 DELETE FROM SS;,3.1.2 数据的插入、修改、删除、提交与撤消 4. 数据的提交 工作区概念: 数据提交的概念:就是把用户对数据库中数据的更新结果永久地保存到数据库中。 显式提交: 隐式提交:,3.1.2 数据的插入、修改、删除、提交与撤消 5. 数据的撤销 命令格式:,3.2.1 简单查询 1. SELECT查询语句 SQL查询语句的基本格式为: SELECT FROM WHERE ,3.2.1 简单查询 2. 无条件查询 例3.17 查询教学

13、管理数据库中全部学生的基本信息。 SELECT * FROM S; 例3.19 查询课程关系C中的记录数,也即开课的总门数。 SELECT COUNT(*) FROM C;,SQL语言中常用的聚合函数主要有:(1)COUNT(*) 计算元组的个数;(2)COUNT(列名) 计算某一列中数据的个数;(3)COUNT DISTINCT(列名) 计算某一列中不同值的个数;(4)SUM(列名) 计算某一数据列中值的总和;(5)AVG(列名) 计算某一数据列中值的平均值;(6)MIN(列名) 求(字符、日期、属性列)的最小值;(7)MAX(列名) 求(字符、日期、属性列)的最大值;,例3.20 计算所有

14、学生所学课程的最高分数、最低分数和平均分数。 SELECT MAX(GRADE),MIN(GRADE),AVG(GRADE) FROM SC;,3.2.1 简单查询 3. 单条件查询 例3.21 查询所有学习计算机网络课(课程号为C403001)的学生的学号和成绩。 SELECT S#,GRADE FROM SC WHERE C# =C403001;,表3.1条件表达式中的关系比较符,3.2.1 简单查询 4. 多条件查询,例3.22 查询选修了计算机网络课(课程号为C403001)或信息安全技术课(课程号为C403002)的学生的学号。 SELECT #S FROM SC WHERE C#

15、=C403001 OR C# =C403002; (关系表见下页),学生关系模式:S(S#,SNAME,SSEX,SBIRTHIN, PLACEOFB,SCODE,CLASS) 专业关系模式:SS(SCODE#,SSNAME) 课程关系模式:C(C#,CNAME,CLASSH) 设置关系模式:CS(SCODE#,C#) 学习关系模式:SC(S#,C#,GRADE) 教师关系模式:T(T#,TNAME,TSEX,TBIRTHIN, TITLEOF,TRSECTION,TEL) 讲授关系模式:TEACH(T#,C#) 图1.30 图1.9的教学管理数据库系统的概念模式,表3.2逻辑运算符,例3.23 若有学生关系S1(S#,SNAME,SSEX,SAGE,PLACEOFB,SCODE,CLASS),即该学生关系中给出的不是出生年月,而是年龄。要求查询年龄在21岁至25岁之间学生的基本信息。 SELECT * FROM S1 WHERE AGE = 18 AND AGE = 25;,上例中:这种把某数值型列的值限定在某个数值区间的比较查询条件(、=)可以用比较运算符“BETWEEN AND”来表示,格式为: BETWEEN AND 例3.23的查询可以改写为: SELECT * FROM S1 WHERE AGE B

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号