SQL学习笔记6:进阶之SQL Constraints(约束)

SQL约束(Constraints): SQL约束用于限制一个表中数据的类型,可以在建表时(使用CREATE TABLE语句),也可以在建表后(使用ALTER TABLE)来指定约束。

约束包括以下几种:

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

DEFAULT

  1. NOT NULL: 强制表中某列不接受空值。

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

  1. UNIQUE: 此约束使表中某列值唯一,PRIMARY KEY自动包含此约束.

Example:

在创建表的同时创建UNIQUE约束

CREATE TABLE Persons

(

P_Id int NOT NULL UNIQUE,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

创建表时对多行使用UNIQUE约束

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

)

修改已经存在的表,以使表中某列使用UNIQUE约束

ALTER TABLE Persons

ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

删除UNIQUE约束

ALTER TABLE Persons

DROP CONSTRAINT uc_PersonID

  1. PRIMARY KEY

每个表应该有且仅有一个主键约束

Example:

创建表的同时创建主键约束

CREATE TABLE Persons

(

P_Id int NOT NULL PRIMARY KEY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

可以对多列的组合定义主键约束

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

)

在这个例子中,主键为pk_PersonID, 主键的值由两列组成,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 CONSTRAINT pk_PersonID

  1. FOREIGN KEY

一个表的外键指向另一个表的主键。

外键可以阻止破坏表间连接的行为。

外键约束可以阻止无效数据被插入外键所在的列,因为外键所在列的数据需要来自外键指向的表。

Example:

建表的同时添加外键约束

CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

P_Id int FOREIGN KEY REFERENCES Persons(P_Id)

)

定义多列的外键约束

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

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 CONSTRAINT fk_PerOrders

  1. CHECK: 用于限制表中数据列值的范围

创建表时定义CHECK约束

对单列定义:

CREATE TABLE Persons

(

P_Id int NOT NULL CHECK (P_Id>0),

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

对多列定义:

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

)

对已经存在的表添加CHECK约束

ALTER TABLE Persons

ADD CHECK (P_Id>0)

ALTER TABLE Persons

ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

删除CHECK约束

ALTER TABLE Persons

DROP CONSTRAINT chk_Person

  1. DEFAULT: 用于向表中某列添加默认值。

新建表时同时定义某列的default值

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()

)

修改表以定义该表某列的default值

ALTER TABLE Persons

ALTER COLUMN City SET DEFAULT 'SANDNES'

删除default约束

ALTER TABLE Persons

ALTER COLUMN City DROP DEFAULT

参考资料:http://w3schools.com/sql/sql_constraints.asp

原文地址:https://www.cnblogs.com/ITGirlXiaoXiao/p/2162230.html