继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

oracle 注释和约束

PIPIONE
关注TA
已关注
手记 1096
粉丝 147
获赞 702

注释

oracle中可以对表,行中添加注释

使用comment on 语句

例如  对表添加注释

comment on table emp is ‘公司雇员表’   〉〉对EMP表添加注释

对行添加注释

comment on column emp.deptno is ‘部门编号’

查询注释

根据数据字典查询

select * from user_tab_comments where tablename=’emp’; 数据字典user_tab_comments  表注释

select * from user_col_comments where tablename=’emp’; 数据字典user_col_comments   行注释

 

约束

约束来源于数据完整性

数据完整性是用于确保数据遵从一定的商业和逻辑规则

那么确保数据完整性的方式有,约束,触发器,应用程序(过程,函数)三种方法。

约束就是其中之一,并且是三种方法中最易于维护的,并且有着很好的性能,是确保数据完整性方法中的首选。

 

约束的作用

约束用于确保数据库数据满足特定的商业规则

oracle数据库中包括5种约束 

not null;    非空   当为该列插入数据时,不能为空值

unique;   唯一          该列数据的值必须是唯一的,但是可以为空

primary key; 主键     不能重复,不能为空   not null+unique  并且每一张表中只能有一个主键,可以有多列成为一个主键,但不能有多个主键。

foreign key; 外键     用于定义主表和从表的关联,定义在从表上。定义时,要求主表的列必须是主键或者有unique约束。并且,定义外键约束后,从表的列的数据必须与主表的相同,或者为空。

check; 检查  看插入的数据是否符合设置的检查约束,如果不符合,则报错。

案例  

商店售货系统表设计案例

现有一个商店的数据库,记录客户及购物情况,由下面三个表组成

商品goods表(商品号goodsid,商品名goodsname,单价unitprice,商品类别category,供应商provider);

客户customer表(客户号customerid,姓名name,住址address,电子邮件email,性别sex,身份证cardid);

购买purchase表(客户号customerid,商品号goodsid,购买数量nums);

要求:

每个表有主键,外键

客户姓名不能为空

单价必须大于0,购买数量必须在1到30之间

电子邮件不能重复

客户的性别必须是 男或者女,默认为男。

(案例取自韩顺平老师玩转oracle课程中)

分析:

一般以编号做为表的主键,商品号和客户号一般为固定长度,使用类型为char,在商品表和购买表中,可以使商品表为主表,购买表为从表,商品号为外键列。

p_w_picpath 第一张表的创建

p_w_picpath 第二张表的构建

p_w_picpath 第三张表的创建

注意:  外键格式为 constraint 约束名 foreign key(列) references 表名(列)  如果创建只是针对一列创建外键,则省去foreign key ,直接输入references即可。

商品编号一般为固定长度,则使用char类型,而不是用varchar2类型。

创建外键约束时,可以在后面继续输入 on delete cascade 将两列关联起来,当删除主表内容时,从表内容也会删除。

如果在创建的时候出现了忘记设定一些约束,也可以在添加

注意:增加 Not null约束,需要使用modify,而增加其他四种约束,使用add选项。

案例:

在上述案例中添加新的要求

1 增加商品名也不能为空

2. 增加身份证也不能重复

3. 增加客户的住址只能是‘海淀’,‘朝阳’,‘东城’,‘西城’,‘通州’,‘崇文’。

p_w_picpath 需求一

p_w_picpath 需求二

 

 

 

 

 

p_w_picpath 需求三

如果不但需要插入新的约束,还要插入新的列

p_w_picpath

语法为   alter table 表名 add 新列名 类型 约束

使约束失效

alter table 表名 disable constraint 约束名

使约束生效

alter table 表名 enable constraint 约束名

查看约束

数据字典  user_constraints  显示约束列  user_cons_columns

删除约束

alter table 表名 drop constraint 约束名称

注意:如果删除主键,同时这是一张作为外键的主表的主键,那么删除需要在约束名后加cascade;

alter table 表名 drop primary key cascade;

例,删除表goods的主键

p_w_picpath

注意:在创建表设定约束时,没有设定约束的名称,系统会自动设定其约束的名称,我们可以根据查看数据字典来获取相应约束的名称,用来删除约束使用。

 

表级定义和列级定义

列级定义  在创建列的同时创建约束

表级定义  在定义完列之后,再定义约束。但Not Null  只能在列级上定义

例如

列级定义为  create table 表名(列 类型 约束);

而表级定义为 create table 表名(列 类型) constraint 约束名 约束

©著作权归作者所有:来自51CTO博客作者郑伟的原创作品,如需转载,请注明出处,否则将追究法律责任

oracle职场字典『ORACLE』


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP