SQL的五大约束

简介: 当我们在创建数据库的表和字段时,我们总是说要声明约束,那约束究竟是什么呢?那么又如何在创建表时或者已经创建好了表之后通过添加删除来怎样进行约束呢?听我来说说吧!

当我们在创建数据库的表和字段时,我们总是说要声明约束,那约束究竟是什么呢?那么又如何在创建表时或者已经创建好了表之后通过添加删除来怎样进行约束呢?听我来说说吧!


【前言】


分为了五个部分:


  • NOT NULL:指定某列不能存储NULL(未知,但不是空)值,强制要求字段必须要包含值
  • UNIQUE:唯一约束,防止一个特定的列中两个记录有一致的值
  • CHECK:检查约束,保证列中的值符合指定的条件。用于限制列中的值的范围
  • PRIMARY KEY:主键约束,确保某列必须要有唯一标识符
  • FOREIGN KEY:外键约束,主键和外键创建了不同表中数据的相互关系


分为了两种情况:


在创建表时规定(CREATE TABLE table_name)


在创建表之后规定(ALTER TABLE table_name)


【正文】


一、NOT NULL


在默认情况下,表接受NULL 值


约束强制列不接受NULL 值


<**举例**>


CREATE TABLE table_name语句


现要创建一个学生信息表,对表中的列进行约束


CREATE TABLE Student
(
    SId int NOT NULL,
    SAge int NOT NULL
);


ALTER TABLE table_name语句


添加NOT NULL约束


ALTER TABLE Student
ADD COLUMN Student int NOT NULL;
在一个创建好的学生信息表中添加NOT NULL约束


二、UNIQUE


唯一约束


防止一个特定的列中两个记录有一致的值


<**举例**>

CREATE TABLE table_name语句


现要创建一个学生信息表,对SName列进行UNIQUE约束


CREATE TABLE Student
    SId int,
    SName varchar(50)
    SAge int UNIQUE
);


当要对多个列进行约束时:对SId列和SName列进行UNIQUE约束


CREATE TABLE Student
    SId int,
    SName varchar(50)
    SAge int UNIQUE,
    CONSTRAINT uc_PersonId UNIQUE (SId, SName)
);


ALTER TABLE table_name语句


添加UNIQUE约束:


ALTER TABLE Student
ADD UNIQUE (SId)
对SId列添加UNIQUE约束


ALTER TABLE Student
ADD CONSTRAINT uc_PersonID UNIQUE (SId, SName)
当要对多个列进行约束时:对SId列和SName列进行UNIQUE约束


删除UNIQUE约束:


ALTER TABLE Student
DROP CONSTRATIN uc_PersonId


注:在对ALTER TABLE table_name语句进行UNIQUE约束时,会发现多了一个uc_PersonId,这个是什么呢?


uc_PersonId是一个联合约束名,就是UNIQUE CONSTRAINT的缩写(意思是唯一约束),就是对表中的SId列和SName列进行强制约束。


三、CHECK


检查约束


保证列中的值符合指定的条件


用于限制列中的值的范围


<**举例**>


CREATE TABLE table_name语句


现要建一个学生信息表,对表中的SAge列进行范围约束


CREATE TABLE Student
    SId int NOT NULL,
    SName varchar(50) NOT NULL,
    SAge int CHECK(SAge >= 0)
);


从语句中我们可以看出,对SAge这个列进行了一个CHECK约束,强制要求它的范围必须大于等于0,按照常识,我们的年龄不可能比0还小,当它超出了所约束的范围时,系统就会报错


当要对多个列进行约束时:对SId列和SName列进行CHECK约束


CREATE TABLE Student
    SId int NOT NULL,
    SName varchar(50),
    SAge int NOT NULL,
    CONSTRAINT chk_PersonId (SId >0 AND SAge >=0)


ALTER TABLE table_name语句


添加约束:


ALTER TABLE Student
ADD CHECK (SId>0)


ALTER TABLE Student
ADD CONSTRAINT chk_PersonId CHECK (SId >0 AND SAge >=0)
对多行表进行约束
对已创建好的Student表中的SId列和SAge列进行约束


