为了账号安全,请及时绑定邮箱和手机立即绑定

oracle 注释和约束

标签:
Oracle

注释

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』


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消