澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:SQLServer约束介绍,数据表

2019-06-01 作者:数据库网络   |   浏览(152)

自律定义

对于数据库来讲,基本表的完整性约束分为列级约束原则和表级约束原则:

列级约束原则

       列级约束原则是对某叁个一定列的牢笼,包括在列定义中,能够直接跟在该列的任何概念之后,用空格分隔,不用钦定列名。

表级约束原则

       表级约束标准与列定义相互独立,不包含在列定义中,常常用于对多个或几个以上的列一齐张开约束。

壹、数据库完整性概述

总结:

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

封锁介绍

在数据库管理体系中,保证数据库中的数据完整性是杰出关键的。所谓数据完整性,正是指存款和储蓄在数据库中多少的一致性和不易。约束定义关于列中允许值的条条框框,是威吓完整性的正经编写制定。使用约束优先于选择触发器、规则和暗许值。查询优化器也应用约束定义生成高质量的查询施行安插。

数据完整性分类

在SQL Server中,依据数量总体新办法所遵守的数据库对象和界定分化,能够将数据完整性分为以下二种:

实体完整性

实业完整性简来说之,正是将表中的每一行看作3个实体。实体完整性须求表的标示符列或主键的完整性。能够透过确立唯一索引、P奥迪Q5IMARAV四Y KEY约束、UNIQUE约束,以及列的IDENTITY属性来实践实体完整性。

域完整性

域完整性是指给定列的输入有效性。供给表中钦赐列的数额具有正确的数据类型、格式和一蹴而就的多少范围。强制域有效性的法子有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或大概值的限制。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来兑现。

引用完整性

引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的多寡壹致性,它经过主键(PBMWX5IMABMWX叁Y KEY)约束和外键(FOREIGN KEY)约束来促成。引用完整性确认保证键值在全部表中1致。那样的壹致性须求无法引用不存在的值,假使键值退换了,那么在全方位数据库中,对该键值的装有引用要开始展览一样的更改。在被参照表中,当其主键值被其它表所参照时,该行无法被删除也不允许改换。在仿照效法表中,不容许参照不设有的主键值。

摘要

 

创建表

一、概述:

  ●约束是SQL Server提供的机关保持数据库完整性的一种方法, 它通过限制字段中数量、记录中数量和表之间的数码来保障数据的完整性。

  ●SQL约束用于钦点表中多少的平整。

  ●约束能够在开创表时规定(通过 CREATE TABLE 语句),也许在表成立之后分明(通过 ALTE奥迪Q三 TABLE 语句)。

封锁分类

SQLServer中有四种约束类型,分别是 P福睿斯IMA奇骏Y KEY约束、FOREIGN KEY约束、UNIQUE约束、DEFAULT约束、和CHECK约束。查看大概创立约束都要利用到 Microsoft SQL Server Managment Studio。

对于SQL Server中的约束,想必大家并不是很生分。可是约束中真正的内蕴是如何,并不是十分多人都很领会的。本文以详尽的文字来介绍了哪些是束缚,以及哪些在数据库编制程序中选拔和采用那几个约束,来达到越来越好的编制程序效果。(本文部分内容参谋了SQL Server联机手册)

一.数据库的完整性:

主键约束   P奥迪Q3IMA帕杰罗Y KEY( primary key )

壹.一SQL创建约束

当使用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, 
.... 
);

PRIMARY KEY约束

在表中常有一列或多列的重组,其值能唯1标记表中的每1行,那样的1列或多列成为表的主键(PrimaryKey)。

2个表只可以有八个主键,而且主键约束中的列不能够为空值。

除非主键列技能被作为此外表的外键所创制。

内容

 

外键约束   CONSTRAINT ( constraint )  外键名 FOREIGN KEY( foreign key ) ( 字段名 ) REFERENCES(references)  主表名(主键)

一.2刨除约束

别的现存约束都足以因而在 ALTE奔驰M级 TABLE 命令中钦赐 DROP CONSTRAINT 选项的办法删除掉。

诸如,要去除 EMPLOYEES 表中的主键约束,能够动用下述命令:

 ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

一些数据库落成恐怕提供了除去特定约束的短平快方法。举例,要在 Oracle 中删除一张表的主键约束,能够使用如下命令:

 ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

好几数据库完毕允许禁止使用约束。那样与其从数据库中恒久删除约束,你能够只是有的时候禁止使用掉它,过一段时间后再重复启用。

FOREIGN KEY约束 

外键约束是用来增加四个表(主表和从表)的壹列或多列数据里面包车型客车三番五次的。

始建国门外键约束的次第是先定义主表的主键,再对从表定义外键约束。

唯有主表的主键技巧被从表用来作为外键使用,被束缚的从表中的列能够不是主键,主表限制了从表更新和插入的操作。

  数据完整性分类
  实体完整性
  域完整性
  引用完整性
  用户定义完整性
  PRIMARY KEY约束
  DEFAULT约束
  CHECK约束
  UNIQUE约束
  FOREIGN KEY约束

一数据库的完整性是指多少的不利和相容性

非空约束  NOT NULL(not null)

一.三完整性约束

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

