SQL数据库创建表与完整性约束

上传人:平*** 文档编号:46215711 上传时间:2018-06-24 格式:PPT 页数:68 大小:1.39MB
返回 下载 相关 举报
SQL数据库创建表与完整性约束_第1页
第1页 / 共68页
SQL数据库创建表与完整性约束_第2页
第2页 / 共68页
SQL数据库创建表与完整性约束_第3页
第3页 / 共68页
SQL数据库创建表与完整性约束_第4页
第4页 / 共68页
SQL数据库创建表与完整性约束_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《SQL数据库创建表与完整性约束》由会员分享,可在线阅读,更多相关《SQL数据库创建表与完整性约束(68页珍藏版)》请在金锄头文库上搜索。

1、4.1.3 SQL语言功能概述SQL功能命令动词动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE四部分:数据定义功能、数据控制功能、数据 查询 功能和数据操纵功能。 4.2 SQL的数据类型 数值 型 字符串型 日期时间 型 货币 型数值型 准确型 整数 Bigint: 8字节, Int:4字节 Smallint:2字节, Tinyint:1字节 Bit:1位,存储1或0 小数 Numeric(p,q)或Decimal(p,q), 其中:p为数字位长度,q:小数位长度。 近似型Float:8字节R

2、eal:4字节字符串型 普通编码 字符串类型 统一字符编码 字符串类 型 二进制字符串类型普通编码 字符串类型 Char(n):定长存储,n(列级完整性约 束定义 , 列级完整性约束定义 , 表级完整性约束定义 ) 在列级完整性约束定义处可以定义的约束 NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。 CHECK:限制列的取值范围。 PRIMARY KEY:指定本列为主码。 FOREIGN KEY:定义本列为引用其他表的外码。 使用形式为: FOREIGN KEY() REFERENCES () 几点说明 NOT NULL和DEFAULT只能

3、是列级完整性约束 ; 其他约束均可在表级完整性约束处定义。 注意以下几点: 第一,如果CHECK约束是定义多列之间的取值约 束,则只能在表级完整性约束处定义; 第二,如果表的主码由多个列组成,则也只能在 表级完整性约束处定义,并将主码列用括号括起来, 即:PRIMARY KEY(列1,列2 ); 第三,如果在表级完整性约束处定义外码,则 “FOREIGN KEY ()”部分不能省。约束定义 列取值非空约束NOT NULL 例:sname char(10) NOT NULL约束定义(续) 表主码约码约 束 在定义列时定义主码(仅用于单列主码) 列定义 PRIMARY KEY 例: SNO cha

4、r(7) PRIMARY KEY 在定义完列时定义主码(用于单列或多列 主码) PRIMARY KEY () 例: PRIMARY KEY(SNO)PRIMARY KEY(SNO,CNO)约束定义(续)外码码引用约约束 指明本表外码列引用的表及表中的主码列。 FOREIGN KEY () REFERENCES ( )例:FOREIGN KEY (sno)REFERENCES 学生表(sno)约束定义(续) 默认值约认值约 束 格式:DEFAULT 默认值 例:定义系的默认值为“计算机系”。DEFAULT 计算机系约束定义(续) CHECK约约束 格式:CHECK (约束表达式) 例:定义成绩大

