《spl语言说明教程》ppt课件

上传人:tian****1990 文档编号:75440124 上传时间:2019-01-31 格式:PPT 页数:121 大小:712.31KB
返回 下载 相关 举报
《spl语言说明教程》ppt课件_第1页
第1页 / 共121页
《spl语言说明教程》ppt课件_第2页
第2页 / 共121页
《spl语言说明教程》ppt课件_第3页
第3页 / 共121页
《spl语言说明教程》ppt课件_第4页
第4页 / 共121页
《spl语言说明教程》ppt课件_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《《spl语言说明教程》ppt课件》由会员分享,可在线阅读,更多相关《《spl语言说明教程》ppt课件(121页珍藏版)》请在金锄头文库上搜索。

1、第5章 关系数据库标准语言SQL,关系数据库标准语言SQL,5.1 SQL概述及特点 5.2 数据定义语句 5.3 数据查询语句 5.4 数据更新语句 5.5 嵌入式SQL 5.6 数据控制机制和语句,5.1 SQL概述及特点,1. SQL的主要功能 (1) 数据定义功能 定义关系数据库的模式、外模式和内模式,以实现对基本表、视图以及索引文件的定义、修改和删除等操作。 (2) 数据操纵功能 包括数据查询和数据更新两种数据操作语句:数据查询指对数据库中的数据查询、统计、分组、排序操作;数据更新指数据的插入、删除、修改等数据维护操作。 (3) 数据控制功能 通过对数据库用户的授权和收权命令来实现有

2、关数据的存取控制,以保证数据库的安全性。,2. SQL的特点,(1) SQL具有自含式和嵌入式两种形式。 (2) SQL具有语言简洁、易学易用的特点。 (3) SQL支持三级模式结构。 全体基本表构成了数据库的模式。 视图和部分基本表构成了数据库的外模式。 数据库的存储文件和它们的索引文件构成了关系数据库的内模式。,SQL功能极强,完成核心功能只用了9个动词。,SQL支持关系数据库三级模式结构,5.2 数据定义语句,5.2.1 基本表的定义和维护 1. 定义基本表 定义基本表语句的一般格式为: CREATE TABLE 库名表名( 列名数据类型列级完整性约束条件 , 列名数据类型列级完整性约束

3、条件 ,n ,表级完整性约束条件 ,n );,(1) SQL支持的数据类型,(2) 列级完整性的约束条件,针对属性值设置的限制条件。 1) NOT NULL或NULL约束。NOT NULL约束不允许字段值为空,而NULL约束允许字段值为空。 2) UNIQUE约束。惟一性约束,即不允许列中出现重复的属性值。 3) DEFAULT约束。默认值约束。 DEFAULT约束名默认值FOR列名 4) CHECK约束。检查约束。 CONSTRAINT约束名CHECK (约束条件表达式),(3) 表级完整性约束条件,涉及到关系中多个列的限制条件。 1) UNIQUE约束。惟一性约束。 2) PRIMARY

4、KEY约束。定义主码,保证惟一性和非空性。 CONTRAINT约束名PRIMARY KEY CLUSTERED (列组) 3) FOREIGN KEY约束。用于定义参照完整性。 CONTRAINT约束名FOREIGN KEY(外码) REFERENCES被参照表名(与外码对应的主码名),CREATE TABLE 学生( 学号 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL, 年龄 SMALLINT, 性别 CHAR(2), 所在系 CHAR(20), DEFAULT C1 20 FOR 年龄, CONSTRAINT C2 CHECK(性别 IN (男,

5、女);,建立基本表: 学生(学号,姓名,年龄,性别,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,CREATE TABLE 课程( 课程号 CHAR(5) PRIMARY KEY, 课程名 CHAR(20), 先行课 CHAR(5);,CREATE TABLE 选课( 学号 CHAR(5), 课程号 CHAR(5), 成绩 SMALLINT, CONSTRAINT C3 CHECK(成绩 BETWEEN 0 AND 100), CONSTRAINT C4 PRIMARY KEY(学号,课程号), CONSTRAINT C5 FOREIGN KEY(学号) REFE

6、RENCES 学生(学号), CONSTRAINT C6 FOREIGN KEY(课程号) REFERENCES 课程(课程号);,实体完整性定义,关系模型的实体完整性 CREATE TABLE中用PRIMARY KEY定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件,实体完整性定义(续),例 将Student表中的Sno属性定义为码 (1)在列级定义主码 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CH

7、AR(2) , Sage SMALLINT, Sdept CHAR(20);,实体完整性定义(续),(2)在表级定义主码 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno) );,实体完整性定义(续),例将SC表中的Sno,Cno属性组定义为码 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PR

8、IMARY KEY (Sno,Cno) /*只能在表级定义主码*/ );,实体完整性检查和违约处理,插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改,实体完整性检查和违约处理(续),检查记录中主码值是否唯一的一种方法是进行全表扫描,实体完整性检查和违约处理(续),索引,参照完整性定义,关系模型的参照完整性定义 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 用REFERENCES短语指明这些外码参照哪些表的主码,参照完整

9、性定义(续),例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码 例 定义SC中的参照完整性 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCE

10、S Course(Cno) /*在表级定义参照完整性*/ );,参照完整性检查和违约处理,可能破坏参照完整性的情况及违约处理,违约处理,参照完整性违约处理 1. 拒绝(NO ACTION)执行 默认策略 2. 级联(CASCADE)操作 3. 设置为空值(SET-NULL) 对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值,违约处理(续),例 显式说明参照完整性的违约处理示例 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREI

11、GN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中相应的元组*/ ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/ );,用户定义的完整性,用户定义的完整性就是针对某一具体应用的数据必须满足的语义要

12、求 RDBMS提供,而不必由应用程序承担,属性上的约束条件的定义,CREATE TABLE时定义 列值非空(NOT NULL) 列值唯一(UNIQUE) 检查列值是否满足一个布尔表达式(CHECK),属性上的约束条件的定义(续),1.不允许取空值 例 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空

13、值,则在列级不允许取空值的定义就不必写了 * / );,属性上的约束条件的定义(续),2.列值唯一 例 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT (Deptno NUMERIC(2), Dname CHAR(9) UNIQUE,/*要求Dname列值唯一*/ Location CHAR(10), PRIMARY KEY (Deptno) );,属性上的约束条件的定义(续),3. 用CHECK短语指定列值应该满足的条件 例7 Student表的Ssex只允许取“男”或“女”。 CREATE TABLE Student

14、(Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男,女) ) , /*性别属性Ssex只允许取男或女 */ Sage SMALLINT, Sdept CHAR(20) );,属性上的约束条件检查和违约处理,插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足 如果不满足则操作被拒绝执行,元组上的约束条件的定义,在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制 同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件,元组上

15、的约束条件的定义(续),例9 当学生的性别是男时,其名字不能以Ms.打头。 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno), CHECK (Ssex=女 OR Sname NOT LIKE Ms.%) /*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/ ); 性别是女性的元组都能通过该项检查,因为Ssex=女成立; 当性别是男性时,要通过检查则名字一定不能以Ms.打头,元组上的约束条件检查和违约处理,插入元组或修改属性的值时,RDBMS检查元组上的约束条件是否被满足 如果不满足则操作被拒绝执行,完整性约束命名子句,CONSTRAINT 约束 CONSTRAINT PRIMARY KEY短语 |FOREIGN KEY短语 |CHECK短语,完整性约束命名子句(续),例 建立学生登记表Student,要求学号在9000099999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。 CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AN

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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