有很各个束缚可以起到参照完整性的功能,这个约束包括主键约束(Primary Key)、外键约束(Foreign Key)、唯1性约束(Unique Constraint)以及地点提到的别的约束。

自律可分为以下三种:

1、PTiggoIMAKoleosY KEY 主键约束

二、FOREIGN KEY 外键约束

三、UNIQUE 约束 唯壹约束

4、CHECK 约束 检查约束

5、DEFUALT 定义 默认约束

上面分别详解:

UNIQUE约束

唯壹约束保证表中的1列数据尚未同样的值。

与主键约束类似,唯一约束也强制唯壹性,但唯1约束用于非主键的一列恐怕多列的组合,且一个表能够定义多少个唯1约束。

正文

贰数据库完整性是严防不合语义或不得法的数据进入数据库

唯壹约束  UNIQUE(unique)

二、SQL PRIMARY KEY约束


DEFAULT约束

若在表中定义了暗中认可值约束,用户在插入新的数额行时,固然该行未有一些名数量,那么系统将暗中同意值赋给该列,假诺大家不设置暗中同意值,系统默以为NULL。

在数据库管理体系中,保险数据库中的数据完整性是那多少个重要的。所谓数据完整性,正是指存款和储蓄在数据库中数量的1致性和不易。约束定义关于列中允许值的平整,是威逼完整性的正儿八经编写制定。使用约束优先于选择触发器、规则和默许值。查询优化器也运用约束定义生成高质量的查询实践安顿。

3完整性体现了是或不是真实地反展示实世界

暗许约束   DEFAULT(default)  私下认可值

2.1SQL PRIMARY KEY约束

●P福睿斯IMA劲客Y KEY约束唯一标记数据库表中的每条记下。

●主键必须含有唯一的值。

●主键列不可能包罗NULL值。

●每种表都应该有一个主键,并且种种表只可以有二个主键。


CHECK约束

CHECK 约束用于限制列中的值的范围。

Check约束通过逻辑表达式来判别数据的有用,用来限制输入1列或多列的值的界定,在列中立异数据时,所要输入的原委必须满足Check约束的标准,否则将不能精确输入。

假设对单个列定义 CHECK 约束,那么该列只同意特定的值。

万一对二个表定义 CHECK 约束,那么此约束会在一定的列中对值进行界定。

SQL Server联机丛书中,将数据完整性解释如下:“积累在数据库中的全数数据值均正确的事态。如若数据库中存款和储蓄有不得法的数据值,则该数据库称为已丧失数据完整性。”强制数据完整性可保险数据库中的数据质量。

 

自增  AUTO_INCREMENT(auto_increment)

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

封锁优缺点

优点:

1、保持数据库完整性。

2、保障列中多少的唯1性。

叁、插入、更新、删除时严谨的限制校验机制。

4、快速。

伍、能够引用别的列。

陆、在命令施行前发出。

7、遵循ANSI标准。

缺点:

壹、插入、更新、删除时索要校验规则相比较劳累。

二、必须对各样表重新定义。

3、无法引用其余表。

四、不能够绑定到数据类型。

 

比方,要是输入了 employee_id 值为 1二三的职员,那么该数据库不应允许其余干部使用同壹 ID 值。若是布署将 employee_rating 列的值范围设定为从 壹 到 5,则数据库不应接受 六。假使表有1 dept_id 列,该列存款和储蓄人士的机关编号,则数据库应只同意接受厂家中的有效部门编号。

例: 

1.创设表的语法方式

2.3ALTER TABLE时的SQL PRIMARY KEY约束

当表已被创制时,如需在“P_Id”列创设P大切诺基IMACRUISERY KEY约束,请使用上边的SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

数据完整性分类

学生的年龄必须是整数,取值范围为1四-29;

1)语法

2.4撤销PRIMARY KEY约束

如需裁撤PPAJEROIMACR-VY KEY约束,请使用上边包车型大巴SQL:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

在SQL Server中,遵照数据总体新措施所效劳的数据库对象和限量不1,能够将数据完整性分为以下两种。

学生的性别只可以是男或女;

CREATE TABLE < 表名 > (

 字段名1:数据类型[ 列等级的封锁标准 ] [ 默认值 ],

字段名二:数据类型[ 列级其他羁绊标准 ] [ 默认值 ],

..........

);

三、SQL FOREIGN KEY约束

  实体完整性
  域完整性
  引用完整性
  用户定义完整性

学生的学号一定是独步天下的;

2)操作

3.1SQL FOREIGN KEY约束

3个表中的FOREIGN KEY指向另叁个表中的POdysseyIMALacrosseY KEY。

。让大家通过1个实例来分解外键请看上面八个表:

“人员”表:

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约束也能制止违法数据插入外键列,因为它必须是它指向的可怜表中的值之一。


SQL Server联机丛书中指明:“对表实行安插有四个第1步骤:标记列的有效值和鲜明怎么样强制列中的数据完整性。”

学员所在的系必须是全校进行的系;

澳门新萄京官方网站 1

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

实业完整性

 

tb_emp1表结构

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个实体。实体完整性要求表的标示符列或主键的完整性。能够由此确立唯一索引、P奥德赛IMAOdysseyY KEY约束、UNIQUE约束,以及列的IDENTITY属性来奉行实体完整性。

 

