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

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

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

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

约束的三种类型:

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

具体实现方法:

主键约束,外键约束,唯一约束,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>

修改约束

先删除约束,后再添加

最新文章

  1. 关于BeanUiles.copyPropertis()的用法
  2. cri-o 创建非infra容器
  3. 集合框架null与size=0
  4. 【转】linux下cpio命令使用
  5. Oracle怎样方便地查看报警日志错误
  6. 【Java接口实现动态加载不同的类】
  7. elasticsearch基础概念
  8. Struts(十二):异常处理:exception-mapping元素
  9. Java实现内部类
  10. MVC基本开发介绍 (1)列表展示
  11. python format()用法
  12. 【XSY2669】归并排序 树状数组 简单组合数学
  13. VS2013编译报错error C4996: &#39;sprintf&#39;: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
  14. Hive记录-hive权限控制
  15. 数据渲染模板引擎,template-web的使用
  16. The MySQL Server
  17. TensorFlow:tf.nn.max_pool实现池化操作
  18. DB2序列和主键自增长
  19. 命令行运行python项目文件,报错:ModuleNotFoundError: No module named &#39;xxxx&#39; 解决办法
  20. Twitter OA prepare: even sum pairs

热门文章

  1. ecshop首页调用评论及图片
  2. 【英语】Bingo口语笔记(26) - Take系列
  3. Java之路
  4. Java中String为什么是final
  5. 实现LoaderCallbacks接口动态循环加载网上图片并展示在手机屏幕上 ...
  6. GenericRepository
  7. js内置对象-Date对象
  8. ASP.NET MVC3细嚼慢咽---(1)网站创建与发布
  9. C字符串和C++中string的区别 &amp;&amp;&amp;&amp;C++中int型与string型互相转换
  10. Spring Batch的事务-Part 1:基础