Oracle数据库——约束的创建与管理

目录

非空约束(NOT NULL,NK)

唯一约束(UNIQUE,UK)

主键约束(PRIMARY,PK)

检查约束(CHECK,CK)

外键约束 (FOREING KEY,FK)

 添加约束

删除约束


设计完表后,必须为其设置约束,以保证表中数据尽可能合法有效的数据。
约束,是保证数据完整性的一种手段。


非空约束(NOT BULL,NK)

CREATE TABLE member(name VARCHAR(20) NOT NULL,age NUMBER);

 当插入数据中name为空时会出现错误提示

唯一约束(UNIQUE,UK)

CREATE TABLE member(name   VARCHAR(20),email VARCHAR(20) UNIQUE);

表中的email不可重复,但null不受限制

CREATE TABLE students(name VARCHAR2(20),email VARCHAR2(30),CONSTRAINT uk_email UNIQUE(email));

提示约束信息为”表用户名.UK_EMAIL

查看数据库下的约束信息

SELECT * FROM user_constraints;

查看约束对应的列

SELECT *  FROM user_cons_columns;

主键约束(PRIMARY,PK)

主键约束=唯一约束+非空约束

 CREATE TABLE memmber(mid NUMBER,name VARCHAR2(20) NOT NULL,CONSTRAINT pk_mid PRIMARY KEY(mid));

当存在多个主键(复合主键)时,只有当多列的主键完全相同时才会报错

但一般情况下复合主键用的较少

检查约束(CHECK,CK)

CREATE TABLE member(name VARCHAR2(20) NOT NULL,age NUMBER(3),CONSTRAINT ck_age CHECK (age BETWEEN 0 AND 100));

设置过多约束在更新数据时会验证影响程序性能

 

外键约束 (FOREING KEY,FK)

作用在两张数据表上的约束;

  1. 创建父表
    CREATE TABLE member(name VARCHAR2(20),age NUMBER,CONSTRAINT pk_name PRIMARY KEY(name));

     

  2. 创建子表
    CREATE TABLE book(title VARCHAR2(20),name VARCHAR2(20),CONSTRAINT fk_name FOREIGN KEY(name) REFERENCES member(name));

    外键关联:控制子表中某一列的内容与父表中数据范围相匹配;子表的数据范围受父表控制

 限制一

  • 若两表存在外键关系,则在删除子表前必先删除父表
  • 若两表互有外键关系,则需强制删除(尽量少使用此操作)
    DROP TABLE tab_name CASCADE CONSTRAIN;   

     

 限制二

  • 父表中作为子表关联的外键字段,必须设置为主键约束或者唯一约束

设置父表的数据被删除,子表对应的数据被自动删除,那么就需要设置数据的级联操作:

 两类:

  1. 数据的级联删除(ON DELETE CASCADE):
    CREATE TABLE book(
    title VARCHAR2(20),
    name VARCHAR2(20),
    CONSTRAINT fk_name FOREIGN KEY(name) REFERENCES member(name) ON DELETE CASCADE);

     

  2. 级联更新(ON DELETE SET NULL ):
    CREATE TABLE book1(
    title VARCHAR2(20),
    name VARCHAR2(20),
    CONSTRAINT fk_name FOREIGN KEY(name) REFERENCES member(name) ON DELETE SET NULL);

 添加约束

公式:ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(字段)[选项]; 

创建原表不添加主键约束

CREATE TABLE tab_1(name VARCHAR2(20),age NUMBER);

为name添加主键约束

ALTER TABLE tab_1 ADD CONSTRAINT pk_name PRIMARY KEY(name);

将age更改为非空约束

 ALTER TABLE tab_1 MODIFY(age NUMBER NOT NULL);

删除约束

公式:ALTER TABLE 表名称 DROP CONSTRAINT 约束名称;

删除上表中的主键约束

ALTER TABLE tab_1 DROP CONSTRAINT pk_name1;

删除非空约束

 ALTER TABLE tab_1 MODIFY(age NUMBER);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值