约束用于定义存储在表中的数据的限制。这可以确保数据库中所有表的所有行满足一定的业务规则。
什么是约束?
约束可用于指定列中的值必须满足的条件。例如,我们可以使用约束来保证列中的值唯一,或者保证某列中的值不为空。如果违反了约束,那么 SQL 语句将会执行失败,并返回错误信息。
约束类型
主键约束 (Primary Key Constraint)
主键约束用于定义表的主键。主键用于唯一标识表中的每一条记录。主键约束确保主键列中的值不为空,并且是唯一的。
创建带有主键约束的表
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) );
外键约束 (Foreign Key Constraint)
外键约束用于建立和加强两个表数据之间的链接。外键约束通常用于引用另一个表中的主键。
创建带有外键约束的表
CREATE TABLE Orders ( OrderID int PRIMARY KEY, OrderNumber int NOT NULL, PersonID int, FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );
唯一约束 (Unique Constraint)
唯一约束确保一个列或一组列中的所有值都是唯一的。唯一约束类似于主键约束,但是允许有一列的值为 NULL。
创建带有唯一约束的表
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Phone varchar(20) UNIQUE );
非空约束 (Not Null Constraint)
非空约束确保某列中的值不能为 NULL。NULL 值表示该列没有值。
创建带有非空约束的表
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Address varchar(255), City varchar(255) );
检查约束 (Check Constraint)
检查约束确保某列中的值满足一定的条件。检查约束可以在创建表时定义,也可以在表创建后添加。
创建带有检查约束的表
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Age int CHECK (Age >= 18) );
默认约束 (Default Constraint)
默认约束用于在未向列提供值的情况下为该列分配一个默认值。
创建带有默认约束的表
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Age int DEFAULT 30 );
修改约束
我们还可以修改现有的约束。例如,我们可以在表中添加新的约束,或者删除现有的约束。
添加新的约束
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Age>=18 AND City='Beijing');
删除约束
ALTER TABLE Persons DROP CONSTRAINT chk_Person;
以上就是 SQL 约束的概述。约束对于确保数据的完整性和一致性非常重要。通过正确地使用约束,我们可以防止数据的不一致性和错误。