MySQL 基础篇需要注意的点(小白篇)
1.distanct () 函数的使用需要注意
2.count() 在 MYISAM 引擎的前提下效率最高 在 Innodb 引擎下需要计算 不过不管什么引擎 推荐使用 count ()
count (‘字段名称’) 会过滤掉 null 但是 coutn () 不会的
count() 一般要和 group by 配合使用
3.group by 的使用
和分组函数一起查询的字段要求是 group by 后的字段 比如这里的 job_id 是按照它分组的 那么我们就可以让 job_id 和分组函数一起被查询出来;
select max(salary),job_id from employees group by job_id;
在 MYSQL 中使用 GROUP BY 对表中的数据进行分组时,
GROUP BY X 意思是将所有具有相同 X 字段值的记录放到一个分组里,
GROUP BY X, Y 意思是将所有具有相同 X 字段值和 Y 字段值的记录放到一个分组里。
4.having 的使用 是在 group by 的结果上继续查询
能用分组前筛选的 就优先考虑使用分组前筛选;性能会提高很多这样 也就是说尽量不要使用 having 分组后筛选 性能较差
5.sql92 标准 n 个表连接 那么至少需要 n-1 个条件 sql92 标准的等值连接其实类似 sql99 标准的 inner join
6.left join right join 互换一样
7. 子查询的执行优先于主查询 主查询的条件用到了子查询的结果
8. 行子查询也可以这么玩:
SELECT * FROM employees WHERE (employee_id,salary) = (
SELECT MIN(employee_id),MAX(salary) FROM employees
);
9.union 联合查询
多条查询语句的查询的列的类型几乎相同 也就是说 union 前边查询的字段是 id name union 后边查询的字段可以是 tid tname 但是尽量要保持 id tid 字段类型一致 name 和 tname 字段类型一致才有意义 但是前后字段的列数必须一致
10.insert 高级用法
insert into beauty (id,name,phone) select 26,’a’,’13222’; // 从一张表里面读取某条记录直接插入到另一张表当中去
11.truncate 删除不能回滚,delete 删除可以回滚
truncate 不能加 where 条件,而 delete 可以加 where 条件
truncate 的效率高一丢丢
12.decimal 用于计算 精度高
float 可用于存储 效率比 decimal 和 double 更高
13.char 类型固定长度 效率是最高
varchar 类型可变程度 效率低
14. 枚举类型 规定只能插入固定的字符串
15. 字段类型设置要点:所选择的类型越简单越好 能保存数值的类型越小越好
16. 主键约束 外键约束 唯一键约束会自动生成索引!
17. 查看表里面有哪些索引:
show INDEX from stuinfo;
18.show engines;// 查看数据库支持的引擎 也会显示当前数据库默认的引擎是哪一个;
19. 视图:
定义:一种虚拟存在的表 行和列的数据来自定义视图的查询中使用的表,并且是在使用视图是动态生成的 只保存 sql 逻辑 不保存查询结果;
应用场景:
多个地方用到同样的查询结果
该查询结果使用的 sql 语句较复杂
视图能提高 sql 查询的速度吗?
不会,视图就是建立虚拟表 (不会真实落盘,查询时实时构造), 无法缓存视图查询的数据,只是可以简化调用时候的代码!
数据库提供了视图(view)功能,能提高代码效率
视图的好处:
1、sql 语句提高重用性,效率高
2、和表实现了分离,提高了安全性
20. 存储过程:
存储过程一般地说,存储过程不如直接使用 sql 语句快。
用存储过程的主要目的,是简单的几句 SQL 无法解决时,使用一个程序块做为存储过程来解决
21. 存储过程和自定义函数的使用
22. 事务的隔离机制 以及 隔离级别
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: