您的位置:首页 > 数据库

读书笔记--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也提供了交互式的管理实用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: