1. 约束(constraints)介绍
在MSSQL中,约束指的是为表定义的规则。它们可以用于强制执行列数据的完整性(如主键或唯一约束),或保证数据在表级别(如检查约束或默认值约束)上的完整性。MSSQL支持以下类型的约束:NULL、NOT NULL、CHECK、DEFAULT、UNIQUE、PRIMARY KEY、FOREIGN KEY.
2. 主键约束(primary key constraints)
2.1 何为主键约束
主键(primary key)是用于唯一标识表中每个行的列,而主键约束(primary key constraints)确保该列不为空并且没有重复值。每张表都只能有一个主键约束。
2.2 创建主键约束
下面的代码演示了如何为表创建主键约束:
CREATE TABLE Student(
ID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT NOT NULL,
Gender CHAR(1) NOT NULL
);
上面的代码在Student表中创建了名为ID的主键约束,这将确保ID列的唯一性,因为主键的值必须是唯一的。
3. 唯一约束(unique constraints)
3.1 何为唯一约束
唯一(unique)约束确保列中的所有值都是唯一的。与主键约束不同,唯一约束可以包含多个列,并且只有其中一个列必须唯一。
3.2 创建唯一约束
下面的代码演示了如何为表创建唯一约束:
CREATE TABLE Student(
ID INT UNIQUE,
Name VARCHAR(50) NOT NULL,
Age INT NOT NULL,
Gender CHAR(1) NOT NULL
);
可以看到,上面的代码使用UNIQUE关键字创建了名为ID的唯一约束。
4. 外键约束(foreign key constraints)
4.1 何为外键约束
外键(foreign key)用于确保使用的数据在两个表之间保持一致。外键约束(foreign key constraints)使用一个表的列的值作为另一个表的主键。
4.2 创建外键约束
下面的代码演示如何为表创建外键约束:
CREATE TABLE Customers(
ID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT NOT NULL,
City VARCHAR(50) NOT NULL
);
CREATE TABLE Orders(
OrderID INT PRIMARY KEY,
OrderDate DATE NOT NULL,
CustomerID INT FOREIGN KEY REFERENCES Customers(ID)
);
上面的代码中,在Orders表中创建了一个外键(CustomerID),它使用Customers表的主键(ID)作为参考。这将确保Order表中每个行的CustomerID列只包含Customers表中已有的值,因此保证了数据的一致性。
5. 检查约束(check constraints)
5.1 何为检查约束
检查约束(check constraints)用于限制列中的值。例如,可以使用检查约束确保Age列中的值始终大于等于0,如下所示:
CREATE TABLE Student(
ID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT NOT NULL CHECK (Age>=0),
Gender CHAR(1) NOT NULL
);
上面的代码中,使用CHECK约束限制了Age列中的值必须大于等于0。
6. 总结
在本文中,在MSSQL中介绍了约束的概念,包括主键约束、唯一约束、外键约束和检查约束。使用约束可以保证数据的完整性,将限制不必要的或无效的数据插入数据库。根据实际需要,可以在表中使用一个或多个约束。