2.1SQL PRIMARY KEY约束
●PRIMARY KEY约束唯一标识数据库表中的每条记录。
●主键必须包含唯一的值。
●主键列不能包含NULL值。
●每个表都应该有一个主键,并且每个表只能有一个主键。
2.2CREATE TABLE时的SQL PRIMARY KEY约束
CREATE TABLE Persons ( P_Id int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
2.3ALTER TABLE时的SQL PRIMARY KEY约束
当表已被创建时,如需在“P_Id”列创建PRIMARY KEY约束,请使用下面的SQL:
ALTER TABLE Persons ADD PRIMARY KEY (P_Id)
2.4撤销PRIMARY KEY约束
如需撤销PRIMARY KEY约束,请使用下面的SQL:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
三、SQL FOREIGN KEY约束
3.1SQL FOREIGN KEY约束
一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY。
。让我们通过一个实例来解释外键请看下面两个表:
“人员”表:
P_Id是PRIMARY KEY
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
“订单”表:P_Id是FOREIGN KEY
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
请注意,“Orders”表中的“P_Id”列指向“Persons”表中的“P_Id”列。
“Persons”表中的“P_Id”列是“Persons”表中的PRIMARY KEY。
“Orders”表中的“P_Id”列是“Orders”表中的FOREIGN KEY。
FOREIGN KEY约束用于预防破坏表之间连接的行为。
FOREIGN KEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
3.2CREATE TABLE时的SQL FOREIGN KEY约束
下面的SQL在“订单”表创建时在“P_Id”列上创建FOREIGN KEY约束:
CREATE TABLE Orders ( O_Id int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, P_Id int FOREIGN KEY REFERENCES Persons(P_Id) )
如需命名FOREIGN KEY约束,并定义多个列的FOREIGN KEY约束,请使用下面的SQL语法:
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) )
3.3ALTER TABLE时的SQL FOREIGN KEY约束
当“Orders”表已被创建时,如需在“P_Id”列创建FOREIGN KEY约束,请使用下面的SQL:
ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
如需命名FOREIGN KEY约束,并定义多个列的FOREIGN KEY约束,请使用下面的SQL语法:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
3.4撤销FOREIGN KEY约束
如需撤销FOREIGN KEY约束,请使用下面的SQL:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
四、SQL UNIQUE 约束
4.1UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
4.2CREATE TABLE 时的 SQL UNIQUE 约束
下面的 SQL 在 "Persons" 表创建时在 "P_Id" 列上创建 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 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
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) )
4.3ALTER TABLE 时的 SQL UNIQUE 约束
当表已被创建时,如需在 "P_Id" 列创建 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE Persons ADD UNIQUE (P_Id)
如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
4.4撤销 UNIQUE 约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID
五、SQL CHECK约束
5.1SQL CHECK约束
CHECK约束用于限制列中的值的范围。
如果对单个列定义CHECK约束,那么该列只允许特定的值。
如果对一个表定义CHECK约束,那么这个约束将基于行中其他列的值在特定的列中对值进行限制。
5.2CREATE TABLE时的SQL CHECK约束
下面的SQL在“Persons”表创建时在“P_Id”列上创建CHECK约束.CHECK约束规定“P_Id”列必须包含大于0的整数。
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) )
如需命名CHECK约束,并定义多个列的CHECK约束,请使用下面的SQL语法:
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') )
5.3ALTER TABLE时的SQL CHECK约束
当表已被创建时,如需在“P_Id”列创建CHECK约束,请使用下面的SQL:
ALTER TABLE Persons ADD CHECK (P_Id>0)
如需命名CHECK约束,并定义多个列的CHECK约束,请使用下面的SQL语法:
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
5.4撤销CHECK约束
如需撤销CHECK约束,请使用下面的SQL:
ALTER TABLE Persons DROP CONSTRAINT chk_Person
六、SQL NOT NULL 约束
在默认的情况下,表的列接受 NULL 值。
6.1SQL NOT NULL 约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 强制 "P_Id" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
今天刚学到的。。。
网友评论