一、SQL约束
约束用于限制加入标的数据的类型
可以在创建表的时候规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE语句)
主要探讨以下的几种约束:
1) NOT NULL
2) UNIQUE
3) PRIMARY KEY
4) FOREIGN KEY
5) CHECK
6) DEFAULT
二、SQL NOT NULL 约束
NOT NULL约束强制列不接受 NULL值
NOT NULL约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或更新记录
下面的SQL语句强制 Id_P和 LastName 列不接受 NULL 值
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
三、SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证
PRIMARY KEY 拥有自动定义的 UNIQUE 约束
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束
下面的SQL 在“Persons” 表创建时在“Id_P”列创建 UNIQUE约束:
MySQL
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE(Id_P) )
SQL Server / Oracle / MS Access
CREATE TABLE Persons ( Id_P int NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE约束,请使用下面的 SQL语法
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE(Id_P, LastName) )
当表已被创建,如需在 Id_P列创建 UNIQUE约束,请使用下列的SQL
MySQL / SQL Server / Oracle / Ms Access
ALTER TABLE Persons ADD UNIQUE(Id_P)
如需命名 UNIQUE约束,并定义多个列的 UNIQUE约束,请使用下面的 SQL 语法
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE(Id_P, LastName)
撤销 UNIQUE约束
如需撤销UNIQUE 约束,请使用下面的SQL:
MySQL
ALTER TABLE Persons DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID