SQL Server 表的军管_关于完整性约束的详解(案例代码)

SQL Server 表的管住之_至于完整性约束的详解

一、概述:

  ●约束是SQL
Server提供的自行保持数据库完整性的一种艺术,
它通过限制字段中多少、记录中多少和表之间的多少来保险数据的完整性。

  ●SQL约束用于钦点表中数据的条条框框。

  ●约束能够在创建表时规定(通过
CREATE TABLE 语句),大概在表创建之后鲜明(通过 ALTE瑞虎 TABLE
语句)。

1.1SQL创设约束

当使用CREATE
TABLE语句创造表时,或许在行使ALTER
TABLE语句创立表之后,能够内定约束。

语法

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

SQL CREATE TABLE + CONSTRAINT 语法

CREATE TABLE table_name 
( 
column_name1 data_type(size) constraint_name, 
column_name2 data_type(size) constraint_name, 
column_name3 data_type(size) constraint_name, 
.... 
);

1.2剔除约束

任何现成约束都足以透过在
ALTEOdyssey TABLE 命令中内定 DROP CONSTRAINT 选项的主意删除掉。

比方,要去除 EMPLOYEES
表中的主键约束,能够采纳下述命令:

 ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

有的数据库达成只怕提供了除去特定约束的敏捷方法。比方,要在
Oracle 中删去一张表的主键约束,能够行使如下命令:

 ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

或多或少数据库达成允许禁用约束。那样与其从数据库中永世删除约束,你可以只是不时禁止使用掉它,过一段时间后再重复启用。

1.3完整性约束

完整性约束用于保障关系型数据库中数量的正确性和一致性。对于关系型数据库来讲,数据完整性由参照完整性(referential
integrity,WranglerI)来确认保证。

有很四种羁绊能够起到参照完整性的机能,那么些约束富含主键约束(Primary
Key)、外键约束(Foreign Key)、独一性约束(Unique
Constraint)以及地点提到的别样约束。

封锁可分为以下二种:

1、P本田UR-VIMA宝马X3Y KEY 主键约束

2、FOREIGN
KEY 外键约束

3、UNIQUE
约束 独一约束

4、CHECK
约束 检查约束

5、DEFUALT
定义 私下认可约束

下边分别详解:

二、SQL PRIMARY KEY约束


2.1SQL PRIMARY KEY约束

●PEscortIMACRUISERY
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”列创设P途观IMA揽胜极光Y
KEY约束,请使用上边包车型大巴SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

2.4撤销PRIMARY KEY约束

如需撤废PRAV4IMAMercedes-迈巴赫Y
KEY约束,请使用下边包车型客车SQL:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

三、SQL FOREIGN KEY约束

3.1SQL FOREIGN KEY约束

八个表中的FOREIGN KEY指向另二个表中的P福睿斯IMA陆风X8Y 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 和 P奥迪Q5IMA普拉多Y KEY 约束均为列或列集合提供了独一性的保障。

P牧马人IMA福睿斯Y KEY 约束具备电动定义的 UNIQUE 约束。

请小心,每一种表可以有两个 UNIQUE 约束,然而种种表只好有一个 PPAJEROIMA奥迪Q3Y 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)
)

今天刚学到的。。。

 

相关文章