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.%';
相关推荐
lubiii_4 小时前
SQLMap常用命令指南(参数及其用法)
sql·web安全·网络安全
海奥华24 小时前
SQLEXPLAIN 详解
数据库·mysql
情深不寿3175 小时前
MySQL————数据库基础
数据库·mysql
程序新视界5 小时前
如何选择合适的数据库?PostgreSQL与MySQL各项对比
数据库·mysql·postgresql
dongchen。8 小时前
MySQL第一次作业
数据库·mysql
重生之我是Java开发战士9 小时前
【MySQL】数据库基础
数据库·mysql
ChuHsiang9 小时前
【剑指MySQL】数据库基础(1)
数据库·mysql
九皇叔叔9 小时前
Docker 镜像维护指南:从配置优化到 MySQL 实战运行
mysql·adb·docker
muxin-始终如一9 小时前
MySQL分区分表实现方法详解
数据库·mysql·adb
奥尔特星云大使10 小时前
mysql高可用架构之MHA部署(三)——故障转移后邮件告警配置(保姆级)
mysql·dba·高可用·mha·邮件告警