数据库的高级SQL特性
一、约束
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特性相关推荐
- PostgreSQL用户应掌握的高级SQL特性
PostgreSQL数据库在SQL和NoSQL方面具有很多丰富的特性,本文将先从SQL高级特性入手来进行介绍. **一.PostgreSQL的SQL高级特性 ** 这一部分主要介绍PostgreSQL ...
- MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)
文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...
- SQL 必知必会·笔记20高级SQL特性
1. 约束 约束(constraint)就是管理如何插入或处理数据库数据的规则.DBMS通过在数据库表上施加约束来实施引用完整性. 1.1 主键 主键是一种特殊的约束,用来保证一列(或一组列)中的值是 ...
- mysql删除check约束_高级SQL特性——约束与索引
一.约束 1.约束的作用 对表中数据进行进一步限制,保证表中数据的完整性.一致性和正确性. 2.约束的分类 1)主键约束 主键能够唯一地标识表中的一行,比如学生表中的学生id. 它的主要作用就是能够将 ...
- 【数据库】《SQL必知必会 4th》部分笔记
9.汇总数据 count(*) 包括空 count(name) 不包括空 10.分组数据 group by 分组 having 过滤分组 where 过滤行 11.子查询 select .. from ...
- 高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
目录: Oracle数据完整性和锁机制 索引及优化之表分析 表分析.约束及表间关系 Oracle体系结构1 Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区 ...
- 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...
目录: Oracle数据完整性和锁机制 索引及优化之表分析 表分析.约束及表间关系 Oracle体系结构1 Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区 ...
- java中删除sqlite数据库语句_sqlite sql创建数据库语句
iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...
- MySQL数据库高级SQL语句(三)
MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...
最新文章
- Java中Comparable和Comparator的区别
- Python课堂:判定IP地址合法性的三种方法
- VTK:图片之ImageConvolve
- 阿里云混合云联合信通院发布《基于云计算的数字化业务安全工程要求》
- git reset git stash
- 牛客 216 C 小K的疑惑
- bs架构 erp 进销存_从依赖经验到用柔性ERP,企业少走了多少弯路?
- duration转为时间戳_Flink Table APIamp;SQL编程指南之时间属性(3)
- Java实现二分查找算法
- Spring源码分析之Aop中拦截器,适配器,通知之间的关系
- android 音乐游戏,手速党的胜利 -- 音乐游戏专题 #iOS #Android
- mysql 怎么改属性_mysql怎么修改字段的属性
- testlink界面优化_Testlink 太老了,测试用例管理有没有什么好工具推荐?
- jquery ajax自动生成表格table(一)
- 190307每日一句
- 如何将pdf转换成word文档,文件格式转换器选择
- 上海大华条码称代码_上海大华计价电子秤 使用软件 TM-H 大华条码称设置15KG
- “热散由心静,凉生为室空” - linux温控的那些事儿
- 社群运营怎么做,有哪些互动玩法?
- python pdf和图片互转
热门文章
- WPF - ViewModle中关闭Window
- [SmartFoxServer入门]服务器安装
- Asp.Net Mvc3.0(MEF依赖注入理论)
- sql server 事务的回滚 断电
- [转] python中的高效迭代器函数
- 数据分析常用的7大思维方法详解
- 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
- 从OA、ERP到大数据中心,一个完整的数据分析体系原来是这样
- 使用计算机在什么上传输,MODEM的作用是使计算机数据能在什么上传输
- c++ post请求_Golang GinWeb框架5绑定请求字符串/URI/请求头/复选框/表单类型