[读书笔记]SQL约束
目的:通过在列级或表级设置约束,确保数据符合某种数据完整性规则
实现:数据库主动地检查维护数据的完整性
手段:约束,数据类型,触发器
----------------------------------------------------------------------------------------------------------------------------------------------------
约束的三种类型:
实体约束,域约束,参照完整性约束
具体实现方法:
主键约束,外键约束,唯一约束,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约束的更多相关文章
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 读书笔记--SQL必知必会--Tips
01 - 如何获取SQL命令帮助信息 官方手册 help 或 help command MariaDB [(none)]> help General information about Mari ...
- 读书笔记--SQL必知必会22--高级SQL特性
22.1 约束 约束(constraint),管理如何插入或处理数据库数据的规则. DBMS通过在数据库表上施加约束来实施引用完整性. 大多数约束是在表定义中定义的. 22.1.1 主键 主键,用来保 ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理
1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...
- 读书笔记 SQL 事务理解
事务的ACID属性 Atomicity 原子性 每个事务作为原子单元工作(即不可以再拆分),也就是说所有数据库变动事务,要么成功要么不成功. SQL Server把每个DML或者 DDL命令都当做一个 ...
- 读书笔记--SQL必知必会--建立练习环境
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
- 读书笔记--SQL必知必会01--了解SQL
1.1 数据库基础 数据库(datebase) 保存有组织的数据的容器(通常是一个文件或一组文件),是一个以某种有组织的方式存储的数据集合. 数据库管理系统(DBMS,Data Base Manage ...
- 读书笔记--SQL必知必会02--检索数据
2.1 SELECT语句 SELECT语句的用途是从一个或多个表中检索信息. 关键字(keyword) 作为SQL组成部分的保留字.关键字不能作为表或列的名字. 2.2 检索单个列 多条SQL语句必须 ...
- 读书笔记--SQL必知必会03--排序检索数据
3.1 排序数据 子句(clause) SQL语句由子句构成.一个子句通常由一个关键字加上所提供的数据组成. ORDER BY子句可以取一个或多个列的名字,将SELECT语句检索出的数据进行排序. O ...
随机推荐
- 【英语】Bingo口语笔记(19) - 如何用英语叙旧
- php redis扩展
安装redis扩展,一定要弄清楚自己的php版本 echo phpinfo(); 查看php信息. 页面搜索Compiler,可以获取自己的VC版本
- ANDROID5.0触摸屏校准
1.校准原理: 1)首先生成校准用的参数,可以适用tslib生成校准参数,也可以使用校准app生成:使用校准app进行校准对使用者要求比较低,使用者可以不用学习复杂的命令:本文使用app方式 2)生成 ...
- C#实现CAD数据转shape或mdb
jojojojo2002 原文C#实现CAD数据转shape或mdb 本文所指的CAD数据为不带空间参考和扩展数据的数据.如果CAD带了空间参考或是扩展属性数据的话,就要采用图形和属性分离的方法转CA ...
- 对JAVA集合进行遍历删除时务必要用迭代器
java集合遍历删除的方法: 1.当然这种情况也是容易解决,实现方式就是讲遍历与移除操作分离,即在遍历的过程中,将需要移除的数据存放在另外一个集合当中,遍历结束之后,统一移除. 2.使用Iterato ...
- 顺序表的基本操作(C)
在顺序存储结构实现基本操作:初始化.创建.插入.删除.查找.遍历.逆置.合并运算. 运行示例: 请输入线性表La的长度: 请输入线性表La中的元素(共5个) *** 此时线性表La中的元素 *** * ...
- ansible安装及问题解决
本文主要用来安装ansible,在进行安装的时候,也可以使用其他的版本进行安装,本文主要讲述安装ansible的步骤,还有常用问题的解决. 1.查看python版本 由此可以看到python的版本为2 ...
- mapreduce编程模型你知道多少?
上次新霸哥给大家介绍了一些hadoop的相关知识,发现大家对hadoop有了一定的了解,但是还有很多的朋友对mapreduce很模糊,下面新霸哥将带你共同学习mapreduce编程模型. mapred ...
- 数往知来 JavaScript<十三>
一.javaScript 语法:大小写敏感,弱类型(所有类型都用var进行引导.声明) 写在<script></script>标签里 不可以放在title里 var num= ...
- ps制作哈7海报字体
模仿也需要较强的功底和分析思路.如下面的教程,作者模仿的是电影海报字.文字构造虽不复杂,不过思路不对的话就容易走弯路.最终效果 1.先来分析文字的构造,大致由两部分组成,一部分是浮雕字,另一部分是质感 ...