删除约束:


ALTER TABLE Student
DROP CONSTRAINT chk_PersonId


四、PRIMARY KEY


主键约束


在所有约束中,最重要的,也最常用。要向符合第一范式,则每个表中都必须有一个主键(提供表之间的链接)


是UNIQUE约束和NOT NULL约束的组合


确保某列必须要有唯一标识符


主键约束不可重复,不可NULL值


<**举例**>

CREATE TABLE table_name 语句


现要创建一个学生信息表,对SId列进行主键PRIMARY KEY约束


CREATE TABLE Student
(
    SId int NOT NULL PRIMARY KEY,
    SName varchar(50) NOT NULL,
    SAge int NOT NULL
);


ALTER TABLE table_name语句


添加约束


ALTER TABLE Student
ADD PRIMARY KEY (SId)
对SId列进行PRIMARY KEY约束


ALTER TABLE Student
ADD CONSTRAINT uc_PersonId PRIMARY KEY (SId, SName)
对SId列和SName列进行联合主键约束


删除PRIMARY KEY约束


ALTER TABLE Student
DROP CONSTRAINT uc_PersonId 


到这里我们就会有一个疑问了,明明一个表中只能有一个字段为主键,为什么这里还要联合多列为主键呢?其实我当时也有过这样的疑惑。请点击mysql的联合主键与复合主键区别 - 简书


当我们约束PRIMARY KEY时,还需要特别注意一点:当对某列或者多个列进行PRIMARY KEY约束时,一定要保证你所约束的字段是NOT NULL的,如果不是,系统就会报错,无法进行约束。电脑前的小伙伴可以试试:当你所约束的字段不是NOT NULL时会时什么样的,自己动动手指试试吧!我当时就上了这个当,你们一定要谨记哈


五、FOREIGN KEY


外键约束


主键和外键创建了不同表中数据的相互关系


可能对这段抽象的文字有点疑惑。我来举个例子来看看吧


现有分别有两张学生信息表和学生所喜爱的电影信息表


Student

SIde SAge SName
1 17 春花
2 19 夏雪
3 15 秋月


Films

FilmId Rating SId
1 2 1
2 4 3
3 1 2


从图中我们会发现:Student表中的SId列是Student表的PRIMARY KEY


                                Films表中的SIde列是Films表中的FOREIGN KEY


                                Student表中的SId列指向了Films表中的SId


Student表和Films表中的主键和外键使两个表创建了连接关系


举例


CREATE TABLE table_name语句


现有一个Student表,创建一个Films表,对SIde列进行外键约束


CREATE TABLE Films
    FilmId int NOT NULL PRIMARY KEY,
    Rating int NOT NULL,
    SId int FOREIGN KEY REFERENCES Student(SId)
);


前提:必须有另一个已经建好的要联系的表


ALTER TABLE table_name语句


添加主键


ALTER TABLE Films
ADD CONSTRAINT fk_StuFils FOREIGN KEY (SId)
REFERENCES Student (SId)


删除主键


ALTER TABLE Films
DROP CONSTRAINT fk_StuFils


相关文章
|
1月前
|
SQL 数据库
如何应用SQL约束条件?
【10月更文挑战第28天】如何应用SQL约束条件?
60 11
|
1月前
|
SQL 存储 Oracle
sql约束条件
【10月更文挑战第28天】sql约束条件
46 8
|
2月前
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
52 1
|
2月前
|
数据库
SQL_语句常见的操作创建,使用,删除表和表级约束
SQL_语句常见的操作创建,使用,删除表和表级约束
37 0
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
60 5
|
4月前
|
SQL 数据采集 关系型数据库
7、SQL约束
7、SQL约束
56 0
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第19天】CREATE TABLE 时的 SQL FOREIGN KEY 约束
42 8
|
5月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】ALTER TABLE 时的 SQL PRIMARY KEY 约束。
51 3
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL PRIMARY KEY 约束。
45 2
|
5月前
|
SQL Oracle 关系型数据库
SQL UNIQUE 约束
【7月更文挑战第18天】SQL UNIQUE 约束。
55 6