1.Mysql 架构原理、基础库表sql语句

  • 体系结构: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.%';
相关推荐
Decay__8 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
凤凰院凶涛QAQ10 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
张小姐的猫10 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
这个DBA有点耶14 小时前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie15 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
FluxDB17 小时前
FluxDB vs DBX vs DBeaver:GPUI、Tauri、Eclipse 三种技术栈实测
数据库·mysql
数据库小学妹18 小时前
MySQL分页结果不稳定:唯一键兜底与游标分页
数据库·mysql·dba
风翼靓崽18 小时前
mysql数据备份/恢复
数据库·mysql
这个DBA有点耶20 小时前
Merge还是Materialize?一文讲透MySQL 8.0 CTE底层的执行计划博弈与性能陷阱
数据库·mysql·架构
Thanks_ks21 小时前
MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock
数据库·mysql·innodb·mvcc·锁机制·事务隔离级别·间隙锁