SQL Server 约束
来源:互联网 发布:资金互助合作社软件 编辑:程序博客网 时间:2024/05/21 22:33
基本表的完整性约束分为列级约束条件和表级约束条件。
- 列级约束条件
列级约束条件是对某一个特定列的约束,包含在列定义中,可以直接跟在该列的其他定义之后,用空格分隔,不用指定列名。
- 表级约束条件
表级约束条件与列定义相互独立,不包括在列定义中,通常用于对两个或两个以上的列一起进行约束。
基本语法格式:
[ CONSTRAINT <约束名> ] < 约束类型 >
约束名是用户自定义的的名称,同一个数据库的约束名不能重复。如果用户在定义约束条件时没有指定约束名,数据库系统会给定一个不重名的约束名。
1. 主键约束
在表中定义一个主键值,用来唯一确定表中的每一条记录。每个表中只能有一个PRIMARY KEY 约束,并且主键约束的列不能为空值。如果主键约束定 义不止在一列上,则一列中的值可以重复,但在主键约束中,所有列的组合必须唯一。
--列级约束-- [ CONSTRAINT <约束名>] PRIMARY KEYCREATE TABLE student( ID INT PRIAMRY KEY , --主键 name VARCHAR(20) UNIQUE, sex CHAR(1))
--表级约束--[ CONSTAINT <约束名>] PRIMARY KEY (<列名>[ {,列名} ])--定义一个课程表,由学号(ID),课程号(CID),分数构成。学号和课程号构成主键。CREATE TABLE course( ID INT NOT NULL, CID INT NOT NULL, SCORE INT, CONSTRAINT C_PK PRIMARY KEY(ID,CID) )PRIMARY KEY 和 UNIQUE 的区别
- 一个基本表只能定义一个 PRIMARY KEY 约束,但可定义多个 UNIQUE 约束。
- 对于指定为 PRIMARY KEY 是一个列或多个列的组合,其中任何一个列都不能为空值;对于 UNIQUE 所约束的唯一码,则允许空值,但只能有一个空值。
- 不能为同一个列或一组列既定义 PRIMARY KEY 约束,又定义 UNIQUE 约束。
2. 唯一性约束( UNIQUE )
唯一性约束确保在非主键列中不输入重复的值,用于指定一个或多个列的组合具有唯一性。
- 使用唯一性约束的字段允许空值,但是当和参与UNIQUE约束的任何值一起使用时,每列只允许一个空值。
- 一个表中允许有多个唯一性约束。
- 可以把唯一性约束定义在多个字段上。
- 唯一性约束用于强制在指定字段上创建一个唯一性索引。
- 默认情况下,创建的索引为非聚集索引。
- UNIQUE 即可用于列索引,也可用于表索引。
--UNIQUE 列级约束--[ CONSTRAINT <约束名>] UNIQUECREATE TABLE student( ID INT NOT NULL, name VARCHAR(20) UNIQUE, --name 为唯一码 sex CHAR(1))
--UNIQUE 表级约束--[ CONSTRAINT 约束名>] NUIQUE (<列名> [ {,<列名>} ])CREATE TABLE student( ID INT NOT NULL, name VARCHAR(20) UNIQUE, sex CHAR(1), CONSTRAINT S_UNIQUE UNIQUE (name,sex) --定义name 和 sex 为唯一码)
3. 检查约束
对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。检查约束通过数据的逻辑表达式确定有效值。
- 一个列级检查约束只能与限制的字段有关,一个表级检查约束只能与限制的表中字段有关。
- 一个表中可以定义多个检查约束。
- 每个CREATETABLE 语句中的每个字段只能定义一个检查约束。
- 在多个字段上定义检查约束,则必须将检查约束定义为表级约束。
- 当执行INSERT 语句或UPDATE 语句时,检查约束将验证手机。
- 检查约束中不能包含子查询。
--[ CONSTRAINT <约束名>] CHECK (<条件>)CREATE TABLE course( ID INT , CID INT , SCORE INT CHECK (SCORE >=0 AND SCORE <=100) --SCORE 范围为 0-100)
4. 默认约束
默认约束指定在输入操作中如果没有提供输入值时,系统自动指定插入值,即使该值是空值。比如默认密码。
- 每个字段只能定义一个默认约束。
- 如果定义的默认值长于其对应字段的允许长度,则输入到表中的默认值将被截断。
- 不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上。
- 如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则该字段不允许有默认值。
CREATE TABLE course( ID INT , CID INT , SCORE INT DEFAULT 90 --默认90)
5. 外键约束
- 外键约束提供了字段参照完整性。
- 外键从句中的字段数目和每个字段指定的数据类型都必须和REFERENCES从句中的字段相匹配。
- 外键约束不能自动创建索引,需要用户手动创建。
- 用户想要改变外键约束的数据,必须只使用REFERENCES从句,不能使用外键子句。
- 一个表中最多可以有31个外键。
- 在临时表中,不能使用外键约束。
- 主键和外键的数据类型必须严格匹配。
--[ CNSTRAINT <约束名>] FOREIGN KEY (<外码>) REFERENCES <被参照关系名> (<列名>)--course 表,ID ,CID 为 course 的外码CREATE TABLE course( ID INT FOREIGN KEY (ID) REFERENCES student (ID), CID INT FOREIGN KEY (CID) REFERENCES course (CID), SCORE INT, CONSTRAINT SC_PK PRIMARY KEY (ID,CID))
6.NULL / NOT NULL 约束
判断是否允许该字段的值取取NULL值。
- 只能用于定义列约束,如果某个列没有指定NULL/ NOT NULL约束时,默认为NULL。
- NULL值不是0,也不是空白,更不是填入字符串“NULL”,不是表示“不知道”、“不确定”或“没有数据”的意思,不占据任何存储空间。
- 当某一字段的值一定要输入才有意义的时候,该字段可设置为“ NOT NULL ”。
--[ CONSTRAINT <约束名>] [NULL | NOT NULL]CREATE TABLE student( ID INT NOT NULL, name VARCHAR(20), sex CHAR(1))
阅读全文
0 0
- sql server添加约束
- sql server约束笔记
- SQL Server约束
- SQL Server 约束
- sql server 约束 查找
- SQL server 约束大全
- sql server 约束
- SQL Server 约束
- SQL Server 约束
- SQL Server 约束
- sql server 2005 的约束
- SQL Server数据库的约束
- Sql server 2005中的约束
- SQL Server 2005 UNIQUE 约束
- SQL Server 约束 修改表
- sql server 字段设置约束
- Sql server数据完整性约束
- SQL server添加主外键约束
- HDU 5057 Argestes and Sequence 离线处理+树状数组
- caffe添加新的层
- 多线程
- java的访问权限控制
- 软件工程点菜系统的需求分析
- SQL Server 约束
- 智能指针
- 软件工程导论作业2.3
- C语言学习——数据类型
- 北师大珠海分校2017国庆欢乐赛题解
- D_D系统构建-loader保护模式修改
- 智能仓储机器人仿真建模总结
- 开关灯类问题 (高斯消元)
- c++11 decltype