一、约束

1、唯一约束

唯一约束用来保证一个列中的数据唯一,他们和主键的区别是:

  • 表可包含多个唯一约束,但每个表只有一个主键
  • 唯一约束列可包含null值
  • 唯一约束列可修改、更新及重复使用
2、检查约束

检查约束用来保证一个列中的数据满足一组指定的条件,常见用途是:

  • 检查最小或最大值
  • 指定范围
  • 只允许特定值

以下对order表施加了一个检查约束,保证所有物品的数量大于0
create table order {
order_num integer not null,
quantity integer not null check (quantity > 0)
}

二、索引

数据库表的主键总是排序的,我们可以很快速地检索主键,这是DBMS帮我们做的工作,但是,搜索其他列中的值通常效率不高。这个时候,我们就可以使用索引来排序数据以加快搜索和排序操作的速度。
重点注意

  • 索引改善了检索操作的性能,但是降低了数据插入、修改和删除的性能。
  • 索引数据可能要占用大量的存储空间。
  • 并非所有的数据都适合索引。唯一性不好的数据不适合做索引
  • 索引用于数据过滤和数据排序。
  • 可以在索引中定义多个列。

创建索引
create index之后是索引名,on用来指定被索引的表,而索引中包含的列在表名后的圆括号中给出。

create index prod_name_ind on products (prod_name);

三、触发器

触发器是特殊的存储过程,它在特定的数据库活动发生时自动执行。
触发器可以与特定表上的insert、update和delete操作相关联。
触发器的常见用途:

  • 保证数据一致
  • 基于某个表的变动在其他表上执行活动
  • 进行额外的验证并根据需要回退数据
  • 计算计算列的值或更新时间戳

总结:
约束是实施引用完整性的一个重要的成分;索引可改善数据检索的性能;触发器可以用来执行运行前后的处理;而安全选项可用来管理数据访问。

数据库的高级SQL特性相关推荐

  1. PostgreSQL用户应掌握的高级SQL特性

    PostgreSQL数据库在SQL和NoSQL方面具有很多丰富的特性,本文将先从SQL高级特性入手来进行介绍. **一.PostgreSQL的SQL高级特性 ** 这一部分主要介绍PostgreSQL ...

  2. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)

    文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...

  3. SQL 必知必会·笔记20高级SQL特性

    1. 约束 约束(constraint)就是管理如何插入或处理数据库数据的规则.DBMS通过在数据库表上施加约束来实施引用完整性. 1.1 主键 主键是一种特殊的约束,用来保证一列(或一组列)中的值是 ...

  4. mysql删除check约束_高级SQL特性——约束与索引

    一.约束 1.约束的作用 对表中数据进行进一步限制,保证表中数据的完整性.一致性和正确性. 2.约束的分类 1)主键约束 主键能够唯一地标识表中的一行,比如学生表中的学生id. 它的主要作用就是能够将 ...

  5. 【数据库】《SQL必知必会 4th》部分笔记

    9.汇总数据 count(*) 包括空 count(name) 不包括空 10.分组数据 group by 分组 having 过滤分组 where 过滤行 11.子查询 select .. from ...

  6. 高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  7. 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  8. java中删除sqlite数据库语句_sqlite sql创建数据库语句

    iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...

  9. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

最新文章

  1. Java中Comparable和Comparator的区别
  2. Python课堂:判定IP地址合法性的三种方法
  3. VTK:图片之ImageConvolve
  4. 阿里云混合云联合信通院发布《基于云计算的数字化业务安全工程要求》
  5. git reset git stash
  6. 牛客 216 C 小K的疑惑
  7. bs架构 erp 进销存_从依赖经验到用柔性ERP,企业少走了多少弯路?
  8. duration转为时间戳_Flink Table APIamp;SQL编程指南之时间属性(3)
  9. Java实现二分查找算法
  10. Spring源码分析之Aop中拦截器,适配器,通知之间的关系
  11. android 音乐游戏,手速党的胜利 -- 音乐游戏专题 #iOS #Android
  12. mysql 怎么改属性_mysql怎么修改字段的属性
  13. testlink界面优化_Testlink 太老了,测试用例管理有没有什么好工具推荐?
  14. jquery ajax自动生成表格table(一)
  15. 190307每日一句
  16. 如何将pdf转换成word文档,文件格式转换器选择
  17. 上海大华条码称代码_上海大华计价电子秤 使用软件 TM-H 大华条码称设置15KG
  18. “热散由心静,凉生为室空” - linux温控的那些事儿
  19. 社群运营怎么做,有哪些互动玩法?
  20. python pdf和图片互转

热门文章

  1. WPF - ViewModle中关闭Window
  2. [SmartFoxServer入门]服务器安装
  3. Asp.Net Mvc3.0(MEF依赖注入理论)
  4. sql server 事务的回滚 断电
  5. [转] python中的高效迭代器函数
  6. 数据分析常用的7大思维方法详解
  7. 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
  8. 从OA、ERP到大数据中心,一个完整的数据分析体系原来是这样
  9. 使用计算机在什么上传输,MODEM的作用是使计算机数据能在什么上传输
  10. c++ post请求_Golang GinWeb框架5绑定请求字符串/URI/请求头/复选框/表单类型