服务器是直接和数据进行交互的,客户端知识发送增删改查请求,而服务器响应这些请求
在bin目录下启动mysqld这个可执行文件:
若配置环境变量: mysqld
(一)、启动mysql的服务端和客户端
服务端
UNIX:
1. mysqld
2.mysqld_safe 间接调用mysqld,而且启动另外监控进程,当服务器挂掉时,帮助重启,并可以产生错误日志
3.mysql.server start/stop 调用mysqld_safe
Windows:
1. mysqld
2. 首先将mysql注册为服务 : "mysql路径\bin\mysqld" --install
之后就可以用 net start/stop MySQL
客户端
mysql -h主机名 -u用户名 -p密码
服务器处理客户端请求过程
连接管理: 判断身份
查询缓存: 在缓存中查看是否已查询过,如果有则返回,没有在往后执行
语法解析: 判断语法是否有错误
查询优化: 比如外连接转化成内连接,表示式简化
存储引擎: MySQL把数据存储和查询操作封装到一个模块里(接收上层传下来的指令,然后对表中的数据进行提取或写入操作)
存储引擎简介
常见的存储引擎: Innodb,Mysiam,Memory
常见操作
1. 查看当前服务器支持的存储引擎
SHOW ENGINES;
2. 设置表的存储引擎
CREATE TABLE table_name(
建表语句;
) ENGINE = 存储引擎名称
3. 修改表的存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名称;
4. 查看表结构:
show create table 表名;
面试中经常问存储引擎的区别。。。。。。。注意记忆
Mysql启动选项和系统变量
服务器允许连入的客户端为151,表的默认存储引擎式InnoDB
以下都是在开启服务端时在命令行中添加
1. 禁止客户端使用TCP/IP网络进行连接
mysqld --skip-networking
2. 改变表的默认存储引擎
mysqld --default-storage-engine=MyISAM
3. 帮助选项
mysql --help
mysqld_safe --help
mysqld --verbose --help
长形式 | 短形式 | 含义 |
--host | -h | 主机名 |
--user | -u | 用户名 |
--password | -p | 密码 |
--port | -P | 端口号 |
--version | -V | 版本 |
不过常用的设置配置文件的信息,具体的自己百度
4. 系统变量
mysql服务器程序运行时有很多影响到程序行为的变量,叫做mysql的系统变量
- 查看系统变量
- show variables [like 配置的模式]
- show varibales like 'default_storage_engine'
- show variables like 'max_connections'
- show variables like 'deault%'
- show variables [like 配置的模式]
- 设置启动选项
- mysqld --default-storge-engine=MyISAM --max-connections=10
- 配置文件中设置 my.ini
5. 变量作用域
全局变量 GLOBAL 影响服务器的整体操作
会话变量 SESSION(LOCAL) 影响某个客户端连接操作
在服务器启动的时候,会设置变量作用域为GLOBAL,当有客户端进行连接的时候,将变量设置为会话变量,其值为GLOBAL变量值
在服务器运行期间,在客户端进行改变系统变量的值
set [GLOBAL|SESSION] 系统变量名 = 值;
或者
set [@@(GLOBAL|SESSION).]var_name = xxx;
注意:
a)、如果在设置系统变量的语句中省略了作用范围,默认的作用范围是SESSION
b)、show variables 语句查看的是session的作用范围的系统变量
不过也可以自己设置
show [GLOBAL|SESSION] variables [like 匹配模式]
6、 状态变量
状态变量是用来显示服务器程序运行状况的,所以值只能由服务器来进行设置
作用范围: GLOBAL,SESSION ,默认是SESSION
查看: show [SESSION|GLOBAL] STATUS LIKE 'XXX';
(二)、字符集相关
字符集比较规则: 同一种字符集可以有多种比较规则
1、 MySQL中的字符集
utf8mb3: 只使用1-3个字节表示字符
utf8mb4: 使用1-4个字节表示字符
utf8是utfmb3的别名,如果要存储一些表情,使用utf8mb4
2、字符集的查看
show (CHARACTER SET|CHARSET) [LIKE 匹配的模式]
字符集名称 | MaxLen |
ascii | 1 |
latin1 | 1 |
gb2312 | 2 |
gbk | 2 |
utf8 | 3 |
utf8mb4 | 4 |
3、比较规则
show collation [like 匹配模式];
4、字符集和比较规则的应用
1)、各级别的字符集和比较规则
服务器级别
数据库级别
表级别
列级别
2)客户端和服务端通信中的字符集
客户端于服务端交互的是字符串,其中有字符集转换的概念
为了防止混淆,设置成一致的就好了: set names 字符集名
如果是windows系统,应该设置成gbk
(三)、存储引擎———InnoDB
1、真实数据在不同存储引擎中存放的格式一般是不同的
2、Memory这个存储引擎数据不放在数据库中,等服务器关闭数据就消失了
3、InnoDB当处理插入或修改请求时,将数据划分为若干页,以页为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为16KB
(1)、InnoDB行格式
1) 行格式类型: Compact,Redundant,Dynamic,Compressed
2) 创建或修改表中的行格式
create table 表明 (列的信息) ROW_FORMAT=行格式名称
alter table 表明 ROW_FORMAT=行格式名称