SQL约束
2022/5/22 10:52:49
本文主要是介绍SQL约束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 非空约束 NOT NULL
1.1 约束
在 SQL 中,约束是规定表中的数据规则。若存在违反约束的行为,行为就会被阻止。它能帮助管理员更好地管理数据库,并且确保数据库中数据的正确性和有效性。例如在后台的数据库设计中对要输入的数据进行核查或判断,再决定是否写入数据库,这都是约束的应用。
1.2 NOT NULL
NOT NULL 约束强制列不接受 NULL 值,强制字段始终包含值,这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
先通过一个例子感受一下 NOT NULL 的作用
下面的 SQL 强制 ID
列、 LastName
列以及 FirstName
列不接受 NULL 值:
CREATE TABLE `Persons` ( `ID` int NOT NULL, `LastName` varchar(255) NOT NULL, `FirstName` varchar(255) NOT NULL, `Age` int );
示例代码
在一个已创建的表的 Age
字段中添加 NOT NULL 约束如下所示:
ALTER TABLE `Persons` MODIFY `Age` int NOT NULL;
在一个已创建的表的 Age
字段中删除 NOT NULL 约束如下所示:
ALTER TABLE `Persons` MODIFY `Age` int NULL;
注意
不要把 NULL 值与空串相混淆。NULL 值是没有值,
它不是空串。如果指定' '(两个单引号,其间没有字符),这
在 NOT NULL 列中是允许的。空串是一个有效的值,它不是无
值。NULL 值用关键字 NULL 而不是空串指定。
2.唯一约束 UNIQUE
在前面的学习中我们知道了 NOT NULL 约束是强制列不接受 NULL 值,在有些情况下,我们不希望一个表中出现重复的记录,这时候我们需要用到 UNIQUE 约束来解决这些问题。下面我们来介绍一下。
- UNIQUE 约束唯一标识数据库表中的每条记录
- UNIQUE 和 主键约束均为列或列集合提供了唯一性的保证
- 主键约束会自动定义一个 UNIQUE 约束,或者说主键约束是一种特殊的 UNIQUE 约束。但是二者有明显的区别:每个表可以有多个 UNIQUE 约束,但只能有一个主键约束。
2.1 CREATE TABLE 时的 UNIQUE 约束
下面的 SQL 在 Persons
表创建时在 P_Id
列上创建 UNIQUE 约束:
MySQL
CREATE TABLE `Persons` ( `P_Id` int NOT NULL, `LastName` varchar(255) NOT NULL, `FirstName` varchar(255), `Address` varchar(255), `City` varchar(255), UNIQUE (`P_Id`) )
SQL Server / Oracle / MS Access
CREATE TABLE `Persons` ( `P_Id` int NOT NULL UNIQUE, `LastName` varchar(255) NOT NULL, `FirstName` varchar(255), `Address` varchar(255), `City` varchar(255) )
命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束:
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE `Persons` ( `P_Id` int NOT NULL, `LastName` varchar(255) NOT NULL, `FirstName` varchar(255), `Address` varchar(255), `City` varchar(255), CONSTRAINT uc_PersonID UNIQUE (`P_Id`,`LastName`) )
2.2 ALTER TABLE 时的 UNIQUE 约束
当表已被创建时,在 P_Id
列创建 UNIQUE 约束:
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE `Persons` ADD UNIQUE(`P_Id`)
当表已被创建时,需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束:
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE `Persons` ADD CONSTRAINT uc_PersonID UNIQUE (`P_Id`,`LastName`)
2.3 撤销 UNIQUE 约束
如需撤销 UNIQUE 约束 :
MySQL
ALTER TABLE `Persons` DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access
ALTER TABLE `Persons` DROP CONSTRAINT uc_PersonID
3. 主键约束 PRIMARY KEY
3.1 初识主键约束
在前面的学习中我们学会了 NOT NULL 约束和
UNIQUE 约束的使用,今天带大家来认识主键约束,也叫 PRIMARY KEY 约束。
PRIMARY KEY 约束唯一标识数据库表中的每条记录 ,简单的说,PRIMARY KEY = UNIQUE + NOT NULL ,从技术的角度来看,PRIMARY KEY 和 UNIQUE 有很多相似之处。但还是有以下区别:
- NOT NULL UNIQUE 可以将表的一列或多列定义为唯一性属性,而 PRIMARY KEY 设为多列时,仅能保证多列之和是唯一的,具体到某一列可能会重复。
- PRIMARY KEY 可以与外键配合,从而形成主从表的关系,而 NOT NULL UNIQUE 则做不到这一点
如:
表一:用户
id
(主键),用户名表二: 银行卡号
id
(主键),用户id
(外键)则表一为主表,表二为从表。
- 更大的区别在逻辑设计上。 PRIMARY KEY 一般在逻辑设计中用作记录标识,这也是设置 PRIMARY KEY 的本来用意,而 UNIQUE 只是为了保证域/域组的唯一性。
3.2 CREATE TABLE 时 添加 PRIMARY KEY 约束
这篇关于SQL约束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南