约束用于规定表中的数据规则,约束用于规定表中的数据规则。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
在 SQL 中,我们有如下约束:
• NOT NULL - 指示某列不能存储 NULL 值。
• UNIQUE - 保证某列的每行必须有唯一的值。
• PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
• FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
• CHECK - 保证列中的值符合指定的条件。
• DEFAULT - 规定没有给列赋值时的默认值。
- 不为空(NOT NULL)
约束强制列不接受 NULL 值 - 唯一约束(UNIQUE)
UNIQUE 约束唯一标识数据库表中的每条记录,UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,创建表时指定:
CREATE TABLE Student(ID int primary key not null,Name NVARCHAR2(20) UNIQUE,Age int,City NVARCHAR2(20),MajorID int);
但是这样UNIQUE约束名是按规则默认的,我们无法确认,不便于后续修改。需在创建时指定约束名称,当然可以同时多多列建立唯一约束。建议创建表后添加约束。
(1)创建学生表时,指定ID和Name唯一约束
CREATE TABLE Student(ID int not null,Name VARCHAR2(50),Age int,CityVARCHAR2(50),MajorID int,CONSTRAINT UK_Students_ID_And_Name UNIQUE (ID,Name));
(2)为学生的姓名添加唯一约束
ALTER TABLE Student ADD CONSTRAINT UK_Students_Name UNIQUE(Name);
(3)删除学生姓名唯一约束
ALTER TABLE Student DROP CONSTRAINT UK_Students_Name
- 主键(PRIMARY KEY)
PRIMARY KEY 约束唯一标识数据库表中的每条记录。规则:1)主键必须包含唯一的值;2)主键列不能包含 NULL 值每个表都应该有一个主键;3)并且每个表只能有一个主键;其使用方法与UNIQUE一样,这里只说个简单例子:
(1)指定学生ID为主键
ALTER TABLE Student ADD CONSTRAINT PK_Students_ID PRIMARY KEY(ID)
(2)删除学生ID主键
ALTER TABLE Student DROP CONSTRAINT PK_Students_ID
- 外键(FOREIGN KEY)
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。如:学生信息表中的MajorID即是专业信息表Majors的外键。
(1) 学生信息表中的MajorID添加外键约束
ALTER TABLE Student ADD CONSTRAINT FK_Students_MajorID FOREIGN KEY(MajorID) REFERENCES Majors(ID)
(2) 删除外键约束
ALTER TABLE Student DROP CONSTRAINT FK_Students_MajorID
- 校验约束(CHECK)
CHECK 约束用于限制列中的值的范围
(1) 设置学生的名称长度不能少于2
ALTER TABLE Student ADD CONSTRAINT CK_Students_Name CHECK(LENGTH(SName)>=2)
(2)删除该约束
ALTER TABLE Student DROP CONSTRAINT CK_Students_Name
- 默认值(DEFAULT)
DEFAULT 约束用于向列中插入默认值。
(1)单独语句增加Sex默认值约束
ALTER TABLE Student MODIFY Sex DEFAULT '1'
(2)删除默认值约束
ALTER TABLE Student DROP CONSTRAINT DF_Students_Sex