目的:通过在列级或表级设置约束,确保数据符合某种数据完整性规则

实现:数据库主动地检查维护数据的完整性

手段:约束,数据类型,触发器

----------------------------------------------------------------------------------------------------------------------------------------------------

约束的三种类型:

实体约束,域约束,参照完整性约束

具体实现方法:

主键约束,外键约束,唯一约束,CHECK约束,DEFAULT约束,规则,默认值

[归类]

域约束:对于列而言,确保列的数据满足特定的标准。CHECK约束,DEFAULT约束,规则和默认值

实体约束:对于行而言,只关心特定的行,每一行都的特定列都有唯一值。主键约束,唯一约束

参照完整性约束:某列的值必须与其他列的值匹配。外键约束

----------------------------------------------------------------------------------------------------------------------------------------------------

区别约束和规则、默认值:

规则和默认值的应用较早于CHECK和DEFAULT约束,它们是较老的SQL备用约束的一部分,主要是为了向后兼容而使用。

约束:是一个表的特征,本身没存在形式;

规则、默认值:是单独定义,然后绑定到表上。

----------------------------------------------------------------------------------------------------------------------------------------------------

[语法]

添加约束——使用 ALTER TABLE  <table name>

ALTER TABLE <table name>

ADD CONSTRAINT <constraint name>

<constraint type> <constraint parameters…>

外键约束

<column name><data type><nullability>

FOREIGN KEY REFERENCES <table name>(<column name>)

[ON DELETE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]

[ON UPDATE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]

ALTER TABLE <table name>

ADD CONSTRAINT <constraint name>

FOREIGN KEY (<column name>) REFERENCES <table name>(<column name>)

唯一约束

<column name> <data type> <nullabiliby>

UNIQUE

ALTER TABLE <table name>

ADD CONSTRAINT <constraint name>

UNIQUE (<column name>)

CHECK约束

ALTER TABLE <table name>

ADD CONSTRAINT <constraint name>

CHECK

(<rule…>)

DEFAULT约束

<column name> <data type> <nullability>

DEFAULT <default value>

ALTER TABLE <table name>

ADD CONSTRAINT <default name>

DEFAULT <value> for <column name>

在创建约束时忽略无效的数据

利用SQL Server创建约束时,如果现有的数据无法满足约束要求,则无法创建该约束。有两种解决办法:1)修改现有的数据,使其符合约束要求;2)在ALTER语句中添加WITH NOCHECK 选项:

ALTER TABLE <table name>

WITH NOCHECK

ADD CONSTRAINT <constraint name>

<constraint type>..

临时禁用已存在的约束

ALTER TABLE <table name>

NOCHECK

CONSTRAINT <constraint name>

启用已禁止的约束

ALTER TABLE <table name>

CHECK

CONSTRAINT <constraint name>

删除约束

alter table <tablename>
 drop constraint <constraintname>

修改约束

先删除约束,后再添加

[读书笔记]SQL约束的更多相关文章

  1. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  2. 读书笔记--SQL必知必会--Tips

    01 - 如何获取SQL命令帮助信息 官方手册 help 或 help command MariaDB [(none)]> help General information about Mari ...

  3. 读书笔记--SQL必知必会22--高级SQL特性

    22.1 约束 约束(constraint),管理如何插入或处理数据库数据的规则. DBMS通过在数据库表上施加约束来实施引用完整性. 大多数约束是在表定义中定义的. 22.1.1 主键 主键,用来保 ...

  4. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

    1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...

  5. 读书笔记 SQL 事务理解

    事务的ACID属性 Atomicity 原子性 每个事务作为原子单元工作(即不可以再拆分),也就是说所有数据库变动事务,要么成功要么不成功. SQL Server把每个DML或者 DDL命令都当做一个 ...

  6. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  7. 读书笔记--SQL必知必会01--了解SQL

    1.1 数据库基础 数据库(datebase) 保存有组织的数据的容器(通常是一个文件或一组文件),是一个以某种有组织的方式存储的数据集合. 数据库管理系统(DBMS,Data Base Manage ...

  8. 读书笔记--SQL必知必会02--检索数据

    2.1 SELECT语句 SELECT语句的用途是从一个或多个表中检索信息. 关键字(keyword) 作为SQL组成部分的保留字.关键字不能作为表或列的名字. 2.2 检索单个列 多条SQL语句必须 ...

  9. 读书笔记--SQL必知必会03--排序检索数据

    3.1 排序数据 子句(clause) SQL语句由子句构成.一个子句通常由一个关键字加上所提供的数据组成. ORDER BY子句可以取一个或多个列的名字,将SELECT语句检索出的数据进行排序. O ...

随机推荐

  1. (六)6.17 Neurons Networks convolutional neural network(cnn)

    之前所讲的图像处理都是小 patchs ,比如28*28或者36*36之类,考虑如下情形,对于一副1000*1000的图像,即106,当隐层也有106节点时,那么W(1)的数量将达到1012级别,为了 ...

  2. textfield tips

    关于autoSize和align属性比较好的解释,摘录下. autoSize deals with expanding the bounds of the TextField to ensure al ...

  3. 用Python抓网页的注意事项

    用Python编一个抓网页的程序是非常快的,下面就是一个例子: import urllib2 html = urllib2.urlopen('http://blog.raphaelzhang.com' ...

  4. DB2因表空间不够产生load表失败

    今天下午恢复表的时候发现出现错误: SQL3520W  Load Consistency Point was successful. SQL3110N  The utility has complet ...

  5. 抛弃EF,20分构建一个属于自己的ORM框架

    Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11  文章 - 0  评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...

  6. Storage Keepers

    题意: n个仓库,m个人申请看管仓库,一个人可以看管多个仓库,一个仓库只能被一个人看管,每个人都有一个能力值,他看管的仓库的安全度U是能力值/看管仓库数,安全线L是U中的最小值,有多少能力公司发多少工 ...

  7. db file sequential read (数据文件顺序读取)

    转载:http://www.dbtan.com/2010/04/db-file-sequential-read.html db file sequential read (数据文件顺序读取): db ...

  8. Oracle优化器介绍

    Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...

  9. IOS中UIScrollView的详细使用

    UIScrollView 是可以滚动的View 要想让UIScrollView可以滚动,必须设置UIScrollView的contentSize contentSize : 表示UIScrollVie ...

  10. Spring Batch的事务-Part 1:基础

    原文 https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-1-the-basics/ This is th ...