中小型网站建设 教案,wordpress 搜索没反应,怎么改网站关键词,我要发布文章到网站上推广 哪些网站最好目录
一、mysql设计模式和技术
二、mysql服务器和客户端
启动mysql服务
启动mysql客户端程序
三、mysql存储引擎
四、mysql配置
五、mysql系统变量
六、mysql字符集
编码和解码#xff1a;
常见字符集#xff08;五种#xff09;#xff1a;
相关概念#xff1…目录
一、mysql设计模式和技术
二、mysql服务器和客户端
启动mysql服务
启动mysql客户端程序
三、mysql存储引擎
四、mysql配置
五、mysql系统变量
六、mysql字符集
编码和解码
常见字符集五种
相关概念
mysql字符集要点
mysql字符集(客户端和服务端) 一、mysql设计模式和技术
### 1. 设计模式采用c/s设计模式客户端通过用户的输入来和服务器进行通信交互服务器则负责处理请求、解析、运算、存储和返回响应结果给客户端。### 2. 所涉及的技术TCP/IP技术由c/s模式决定的进程通信技术像命名管道和共享内存(windows)、UNIX于套接字(类UNIX)因为服务器程序和客户端程序启动后实际上是两个进程
二、mysql服务器和客户端
启动mysql服务
### 1.导入
即启动mysql服务器程序通过服务器文件(大部分在安装的bin目录下)来启动下面我们根据不同系统来了解认识
### 2.类UNIX系统
mysqld启动一个mysql服务器进程
mysqld_safe间接调用mysqld监控错误并重启服务错误日志写入
mysql.server间接调用mysqld_safe相关命令为mysql.server start/stop
mysqld_multi多个进程服务
### 3.windows系统
## 2.1 mysqld.exe
同类UNIX的mysqldmysqld --console启动将错误日志输入到cmd控制台
## 2.2 注册为服务来启动
注册服务语句完整的可执行文件路径 --install [-manual] [服务名称]
描述其中-manual选项表示手动不添加该选项则开机自启服务名称默认为MySQL
示例语句C:\Program files\MySQL\MySQL Server 5.7\bin\mysqld --install
net命令操作控制服务net start/stop MySQLMySQL是服务名
启动mysql客户端程序
### 1. mysql客户端程序
mysql、mysqladmin、mysqldump、mysqlcheck等### 2. 启动客户端连接服务器
mysql -uroot -p密码(显式不安全)
mysql -uroot -p(密式)
### 3. 了解连接服务器的参数(短形式/长形式)
-u/--user用户名用户参数
-p/--password端口号密码参数
-h/--host主机名IP或域名参数
示例mysql -uroot -p 或者 mysql --userroot -p
三、mysql存储引擎
### 1.存储引擎
有很多只需了解InnoDB和MyISAM即可查看语句show engines;
### 2.版本变化
MySQL5.5.5InnoDB
MySQL5.5.5MyISAM
可以看出现在主要使用InnoDB
### 3.InnoDB和MyISAM的定位
InnoDB支持事务、行级锁、外键
MyISAM主要的非事务处理存储引擎
### 4.相关语句
## 指定表的存储引擎
create table 表名(...
)engine引擎名称
alter table 表名 engine引擎名称
## 查看表的结构(含存储引擎)
show create table 表名\G
四、mysql配置
### 1.配置方式
mysql的配置可以通过【启动项】和【配置文件】来实现。
启动项通过命令行指定选项仅对当次启动生效(没有保存到硬盘)即重启失效
配置文件把选项写入配置文件在每次启动时都会被读取应用
### 2.命令行配置启动项(选项)规范
格式命令 --启动项1[值1] --启动项2[值2]
示例mysqld --skip-networking(禁止TCP/IP网络通信)
## 选项名称规范
--skip-networking就是启动项名称(选项名称)选项名称由多个单词构成中间可以使用“-”或“_”(短划线或下划线)连接即也可以写为--skip_networking
## 选项值规范
不是所有的选项都是有值的如上例命令如果有值比如【--选项名选项值】反则省略含等号以后内容
## 衔接规范
选项(无论是短形式还是长形式)都要满足选项名后紧跟选项值示例mysql -u root -p
使用长形式即【--选项名选项值】中间不能有任何空格
### 3.查看程序启动项
mysql --help
mysqld_safe --help
mysqld --verbose --help(特殊)
### 4.选项常用的长形式-短形式
--user -u
--password -p
--port -P
--host -H
--version -V
### 5.配置文件的读取顺序
## windows
%WINDIR%\my.ini,%WINDIR%\my.cnf【这个%WINDIR%就是一个系统变量我们可以查看一下echo %WINDIR%】
C:\my.ini,C:\my.cnf
BASEDIR\my.ini,BASEDIR\my.cnf 【BASEDIR是你MySQL的安装路径】
defaults-extra-file 【这个用于命令行指定配置文件例如mysqld --defaults-extra-fileC:\my.txt】
%APPDATA%\MySQL\.mylogin.cnf 【仅限客户端】
上面这些路径会由上到下依次读取所以越靠后权重越大以靠后配置为准覆盖式
## 类NUIX
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf 【仅限服务器】
default-extra-file 【命令行指定配置文件】
~/.my.cnf 【登录用户独有】
~/.mylogin.cnf 【仅限客户端】
上面这些路径会由上到下依次读取所以越靠后权重越大以靠后配置为准覆盖式
### 6.配置文件配置启动项规范
## 格式
[组名]
选项名称
选项名称选项值
## 选项名称规范
不能用缩写(短形式)不允许加“--”(双短划线)
## 衔接规范
【选项名称选项值】中间可以有空格每行只能写一个选项
## 注释
行首使用#来进行注释
### 7.配置文件选项组
即前面规范格式所展示的就是一个选项组格式
[mysqld]应用于服务器的配置项
[mysql]应用于客户端的配置项
[server]应用于服务器的配置项
[client]应用于客户端的配置项
如果选项组里面出现了相同的选项则以后面出现的选项配置为准
### 8.指定搜索配置文件
mysqld --default-file文件路径
与--default-extra-file不同的是只搜索给定路径的配置文件
### 9.命令行启动项和配置文件的区别
(1) 有些针对于命令行应用的配置项是配置文件没有的
(2) 命令行方式是临时作用的而配置文件方式是持久作用的
(3) 命令行会覆盖与之相同的配置文件选项当然是临时作用的
五、mysql系统变量
### 1. 导入
了解mysql的系统变量我们可以熟悉当前版本的默认功能行为
### 2.查看系统变量
show variables [like 匹配模式]
## 3.系统变量分类
按作用域分全局、会话(部分)
按时效分临时【命令行】、持久【配置文件】
### 4.设置系统变量
1通过启动项设置命令行方式、配置文件方式
2服务器运行过程中命令设置set [global|session] 系统变量名值; 【作用域默认为session】
### 5.系统变量规范
虽然我们通过启动项设置系统变量时多个单词的变量名可以用“-”或“_”连接
但是他们在内部都会转换成“_”连接的形式所以我们查看时要用“_”连接的系统变量名。
示例show variables like max_connections;【设置时可以mysqld --max-connects10】
### 6.系统变量和启动项
(1) 有些系统变量是运行过程中生成的不能通过启动项来设置如character_set_client
(2) 启动项是程序启动传递的配置参数而系统变量是支持和决定程序运行行为的变量
(3) 有些启动项也不是程序运行所需的也就不是系统变量如defaults-file
### 7. 补充状态变量
指我们不能设置改变的变量由程序内部自己设置的变量我们可以查看来了解服务器程序的运行状况
show [global|session] status [like 匹配模式];
六、mysql字符集
编码和解码 编码将字符映射为二进制数据的过程 解码将二进制数据映射到字符的过程 常见字符集五种 ASCII字符数范围0~1281字节表示 Latin1(ISO 8859-1)字符数范围为0~2561-2字节表示 GB2312字符数范围6763(汉字)6821-2字节表示 GBK在GB2312基础上的扩充(兼容)1-2字节表示 Unicode世界级字符收编UTF-8(1-4字节)、UTF-16(2-4字节)、UTF-32(4字节) 相关概念 (1) 变长编码方式 指使用不同字节数来表示一个字符的编码方式比如上面提到的GB2312、Unicode (2) 为什么有变长编码方式 无非是兼容比如Latin1用1-2字节表示1字节表示就是因为兼容ASCII mysql字符集要点
### 1. mysql中的UTF-8
utf8mb3阉割过的UTF-8字符集用1-3字节表示在mysql中utf8指的就是utf8mb3
utf8mb4正宗的UTF-8字符集用1-4字节表示
版本情况MySQL8.0将utf8mb4作为默认字符集
### 2.查看当前mysql支持的字符集
show (character set|charset) [like 匹配模式];
### 3.比较规则
一种字符集可以有多种比较规则都有默认的比较规则
查看支持的比较规则show collation [like 匹配模式];
示例show collation like utf8\_%(斜杠是转义符)
## 比较规则名称后缀含义
_ai accent insensitive 不区分重音
_as accent sensitive 区分重音
_ci case insensitive 不区分大小写
_cs case sensitive 区分大小写
_bin binary 以二进制大小比较
### 4. 字符集和比较规则
## 分类
服务器级别、数据库级别、表级别、列级别
## 服务器级别
(1) 相关系统变量character_set_server(字符集)、collation_server比较规则
(2) 查看默认值show variables where variable_name in(character_set_server,collation_server);
(3) 设置启动项或配置文件方式
## 数据库级别
(1) 相关系统变量character_set_database(字符集)、collation_database(比较规则)
(2) 查看默认值要注意的是明确当前使用的数据库使用【use 数据库】
(3) 设置只能在创建数据库的时候指定默认字符集和比较规则(创建好之后修改语句无法作用)数据库级别默认是参考服务器级别的所以我们一般默认就好
create database 数据库 character set 字符集 collation 比较规则;
## 表级别
(1) 查看show table status from 数据库 like 表名;
(2) 设置默认参考数据库级别的
create table 表名(...) character set 字符集 collation 比较规则;
## 列级别
(1) 查看show full columns from 表名;
(2) 设置默认参考表级别的
create table 表名(列名 类型 character set 字符集 collation 比较规则);
alter table 表名 modify 列名 类型 character set 字符集 collation 比较规则;
## 二者关系
字符集和比较规则是双向绑定的如果修改了某个另一个也跟着改变
向上参考原则列 表 数据库 服务器
mysql字符集(客户端和服务端)
### 1.引入
客户端和服务端之间进程通信发送数据会涉及到字符集的问题于是出现了MySQL通信协议(规定了数据格式)
### 2.客户端字符集
一般客户端请求编码字符集为操作系统当前使用的字符集
## 类UNIX
决定系统字符集的系统变量LANG、LC_CTYPE、LC_ALL(优先级依次递增以后者为准)
## Windows
字符集又称代码页
查看字符集chcp
数值对应关系936(GBK)、65001(UTF-8)
设置字符集mysql -uroot -p --default-character-set字符集;
### 3.服务器字符集
服务器主要维护了3个相关的字符character_set_client、character_set_connection、character_set_result
## 连接
当客户端和服务器建立连接后在服务器会维护一个会话级别的变量来作为服务器响应的字符集即character_set_client
## 处理
处理请求时又会将character_set_client转换为会话级别的系统变量character_set_connection
也就是用character_set_client字符集对请求数据解码然后用character_set_connection字符集对数据进行编码
与之对应的比较规则collation_connection。
## 响应
服务器处理请求后需要响应给客户端结果这时又由系统变量character_set_result决定
## 总结
所以来说只有保证连接、处理和响应三个环节的字符集一致才会保证顺利编解码和响应
## 一次性设置上面三个系统变量
set names 字符集;
### 4.字符集冲突
若客户端系统字符集、表字符集和列字符集冲突则以【列字符集】为准(优先级更高)
### 5.字符集定义过程
客户端连接服务器(登录) 初始化客户端字符集并发送给服务器 根据客户端字符集初始化服务器字符集(3个系统变量)