创建tb_emp1表,sql语句为:

3.4撤销FOREIGN KEY约束

如需撤废FOREIGN KEY约束,请使用下边包车型大巴SQL:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

域完整性

2.DBMS爱护数据库完整性的体制:

CREATE TABLE  tb_emp1

(

id INT(11),

name VARCHAR(25),

deptld INT(11),

salary FLOAT

);

四、SQL UNIQUE 约束

域完整性是指给定列的输入有效性。须求表中钦命列的数目具备准确的数据类型、格式和实惠的数码范围。强制域有效性的法子有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或大概值的界定。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来达成。

 

实行之后,查看数据库表

四.一UNIQUE 束缚唯1标志数据库表中的每条记下。

UNIQUE 和 P奥迪Q5IMAPAJEROY KEY 约束均为列或列集结提供了唯壹性的保险。

P卡宴IMAPAJEROY KEY 约束具备电动定义的 UNIQUE 约束。

请留心,每一个表能够有多少个 UNIQUE 约束,不过种种表只可以有1个 P宝马X5IMA科雷傲Y KEY 约束。


引用完整性

壹提供定义完整性约束原则的编写制定

澳门新萄京官方网站 2

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

 

引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的多少1致性,他因此主键(PLANDIMALX570Y KEY)约束和外键(FOREIGN KEY)约束来兑现。引用完整性确认保证键值在颇具表中一致。那样的一致性须要不能够引用不存在的值,假使键值改换了,那么在任何数据库中,对该键值的有所引用要拓展一样的更改。在被参照表中,当其主键值被此外表所参照时,该行无法被去除也不容许改造。在参照他事他说加以调查表中,不相同意参照不设有的主键值。

   DBMS应提供定义数据库完整性约束标准,并把它们存入数据库中。

tb_emp1表

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)

强制引用完整性时,SQL Server 禁止用户举办下列操作:

贰提供完整性检查的不二等秘书籍

  1. 利用主键约束

4.4撤销 UNIQUE 约束

如需撤废 UNIQUE 约束,请使用上面包车型客车 SQL:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
  当主表中没有关联的记录时,将记录添加到相关表中。
  更改主表中的值并导致相关表中的记录孤立。
  从主表中删除记录,但仍存在与该记录匹配的相关记录。

   检查数据是还是不是满意完整性约束标准的体制称为完整性检查。一般在INSERT、UPDATE、DELETE语句施行后早先检查。

主键:又称主码,是表中1列或多列的重组。主键约束须求主键列的数码唯1,并且不可能为空。主键能够唯壹地方统一规范识表中的一条记下,能够整合外键约束来定义不一致数据表之间的关联,并且能够加速数据库查询的速度。主键和记录之间的关系就像是身份证和人以内的涉嫌,他们是逐一对应的。主键分为二种:单子段主键和多字段联合主键。

五、SQL CHECK约束

比方,对于 pubs 数据库中的 sales 和 titles 表,引用完整性基于 sales 表中的外键 (title_id) 与 titles 表中的主键 (title_id) 之间的涉及。

 

一)单子段主键

5.1SQL CHECK约束

CHECK约束用于限制列中的值的限量。

万一对单个列定义CHECK约束,那么该列只同意特定的值。

若是对3个表定义CHECK约束,那么那个约束将遵照行中其余列的值在特定的列中对值实行界定。

澳门新萄京官方网站 3

3.爽约管理

主键由叁个字段组成,sql语句格式分为以下几种景况。

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

用户定义完整性

DBMS若开接纳户的操作违背了完整性约束原则,就采取一定的动作以保证数据的完整性,如拒绝施行该操作,或级联实践此外操作。

在概念列的还要钦命主键,语法规则如下:

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

用户定义完整性使您能够定义不属于任何任何完整性分类的特定业务规则。全体的完整性类型都帮衬用户定义完整性。

 

字段名  数据类型  P揽胜极光IMA猎豹CS6Y KEY[ 默认值 ]

5.4撤销CHECK约束

如需打消CHECK约束,请使用下边包车型地铁SQL:

ALTER TABLE Persons
DROP CONSTRAINT chk_Person

创制和动用约束的目标是保障数据的完整性,约束是SQL Server强制进行的使用规则,他能够范围用户存放到表中数量的格式和可能值。约束作为数据库定义的一部分在CREATE TABLE语句中宣称,所以又称做表明完整性约束。约束独立于表结构,能够在不改动表结构意况下,通过ALTER TABLE语句来丰硕也许去除。在剔除一个表时,该表所带的具备约束定义也被随即删除。

澳门新萄京官方网站 4

定义数据表tb_emp2,其主键为id,sql语句如下:

六、SQL NOT NULL 约束

在暗中同意的场馆下,表的列接受 NULL 值。


PRIMARY KEY约束

 

CREATE TABLE tb_emp2

(

id INT(11)PRIMARY KEY,

NAME VARCHAR(25),

deptld INT(11),

salary FLOAT

);

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

明日刚学到的。。。

 

