1. NOT NULL - 指示某列不能存储 NULL 值。
- 在建表的时候就增加约束
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
- 对已存在的表的字段添加约束
ALTER TABLE Persons
MODIFY Age int NOT NULL;
- 删除已存在表的字段的约束
ALTER TABLE Persons
MODIFY Age int NULL;
2 UNIQUE - 保证某列的每行必须有唯一的值。
- 在建表的时候就增加约束
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
--1.普通约束
UNIQUE (P_Id)
--2.当需要创建多个约束并为约束取名时,可以采用如下方式
--CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
- 对已存在的表的字段添加约束
ALTER TABLE Persons
ADD UNIQUE (P_Id)
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
- 删除已存在表的字段的约束
ALTER TABLE Persons
DROP INDEX uc_PersonID
3. PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- 在建表的时候就增加约束
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
--1.
PRIMARY KEY (P_Id)
--2.
--CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
- 对已存在的表的字段添加约束
ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
- 删除已存在表的字段的约束
ALTER TABLE Persons
DROP PRIMARY KEY
4. FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
- 在建表的时候就增加约束
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
--1.
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
--2.
--CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
- 对已存在的表的字段添加约束
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
- 删除已存在表的字段的约束
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
5. CHECK - 保证列中的值符合指定的条件。
- 在建表的时候就增加约束
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
--1.
CHECK (P_Id>0)
--2.
--CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)
- 对已存在的表的字段添加约束
ALTER TABLE Persons
ADD CHECK (P_Id>0)
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
- 删除已存在表的字段的约束
ALTER TABLE Persons
DROP CHECK chk_Person
6. DEFAULT - 规定没有给列赋值时的默认值。2. 对已存在的表的字段添加约束
- 在建表的时候就增加约束
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)
- 对已存在的表的字段添加约束
ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'
- 删除已存在表的字段的约束
ALTER TABLE Persons
ALTER City DROP DEFAULT