数据库系统概论(第五版)第3章(3)

上传人:n**** 文档编号:89507609 上传时间:2019-05-26 格式:PPT 页数:80 大小:582KB
返回 下载 相关 举报
数据库系统概论(第五版)第3章(3)_第1页
第1页 / 共80页
数据库系统概论(第五版)第3章(3)_第2页
第2页 / 共80页
数据库系统概论(第五版)第3章(3)_第3页
第3页 / 共80页
数据库系统概论(第五版)第3章(3)_第4页
第4页 / 共80页
数据库系统概论(第五版)第3章(3)_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《数据库系统概论(第五版)第3章(3)》由会员分享,可在线阅读,更多相关《数据库系统概论(第五版)第3章(3)(80页珍藏版)》请在金锄头文库上搜索。

1、,数据库系统概论 An Introduction to Database System,xx大学信息学院,第三章 关系数据库标准语言SQL(续2),第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结,3.5 数据更新,3.5.1 插入数据 3.5.2 修改数据 3.5.3 删除数据,3.5.1 插入数据,两种插入数据方式 插入元组 插入子查询结果 可以一次插入多个元组,1. 插入元组,语句格式 INSERT INTO (,) VALUES ( , ); 功能 将新元

2、组插入指定表中,插入元组(续),INTO子句 指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致 指定部分属性列:插入的元组在其余属性列上取空值,插入元组(续),VALUES子句 提供的值必须与INTO子句匹配 值的个数 值的类型,插入元组(续),例3.69将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (201215

3、128,陈冬,男,IS,18);,插入元组(续),例3.71 插入一条选课记录( 200215128,1 )。 INSERT INTO SC(Sno,Cno) VALUES (201215128 , 1 ); 关系数据库管理系统将在新插入记录的Grade列上自动地 赋空值。 或者: INSERT INTO SC VALUES ( 201215128 , 1 ,NULL);,插入元组(续),例3.70将学生张成民的信息插入到Student表中。 INSERT INTO Student VALUES (201215126,张成民,男,18,CS);,2. 插入子查询结果,语句格式 INSERT I

4、NTO ( , ) 子查询; INTO子句 子查询 SELECT子句目标列必须与INTO子句匹配 值的个数 值的类型,插入子查询结果(续),例3.72 对每一个系,求学生的平均年龄,并把结果存入数据库 第一步:建表 CREATE TABLE Dept_age ( Sdept CHAR(15) /*系名*/ Avg_age SMALLINT); /*学生平均年龄*/ 第二步:插入数据 INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;,插入子查询结果(续),关系数据库管理系

5、统在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则 实体完整性 参照完整性 用户定义的完整性 NOT NULL约束 UNIQUE约束 值域约束,3.5 数据更新,3.5.1 插入数据 3.5.2 修改数据 3.5.3 删除数据,3.5.2 修改数据,语句格式 UPDATE SET =,= WHERE ; 功能 修改指定表中满足WHERE子句条件的元组 SET子句给出的值用于取代相应的属性列 如果省略WHERE子句,表示要修改表中的所有元组,修改数据(续),三种修改方式 修改某一个元组的值 修改多个元组的值 带子查询的修改语句,1. 修改某一个元组的值,例3.73 将学生201215

6、121的年龄改为22岁 UPDATE Student SET Sage=22 WHERE Sno= 201215121 ;,2. 修改多个元组的值,例3.74 将所有学生的年龄增加1岁。 UPDATE Student SET Sage= Sage+1;,3. 带子查询的修改语句,例3.75 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE Sno IN (SELETE Sno FROM Student WHERE Sdept= CS );,修改数据(续),关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则 实体完整性 主码不

7、允许修改 用户定义的完整性 NOT NULL约束 UNIQUE约束 值域约束,3.5 数据更新,3.5.1 插入数据 3.5.2 修改数据 3.5.3 删除数据,3.5.3 删除数据,语句格式 DELETE FROM WHERE ; 功能 删除指定表中满足WHERE子句条件的元组 WHERE子句 指定要删除的元组 缺省表示要删除表中的全部元组,表的定义仍在字典中,删除数据(续),三种删除方式 删除某一个元组的值 删除多个元组的值 带子查询的删除语句,1. 删除某一个元组的值,例3.76 删除学号为201215128的学生记录。 DELETE FROM Student WHERE Sno= 20

8、1215128 ;,2. 删除多个元组的值,例3.77 删除所有的学生选课记录。 DELETE FROM SC;,3. 带子查询的删除语句,例3.78 删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE Sno IN (SELETE Sno FROM Student WHERE Sdept= CS) ;,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结,3.6 空值的处理,空值就是“不知道”或“不存在”或“无意义”的值。 一般有以下几种

9、情况: 该属性应该有一个值,但目前不知道它的具体值 该属性不应该有值 由于某种原因不便于填写,1. 空值的产生,空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。 空值的产生 例 3.79向SC表中插入一个元组,学生号是”201215126”,课程号是”1”,成绩为空。 INSERT INTO SC(Sno,Cno,Grade) VALUES(201215126 ,1,NULL); /*该学生还没有考试成绩,取空值*/ 或 INSERT INTO SC(Sno,Cno) VALUES( 201215126 ,1); /*没有赋值的属性,其值为空值*/,空值的产生(

10、续),例3.80 将Student表中学生号为”201215200”的学生所属的系改为空值。 UPDATE Student SET Sdept = NULL WHERE Sno=201215200;,2. 空值的判断,判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示。 例 3.81 从Student表中找出漏填了数据的学生信息 SELECT * FROM Student WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;,3. 空值的约束条件,属性定义(或者域定义)中 有NOT N

11、ULL约束条件的不能取空值 加了UNIQUE限制的属性不能取空值 码属性不能取空值,4. 空值的算术运算、比较运算和逻辑运算,空值与另一个值(包括另一个空值)的算术运算的结果为空值 空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN。 有UNKNOWN后,传统二值(TRUE,FALSE)逻辑就扩展成了三值逻辑,空值的算术运算、比较运算和逻辑运算(续),T表示TRUE,F表示FALSE,U表示UNKNOWN,表3.8 逻辑运算符真值表,空值的算术运算、比较运算和逻辑运算(续),例3.82 找出选修1号课程的不及格的学生。 SELECT Sno FROM SC WHERE Grade

12、 60 AND Cno=1; 查询结果不包括缺考的学生,因为他们的Grade值为 null。,空值的算术运算、比较运算和逻辑运算(续),SELECT Sno FROM SC WHERE Grade 60 AND Cno=1 UNION SELECT Sno FROM SC WHERE Grade IS NULL AND Cno=1 或者 SELECT Sno FROM SC WHERE Cno=1 AND (Grade60 OR Grade IS NULL);,例 3.83 选出选修1号课程的不及格的学生以及缺考的学生。,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程

13、数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结,3.7 视图,视图的特点 虚表,是从一个或几个基本表(或视图)导出的表 只存放视图的定义,不存放视图对应的数据 基表中的数据发生变化,从视图中查询出的数据也随之改变,3.7 视图,3.7.1 定义视图 3.7.2 查询视图 3.7.3 更新视图 3.7.4 视图的作用,3.7.1 定义视图,1.建立视图 2.删除视图,1. 建立视图,语句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;,建立视图(续),WITH CHECK OPTION 对视图进行UP

14、DATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式) 子查询可以是任意的SELECT语句,是否可以含有ORDER BY子句和DISTINCT短语,则决定具体系统的实现。,建立视图(续),组成视图的属性列名:全部省略或全部指定 全部省略: 由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: 某个目标列是聚集函数或列表达式 多表连接时选出了几个同名列作为视图的字段 需要在视图中为某个列启用新的更合适的名字,建立视图(续),关系数据库管理系统执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中的S

15、ELECT语句。 在对视图查询时,按视图的定义从基本表中将数据查出。,建立视图(续),例3.84 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;,建立视图(续),例3.85建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION;,建立视图(续),定义

16、IS_Student视图时加上了WITH CHECK OPTION子句,对该视图进行插入、修改和删除操作时,RDBMS会自动加上Sdept=IS的条件。 若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图。 IS_Student视图就是一个行列子集视图。,建立视图(续),基于多个基表的视图 例3.86 建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno

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

当前位置:首页 > 高等教育 > 其它相关文档

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