MySQL

本文目录

 

 

 

 

 

1.MySQL 版本

主流版本
mysql 5.6    5.6.36   5.38    5.6.40
mysql 5.7    5.7.18    5.7.20    5.7.22

企业版本选择: 6-12月之间的GA

 

2.MySQL的体系结构

2.1 MySQL C/S结构

客户端连接到mysql的两种链接方法: TCP/IP (远程,本地),SOCKET(本地)

TCP/IP

SOCKET

 

通过网络连接串
mysql -uroot -poldboy123 -h 10.0.0.200 -P3306 
通过套接字文件  
mysql -uroot -poldboy123 -S /tmp/mysql.sock 

  



2.2 MySQL实例

实例=mysqld+内存结构
MySQL实例======> mysqld(董事长)---->master thread(经理)---->N Thread(员工) ------>内存结构(办公区)

2.3 mysqld三层结构

 

连接层

1.提供连接协议(TCP ,Socket)
2.用户验证
3.提供专用链接线程

 

SQL层

1.接收上层的命令
2.语法检测
3.判断语义(SQL类型),权限
  SQL类型:DDL数据定义语言    DCL数据控制语言    DML数据操作语言    DQL数据查询语言
4.专用解析器解析SQL,解析成多种执行计划
5.优化器:帮我们选择一个代价最低的执行计划(cpu,IO,MEM)
6.执行器:按照优化器的选择,执行SQL语句,得出获取数据方法
7.查询缓存:默认是关闭的. 一般会使用redis产品替代    Tair(缓存产品,淘宝用)
8.记录日志:二进制日志

存储引擎层

按照SQL层结论,找相应数据,结构化成表的形式

 

3. MySQL的逻辑结构

库(schema):存储表的地方(库名,属性)

表(Table):二维表(行和列)

  元数据

    表名字

    表的属性(表的大小,权限,存储引擎,字符集等)

    列:列名字,列属性(数据类型,约束,其他定义)

  记录:数据行

 

4.SQL 语句(SQL92标准)

4.1 SQL 种类

DDL数据定义语言
DCL数据控制语言
DML数据操作语言
DQL数据查询语言

4.2 SQL语句的操作对象


4.3 不同分类语句作用

DDL 数据定义语言 :


CREATE DATABASE   创建库
DROP DATABASE  删除库
ALTER DATABSE  修改库

SQL语句规范第一条:
CREATE DATABASE oldboy CHARSET utf8mb4;

  1.关键字大写(非必须),字面量小写(必须)
  2.库名字,只能是小写,不能有数字开头,不能是预留关键字
  3.库名字必须和业务名有关,例如his_user;
  4.必须加字符集.

 


CREATE TABLE   创建表
DROP TABLE  删除表
ALTER TABLE  修改表

CREATE TABLE t1 (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
sname VARCHAR(20) NOT NULL COMMENT '用户姓名',
gender ENUM('f','m','u') NOT NULL DEFAULT 'u' COMMENT '用户性别',
telnum CHAR(11) NOT NULL UNIQUE COMMENT '手机号',
tmdate DATETIME NOT NULL DEFAULT NOW() COMMENT '录入时间'
)ENGINE INNODB CHARSET utf8mb4;

*COMMENT注释

 

SQL语句规范第二条:
  1.关键字大写(非必须),字面量(用户自己定义的)小写(必须)
  2.表名必须小写,不能有数字开头,不能是预留关键字
  3.表名字必须和业务名有关
  4.必须加存储引擎和字符集
  5.适合的数据类型
  6.必须要有主键
  7.尽量非空选项
  8.字段唯一性
  9.必须加注释
  10.避免使用外键
  11.建立合理的索引

 

DCL数据控制语言:

grant
revoke
lock


DML数据操作语言 :

insert
update
delete

SQL语句规范第三条:

  1.insert语句按批量插入数据
  2.update必须加where条件
  3.delete尽量替换为update
  4.如果有清空全表需求,不要用delete,推荐使用truncate

DQL数据查询语言 :

select
show

SQL语句规范第四条:

  1. select语句避免使用 select * from t1; ----> select id,name from t1;
  2. select语句尽量加等值的where条件.例如 select * from t1 where id=20;
  3. select 语句对于范围查询,例如 ;select * from t1 where id>200; 尽量添加limit或者 id>200 and id<300 union all id>300 and id<400
  4. select 的where 条件 不要使用 <> like '%name' not in not exist
  5. 不要出现3表以上的表连接,避免子查询
  6. where条件中不要出现函数操作.

posted @ 2019-01-15 20:21  三千丝  阅读(150)  评论(0编辑  收藏  举报