MySQL 常用的操作整理汇总
发布网友
发布时间:2024-09-17 08:50
我来回答
共1个回答
热心网友
时间:2024-09-20 21:13
创建数据库
创建表
特点:
InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
MyISAM只适用于查询大于更新的场景,如果你的系统查询的情况占绝大多数(例如报表系统)就可以使用MyISAM来存储,除此之外,都建议使用InnoDB。
缓冲池:
InnoDB为了做数据的持久化,会将数据存储到磁盘上。面对大量的请求时,CPU的处理速度和磁盘的IO速度之间差距太大,为了提高整体的效率, InnoDB引入了缓冲池。
缓冲池采用了LRU算法(最近最久未使用法)>可能会导致缓冲池污染
缓冲池中存储了索引页、Undo页、插入缓冲、自适应哈希索引、InnoDB锁信息和数据字典
插入缓冲提高Mysql性能,两次写提高数据的可靠性
当机器宕机了,发生了写失效,有Redo Log来进行恢复。但是如果是在从缓冲池中将数据刷回磁盘的时候宕机了呢?
MySQL日志:
InnoDB日志:
Redo Log和Undo Log,
Redo Log 重做日志:用于记录事务操作的变化,且记录的是修改之后的值。不论是否失败
Undo Log :记录的是记录的事务开始之前的一个版本,可用于事务失败之后发生的回滚。
BinLog:
记录了所有对数据库的修改, 记录日志有三种格式。分别是Statement、Row和MixedLevel。
Statement
记录所有会修改数据的SQL,其只会记录SQL,并不需要记录下这个SQL影响的所有行,减少了日志量,提高了性能
Row
只保存被修改的记录, Row会产生大量的日志。但是Row不用记录上下文信息了,只需要关注被改成啥样就行。
MixedLevel
Statement和Row混合使用的结果
I/O thread(实际上就是一个主服务器的客户端进程)
Binary log 二进制日志
建表语句基本了解
表示设置数据库的默认字符集为utf8
AUTO_INCREMENT表示采用默认自增长,增长值为1
AUTO_INCREMENT=10 表示自动增长的起始值为10
AUTO_INCREMENT=10 表示自动增长的起始值为10
修改自增长的粒度
给一个数据库表格添加一个自增长主键(原本没有)
给一个数据库表格的主键添加自增长属性(原本没有自增长)
修改某张表的某个字段
修改的其实是建表语句
修改字段为Not Null
原本的SQL语句
执行转换为not null的SQL语句
修改字段从Not Null 到 Null
原本的SQL语句
执行转换为null的SQL语句
修改Enum取值范围
原本SQL语句
执行转换SQL语句
rename:
修改的是表名称
change:
修改的是表中的字段名称
modify:
用于修改表中字段的数据长度,数据类型以及字段的约束条件的
添加外键
添加字段
样例:
删除外键
删除某张表的某一个字段
删除表中的所有数据
方式1:
方式2:
枚举
TIMESTAMP 时间戳
该方法用于生成当前系统时间
在java中定义updateTime时
DateTime 日期(main)
根据一个字段或者多个字段查询重复数据
根据一个字段查找重复数据
根据多个字段查找重复数据