oracle数据库启动约束,oracle数据库约束 转帖

oracle数据库约束

约束用于确保数据库数满足业务规则。

约束包括:NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY以及CHECK等5种类型。

建立主键约束和唯一约束时,Oralce会基于约束列自动建立唯一索引;主键约束不允许为NULL,唯一约束允许为NULL。

一张表只能建立一个主键约束。

建表约束:NOT NULL只能在列级定义;其它4种既可以在列级定义,也可以在表级定义。复合主键约束只能在表级定义。

维护约束:增加NOT NULL约束时必须使用MODIFY子句,而增加其它约束时需要使用ADD子句。

第一, 定义约束

---------------------------------------------

语法:

CREATE TABLE [SCHEMA.]table_name(

column_name datatype [DEFAULT expr] [column_constraint],

...

[table_constraint][, ...]

);

例子:

CREATE TABLE tt_user_info

(

ID VARCHAR2(20 BYTE),

NAME VARCHAR2(20

BYTE) NOT NULL,

category_id VARCHAR2(20 BYTE) REFERENCES tb_out_service(serviceid),

remark VARCHAR2(1000)

);

ALTER TABLE tt_user_info ADD (

CHECK ( LENGTH(NAME)>2),

PRIMARY KEY (ID),

UNIQUE (NAME)

);

说明:

1. NOT NULL,非空约束

not null

2. UNIQUE,唯一约束

UNIQUE (COL_NAME)

3. PRIMARY KEY,主键约束

primary key (col_name1 [, col_name2])

4. FOREIGN KEY,外键约束

它有三种类型:

references primary_table(primary_col)

on delete cascade

on delete set null

5. CHECK,检查约束

check (money > 1000)

第二, 维护约束

----------------------------------------

1. 增加约束

NOT NULL使用ALTER MODIFY子句,其它的使用ALTER ADD子句

-------------------------------

CREATE TABLE tt_user(NAME VARCHAR2(20));

ALTER TABLE tt_user MODIFY user_name NOT NULL;

ALTER TABLE tt_user ADD CONSTRAINT constraint_name

UNIQUE(NAME);

ALTER TABLE tt_user ADD CONSTRAINT constraint_name PRIMARY

KEY(NAME);

ALTER TABLE tt_user ADD parentid VARCHAR2(20)

CONSTRAINT

constraint_name

REFERENCES tb_out_service(serviceid);

2. 修改约束名

ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO

new_constraint_name

3. 删除约束

ALTER TABLE table_name DROP CONSTRAINT constraint_name

4. 禁止约束

ALTER TABLE table_name DISABLE CONSTRAINT

constraint_name [CASCADE];

5.激动约束

ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

第三. 显示约束信息

所有约束信息

SELECT *

FROM user_constraints

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值