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 协议》,转载必须注明作者和本文链接