1.索引
系统根据某种算法,将已有的数据(未来可能新增的数据)单独建立一个文件,这个文件能够实现快速的匹配数据,并且能够快速的找到对应的表中的记录。
主键是聚合索引。
2.索引特点:
加快查询速度,但是删除、插入速度会减慢。
如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是上面说的「平衡树」结构,换句话说,就是整个表就变成了一个索引。没错, 再说一遍, 整个表变成了一个索引,也就是所谓的「聚集索引」。
如果把这张表转换成平衡树结构(一棵非常茂盛和节点非常多的树),假设这棵树有10层,那么只需要10次IO开销就能查找到所需要的数据, 速度以指数级别提升
增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。
3.索引相关命令
创建索引:create index index_birthday on user_info(birthday);
如果没有索引,该查询执行全表扫描,可以通过explain语句查询执行过程展示扫描rows; EXPLAIN select * from vip_broadcastor where employ_id='D0290BB581054CE7A94404E807BA3CC0';加上索引只扫描一行
查询索引:
4.where查询
判断条件:
比较运算符:>, <, >=, !=, <>, =, like, between and, in, not in。
逻辑运算符:&&(and),||(or), !(not)
在SQL中分组是为了统计数据,SQL提供了一系列统计函数供我们使用。
1 ) Count(): 统计分组后的记录数,每一组有多少记录
2) Max(): 统计每组中最大值
3) Min(): 统计最小值
4) Avg(): 统计平均值。
5) Sum(): 统计和
基本语法:group by 字段[ase 或者 desc];desc降序
5.查询模板
select 选项,字段别名,数据源(单表,多表和子查询[别名]),where字句(条件判断:从磁盘上开始),group by 字句(分组统计,统计函数,分组排序,多字段分组),having子句(判断结果,针对分组统计结果),order by字句(排序,多字段排序),limit 子句(限制记录数,分页操作
6.连接查询:
将多张表(可以大于2张表)进行记录的连接(按照某个指定的条件进行数据拼接):最终的结果是:字段数一定会增加,记录数有可能变化。连接查询的意义:在用户查看数据的时候,需要显示数据来自多张表。
内连接:
内连接:[inner] join,从左表中取出每一条记录,去右表中与所有的记录进行匹配,匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。
外链接:
外连接分两种情况,是以某张表为主,有主表。当以左表为主表,这个叫left join,左外连接,我们习惯简称左连接;当以右表为主表,这个叫right join,右外连接,同样,简称右连接。
7。存储过程
SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。
◆优点:
执行速度更快。存储过程只在创造时进行编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程执行速度更快。
存储过程用于处理复杂的操作时,程序的可读性更强、网络的负担更小。
使用存储过程封装事务性能更佳。
能有效的放注入,安全性更好。
可维护性高,在一些业务规则发生变化时,有时只需调整存储过程即可,而不用改动和重编辑程序。
更好的代码重用。
◆ 缺点:
存储过程将给服务器带来额外的压力。
存储过程多多时维护比较困难。
移植性差,在升级到不同的数据库时比较困难。
调试麻烦,SQL语言的处理功能简单