在数据库的各种表中,常常有通过1列恐怕多个列,唯壹的标志表中的每1行。就类似我们向来使用的身份证,能够唯一的标记各类人同1。那样的一列恐怕多少个列,被称之为主键,通过主键,能够强制表的实体完整性。

 

在概念完所有列之后钦命主键,语法规则如下:

每二个表中唯有3个P猎豹CS陆IMA本田UR-VY KEY约束,更简单的说,他是经过成立唯一索引保障钦命列的实业完整性。在选拔P宝马X3IMAOdysseyY KEY约束时,该列的空值属性必须定义为NOT NULL,也正是说具备主键的那1列,不可能为空。

二、缺省(默认值)和规则

[ CONSTRAINT< 约束名 > ] PRIMARY KEY  [ 字段名 ]

鉴于PCR-VIMAXC60Y KEY约束保证唯一数据,所以一时用来定义标记列。标记列正是表中已经派出了标志属性的列。标记属性生成唯1数字。

 

定义表tb_emp三,sql语句如下:

有一点点刚刚初叶接触SQL Server编制程序的本领爱好者日常会有这么的问号,为何非要在贰个表里面建设构造主键?其实答案是很显眼的,树立主键不止能够确认保障表内数据的完整性,而且在为表组建主键的同一时候,Microsoft SQL Server能够因而为主键创设唯一索引强制数据的唯1性。

缺省和规则来源于由Sybase开采的S默许值QL Server,在老版本的SQL Server或许晋级版本中都有缺省和规则的采取。

CREATE TABLE tb_emp3

(

id INT(11),

NAME VARCHAR(25),

deptld INT(11),

salary FLOAT

PRIMARY KEY(id)

);

当在查询中选拔主键时,也正是选择主键所在的列作为关键字张开询问,该所因还足以用来对数码进行飞速访问。假诺在P帕杰罗IMALX570Y KEY约束中未钦点索引类型时,暗中认可景况下所创制的目录为簇索引。该索引只可以透过删除PSportageIMA昂CoraY KEY约束或其相关表的主意来删除,而不可能利用DROP INDEX语句删除。当P帕杰罗IMAHavalY KEY约束由另一张表的FOREIGN KEY约束引用时,不可能去除P普拉多IMA陆风X八Y KEY约束;要刨除它,必须先删除FOREIGN KEY约束。

缺省是为列提供数据的1种格局,借使用户进行INSERT操作时不为列输入数据,则运用缺省值。

2)多字段联合主键

万般创设壹列封锁时,我们称为列级PPAJEROIMA猎豹CS6Y KEY约束,应用于多列时,称之为表级P奥迪Q3IMAGL450Y KEY约束。

平整是当用户实行INSERT或uPDATE操作时,对输入列中的数据设定的取值范围,是兑现域完整性的格局之一。

主键由八个字段组成,语法规则如下:

列级P昂CoraIMA昂CoraY KEY约束的定义格式为:

 

PRIMARY KEY[ 字段1,字段2,...,字段n ]

[CONSTRAINT constraint_name]
 PRIMARY KEY [CLUSTERED | NONCLUSTERED]
 [WITH [FILLFACTOR = fillfactor]]
 [ON {filegroup | DEFAULT}]

缺省与规则有以下特点:

定义数据表tb_emp5,倘若表中间未有主键id,为了唯一明确叁个职员和工人,能够把name,deptld联合起来作为主键,sql语句如下,sql语句如下:

表级P昂CoraIMA大切诺基Y KEY约束定义风格为:

(一)缺省与规则是数据库对象,它们是单独于表和列而创建的。

CREATE TABLE tb_emp4

(

NAME VARCHAR(25),

deptld INT(11),

salary FLOAT,

PRIMARY KEY(NAME,deptld)

);

[CONSTRAINT constraint_name]
 PRIMARY KEY [CLUSTERED | NONCLUSTERED]
  {(column[,…n])}
 [WITH [FILLFACTOR = fillfactor]]
 [ON {filegroup | DEFAULT}]

(2)缺省与规则建立后与列或数据类型发生关联,列和数据类型就有着了缺省与规则的性质。

  1. 利用外键约束

在上头的P奥迪Q3IMACRUISERY KEY约束定义中,WITH子句设置为PBMWX伍IMA冠道Y KEY约束所确立目录的页面填充度,ON子句提议存款和储蓄索引的数据库文件组名称。将引得文件和表数据文件分寸到数据库中位居不相同硬盘驱动器的数据文件中,有利于缓慢解决单个硬盘的负载。

(三)缺省与规则定义后,能够重复使用,能够绑定到多少个列或数据类型上。

外键用来在八个表的多少里面创设链接,它能够是一列只怕多列。一个表能够有三个或许多少个外键。外键对应的是参谋完整性,四个表的外键可感觉空值,若不为空值,则每多少个外键值必须等于另一表中主键的某部值。

DEFAULT约束

(四)缺省与规则不随表相同的时候调入内部存款和储蓄器,当用到时才被调入内部存款和储蓄器,那恐怕会使程序执行出现延时。

