读书笔记--SQL必知必会22--高级SQL特性
2016-12-31 23:36
183 查看
22.1 约束
约束(constraint),管理如何插入或处理数据库数据的规则。DBMS通过在数据库表上施加约束来实施引用完整性。
大多数约束是在表定义中定义的。
22.1.1 主键
主键,用来保证一列(或一组列)的值唯一标识表中的每一行。
有了主键,可以安全地UPDATE或DELETE特定行。
任意两行的主键都不相同。
每行都具有一个主键值(即列中不允许NULL值)。
主键值不能重用。如果从表中删除某一行,其主键值不能分配给新行。
22.1.2 外键
外键是表中的一列,其值必须列在另一表的主键中。
外键有助防止意外删除。在定义外键后,DBMS不允许删除在另一个表中具有关联的行。
有些DBMS支持称为级联删除(cascading delete)的特性。如果启用,该特性在从一个表中删除行时删除所有相关的数据。
22.1.3 唯一约束
唯一约束用来保证一列(或一组列)中的数据时唯一的。
不同于主键,唯一约束列可包含NULL值、可修改或更新、可重复使用、不能用来定义外键。
表可以包含多个唯一约束,但每个表只允许一个主键。
22.1.4 检查约束
检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。
检查最大值或最小值
指定范围
只允许特定的值
检查约束在数据类型内又做了进一步的限制,可以确保数据有效。
有些DBMS允许用户自定义数据类型,可以在定义数据类型时包含检查约束,然后将此数据类型用于表的定义。
22.2 索引
索引用来排序数据以加快搜索和排序操作的速度。索引必须唯一命名。
可以在一个或多个列上定义索引,使DBMS保存其内容的一个排过序的列表。
DBMS搜索排过序的索引,找出匹配的位置,然后检索这些行。
索引改善检索操作的性能,但降低数据操作的性能
索引数据可能占用大量存储空间
索引适用取值较多的数据过滤和排序
索引中可以定义多个列
表数据的变化可能会导致索引难以长时间高效适用,建议定期检查索引并调整。
22.3 触发器
触发器是特殊的存储过程,在特定的数据库活动发生时自动执行。触发器可以与特定单个表上的INSERT、UPDATE和DELETE操作(或组合)相关联。
常见用途:
保证数据一致
基于某个表的变动在其他表上执行活动
进行额外的验证并根据需要回退数据
计算列的值或更新时间戳
不同的DBMS的触发器定义和语法差异巨大。
一般来说,约束的处理比触发器快,建议使用约束。
22.4 数据库安全
任何安全系统的基础都是用户授权和身份确认。大多数DBMS利用提供给管理员的管理机制授予或限制对数据的访问。
安全性使用SQL的GRANT和REVOKE语句来管理。
大多数DBMS也提供了交互式的管理实用程序。
相关文章推荐
- SQL 必知必会·笔记<20>高级SQL特性
- SQL必知必会 笔记 第二十二章 了解高级SQL特性
- LINQ to SQL语句之动态查询高级特性
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- javascript高级程序设计(第3版) 读书笔记1 基本概念
- 高质量程序设计指南-c/c++语言:笔记之C++函数的高级特性
- 高效掌握C#笔记[第五章]C#的高级特性
- 【spring】【转】Spring学习笔记2——高级特性
- java高级特性学习笔记
- ASP.NET 3.5核心编程学习笔记(22):LINQ与SQL的交互、延迟加载与预加载
- JavaScript高级程序设计(第3版)学习笔记13——ECMAScript5新特性
- JAVA核心技术学习笔记(第七版,Ⅱ高级特性之集合)
- sql笔记五:高级查询及通配符、排序分组
- T-SQL笔记1:SELECT及SELECT高级应用
- C#与.NET4 高级程序设计-----语言特性 学习笔记
- 《Oracle9i PL/SQL 从入门到精通读书笔记1》
- Oracle10G学习笔记之五Pl/sql高级
- Learn Objective‐C,学习笔记02 类的继承,高级oop特性
- java学习——java高级特性,线程,并发 笔记