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,在商品表和购买表中,可以使商品表为主表,购买表为从表,商品号为外键列。

image 第一张表的创建

image 第二张表的构建

image 第三张表的创建

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

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

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

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

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

案例:

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

1 增加商品名也不能为空

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

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

image 需求一

image 需求二

 

 

 

 

 

image 需求三

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

image

语法为   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的主键

image

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

 

表级定义和列级定义

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

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

例如

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

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



本文转自 郑伟  51CTO博客,原文链接:http://blog.51cto.com/zhengweiit/515108

相关文章
|
1月前
Oracle-约束小结
Oracle-约束小结
12 0
|
7月前
|
Oracle 关系型数据库
常用oracle语句-查看表注释表的字段以及注释
常用oracle语句-查看表注释表的字段以及注释
|
10月前
|
SQL 存储 Oracle
Oracle的视图,索引,约束,事务,数据库范式
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
64 0
Oracle的视图,索引,约束,事务,数据库范式
|
Oracle 关系型数据库 数据处理
oracle学习67-oracle之数据处理之约束1
oracle学习67-oracle之数据处理之约束1
58 0
oracle学习67-oracle之数据处理之约束1
|
Oracle 关系型数据库 数据库
Oracle用户操作、数据类型、表格修改、约束设置详解
Oracle用户操作、数据类型、表格修改、约束设置相关操作以及使用案例
|
Oracle 关系型数据库
oracle添加唯一约束
oracle添加唯一约束
|
Oracle 关系型数据库 索引
oracle查询表 索引、唯一约束、字段
oracle查询表 索引、唯一约束、字段
|
Oracle 关系型数据库 数据库
【Oracle】Oracle如何查看所有表和字段以及表注释和字段注释?其实很简单!!
小伙伴们按照我写的文章顺利安装好Oracle数据库后,又在微信上问我:我想查看Oracle数据库中所有表和字段以及表注释和字段的注释,我该怎么操作呢?看着小伙伴们这么高的学习热情,这些问题我都安排上了!这不,解决方案来了!
244 0
|
SQL Oracle 关系型数据库
oracle 表的创建与管理 约束
oracle 表的创建与管理 约束在 Oracle 之中数据表就被称为数据库对象,而对象的操作语法一共有三种:· 创建对象:CREATE 对象类型 对象名称 [选项];· 删除对象:DROP 对象类型 对象名称 [选项];· 修改对象:ALTER 对象类型 对象名称 [选项]。
1347 0
热门文章
最新文章
相关实验场景
更多
推荐文章
更多