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

本文详细介绍了SQL约束的概念、类型及其在数据库设计中的应用,包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK和DEFAULT约束。通过实例展示了如何在创建表时和之后对表进行约束设置,以及如何添加、修改和删除这些约束。

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/archive/2011/09/01/2162230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值