标签:log 业务 utf8 添加 upd ble 语句 pytho 避免
目录
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版本
# 两种连接方法
TCP/IP : 可以连接远程,也可以本地连接
SOCKET : 连接本地
mysql -uroot -poldboy123 -h 10.0.0.200 -P3306
mysql -uroot -poldboy123 -S /tmp/mysql.sock
实例 = mysqld + 内存结构
实例 = mysqld + master thread + N Thread + 内存结构
(1)提供链接协议(TCP,SOCKET)
(2)用户验证
(3)提供专用链接线程,每登录一个用户,就会起一个专用的线程
(1)接受上层的命令
(2)语法检测
(3)语义(什么类型增删改查?)、权限检测
(4)专用解析器解析SQL,解析成多种执行计划
(5)优化器:选择一个代价最低的执行计划
(6)执行器:按照优化器的选择,执行SQL语句,得出获取数据方法
(7)查询缓存:默认是关闭的,一般会使用redis产品替代
(8)记录日志:二进制日志
按照SQL层结论,找相应数据,结构化成表的形式
存储数据的地方,包括库名、属性
包括元数据(表名,表的属性,列,记录)
DDL数据定义语言
DCL数据 控制语言
DML数据操作语言
DQL数据查询语言
SQL操作的书库和表
CREATE DATABASE
SHOW DATABASES
DROP DATABASE
a. 关键字大写,字面量小写
CREATE DATABASE bbs CHARSET utf8mb4
b. 库名只能小写,不能是数字开头,不能为预留关键字
c. 库名和业务名有关,例如:blog_user
d. 必须加字符集CHARSET utf8mb4
CREATE TABLE
DROP TABLE
ALTER TABLE
a. 关键字大写(非必须),字面名小写(必须)
b. 表名必须小写,不能是数字开头,不能为预留关键字
c. 表名和业务名有关
d. 必须加存储引擎和字符集
f. 必须有主键: PRIMARY KEY
g. 合适的数据类型
h. 必须加注释:COMMENT ‘用户名‘
i. 尽量避免外键
j. 建立合理的索引
grant
revoke
lock
insert
update
delete
a. insert 语句按批量插入数据
b. update 必须加 where 条件
c. delete 尽量替换为update,如添一个状态量字段 state
d. 如果有清空全表的需求,使用 truncate
select
show
a. select 语句避免使用select * from t1;
,使用select id,name from t1;
b. select 语句尽量加等值的where条件,select id,name from t1 where age>20;
c. select 语句对于范围查询,select 语句对于范围查询,例如 :select * from t1 where id>200;
尽量添加 limit
或者 id>200 and id<300 union all id>300 and id<400
d. select 的where 条件,不要使用 <>
like ‘%name‘
not in
not exist
e. 不要出现3表以上的表连接,避免子查询
f. where条件中不要出现函数操作
标签:log 业务 utf8 添加 upd ble 语句 pytho 避免
原文地址:https://www.cnblogs.com/linagcheng/p/10268506.html