(五)约束

本文详细介绍了数据库中的五种约束:非空约束、主键约束、外键约束、唯一约束及检查约束,并提供了创建、修改和删除这些约束的具体SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束

约束的作用:
    定义规则
    确保数据的完整性

五种约束:

1.非空约束

--在创建表的时候设置非空约束
CREATE TABLE table_name
(
  column_name datatype NOT NULL , ....
) ;


--在修改表的时候添加非空约束(要是没有任何数据的情况下)
ALTER TABLE table_name MODIFY column_name datatype NOT NULL ;


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

2.主键约束

确保表中的每一行数据的唯一行(唯一 , 非空)
一张表只能有一个主键约束
主键约束可以由多个字段组成(联合主键约束或复合主键)
2.1在创建表的时候设置主键约束
--方式一:单字段主键约束
 CREATE TABLE table_name
 (
      column_name datatype PRIMARY KEY , ...
 );


--方式二:多字段主键约束
 CREATE TABLE table_name
 (
      column_name1 datatype  ,
      column_name2 datatype ,
      ...,
      CONSTRAINT constraint_name PRIMARY KEY(column_name1, ...)
 );



--例如:
create table user_info
(
    id number(6,0) ,
    name varchar2(20) ,
    password  varchar2(20) not null ,
    email varchar2(30) not null,
    constraint pk_id_name primary key(id, name)
);

这里写图片描述

--查找表的约束名:
SELECT constraint_name FROM user_constraints WHERE table_name = 'TABLE_NAME' ;

--例如
select constraint_name from user_constraints where table_name='USER_INFO' ;

这里写图片描述


2.2在修改表时添加主键约束
--修改时添加主键约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIAMRY KEY(column_name1, ...) ;

--例如
alter table user_info1 add constraint pk_id_name primary key(id,name);

这里写图片描述


2.3更改约束名
--更改约束名
ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name ;


--例如:
alter table user_info1 rename constraint pk_id_name to new_id_name ;

这里写图片描述


2.4禁用和启用主键约束:
--禁止或启用主键约束
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name ;


--例如:
alter table user_info1disable constraint new_pk_id_name ;

这里写图片描述
这里写图片描述
这里写图片描述


2.5删除主键约束
 ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
-- 或
 ALTER TABLE table_name DROP PRIMARY KEY[CASCADE];


-- 例如:
 alter table user_info1 drop constraint new_pk_id_name ;

这里写图片描述


3.外键约束

3.1在创建表的时候添加外键约束
table_name1为主表 , table_name2为从表
主从表中相应的字段的类型必须一致, 从表的外键必须是主表的主键
外键字段的值必须来之主表 ,或者为null
CREATE TABLE table_name1
(
    column_name1 datatype PRIAMRY KEY ,
    ....
);


--方式一:
CREATE TABLE table_name2
(
    column_name1 datetype PRIAMRY key ,
    column_name2 datatype REFERENCES table_name1(column_name1),
    ...
);


--例如:
create table user_info
(
    id number(6,0) primary key,
    name varchar2(20) not null,
    password varchar2(20) not null,
    email varchar2(30)
);
create table card
(
    id number(8,0) primary key,
    money number(8,2) not null ,
    user_id number(6,0) references user_info(id)
);

这里写图片描述

--方式二:
CREATE TABLE table_name2
 (

    column_name1 datetype PRIAMRY key ,
    column_name2 datatype ,
    ....,
    CONSTRAINT constraint_name foreign key(column_name) REFERENCES table_name1(column_name) [ON DELETE CASCADE] 

 );


--例如
create table card
(
    id number(8,0) primary key,
    money number(8,2) not null ,
    user_id number(6,0) ,
    constraint FK_USER_ID foreign key(user_id) references user_info(id) on delete cascade
);

这里写图片描述


3.2在修改表的时候添加外键约束
ALTER TABLE table_name1 ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name2(column_name) ;

--例如
alter table card add constraint fk_user_id foreign key(user_id) references user_info(id) ;

这里写图片描述


3.3在修改表的时候删除外键约束(和删除主键一样)
--禁用外键约束:
ALTER TABLE table_name DISABLE|ENADBLE CONSTRAINT constraint_name ;
--删除外键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;


--例如
alter table card drop constraint fk_user_id ;

这里写图片描述


4.唯一约束

 保证其唯一性
 唯一约束与主键约束的区别:
      主键约束要保证字段为非空的
      唯一约束中允许有一个空值
      主键在一张表中只能有一个
      唯一约束一张表中可以有多个
4.1在创建表的时候设置唯一约束

--方式一:
 CREATE TABLE table_name
 (
      column_name datatype UNIQUE,
      ....
 );


--方式二:

 CREATE TABLE table_name
 (
      column_name datatype ,
      .... ,
      CONSTRAINT constraint_name UNIQUE(column_name)
 );

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

4.3在修改表的时候删除唯一约束
--禁用唯一约束:
ALTER TABLE table_name DISABLE|ENADBLE CONSTRAINT constraint_name ;

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

5.检查约束

5.1在创建表的时候设置检查约束
--方式一:
CREATE TABLE table_name
 (
      column_name datatype CHECK(expressions),
      ....
 );


--方式二:
 CREATE TABLE table_name
 (
      column_name datatype ,
      .... ,
      CONSTRAINT constraint_name CHECK(expressions)
 );

5.2在修改表的时候添加唯一约束
ALTER TABLE table_name ADD  CONSTRAINT constraint_name CHECK(expressions) ;    

5.3在修改表的时候删除唯一约束
--禁用唯一约束:
ALTER TABLE table_name DISABLE|ENADBLE CONSTRAINT constraint_name ;


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

总结

    除去not null约束外,其他四个约束primary key ,foreign key, unique, check在添加约束是有些不同,主要是关键字的不同.
    在删除约束禁用约束上都是一样的格式.
--禁用primary key ,foreign key, unique, check约束:
ALTER TABLE table_name DISABLE|ENADBLE CONSTRAINT constraint_name ;


--删除primary key ,foreign key, unique, check约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值