外键:首先它是表中的一个字段,它能够不是本表的主键,但对应另一个表的主键。外键主要意义是保障引用的完整性,定义外键后,不容许删除在另一表中有着关联关系的行。外键的效益是保险数据的1致性,完整性。比方,部门表td_dept的主键id,在职员和工人表tb_emp5中有2个建deptid与那些id关联。

使用DEFAULT约束,假设用户在插入新行是不曾展示为列提供数据,系统会将私下认可支赋给该列。比方,在三个表的payterms列中,能够让数据库服务器在用户并未有输入时填上”???”恐怕”fill in later”。默许值约束所提供的默许值约束所提供的暗中认可值可以为常量、函数、系统零进函数、空值(NULL)等等。零进函数包涵CU奥德赛RENT_TIMESTAMP、SYSTEM_USER、CURRENT_USER、USER和SESSION_USERAV4等。默许值约束的定义格式为:

 

主表(父母):对于多个颇具关联关系的表来说,相关联字段中主键所在的不得了表尽管主表。

[CONSREAINT constraint_name]
 DEFAULT constant_expression

缺省和规则对象一般只在它所开创的数据库中央银立竿见影,不是ANSI规范,一般不提倡使用。

从表(字表):对于四个具有关联关系的表来说,相关联字段中外键所在的拾一分表就是从表。

其中,constraint_name参数提出所建构的暗许值约束名称。Constant_expression表达式为列提供暗中认可值。在动用暗许约束是,还应有注意以下两点:

应尽恐怕采用约束,任何能够动用缺省与规则的地点都有能够选用约束。

始建国门外键的语法规则如下:

1. 每列只能有一个默认约束。
2. 约束表达式不能参照表中的其他列和其他表、视图或存储过程。

 

[ CONSTRAINT < 外键名 > ] FOREIGN KEY 字段名1 [ ,字段名 2 ,... ]

REFERENCES< 主表名> 主键列1 [ ,主键列2,... ]

CHECK约束

1. 缺省

澳门新萄京官方网站 5

CHECK约束的主要性作用是限量输入到壹列或多列中的可能值,从而确定保证SQL Server数据库中数量的域完整性。比方,能够在确立用户选择库时,强制用户的密码在九位以上。每一个标允许建立多少个CHECK约束。在CHECK约束中得以包括找寻条件,但不可能蕴含子查询。

在SQL Server中,有两种选拔暗中认可值的格局:

tb_dept1表结构

1致,大家得感到表中的每种列创设约束,各样列能够享有四个CHECK约束,可是壹旦运用CREATE TABLE语句,只可以为每个列创建一个CHECK约束。如若CHECK约束被应用于多列时,他必须被定义为表级CHECK约束。

 

例:定义数据表tb_emp5,并在tb_emp伍表上创设外键约束。

在表明式中,能够输入寻觅条件,条件中得以总结AND恐怕O奥迪Q3壹类的连接词。列级CHECK约束只可以参照被约束列,而表级CHECK约束则只可以参照表中列,它不可能参谋别的表中列。

1在开立表时,钦定暗中同意值。

开创1个部门表tb_dept一,表结构如表所示,sql语句如下:

举个例子说,大家使用上面包车型大巴讲话在TB_CHECK_CONSTRAINT表中新出席一列ZIP_CODE及其相应的CHECK约束:

  用SQL Server Management Studio创设表时在铺排表时钦定暗中认可值,能够在输入字段名称后,设定该字段的暗中认可值。

CREATE TABLE tb_dept1

(

id INT(11)PRIMARY KEY ,

NAME VARCHAR(22) NOT NULL,

location VARCHAR(50)

);

ALTER Table TB_CHECK_CONSTRAINT
ADD
 ZIP_CODE char(6) null
 CONSTRAINT CH_ZIP_CODE check
  (ZIP_CODE like ‘[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)

  或应用CREATE TABLE语句中的DEFAULT子句钦定暗中认可值。

定义数据表tb_emp5,让它的键deptid作为外键关联到tb_dept1的主键id,sql语句为:

坚韧不拔,大家得以行使CHECK或NOCHECK来开荒也许关闭某些约束。比方,上面包车型客车讲话将关闭上边建设构造的CH_ZIP_CODE约束:

 

CREATE TABLE tb_emp5

(

id INT(11)PRIMARY KEY,

NAME VARCHAR(25),

deptid INT(11),

salary FLOAT,

CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptid) REFERENCES tb_dept(id)

);

ALTER Table TB_CHECK_CONSTRAINT
 NOCHECK CONSTRAINT CH_ZIP_CODE

二利用CREATE DEFAULT语句创制默许对象后,使用存款和储蓄进程sp_bindefault将该默许对象绑定到列上。

  1. 动用非空约束

假设期待利用编辑器来组建约束关系,须求在数据库关系图中,右击包涵约束的表,然后从火速菜单中选拔“约束”命令。只怕能够将含有约束的表张开表设计器,在表设计器中右击,然后选拔“约束”命令。

 

非空约束额语法规则如下:

澳门新萄京官方网站 6

暗中同意值对象是独立存款和储蓄的,删除表的时候,DEFAULT约束会自动删除,可是暗中认可值对象不会被剔除。

字段名   数据类型  not null

UNIQUE约束

创办暗许值对象后,需求将其绑定到某列只怕用户自定义的数据类型上。

