讲义5:数据的完整性
来源:互联网 发布:英语网络兼职 编辑:程序博客网 时间:2024/06/05 16:04
--上课内容:第三单元表的创建和管理 --第四节 维护数据的完整性-- 3.4 数据完整性-- 3.4.1 内容及实现方法 -- 内容:实体完整性、区域完整性、引用完整性、自定义完整性 -- 实现方法:约束、规则、默认-- 3.4.2 约束 -- 3.4.2.1 主键约束 PRIMARY KEY(保证实体完整性) -- 特点:(用企业管理器中的操作来进行验证) -- 1. 限制取值唯一 -- 2. 值不能为NULL -- 3. 可以定义在多个列上,其中某一列可以重复 -- 4. 创建主键的同时系统自动创建聚集唯一索引 -- 5. image 和 text 类型的列不能创建主键 -- 6. 一个表只能有一个主键约束 -- 在查询分析器里用Transact SQL语句实现: -- 1. 查看表的约束、索引 sp_helpconstraint 表名 sp_helpindex 表名 -- 2. 创建一个表后,为表创建主键约束 create table emp1(eid int,ename varchar(10),edeptid int) alter table emp1 add constraint pk_eid primary key(eid) -- 我们为表设置主键时提示出错 alter table emp1 alter column eid int not null sp_helpconstraint emp1 sp_helpindex emp1 sp_help emp1 -- 3. 创建一个表同时创建主键约束 -- 没有给定约束名,系统自动给定约束名 create table emp2 (eid int primary key clustered,ename varchar(10),edeptid int) sp_helpconstraint emp2 sp_helpindex emp2 -- 给定约束名 create table emp3 (eid int constraint pk_eid1 primary key clustered,ename varchar(10),edeptid int) sp_helpconstraint emp3 sp_helpindex emp3 -- 4. 验证表的主键约束 insert into emp1 values(1,'May',1) --验证:主键是否可以有重复值 insert into emp1 values(1,'Alice',1) --验证:主键是否可以有空值 insert into emp1 values(NULL,'Alice',1) insert into emp1 values(2,'Alice',1) --验证:主键是否可以多个 alter table emp1 add constraint pk_eid3 primary key(ename) --验证:主键是否定义在多个列上 create table emp4 (eid int not null,ename varchar(10) not null,edeptid int) alter table emp4 add constraint pk_eid3 primary key(eid,ename) sp_helpconstraint emp4 sp_helpindex emp4 insert into emp4 values(1,'May',1) insert into emp4 values(1,'Alice',1) -- 5. 删除表的主键约束 alter table emp4 drop constraint pk_eid3 sp_helpconstraint emp4 -- 3.4.2.2 唯一约束 UNIQUE -- 特点:(用企业管理器中的操作来进行验证) -- 1. 限制取值唯一 -- 2. 值可以为NULL,但不能多值为NULL -- 3. 可以定义在多个列上,其中某一列可以重复 -- 4. 创建唯一约束的同时系统自动创建唯一索引 -- 5. 一个表可以有多个唯一约束 -- 在查询分析器里用Transact SQL语句实现: -- 1. 创建一个表后,为表创建唯一约束 create table emp5(eid int,ename varchar(10),edeptid int) alter table emp5 add constraint uq_eid unique(eid) sp_helpconstraint emp5 sp_helpindex emp5 sp_help emp5 -- 2. 创建一个表同时创建唯一约束 -- 没有给定约束名,系统自动给定约束名 create table emp6 (eid int unique,ename varchar(10),edeptid int) sp_helpconstraint emp6 sp_helpindex emp6 -- 给定约束名 create table emp7 (eid int constraint uq_eid1 unique,ename varchar(10),edeptid int) sp_helpconstraint emp7 sp_helpindex emp7 -- 3. 验证表的唯一约束 insert into emp7 values(1,'May',1) --验证:是否可以有重复值 insert into emp7 values(1,'Alice',1) --验证:是否可以有空值 insert into emp7 values(NULL,'Alice',1) insert into emp7 values(2,'Mike',1) --验证:是否可以多个唯一约束 alter table emp7 add constraint uq_eid2 unique(ename) --验证:是否定义在多个列上 create table emp8 (eid int ,ename varchar(10) ,edeptid int) alter table emp8 add constraint uq_eid3 unique(eid,ename) sp_helpconstraint emp8 sp_helpindex emp8 insert into emp8 values(1,'May',1) insert into emp8 values(1,'Alice',1) select * from emp8 -- 4. 删除表的唯一约束 alter table emp8 drop constraint uq_eid3 sp_helpconstraint emp8 -- 3.4.2.3 检查约束 CHECK(保证区域完整性) -- 1. 创建一个表后,为表创建检查约束 create table emp9(eid int,ename varchar(10),edeptid int) alter table emp9 add constraint ck_eid check(edeptid<100) sp_helpconstraint emp9 sp_helpindex emp9 sp_help emp9 -- 2. 创建一个表同时创建检查约束 -- 没有给定约束名,系统自动给定约束名 create table emp10 (eid int,ename varchar(10),edeptid int check(edeptid<100)) sp_helpconstraint emp10 sp_helpindex emp10 -- 给定约束名 create table emp11 (eid int ,ename varchar(10),edeptid int constraint ck_eid1 check(edeptid<10)) sp_helpconstraint emp11 sp_helpindex emp11 -- 3. 验证表的检查约束 insert into emp11 values(1,'May',1) --验证:是否做检查 insert into emp11 values(2,'Alice',11) update emp11 set edeptid=11 where eid=2 --验证:是否可以多个检查约束 alter table emp11 add constraint ck_eid2 check(eid<10) sp_helpconstraint emp11 --验证:是否定义在多个列上 create table emp12 (eid int ,ename varchar(10) ,edeptid int) alter table emp12 add constraint ck_eid3 check(eid<10 and edeptid<10) sp_helpconstraint emp12 sp_helpindex emp12 insert into emp12 values(1,'May',1) insert into emp12 values(11,'Alice',1) insert into emp12 values(1,'Alice',11) update emp12 set edeptid=11 where eid=1 select * from emp12 -- 4. 删除表的检查约束 alter table emp12 drop constraint ck_eid3 sp_helpconstraint emp12 -- 5. 当要导入大量数据而要忽略检查的时候 alter table emp11 nocheck constraint ck_eid1 sp_helpconstraint emp11 --恢复检查约束 alter table emp11 check constraint chk_eid1 -- 3.4.2.4 外键约束 FOREIGN KEY (保证引用完整性) -- 特点:(用企业管理器中的操作来进行验证) -- 1. 被参照表的被参照字段必须有主键或唯一约束 -- 2. 外键与主键的数据类型和长度必须一致 -- 3. 必须使用references子句 -- 4. 外键约束不能自动创建索引 -- 5. 在临时表不能使用外键约束 -- 在查询分析器里用Transact SQL语句实现: -- 1. 创建2个表后,为表创建外键约束 create table emp15(eid int,ename varchar(10),edeptid int) create table dept(deptid int not null,deptname char(10)) alter table emp15 add constraint fk_edeptid foreign key(edeptid) references dept(deptid) -- 我们为表设置外键时提示出错, alter table dept add constraint pk_deptid primary key (deptid) sp_helpconstraint emp15 sp_helpindex emp15 sp_help emp15 -- 2. 验证表的外键约束 insert into dept values(1,'人事部') insert into dept values(2,'财务部') insert into emp15 values(1,'May',1) insert into emp15 values(2,'Alice',2) insert into emp15 values(3,'May',3) --因为dept表里没有deptid=3的记录 select * from emp15 select * from dept --验证:如何修改外键的值 update dept set deptid=3 where deptid=2 --因为在emp15里有edeptid=2的记录 --加级联更新、级联删除 alter table emp15 drop constraint fk_edeptid alter table emp15 add constraint fk_edeptid foreign key(edeptid) references dept(deptid) on update cascade on delete cascade update dept set deptid=3 where deptid=2 delete from dept where deptid=3 sp_helpconstraint emp15 sp_helpindex emp15 -- 3. 删除表的外键约束 alter table emp15 drop constraint fk_edeptid sp_helpconstraint emp15 -- 3.4.2.4 默认约束 DEFAULT (为insert数据时给默认值) -- 1. 创建一个表后,为表创建默认约束 create table emp13(eid int,ename varchar(10),edeptid int) alter table emp13 add constraint df_eid default 1 for edeptid sp_helpconstraint emp13 sp_helpindex emp13 sp_help emp13 -- 2. 创建一个表同时创建默认约束 create table emp14 (eid int,ename varchar(10),edeptid int default(1)) -- 3. 验证表的默认约束 insert into emp14(eid,ename) values(1,'aa') select * from emp14 -- 4. 删除表的默认约束 alter table emp13 drop constraint df_eid sp_helpconstraint emp13--表的创建和管理、数据插入修改删除 复习 数字型 整型 int 浮点型 real float decimal(10,2) numeric(m,n)) --数据类型 字符型 char(n) varchar(n) text 日期 datetime --数据定义语言DDL primary key uniquecreate table table_name(field_name1 datetype [null/not null|constraint constraint_name check ]) foreign key default add field_name1 datetype alter column field_name1 datetype drop column field_name1alter table table_name add constraint constraint_name primary key|unique|check|foreign key|default drop constraint constraint_namedrop table table_name --数据操纵语言DMLinsert into table_name(field_name...) values(field_value...) nullupdate table_name set field_name=field_value... where 逻辑表达式delete from table_name where 逻辑表达式select
0 0
- 讲义5:数据的完整性
- 弦月下的SQL<5> 数据完整性
- 数据的完整性 SQL
- 数据的完整性概述
- Oracle 数据的完整性
- 数据完整性的管理
- 维护数据的完整性
- 数据完整性的设计
- 数据完整性的分类
- 保证数据的完整性
- 保证数据的完整性
- 保证数据的完整性
- 数据的完整性(约束)
- 06.数据的完整性
- 数据的完整性
- 自动维护数据的完整性
- 怎么样保证数据的完整性
- Oracle 数据完整性的实例
- 批处理bat文件调用oracle sql文件并传入参数
- py2neo访问neo4j时报timeout
- 安卓开发学习笔记(二)
- TextKit学习(四)通过boundingRectWithSize:options:attributes:context:计算文本尺寸
- 深入理解RunLoop
- 讲义5:数据的完整性
- 字符串中次数第2多的字母(C程序设计进阶第9周)
- kkkkkkkkkkkk
- 2015年找工作总结
- 可代替listview的RecyclerView详解
- 运算符判定(C程序设计进阶第9周)
- 11111wqrewe
- 手机如何连接VMware虚拟机中的服务器
- 6-读书笔记----iOS开发指南:从零基础到App Store上架--iOS-iPhone与iPad应用开发的差异和iOS分层架构设计