SQL_约束
一、主要包括:
- SQL NOT NULL 约束
- SQL UNIQUE 约束
- SQL PRIMARY KEY 约束
- SQL FOREIGN KEY 约束
- SQL CHECK 约束
- SQL DEFAULT 约束
二、具体内容:
-
SQL NOT NULL 约束
默认情况下,表的列接受NULL值。
NOT NULL 约束强制列不接受 NULL值。
NOT NULL 约束强制字段始终包含值。即如果不向字段添加值,就无法插入新纪录或者更新记录。
-
添加 NOT NULL 约束
#在一个已创建的表的'Age'字段中添加 NOT NULL约束 ALTER TABLE Persons MODIFY Age int NOT NULL;
-
删除 NOT NULL 约束
# 在一个已创建的表'Age'字段中删除 NOT NULL 约束 ALTER TABLE Persons MODIFY Age int NULL;
-
-
SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
注:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
-
创建(CREATE TABLE)表时的 SQL UNIQUE 约束
# 在“”表创建时在“”列上创建 UNIQUE 约束 CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) )
-
修改(ALTER TABLE)表时的 SQL UNIQUE 约束
# 当表已被创建时,如需在“P_Id”列创建UNIQUE约束 ALTER TABLE Persons ADD UNIQUE (P_Id) # 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束 ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
-
删除 UNIQUE 约束
# 如需撤销 UNIQUE 约束 ALTER TABLE Persons DROP INDEX uc_PersonID
-
-
SQL PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含NULL值。
每个表都应该有一个主键,并且每个表只能有一个主键。
-
创建(CREATE TABLE)表时的SQL PRIMARY KEY 约束
# 在“Persons”表创建时,在“P_Id”列上创建 PRIMARY KEY 约束: CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) ) # 命名PRIMARY KEY 约束,并定义多个列的PRIMARY KEY 约束: 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) )
-
修改(ALTER TABLE)表时的SQL PRIMARY KEY 约束
# 表已被创建时,在“P_Id”列创建 PRIMARY KEY 约束: ALTER TABLE Persons ADD PRIMARY KEY (P_Id) # 命名PRIMARY KEY 约束,并定义多个列的PRIMARY KEY 约束: ALTER TABLE Persons ADD CONSTRAINT pk_PersonsID PRIMARY KEY (P_Id,LastName)
-
撤销 PRIMARY KEY 约束
# 撤销 PRIMARY KEY 约束 ALTER TABLE Persons DROP PRIMARY KEY
-
-
SQL FOREIGN KEY 约束
一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)
FOREIGN KEY 约束用于预防破坏表之间链接的行为。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须时它指向昂达那个表中的值之一。
-
创建(CREATE TABLE)表时的 SQL FOREIGN KEY 约束
# 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束: CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) ) # 命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束: 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)表时的 SQL FOREIGN KEY 约束
# 当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束: ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) # 命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束: ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
-
撤销 SQL FOREIGN KEY 约束
# 撤销 SQL FOREIGN KEY 约束: ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
-
-
SQL CHECK 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
-
创建表时的 SQL CHECK 约束
# 在 "Persons" 表创建时在 "P_Id" 列上创建 CHECK 约束。CHECK 约束规定 "P_Id" 列必须只包含大于 0 的整数 CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (P_Id>0) ) # 命名 CHECK 约束,并定义多个列的 CHECK 约束: 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') )
-
修改表时的 SQL CHECK 约束
# 当表已被创建时,如需在 "P_Id" 列创建 CHECK 约束: ALTER TABLE Persons ADD CHECK (P_Id>0) # 命名 CHECK 约束,并定义多个列的 CHECK 约束: ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
-
撤销 CHECK 约束
ALTER TABLE Persons DROP CONSTRAINT chk_Person
-
-
SQL DEFQULT 约束
DEFQULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
-
创建(CREATE TABLE)表时的 SQL DEFQULT 约束
# 在 "Persons" 表创建时在 "City" 列上创建 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' ) # 使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值: CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, OrderDate date DEFAULT GETDATE() )
-
修改(ALTER TABLE)表时的 SQL DEFQULT 约束
# 当表已被创建时,如需在 "City" 列创建 DEFAULT 约束: ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
-
撤销 DEFQULT 约束
# 撤销 DEFAULT 约束 ALTER TABLE Persons ALTER City DROP DEFAULT
-