定义数据表tb_emp六,钦命职员和工人的称呼不可能为空,sql语句如下:

该约束应用于表中的非主键列,UNIQUE约束保障1列要么多列的考题完整性,确认保证那些猎不会输入重复的值。举例,表中UserName列为主键,不过其中还包罗身份证号码列,由于全体身份证编号不容许出现重复,所以能够在此列上创设UNIQUE约束,确认保障不会输入重复的身份证编号。

 

CREATE TABLE tb_emp6

(

id INT(11)PRIMARY KEY,

NAME VARCHAR(25) NOT NULL,

deptld INT(11),

salary FLOAT,

CONSTRAINT fk_emp_dept2 FOREIGN KEY(deptid) REFERENCES tb_dept(id)

);

它与P奥迪Q7IMA奥德赛Y KEY约束的不一样之处在于,UNIQUE约束可以创设在四个列之上,而P昂CoraIMA智跑Y KEY约束在多个表中只好有3个。

重中之重操作:

  1. 使用唯壹性约束

确立UNIQUE约束,能够运用如下办法:

 

唯壹性约束须求该列唯1,允许为空,但不得不出现3个空值。唯壹约束能够保障1列如故几列不出新重复值。

1.

澳门新萄京官方网站:SQLServer约束介绍,数据表的基本操作。壹创设默许值对象

非空约束的语法规则如下:

在数据库关系图中右击将涵盖约束的表,然后从飞速菜单中选拔"属性"命令。

2绑定暗中同意值对象

一) 在概念完列之后平昔钦点唯1约束,语法规则如下:

 

3解除暗中认可值对象的绑定

字段名  数据类型  UNIQUE

-或-

4查看私下认可值对象

定义数据表tb_dept二,内定单位的名目唯一,sql语句如下:

为将含有约束的表张开表设计器,在表设计器中右击,然后从高效菜单中选拔"属性"命令。

伍删除暗许值对象

CREATE TABLE tb_dept2

(

id INT(11) PRIMARY KEY,

NAME VARCHAR(25) UNIQUE,

location VARCHAR(50)

);

2.

 

贰) 在概念完全部列之后钦命唯1约束,语法规则如下:

选择"索引/键"选项卡。

 

[ CONSTRAINT   < 约束名 >  ]   UNIQUE  (< 字段名>)

3.

1创设默许对象

定义数据表tb_澳门新萄京官方网站:SQLServer约束介绍,数据表的基本操作。dept三 ,钦定机构的名称唯1,sql语句如下:

选料"新建"命令。系统一分配配的名目出现在"索引名"框中。

能够选用CREATE DEFAULT语句成立默许对象。其语法格式如下:

CREATE TABLE tb_dept3

(

id INT(11)PRIMARY KEY,

NAME VARCHAR(22),

location VARCHAR(50),

CONSTRAINT STH UNIQUE(NAME)

);

4.

CREATE DEFAULT default  AS constant_expression 

UNIQUE 和  PLX570IMALX570Y KEY 的区分:二个表中能够有三个字段声明为UNIQUE,但只好有一个P福睿斯IMA瑞虎Y KEY注脚   注脚为PEscortIMAPRADOY KEY的列区别意有空值,不过申明为UNIQUE的字段允许空值(NULL)的留存。

在"列名"下张开列的列表,选用要将约束附加到的列。若要将封锁附加到多少个列,在承接行中挑选别的的列。

例如: create default d_grade as 1 

  1. 行使暗中认可约束

5.

 

默许约束钦赐某列的暗许值。要是男子同学较多,性别就足以默以为“男”。假设插入一条新的笔录风尚未为那么些字段赋值,那么系统会自行为那么些字段赋值为“男”。

选择"创建 UNIQUE"复选框。

贰绑定默许对象

默许约束的语法规则:

6.

私下认可对象创制后无法选择,必须首先将其绑定到某列可能用户自定义的数据类型上。其行使语法格式如下:

字段名   数据类型   DEFAULT    默许值

选择"约束"选项。

sp_bindefault [@defname = ] 'default', [@objname = ] 'object_name'   [, [@futureonly = ] 'futureonly_flag']

定义数据表tb_emp7,内定职员和工人的单位编号默感到111一,sql语句如下:

当保存表或提到图时,唯1约束即开立在数据库中。

其中: [, [@futureonly = ] ‘futureonly_flag’]仅在此之后将私下认可值绑定到用户定义的数据类型时才使用。

CREATE TABLE tb_emp7

(

id INT(11) PRIMARY KEY,

NAME VARCHAR(25) NOT NULL,

deptld INT(11) DEFAULT 1111,

salary FLOAT,

CONSTRAINT fk_emp_dept FOREIGN KEY( deptid )REFERENCES tb_dept(id)

);

当希望删除UNIQUE索引时,能够接纳如下步骤:

例如: exec sp_bindefault 'd_grade', ‘sc.grade' 

  1. 设置表的属性值自动扩大

1.

 

