2021.3.10 天气:阴晴
Mysql
mysql是一个关系型数据库管理系统,完整的mysql优化需要很深的功底,大公司甚至有专门的DBA写优化
mysql一般布局在linux系统上:
**【chkconfig mysql on】**设置开机自动启动
**【chkconfig -list|grep mysql】**检查各个系统等级下的启动情况
**【ntsysv】**查看开机自启的服务有哪些,自启的服务前面[*]会有星号
一、修改字符集
【create table user(id int not null,name varchar(20));】
创建一个user表,包含字段id,name,id的类型为int,限制为not null(不允许为空)
【show tables;】
显示现有的表
【insert into user values(1,‘z3’);】
插入一条数据
当插入一个中文字符后,这个显示会变成??无法识别
【show variables like ‘%char%’;】显示数据库字符集
编辑配置文件:
【client】
default-character-set=utf8
【mysql】
port =3306
character_set_server=utf8
character_set_client=utf8
collation_server=utf8_general_ci
[mysql]
no_auto_rehash
default_character_set=utf8
注意:
1.编辑完之后要重启mysql服务器
2.并且需要重新建表
二、MYSQL逻辑架构
1.连接层
2.服务层
3.引擎层
4.存储层
三、存储引擎
【show engines;】
查看引擎,默认使用的引擎是InnoDB
两大常用引擎对比:
四、性能下降的原因
比如.执行时间长,等待时间长:
1.sql语句写的效率低
2.索引失效
3.关联查询太多(设计需求缺陷)
4.服务器调优以及参数设置(缓冲线程数)
【create index idx_user_name on suer(name)】
建立 索引 索引名(idx_表名_列) 表名(列名)
五、SQL执行加载顺序
手写:
机读:
解析流程图:
六、JION
1.左连接
2.内连接
3.右连接
4.左独有
5.右独有
6.全连接
SELECT<select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Ket = B.Key
SELECT<select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Ket = B.Key
union
SELECT<select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Ket = B.Key
7.去交集
SELECT<select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Ket = B.Key
WHERE A.Key IS NULL
OR B.Key IS NULL
SELECT<select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Ket = B.Key
WHERE B.Key IS NULL
union
SELECT<select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Ket = B.Key
WHERE A.Key IS NULL