Oracle基础-约束

约束

概念:设置输入值需要满足的要求
定义规则:设置字段的规则
确保完整性:数据的精确性和可靠性,防止错误或者无效的信息

非空约束

创建表时设置非空约束
CREATE TABLE table_name(
column_name datatype NOT NULL,xxx
);

修改表时添加非空约束
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
这样修改时需要确保表中数据现处于非空;否则会报错。

修改表时去除非空约束
ALTER TABLE table_name MODIFY column_name datatype NULL;

主键约束

作用:确保表当中每一行数据的唯一性
特点:非空、唯一
一张表只能设计一个主键约束
主键约束可以由多个字段构成(复合主键或联合主键
约束可在user_constraint表中查询。

在创建表时设置主键约束
第一种方法:(列级)
CREATE TABLE table_name (
column_name datatype PRIMARY KEY,…
);

第二种方法:(表级)
CONSTRAINT constraint _name PRIMARY KEY(column1,column2,…);

例子:CREATE TABLE userinfo_p1(
id number(6,0),
username varchar2(60),
userpwd varchar2(20),
CONSTRAINT pk_id PRIMARY KEY(id,username)
);

在修改表时添加主键约束
ALTER TABLE table_name ADD CONTRAINT constraint_name PRIMARY KEY(column_name1,…);

操作主键约束
更改主键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;

更改主键约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。

删除主键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

ALTER TABLE table_name DROP PRIMARY KEY[CASCADE];

外键约束

涉及两个表之间的约束

在创建表时设置外键约束
方法一:(列级)
CREATE TABLE table1(
column_name datatype PEFERENCES table2(column_name),

);
其中table1为从表,table2为主表

  • 设置外键约束时,主表的字段必须是主键
  • 主从表相应的字段必须是同一个数据类型
  • 从表中外键字段的值必须来自主表中相应字段的值,或者为null值

方法二:(表级)
CONSTRAINT constraint_name FOREIGN KEY(column_name1) REFERENCES table_name(column_name2)[ON DELETE CASCADE]
constraint_name:外键约束的名字
column_name1:从表字段名
column_name2:主表字段名
ON DELETE CASCADE:级联删除。当主表数据被删除时,相对应的从表数据也会被删除。

例子:
CREATE TABLE userinfo_f2(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(20),
constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid)
);

在修改表时添加外键约束
ALTER TABLE table_name1 ADD CONTRAINT constraint_name FOREIGN KEY(column_name1) REFERENCES table_name2(column_name2) [ON DELETE CASCADE];

例子:
ALTER TABLE userinfo_f4 ADD CONTRAINT fk_typeid_alter FOREIGN KEY(typeid_new) REFERENCES typeinfo(typeid);

操作外键约束
更改外键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;

更改外键约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。

删除外键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

唯一约束

作用:保证字段值的唯一性
唯一约束和主键约束的区别:

  • 主键约束字段值必须是非空的;唯一约束允许有一个空值
  • 主键在每张表中只能有一个;唯一约束在每张表中能有多个

在创建表时设置唯一约束
方法一:(列级)
CREATE TABLE table_name(
column_name datatype UNIQUE,…
);
方法二:(表级)
CONSTRAINT constraint_name UNIQUE(column_name)

在修改表时添加唯一约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name);

操作唯一约束
更改唯一约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。

删除唯一约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

检查约束

在插入数据时检查数据的规范;当数据不合法时会报错

在创建表时设置检查约束
方法一:(列级)
CREATE TABLE table_name(
column_name datatype CHECK(expressions),…
);
方法二:(表级)
CONSTRAINT constraint_name CHECK(expressions)

在修改表时添加检查约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);

操作检查约束
更改检查约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。

删除检查约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

小结

主键约束:每张表只能有一个,可以由多个字段构成
外键约束:涉及两个表之间的关系

在创建表时设置约束,非空约束只能在列级设置,不能在表级设置;且无约束名称。

在删除约束时,
非空约束:ALTER TABLE table_name MODIFY column_name datatype NULL;
其他约束:ALTER TABLE table_name DROP CONSTRAINT constraint_name;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值