-
体系结构:C/S(客户端/服务端)模型架构
-
mysqld程序结构:
-
一条SQL语句的执行过程:
-
1.连接层:
- 客户端通过TCP/IP、套接字等方式与服务端进行连接。
- 当有哭护短发起连接时,需要携带主机名、用户名、密码,服务端进行验证
-
连接层的作用:
- 提供连接协议:TCP/IP、SOCKET(套接字)
- 提供验证:用户、密码、TP、SOCKET
- 提供专用连接线程:接收用户SQL,返回结果通过以下语句可以查看到连接线程基本情况:
- mysql> show processlist;
-
2.SQL层:
- 建立连接后,当输入增删改查等语句时,需要进行下一层的处理也就是SQL层
-
处理过程与作用:
- 1.接收上层传送的SQL语句
- 2.语法验证模块,验证语句的语法
-
3.语义检查:判断SQL语句的类型
- DDL:数据定义语言 create drop alter
- DCL:数据控制语言 grant revoke
- DML:数据操作语言insert delete update
- DQL:数据查询语言select
- 4.权限检查,检查用户是否有权限
- 5.解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案
- 6.优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
- 7.执行器:根据最优执行计划,执行SQL语句,产生执行结果,放在磁盘上
- 8.提供查询缓存(默认是没有开启的),会使用redis tair替代查询缓存
- 9.提供日志记录(日志管理章节):binlog,默认是没有开启的
-
存储引擎层(类似于linux中的文件系统)
- 负责根据SQL层的执行结果,从磁盘中拿数据以及写数据,也都是由存储引擎层来处理。
- 将16进制的磁盘数据,交给SQL结构化化成表
- 连接层的专用线程返回给用户
- 有关库的SQL语句:
-
库名和库属性:
- 创建库并指定字符编码和校对集:
- create database wordpress default charset utf8mb4 collate utf8mb4_bin;
- 查看建库语句:
- show create database wordpress;
- 查看所有库:
- show databases;
- 切换库:
- use wordpress;
- 创建库并指定字符编码和校对集:
-
-
有关表的SQL语句:
- 表名、表属性、列:列名(字段),列属性(数据类型,约束等)、数据行(记录)
- 创建表,指定列和数据类型:
- create table t1 (id int primary key,name varchar(20));
- 插入数据,建议多行一起插入,减少日志量:
- insert into t1 values (1,'zhangsan'),(2,'lisi'),(3,'wangwu');
- 查看表所有数据:
- select * from t1;
- 分析表结构:
- desc t1;
- 查看创表语句:
- show create table t1;
-
有关用户、权限的SQL语句:
-
查看mysql所有用户:
- select user,host from mysql.user;
- 创建用户:create user lisi@'%' identified by '1234.com';
- 查看用户:select user ,host ,authentication_string from mysql.user;
- 更改用户权限或密码:alter user lisi@'192.168.1.%' identified by '456';
- 删除用户:drop user lisi@'192.168.1.%';
-
权限管理:
- grant all on wordpress.* to wordpress@'192.168.1.%' identified by '123';
- 创建一个用户对app库下的所有表拥有增删改查权限:
- grant select ,update,insert,delete on app.* to app@'192.168.8.%' identified by '1234.com';
- 查看权限:show grants for app@'192.168.8.%';
- 回收权限:
- 将删除权限回收:revoke delete on app.* from app@'192.168.8.%';
-
-
1.Mysql 架构原理、基础库表sql语句
努力转型的IT小王2024-04-16 23:44
相关推荐
小兜全糖(xdqt)38 分钟前
mysql数据同步到sql serverKaroku06640 分钟前
【企业级分布式系统】Zabbix监控系统与部署安装周全全1 小时前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist白云如幻1 小时前
MySQL的分组函数时差9533 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理秋意钟3 小时前
MySQL日期类型选择建议山海青风4 小时前
第七篇: BigQuery中的复杂SQL查询ac-er88884 小时前
MySQL如何实现PHP输入安全桀桀桀桀桀桀5 小时前
数据库中的用户管理和权限管理