5、于等于0。CHECK ( grade = 0 )约束定义(续) UNIQUE约约束 在列级约束定义(仅用于单列约束) 列定义 UNIQUE 例: SNAME char(7) UNIQUE 在表级约束定义(用于单列或多列组合约束 ) UNIQUE ()例: UNIQUE (SNO,CNO) 用于限制在一个列中不能有重复的值。 用在事实上具有惟一性的属性列上,比如每 个人的身份证号码、驾驶证号码等均不能有 重复值。 注意: 允许有一个空值; 在一个表中可以定义多个UNIQUE约束 ; 可以在一个列或多个列上定义UNIQUE 约束。 创建学生表CREATE TABLE Student (Sno ch

6、ar ( 7 ) PRIMARY KEY,Sname char ( 10 ) NOT NULL,Ssex char (2) CHECK (Ssex = 男 OR Ssex = 女), Sage tinyint CHECK (Sage = 15 AND Sage 0),Semester tinyint CHECK (Semester 0),Period int CHECK (Period 0),PRIMARY KEY(Cno) ) 创建SC表CREATE TABLE SC (Sno char(7) NOT NULL,Cno char(10) NOT NULL,Grade tinyint,CHEC

7、K (Grade = 0 and Grade , 例:删除test表的语句为:DROP TABLE test4.3.2 修改表结构 在定义完表之后,如果需求有变化, 比如添加列、删除列或修改列定义, 可以使用ALTER TABLE语句实现 。 ALTER TABLE语句可以对表添加列、 删除列、修改列的定义、定义主码、 外码,也可以添加和删除约束。 修改表结构语法ALTER TABLE ALTER COLUMN | ADD COLUMN | DROP COLUMN | ADD PRIMARY KEY(列名 , n ) | ADD FOREIGN KEY(列名)REFERNECES 表名(列名)

8、示例 例2为SC表添加“修课类别 ”列,此列的 定义为:XKLB char(4) ALTER TABLE SCADD XKLB char(4) NULL 示例 例3将新添加的XKLB的类型改为char(6)。 ALTER TABLE SCALTER COLUMN XKLB char(6)示例 例4删除Course表的Period列。 ALTER TABLE Course DROP COLUMN Period 指数据的正确性、有效性和相容性然而大多数情况下,我们们所提到的完整性,实际实际是指完整性 规则规则 为为保证证完整性,数据应该满应该满足的约约束条件,又称为为完整性约约束完整性的原义关系模

9、型中的完整性 关系完整性 在关系模型中的地位 三要素之一(关系, 关系完整性, 关系操作) 三种类型 实体完整性; 参照完整性; 用户定义完整性; 三种关系完整性规则 解决现实世界的三个问题 如何保证一个实体是可识别(区分)的 方法:实体完整性 如何保证能够从一个实体找到另一个相关联的实体,而不 会出现找不到的情况 方法:参照完整性 如何保证用于描述实体的属性,其取值是合理的 方法:用户定义完整性三种关系完整性规则 实体完整性 目的:保证每个元组(所代表的实体)是可标 识(区分)的 规则:元组在主码的每个属性上取唯一值,且 不能为空 意义: 关系往往对应一个实体集,这时关系中的每个 元组对应一

10、个实体 现实世界中的实体是可区分的,关系中的元组 也必须是可区分的 主码起到唯一标识(区分)每个元组的作用, 所以它必须是唯一的,同时也是非空的三种关系完整性规则 三种关系完整性规则要点: 如果一个关系的主码由多个属性构成,那 么每个属性都不能取空值三种关系完整性规则 参照完整性复习:外部码 外部码 定义:关系R1中的单个属性或属性集合,对 应另一个关系 R2的主码 R1称为参照关系, R2称为被参照关系 来源:由联系集转化而来,反映实体(元组 )之间的联系复习:外部码三种关系完整性规则参照完整性 目的:保证外码引用的是一个有效的主码 规则:如果关系R的外部码对应关系S的主码,则R每个元组在

11、外部码上的取值必须满足:或者等于空值或者等于某个对应的主码值(S某个元组的主码值) 意义: 在被参照关系S中, 一个主码值代表所在的元组(一个实体) 在参照关系R中,元组的外部码 要么取空值,表示不和任何S元组(实体)存在联系 要么取S的某个主码值,表示表示联系是存在的,且涉及的是 这个主码值所代表的S元组(实体) 如果违反以上两种情况,表示联系涉及了不存在的实体,这是 不允许的思考 Thinking : 根据外部码码取值值的可能性,我们们在定义义外部 码码的属属性类类型时时,应应遵循什么么原则则?三种关系完整性规则 用户定义完整性 目的:保证实体属性的取值有效,等等 规则:用户根据具体的应用

12、环境定义 例如 年龄的取值范围为0到200,性别只能是“男”或“女 ” 职工编号是4位整数 意义: 反映了现实世界的真实情况,即实体的属性必须满 足要满足这些条件,反映了程序编制的要求思考 Thinking 什么么操作会会破坏关关系完整性。查询查询 操作, 还还是修改操作?课堂练习 依次执行如下操作,哪些能够成功? 1零件关系: 添加(3, 绿, null) 2供应商关系: 添加(null, 四化, 广州) 3供应商关系: 添加(E, 北电, 广州) 4零件关系: 修改(2, 白, A) 为(2, 黑, F) 5供应商关系: 删除(A, 红星, 北京) 6零件关系: 修改(3, 蓝, B) 为

13、(3, 蓝, E)完整性控制概述 完整性控制 目的:保证数据的正确性、有效性和相容性 由DBMS负责,包括两方面 完整性规则的定义:通过SQL (运行时)完整性规则的检查:通过专门的“完整 性子系统”主码约束 规则:主码值不允许空,也不允许出现重复 定义:在创建或修改关系的定义语句中,用 PRIMARY KEY关键字声明主码的同时,即定义了 一个主码约束 create table 关系名( , primary key (属性, 属性) )主码约束 例: create table 选修( 学号VARCHAR (10), 课程号VARCHAR (10), primary key (学号, 课程号)

14、, )唯一约束 规则:对指定的一个属性或属性组合,不允许出现重 复值 定义:在创建或修改关系的定义语句中,用Unique 关键字声明 create table 关系名( , unique (属性, 属性) )主码约束 例: create table 学生(,身份证号VARCHAR (15),unique (身份证号),)外部码约束 规则:外部码要么取空值,要么取对应的某个主码值 定义:在创建或修改关系的定义语句中,用 FOREIGN KEY关键字声明一个外部码的同时,即定 义了一个外部码约束 create table 表名 ( , foreign key (属性名, 属性名)reference

15、s 关系名(属性名, 属性名)on delete on update 参照动作 说明当某个主码值被删除/更新时(这个主码值在 被参照关系中),如何处理对应的外部码值(这些 外部码值在参照关系中) RESTRICT 方式:仅当没有任何对应的外码值时 ,才可以删除/更新这个主码值,否则系统拒绝执 行此操作 CASCADE 方式:连带将所有对应的外码值一块删 除/更新(删除外码值,实际上就是将所在的元组 删除掉) SET NULL 方式:将所有对应的外码值设为空值外部码约束外部码约束 CASCADE方式示例:当当主码值码值 被删删除/更 新时时,连带删连带删 除/更新对应对应 的外码值码值外部码约束 RESTRICT方式示例:仅当没仅当没 有任何对应对应 的外码值时码值时 ,才可以删删除/更新主码值码值 ,否 则则系统统拒绝执绝执 行此操作外部码约束外部码约束外部码约

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

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

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