一、连接查询
1. 左连接:left join :左表为基准,左边全部显示,右边有相同字段显示
select 字段 from 表1 left join 表2 on 表1.字段 = 表2.字段;
2. 右连接:right join : 左连接相反
SELECT 字段 FROM 表1 right JOIN 表2 ON 表1.字段 = 表2.字段;
3. 内连接: inner join : 取交集
select 字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段;
二、 聚合函数
count、sum、avg、max、min
三、关键字
分页:limit select * from 表 limit 2,6 从第三条显示,显示六条
分组:group by select 列,count(*) from 表 group by 列名
去重: distinct select distinct name from 表
四、执行循序
form..on..left join..where..group by..avg()/sum()..having.select..order.. by..asc/desc..limit..
五、数据库三范式:原子性、唯一性、直接性。
六、存储引擎:
1.MyISAM 5.5之前默认
支持表锁,不支持事务、外键
2. InnoDB
支持行锁、事务、外键、聚集索引
七、数据库事务
1. 事务特性:原子性、一致性、隔离性、持久性
2. 隔离级别:读未提交、读已提交、可重复读、可串行读
脏读、可重复读、幻读 从左边一次少一个。
八、索引
快速查找,提高数据库性能,唯一索引保证唯一性,加速表与表之间的连接,减少分组、排序的时间。
索引分类:普通索引、唯一索引、主键索引、联合索引、全文索引。
2. 索引失效:
(1) 范围查询, 右边的列不能使用索引, 否则右边的索引也会失效.
(2) 不要在索引上使用运算, 否则索引也会失效.
(3) 字符串不加引号, 造成索引失效.
(4) 尽量使用覆盖索引, 避免select *, 这样能提高查询效率.
(5) or 关键字连接
九、mysql 优化
1. 命令:show status like 'Com_select(insert)' 可以知道数据库 查询多还是增删多,侧重优化。
2. explain + sql语句查询sql执行过程
3. show profile 分析SQL,可以查看所有sql 语句的执行效率(所用时间).
4. 慢查询日志(常用的工具)
十、 索引优化
1. 对查询频次较高, 且数据量比较大的表, 建立索引.
2. 使用唯一索引, 区分度越高, 使用索引的效率越高.
3. 索引并非越多越好, 如果该表赠,删,改操作较多, 慎重选择建立索引, 过多索引会降低表维
护效率.
4. 使用短索引, 提高索引访问时的I/O 效率, 因此也相应提升了Mysql 查询效率.
....