目录
1 概念
① SQL:结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统.
2 安装
(1) Linux
CSDN:CentOS7安装MySQL8(超级详细-无坑)https://blog.csdn.net/weixin_42326851/article/details/123984601
(2) Windows
CSDN:MySQL安装配置教程(超级详细)https://blog.csdn.net/fwdwqdwq/article/details/126113535
3 架构及原理
3.1 架构
3.1.1 参考列表
CSDN:SQL语句执行原理https://blog.csdn.net/xzx4959/article/details/106878300 MySQL 分为 Server 层和存储引擎层两部分.
3.1.2 存储引擎层
负责数据的存储和提取.
3.1.3 Server层
涵盖MySQL的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能(比如存储过程、触发器、视图等).
(1) 连接器
负责跟客户端建立连接、获取权限、维持和管理连接.
访问 MySQL:mysql -h MySQL服务地址 -u 用户名 -p 密码
退出访问:quit/exit.
(2) 查询缓存:先查缓存后查数据库,新版已删除此模块.
(3) 分析器:根据语法规则做语法分析,判断输入的这个SQL是否满足MySQL语法.
(4) 优化器:在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联的时候,决定各个表的连接顺序.
(5) 执行器:判断对该表有没有操作权限,有则执行语句.
3.2 日志原理
3.2.1 redo log
存储引擎层日志.当有一条记录需要更新时,InnoDB 引擎会先把记录写到 redo log 里面,并更新内存.随后InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面.
3.2.2 binlog
(1) 概念
binlog(binary log) 是 Server层二进制日志,以事件形式记录了除查询语句外所有的 DDL 和 DML 语句,还包含语句执行消耗的时间.binlog是事务安全型的.
(2) 开启 binlog
①修改/etc/my.cnf.
#设置binlog格式
binlog_format=row
# 监控指定的数据库,未完全解决
binlog-do-db=test
# 设置 server_id
server_id=1
②重启MySQL.
③查看binlog是否正确启动.
show variables like 'binlog_format%';
3.2.3 主从复制原理
①Master 主库修改数据,并将改变记录写到binlog中
②Slave 从库向主库发送dump协议,将主库的 binlog 日志拷贝到它的中继日志(relay log);
③最后从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库.
4 语法要求
(1) 不区分大小写;
(2) 每条语句以';'结尾.
(3) 注释
①单行注释: # 或者 -- (注意空格)
②多行注释:/**/
5 命令
5.1 访问
进程: mysql
启动:systemctl start mysqld
停止:systemctl start mysqld
查看 MySQL启动状态:systemctl status mysqld
5.2 使用
5.2.1 查看MySQL版本
select version();
5.2.2 时区
(1) 查看时区
show variables like '%time_zone%';
结果:
system_time_zone:表示系统使用的时区是 EDT即北美的东部夏令时(-4h).
time_zone:表示 MySQL采用的是系统的时区
(2) 修改时区
-- 时区修改成'东八区'
set time_zone = '+8:00';
flush privileges;
5.3 MySQL JDBC
(1) 访问Url
jdbc:mysql://ip:port/db?参数key=参数value&参数key=参数value
(2) 参数
-- 设置字符集
useUnicode=true&characterEncoding=UTF-8
-- 设置时区
serverTimezone=Asia/Shanghai