Mysql数据库软件基础语法
1.存储引擎
Innodb支持外键、事务和存储结构由数据表结构.frm、数据和索引.ibd构成
Myisam由数据表结构.frm、数据.myd、索引.myi构成
Innodb的写入速度没有Myisam快,但是查询速度快(恒定)
2.关于快捷键
- \G格式化输出
- \c结束命令输入操作
- \h查看帮助
- \q退出当前命令行模式
3.数据类型
- 字符串类型 char varchar text enum
- 数值类型 decimal(总位数,小数位) int float
- 日期和时间类型 datetime date timestamp
- 二进制数据类型
4.表的字段约束
- unsigned 无符号
- int(4) 限制宽度
- not null
- default
- primary key
- auto_increment
- unique
5.DDL数据定义语言
- 创建数据库
create database if not exits user default charset utf8
- 删除数据库
drop database 名
- 创建表
create table 表名(字段名 类型 [字段约束],字段名 类型 [字段约束])
- 删除表
drop table 表名
- 查看表结构
desc 表名
- 查看建表语句
show create table 名\G
- 修改表结构(添加)
alter table 表名 add 字段名信息
- 修改表结构(删除)
alter table 表名 drop 字段名信息
- 修改字段
alter table 表名 chang\modify 被修改后的字段信息
- 添加唯一索引
alter table 表名 add unique 索引名(字段名)
- 添加普通索引
alter table 表 add index 索引名(字段名)
- 删除索引
alter table 表 drop index 索引名
6.DML数据操纵语言
- 添加数据
insert into 表名(字段...) values(数据...)
- 批量添加值
insert into 表名 values(数据..),values(数据...)
-修改数据update 表名 set 字段=值,字段=值 where 条件
- 删除数据
delete from 表名 where 条件
7.DQL数据查询语言
- 检索单个列
select 列名 from 表名
- 检索多个列
select 列名,列名 from 表名
- 检索所有列
select * from 表名
- 检索不同的行
distinct
- 限制结果limit 3,4从行3开始的4行;行号从0开始
- 排序数据
order by
- select子句及其顺序
select from join on where group by having order by limit
8.事务
事务是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元
语法:1.start 2.commit确认修改 3.rollback修改被丢弃
特性:1.原子性(全部执行成功,全部执行失败) 2.一致性(执行前后保持一致性状态) 3.隔离性(一个事务的执行跟其他事务的执行是没有关系的) 4.持久性(事务一旦提交后,数据就会被永久保存)
9.事务的并发问题
- 脏读:未提交的数据在其他事务中读到
- 不可重复读:同一个数据不能够重复读取
- 幻读:重复查询的过程中,数据就发生了量的变化
9.事务隔离级别
- 读未提交
- 读已提交
- 可重复读
- 顺序读
4种事务隔离级别从上往下,级别越高,并发性越差,安全性就越来越高。 - 查看当前会话中事务的隔离级别
select @@tx_isolation
- 隐式提交:执行这种语句相当于执行commit;DDL
10.索引的语法
- 创建索引
alter table 表 add [unique] 索引名(字段名)
- 创建索引
create index 索引名 on 表名(字段名)
索引需要占用磁盘空间;创建索引需要对表加锁 - 删除索引
drop index 索引名 on 表名
- 删除索引
alter table 表名 drop index 索引名
- 查看表中的索引
show index from 表名
- 索引的优点:可以加速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序。
- 索引的缺点:占用存储空间;构建索引,会降低数据表的操作的效率
- 索引的分类:主键索引、唯一索引、普通索引、全文索引、组合索引
- 删除逐渐索引:先取消自增,再删除主键
- B+树而不是B树:1.磁盘读写代价更低;2.随机I/O的次数更少;3.查询速度更稳定
11.慢查询
- 查询慢查询的配置信息
show variable like ‘%slow%’
- 查看慢查询的时间定义
show variable like 'long%'
- 设置慢查询的时间定义
set long_query_time=2
- 开启慢日志
set global slow_query_log='on'
12.Explain
13.使用索引的注意事项
- 不要在列上使用函数和进行运算
- 尽量避免使用!=或not in 或<>等否定操作符
- 尽量避免使用or来连接条件
- 多个单个索引并不是最佳选择
- 复合索引的最左前缀原则
-覆盖索引的好处 - 范围查询对多列的影响
- 索引不会包含有Null值的列
- 隐式转换的影响
- like语句的索引失效问题
14.sql语句优化
- 避免嵌套查询
- 避免多表查询
- 适当建立索引
- 合理使用索引