基础个人总结(待扩充)"/>
MySQL基础个人总结(待扩充)
一、数据库
- 创建数据库:create database 库名 default character set utf8;//设置编码
- 删除数据库:drop database 库名
- 查看所有数据库:show databases;
- 使用数据库:use 库名
二、表
- 创建表:create table 表名 (字段 类型 )
- 约束:主键:primary key
唯一:unique
非空:not null
自增:auto_increment
外键:foreign key (当前表的主键) references 主表(主键)
默认:default
检查:check
3. 修改表
添加列:alter table 表名 add column 列名 列的类型(位数,小数保留的位数)
4. 描述表结构:desc 库名
5. 删除表: drop table 表名
三、数据
- 查询数据:select 字段 from 表名
- 插入数据:insert into 表名 values(?,?,?)
- 修改数据:update 表名 set 字段名 值
- 删除数据:delete from 表名
- 查看表结构:desc 表名
四、SQL基础函数
- Lower(字段名)----数据转小写
- Upper(字段名)----数据转大写
- Length(字段名)----数据的长度
- Substr(字段名,开始位置,截取长度)----截取
- Concat(字段名,‘拼接的数据’)-------拼接
- Replace(字段名,‘要被替换的字符’,‘替换的值’)-------替换
- Ifnull(字段名,替换的值)-------判断是否为null
- Round------四舍五入
- Ceil------向上取整
- Floor-------向下取整
- Uuid -------随机生成32位的字符
- Now()日期
- Year()年 month()月 day()日
- Hour()时 minute()分 second()秒
- /----转义字符
五、条件查询
- distinct-------去重
- Where------条件查询
Select * from emp where 条件
Select * from emp where 字段 in ()
3. Like -----------模糊查询,配合%使用
4. Is Null ---------字段是为null is not null 字段不为null
5. Between and ---------在.......之间
6. Limit---------分页 limit 0,2 从n+1开始
7. Order by -------排序
8. Group by --------分组 分组后在过滤使用having
六、聚合函数
Max---------最大值
Min---------最小值
Count------统计个数
Sum--------求和
Avg---------平均
注意:查询结果中出现混合类,包括聚合函数和非聚合函数,必须分组,通常按非聚合函数进行分组,where不能使用聚合函数(where比having高效,因为where执行时机更早一些)。
七、事务
1.概念:用来保证多个SQL要么全成功要么全失败
2.四大特性:原子性,一致性,持久性,隔离性
3.隔离级别:read uncommitted 读未提交
Read committed 读提交 Oracle数据库默认隔离级别
Repeatable read 可重复读 mysql 数据库默认隔离级别
serializable串行化
性能逐步降低,安全性逐步提高
Start transaction开启事务
Commit 提交事务
Rollback 回滚事务
八、多表查询
- 笛卡尔积
- Join on
- 内连接 inner join on 取两张表的交集
- 左连接 left join on 左边表的所有和右边表符合条件的数据(小表驱动大表)
- 右连接 right join on 右边表的所有和左边表符合条件的数据
- 子查询(上一次查询的结果作为下一次查询的条件)
九、索引 index
- 单值索引 唯一索引 复合索引
- 创建索引 create index 索引名 on 表名(字段名)
- 创建唯一索引 create unique index 索引名 on 表名(字段名)
- 创建符合索引 create index 索引名 on 表名(字段名,字段名)
- 检查SQL的执行效率(观察用没用索引)explain + select 语句
- 查看索引 show index from 表名
- 删除索引 alter table 表名 drop index 索引名
十、视图 view
- 好处:提高了视图的复用性+屏蔽了业务表的复杂性 + 数据共享
- 坏处:浪费空间,一旦创建无法更改,无法优化
- 创建视图:create view 视图名 as select语句
- 使用视图:select * from 视图名
- 删除视图:drop view if exists 视图名
十一、SQL优化
- 用字段替代*;
- Where里尽量用and不用or,尽量用=不用!= <> ,条件越精确越好
- 索引最多不要超过5个
- 给where后或者order by 经常使用的字段加索引 ,复合索引要遵循最左原则,索引表要及时删除不用的索引
- 批量处理批量查和删除最好使用分页
- Group by 分组时最好先过滤在分组
- 用数值代替字符串类型
- 不要有超过5个以上表连接
- Varchar 代替 char
- Inner join,left join ,right join 优先使用inner join
更多推荐
MySQL基础个人总结(待扩充)
发布评论