在数据库应用中使用中。平常希望在历次插入新记录时,系统自动生成字段的主键值。能够透过为表主键加多AUTO_INCREMENT关键字来兑现。默许的,在mysql中AUTO_INCREMENT的起始值是一,每新添一条记下,字段值自动加一.贰个表只好有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一片段。AUTO_INCREMENT约束的字段能够是别的整数类型(TINYINT,SMALLIN,INT,BIGINT等)。

在数据库关系图中,右击包涵约束列的表,然后从高速菜单中选取"索引/键"命令。

三清除暗中同意对象的绑定

设置唯一性约束的语法规则如下:

 

免除绑定可以运用sp_unbindefault存款和储蓄进程。其语法格式如下:

字段名   数据类型    AUTO_INCREMENT

-或-

sp_unbindefault [@objname = ] 'object_name'

定义数据表tb_emp8,内定职员和工人的号码自动递增,sql语句如下:

为含有约束的表展开表设计器,在表设计器中右击,然后从高速菜单中选拔"索引/键"命令。

例如: exec sp_unbindefault ‘sc.grade' 

CREATE TABLE tb_emp8

(

id INT(11) PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(25) NOT NULL,

deptid INT(11),

salsry FLOAT,

CONSTRAINT fb_emp_dept FOREIGN KEY (deptid) REFERENCES tb_dept(id));

2.

 

从"选定的目录"列表中挑选唯1约束。

4查看默许对象

3.

 

选择"删除"按钮。

exec sp_help d_grade 

百折不回,对于1列的UNIQUE约束,大家称为列级UNIQUE约束,对于多列的UNIQUE约束,大家誉为表级UNIQUE约束。上面给出列级UNIQUE约束的定义格式:

 

[CONSTRAINT constraint_name]
 UNIQUE [CLUSTERED | NONCLUSTERED]
  [WITH [FILLFACTOR = fillfactor]]
  [ON {filegroup | DEFAULT}]

exec sp_helptext d_grade 

使用UNIQUE约束的经过中,还亟需留意,倘诺要对允许空值的列强制唯壹性。能够允许空值的列附加UNIQUE约束,而只好将主键的自律附加到差别意空值的列。但UNIQUE约束不允许表中受拘束列有壹行以上的值同有时常间为空。

 

比方说,下边语句为TB_UNIQUE_CONSTRAINT表添加UNIQUE约束:

 

ALTER Table TB_UNIQUE_CONSTRAINT
 ADD
  CONSTRAINT UN_PHONE UNIQUE (username, phone)

五刨除暗许对象

FOREIGN KEY约束

在剔除暗中同意对象从前,首先要认可默许对象已经解除绑定。删除暗许对象使用DROP DEFAULT语句。其语法格式如下:

FOREIGN KEY约束为表中的1列恐怕多列数据提供数据完整性参照。日常是与P君越IMASportageY KEY约束依旧UNIQUE约束同不时候选拔的。

DROP DEFAULT {default} [,…n]

例如,在BookStores表中的author_id列以及title_id列分别参照了Authors表中的author_id列以及Titles表的title_id列。在向BookStores表中插入新行或改造当中的数额时,那两列的数据值必须在Authors表和Titles表中一度存在,不然将不可能进行插入也许修改操作。

例如: drop default d_grade 

在采用FOREIGN KEY约束是,必要注意以下几点:

 

1. 一个表最多只能参照253个不同的数据表,每个表也最多只能有253个FOREIGN KEY约束。
2. FOREIGN KEY约束不能应用于临时表。
3. 在实施FOREIGN KEY约束时,用户必须至少拥有被参照表中参照列的SELECT或者REFERENCES权限。
4. FOREIGN KEY约束同时也可以参照自身表中的其他列。
5. FOREIGN KEY约束,只能参照本身数据库中的某个表,而不能参照其他数据库中的表。跨数据库的参照只能通过触发器来实现。

2.规则

 

规则用以限制存款和储蓄在表中或用户自定义数据类型的值,是单身的数据库对象。

将规则绑定到列或用户自定义数据类型时,规则才起效果。

表中的每列或各样用户定义数据类型只好和一个规则绑定。但每列可使用多个CHECK约束。

如果要去除规则,应规定规则已经排除绑定。

 

壹成立规则

 

CREATE RULE语句,其语法格式如下:

CREATE RULE rulename AS condition_expression

 

中间各参数含义如下:

rulename  是新规则的称号。

condition_expression  是概念规则的准绳。

例如:create rule r_grade as @grade<=100 and @grade>=0 

 

2绑定规则

 

使用sp_bindrule存款和储蓄进度,语法格式为:

sp_bindrule [@rulename = ] 'rulename',  [@objname = ]  ‘object_name’

例如: exec sp_bindrule 'r_grade','sc.grade‘ 

 

注意:

平整无法绑定到text、image或timestamp列。

假诺规则与绑定的列不合营,SQL Server将在插入值时回来错误音讯。

未化解绑定的规则,假若再度将3个新的平整绑定到列,旧的平整将活动被铲除,唯有近些日子三回绑定的规则有效

万一列中蕴藏CHECK约束,则CHECK约束优先。

 

3拔除规则的绑定

 

使用sp_unbindrule存款和储蓄进度。语法格式如下:

sp_unbindrule [@objname = ] 'object name'  [,[@futureonly = ] 'futureonly_ lag']

