玩转oracle第21讲:约束

上传人:kms****20 文档编号:41049533 上传时间:2018-05-28 格式:DOC 页数:7 大小:29KB
返回 下载 相关 举报
玩转oracle第21讲:约束_第1页
第1页 / 共7页
玩转oracle第21讲:约束_第2页
第2页 / 共7页
玩转oracle第21讲:约束_第3页
第3页 / 共7页
玩转oracle第21讲:约束_第4页
第4页 / 共7页
玩转oracle第21讲:约束_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《玩转oracle第21讲:约束》由会员分享,可在线阅读,更多相关《玩转oracle第21讲:约束(7页珍藏版)》请在金锄头文库上搜索。

1、玩转玩转 OracleOracle 第第 2121 讲:约束讲:约束玩转 Oracle 实战教程 主讲:韩顺平-玩转 Oracle 第 21 讲:约束-内容介绍1.上节回顾2.维护数据的完整性3.管理索引4.管理权限和角色-期望目标1.掌握维护 oracle 数据完整性的技巧2.理解索引概念,会建立索引3.管理 oracle 的权限和角色-维护数据的完整性 -介绍介绍数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则。在 oracle 中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的性能,所以作为维护数据完整性的首选

2、。-维护数据的完整性 -使用约束约束用于确保数据库数据满足特定的商业规则 在 oracle 中,约束包括:not null,unique(唯一),primary key,foreign key,和 check 五种not null(非空)如果在列上定义了 not null,那么当插入数据时,必须为列提供数据。unique(唯一)当定义了唯一约束后,该列值是不能重复的,但是可以为 nullprimary key(主键)用于唯一的标识表行的数据,当定义主键约束后,该列不但不能重复而且不能为 null。需要说明的是:一张表最多只能有一个主键,但是可以有多个unique 约束。foreign key(

3、外键)用于定义主表和从表之间的关系,外键约束要定义在从表上,主表则必须具有主键约束或是 unique 约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为 nullcheck 约束用于强制行数据必须满足的条件,假定在 sal 列上定义了 check约束,并要求 sal 列值在 10002000 之间,如果不再 10002000 之间就会提示出错。-商店售货系统表设计案例-现有一个商店的数据库,记录客户及其购物情况,由下面三个表组成:商品 goods(商品号 goodsId,商品名 goodsName,单价 unitprice,商品类别 category,供应商 provider)

4、;客户 customer(客户号 customerId,姓名 name,住址 address,电邮 email,性别 sex,身份证 cardId);购买 purchase(客户号 customerId,商品号 goodsId,购买数量nums);请用 SQL 语言完成下列功能:(1)每个表的主外键(2)客户的姓名不能为空值(3)单价必须大于 0,购买数量必须在 1 到 30 之间(4)电邮不能够重复(5)客户的性别必须是 男 或者 女,默认是男*goodsId char(8) primary keygoodsId char(8) references goods(goodsId)name v

5、archar2(30) not nullunitprice number(10,2) check(unitprice0)email varchar2(50) uniquesex char(2) default 男 check(sex in(男,女)*-商店售货系统表设计案例(2)-如果在建表时忘记建立必要的约束,则可以在建表后使用 alter table 命令为表增加约束。但是要注意:增加 not null 约束时,需要使用 modify 选项,而增加其它四种约束使用 add 选项。(1)每个表的主外键(2)客户的姓名不能为空值,增加商品名也不能为空;(3)单价必须大于 0,购买数量必须在 1

6、 到 30 之间(4)电邮不能够重复,增加身份证也不能重复(5)客户的性别必须是 男 或者 女,默认是男(6)增加客户的住址只能是海淀 , 朝阳 , 东城 , 西城 ,通州 , 崇文alter table customer add constraint un_cardId unique(cardId);alter table customer add constraint ck_address check( address in(海淀,朝阳,东城,西城,崇文);这是因为如果在两张表存在主从关系,那么在删除主表的主键约束时,必须带上 cascade 选项,例如alter table 表名 dro

7、p 主键约束名 cascade显示约束信息1.显示约束信息通过查询数据字典视 user_constraints,可以显示当前用户所有的约束的信息。select constraint_name,constraint_type,status,validated from user_constraints where table_name=表名;2.显示约束列通过查询数据字典视图 user_cons_columns,可以显示约束列所对应的表列信息。select column_name,position from user_cons_columns where constraint_name=约束名;

8、3.当然也有更容易的方法,直接用 pl/sql developer 查看即可。-维护数据的完整性 -表级定义列级定义列级定义列级定义是在定义列的同时定义约束如在 department 表定义主键约束create table department(dept_id number(2) constraint pk_department primary key,name varhcar2(12),loc varchar2(20)表级定义表级定义是指在定义了所有列后,再定义约束,这里需要注意:not null 约束只能在列级上定义以在建立 employee2 表时定义主键约束和外键约束为例:create table emplyee2(emp_id number(4),name varchar2(15),dept_id number(2),constraint pk_employee primary key(emp_id),constraint fk_department foreign key (dept_id) references department(dept_id);

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

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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