SQL中的几种约束的创建与删除
2017-03-11 22:39
197 查看
约束是SQL Server提供的自动保持数据库完整性的一种方法, 它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。
一、主键约束
![](https://img-blog.csdn.net/20170311211037786?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ0NTVVhXWg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
“`
二、FOREIGN KEY 外键约束
例如,因为销售订单和销售人员之间存在一种逻辑关系,所以 AdventureWorks2008R2 数据库中的 Sales.SalesOrderHeader 表含有一个指向 Sales.SalesPerson 表的链接。SalesOrderHeader 表中的 SalesPersonID 列与 SalesPerson 表中的主键列相对应。SalesOrderHeader 表中的 SalesPersonID 列是指向 SalesPerson 表的外键。
![](https://img-blog.csdn.net/20170311212636365?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ0NTVVhXWg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三、UNIQUE 约束 唯一约束
4、CHECK 约束 检查约束
注:不能在 text、ntext 或 image 列上定义 CHECK 约束
5、DEFUALT 定义 默认约束
![](https://img-blog.csdn.net/20170311221511542?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ0NTVVhXWg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
约束可分为以下几种: 1、PRIMARY KEY 主键约束 2、FOREIGN KEY 外键约束 3、UNIQUE 约束 唯一约束 4、CHECK 约束 检查约束 5、DEFUALT 定义 默认约束
一、主键约束
如果对多列定义了 PRIMARY KEY 约束,则一列中的值可能会重复,但来自 PRIMARY KEY 约束定义中所有列的任何值组合必须唯一。 如图:
主键约束的定义: 1. 列中不允许有空值 2. 列中不允许有重复的值,即主键列中每个值都是唯一的。 3. 如果另一个表中的 FOREIGN KEY 约束引用了 PRIMARY KEY 约束,则必须先删除 FOREIGN KEY 约束。 4. 表包含应用于自身的 PRIMARY XML 索引 主键的创建: 1、 在创建表时创建 PRIMARY KEY 约束 以下是AdventureWorks2008R2 示例数据库中 Employee 表(允许系统提供约束名)的 BusinessEntityID 列具有聚集索引的 PRIMARY KEY 约束的列定义
BusinessEntityID int PRIMARY KEY CLUSTERED
2、为现有表创建或删除 PRIMARY KEY 约束
USE AdventureWorks2008R2; GO ALTER TABLE Production.TransactionHistoryArchive WITH NOCHECK ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID) WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON); GO
3、删除主键约束 使用表设计器,在表网格中右键单击包含主键的行,再选择“移除主键”以将该设置从启用切换到禁用。 或者新建查询文件,键入 USE AdventureWorks2008R2; GO --修改表Production ALTER TABLE Production.TransactionHistoryArchive DROP CONSTRAINT PK_TransactionHistoryArchive_TransactionID GO
“`
二、FOREIGN KEY 外键约束
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义 FOREIGN KEY 约束来创建外键。
例如,因为销售订单和销售人员之间存在一种逻辑关系,所以 AdventureWorks2008R2 数据库中的 Sales.SalesOrderHeader 表含有一个指向 Sales.SalesPerson 表的链接。SalesOrderHeader 表中的 SalesPersonID 列与 SalesPerson 表中的主键列相对应。SalesOrderHeader 表中的 SalesPersonID 列是指向 SalesPerson 表的外键。
外键约束要遵循引用完整性原则 建立外键约束的基本格式为: FOREIGN KEY(列名) REFERENCES 被参照表名(列名) 例: 1、创建表时添加外键约束 SalesPersonID int NULL REFERENCES SalesPerson(BusinessEntityID) 2、修添改表时加约束,显示指定外键约束两个表中列名不必相同 FOREIGN KEY (SalesPersonID) REFERENCES SalesPerson(BusinessEntityID) 3、删除外键 ALTER TABLE Person.ContactBackup DROP CONSTRAINT FK_ContactBacup_Contact
三、UNIQUE 约束 唯一约束
唯一约束可确保在非主键列中不输入重复的值,可以对一个表定义多个唯一约束 1、在建表时创建唯一约束: Name nvarchar(100) NOT NULL UNIQUE NONCLUSTERED 2、在现有表中创建 UNIQUE 约束 新建查询,键入 USE DATABASE1 --使用DATABASE1数据库 ALTER TABLE T1 --修改表T1 CONSTRAINT UQ_ID UNIQUE(ID) --为名为ID列的唯一约束 3、删除唯一约束 ``` CREATE TABLE dbo.doc_exc ( column_a INT CONSTRAINT my_constraint UNIQUE) ; --指定表和唯一约束的列 GO ALTER TABLE dbo.doc_exc DROP CONSTRAINT my_constraint ; GO ```
4、CHECK 约束 检查约束
检查约束常用来检查某列的元素值是否在合理的范围之内,CHECK 约束可以强制域的完整性. 1、在创建表时创建检查约束 CreditRating int NOT NULL CHECK (CreditRating >= 1 and CreditRating <= 5), --将CreditRating 的值约束在1到5之间 2、在修改表时创建约束 CREATE TABLE dbo.doc_exd --将使用 WITH NOCHECK 以避免根据现有行验证该约束 ALTER TABLE dbo.doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (CreditRating >= 1 and CreditRating <= 5),
注:不能在 text、ntext 或 image 列上定义 CHECK 约束
3、删除CHECK约束 ALTER TABLE doc_exd.CreditRating DROP CONSTRAINT CK_CreditRating ;
5、DEFUALT 定义 默认约束
默认约束强制数据完整性,记录中的每列均必须有值,即使该值是 NULL。 使用默认约束可在表中的列元素缺省的情况下(未填入)为列中的每个元素设置默认值。 DEFAULT 定义和列的为空性所定义的列中的值可归纳如下表中所示:
1、在建表时添加默认约束 Position nvarchar(20) NULL --为职位赋一个默认的字符串 DEFAULT 'New Position - title not formalized yet', 2、在现有表中添加默认约束 ALTER TABLE dbo.T1 ADD CONSTRAINT Position DEFAULT 'New Position - title not formalized yet' FOR Position ; 3、删除默认值 语法DROP DEFAULT { [ schema_name . ] default_name } [ ,...n ] [ ; ] USE AdventureWorks2008R2; GO IF EXISTS (SELECT name FROM sys.objects WHERE name = 'datedflt' AND type = 'D') DROP DEFAULT datedflt GO
相关文章推荐
- 使用sql语句创建和删除约束示例代码
- 创建与删除SQL约束或字段约束。 -----http://www.cnblogs.com/hanguoji/archive/2006/11/17/563871.html
- 创建与删除SQL约束或字段约束
- 使用SQL语句创建和删除约束
- 使用SQL语句创建和删除约束
- 使用SQL语句创建和删除约束
- 使用SQL语句创建和删除约束
- 创建与删除SQL约束或字段约束。
- 创建与删除SQL约束或字段约束。
- 【转】使用SQL语句创建和删除约束
- 使用SQL语句创建和删除约束
- 【SQL Server DBA】维护语句:删除并创建外键约束、获取建表语句
- 创建与删除SQL约束或字段约束
- 使用sql语句创建和删除约束
- 创建与删除SQL约束或字段约束
- 使用sql语句创建和删除约束示例代码
- 使用sql语句创建和删除约束
- 创建与删除SQL约束或字段约束
- 使用SQL语句创建和删除约束
- 创建与删除SQL约束或字段约束