例如:  

exec sp_unbindrule 'sc.grade' 

 

四刨除规则

首先要解除规则的绑定,然后技艺去除绑定

例如:drop rule r_grade 

  

三、约束

 

SQL Server 二〇〇九提供的威迫数据完整性的机制:

 

①PRIMARY KEY 约束

②FOREIGN KEY 约束

③UNIQUE 约束

④CHECK 约束

⑤NOT NULL(非空性)

⑥IDENTITY 约束

 

利用约束优先于采纳触发器、规则和暗许值

询问优化器使用约束定义生成高质量的询问施行安插

 

 

①PRIMARY KEY 约束:

 

能够在底下情形下利用:

(壹)作为表定义的一有的在创立表时成立。

(二)增多到尚没有P陆风X8IMA奥德赛Y KEY约束的表中(三个表只可以有2个P昂CoraIMAOdysseyY KEY约束)。

(叁)借使已有P汉兰达IMA昂CoraY KEY约束,则可对其进行修改或删除。

 

特点:

(壹)每一种表都应有3个主键,主键值唯一。

(二)主键内的其他列不能够为空(null)。

(三)要选拔TRansact-SQL修改PRAV四IMAOdysseyY KEY,必须先删除现成的PHighlanderIMA大切诺基Y KEY约束,然后再重新创建。

(肆)创制表时钦点主键,sql server会自动成立3个名字为“PK_”且后跟表名的主键索引。如若不钦点索引类型,则默以为聚焦索引。该索引只幸亏剔除与它保持联系的表或主键约束时能力去除。

 

 

②FOREIGN KEY约束

 

标志表之间的涉及,用于强制参照完整性,为表中壹列或多列提供参考完整性。 FOREIGN KEY约束也得以参照自己表中的别的列(举例:学生表中的“班长学号”列参照“学号”列),这种参照称为自参照。

 

FOREIGN KEY约束能够在下边情况下使用:

 

(壹)作为表定义的一部分在创设表时创造。

(二)倘若现存表的某列与另贰个表已有的P哈弗IMA昂科雷Y KEY约束或UNIQUE约束相关联,则可向现存表加多FOREIGN KEY约束。

(三)对已部分FOREIGN KEY约束举行更换或删除。

 

利用FOREIGN KEY约束,应小心的多少个难点:

 

(1)各样表最多能够有二5一个FOREIGN KEY约束。

(贰)FOREIGN KEY约束只好参照同一个数据库中的表,而不可能参照别的数据库中的表。

(三)FOREIGN KEY子句中的列数目和种种列内定的数据类型必须和REFERENCES子句中的列一样。

(四)FOREIGN KEY约束不能够自动制造索引。

(伍)在临时表中,无法利用FOREIGN KEY约束。

(陆)倘若叁个外键未有相应的主键值,则不能够插入带该值的行。

 

 

③UNIQUE约束 

 

(一)UNIQUE约束在列集内强制实践值的唯一性。

(二)对于UNIQUE约束中的列,表中不容许有两行李包裹涵一样的非空值。

(三)SQL Server创设了UNIQUE约束后会自动创设UNIQUE索引来强制UNIQUE约束的唯1性要求。

(四)假如插入重复行,SQL Server将回来错误音信。

(5)向表中的依存列加多UNIQUE约束时,暗中认可景况下SQL Server 2010检查列中的现成数量确认保证除NULL外的装有值均唯一。

(6)UNIQUE约束与主键约束的分别: 主键也强制施行唯1性,但主键不允许空值,而且每一个表中主键只可以有二个,但UNIQUE列可以有多少个,能够取空值。

(七)UNIQUE约束优先于唯一索引。

 

 

④CHECK约束

 

(一)CHECK约束通过限制用户输入的值来加强域完整性。

(二)它钦点应用于列中输入的全数值的布尔(取值为TRUE或FALSE)搜索条件,拒绝全体不取值为TRUE的值。

(3)可以为每列内定八个CHECK约束。

 

⑤IDENTITY约束 

 

活动编号约束又称作标志列,采取数字编号的点子挨个扩充多个增量。是为那么些数字顺序递增的列准备的束缚,能够活动实现数值加多。

 

(1)标志种子

(二)标志增量

(3)标记列的数据类型

 

 

4、完整性约束命名子句

 

完整性约束命名子句的格式:

CONSTRAINT <完整性约束原则名>[PRIMARY KEY短语|FOREIGN KEY 短语|CHECK短语]

 

例:创建学生登记表Student二,供给学号在一千0至9999玖以内,姓名无法取空值,年龄小于30,性别‘男’或‘女’:

1 CREATE TABLE Student2(
2        sno   int CONSTRAINT C1 CHECK (sno BETWEEN 10000 AND 99999),
3        sname  CHAR(8)  CONSTRAINT C2 NOT NULL,
4        sage  int  CONSTRAINT C3  CHECK (sage<30),
5        ssex   VARCHAR(2)  CONSTRAINT C4 CHECK (ssex IN ('男', '女')),
6        CONSTRAINT SK PRIMARY KEY(Sno)
7 );    

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:SQLServer约束介绍,数据表

关键词: