oracle中约束!

阅读更多 1. oracle约束 1.1 主键约束 primary key用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。 需要说明的是:一张表最多只能有一个主键,...
阅读更多
1. oracle约束

1.1 主键约束
primary key用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。
需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。

1) 无命名的主键约束
SQL> create table studentclass (
  id int primary key not null,
  classname varchar2(20)
);
SQL> select table_name, index_name from user_indexes where table_name='STUDENTCLASS';

2) 有命名的主键约束
SQL> create table studentclass (
  id int primary,
  classname varchar2(20),
  constraint studentclass_pk_id primary key(id)
);
SQL> select table_name, index_name from user_indexes where table_name='STUDENTCLASS';

3) 向表中添加主键约束
SQL> create table studentclass (
  id int primary key not null,
  classname varchar2(20)
);
SQL> alter table studentclass add constraint studentclass_pk_id primary key(object_id);
SQL> select table_name, index_name from user_indexes where table_name='STUDENTCLASS';

4) 查询主键状态
SQL> select a.table_name, a.index_name, b.constraint_name, b.constraint_type, b.status from user_indexes a, user_constraints b where b.table_name='STUDENTCLASS' and a.table_name = b.table_name;

5) 禁用/启用主键
禁用主键
SQL> alter table studentclass disable primary key;
启用主键
SQL> alter table studentclass enable primary key;

6) 重命名主键
SQL> alter table studentclass rename constraint studentclass_pk_id to studentclass_new_pk_id;

7) 查询主键名
SQL> select owner, constraint_name, table_name, column_name from user_cons_columns where table_name = 'STUDENTCLASS';

8) 删除主键约束
SQL> alter table jack drop constraint STUDENTCLASS_PK_ID;

9) 当索引创建好以后再添加主键的效果


1.2 外键约束约束
foreign key用于定义主表和从表之间的关系。外键约束要定义在从表上,主表则必须具有主键约束或是unique 约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null。

外键约束分为三种:
1. 普通外键约束(如果存在子表引用父表主键,则无法删除父表记录)
2. 级联外键约束(可删除存在引用的父表记录,而且同时把所有有引用的子表记录也删除)
3. 置空外键约束(可删除存在引用的父表记录,同时将子表中引用该父表主键的外键字段自动设为null,但该字段应允许空值)

1. alter table t_invoice_detail add constraint fk_invoice_id foreign key(invoice_id) references t_invoice(id);
2. alter table t_invoice_detail add constraint fk_invoice_id foreign key(invoice_id) references t_invoice(id) on delete cascade;
3. alter table t_invoice_detail add constraint fk_invoice_id foreign key(invoice_id) references t_invoice(id) on delete set null;

1) 创建外键约束
SQL> create table studentclass (
  id int primary key not null,
  classname varchar2(20)
);
SQL> 



3) 唯一性约束
当定义了unique唯一约束后,该列值是不能重复的,但是可以为null。

4) 检查约束
check用于强制行数据必须满足的条件。

5) 默认值约束
default设置字段未赋值时的默认值。

6) 非空约束
如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
分享到:
评论

原文出处:https://andrew7676.iteye.com/blog/2435425

  • 发表于 2018-12-25 16:00
  • 阅读 ( 224 )
  • 分类:网络文章

条评论

请先 登录 后评论
不写代码的码农
小编

篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除