一、Linux下MySQL的安装与使用

1. 基于docker安装mysql

docker pull mysql:5.7.38
// 注意容器其中的文件夹内容会被外部文件夹内容覆盖掉
// 建议:
// 步骤1:先不挂载conf.d文件夹,先启动mysql容器,使得在容器里面生成my.cnf文件。 
// 步骤2:然后拷贝my.cnf到主机上。
// 步骤3:然后挂载主机my.cnf到容器,并且启动容器,就可以了。

docker run -p 13306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d a3

2. 字符集的相关操作

2.1 修改MySQL5.7字符集

  1. 修改步骤
    在MySQL 8.0版本之前,默认字符集为 latin1 ,utf8字符集指向的是 utf8mb3 。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为 utf8mb4 ,从而避免上述乱码的问题。
    操作1:查看默认使用的字符集
show variables like 'character%'; 

# 或者 

show variables like '%char%';
  • MySQL8.0中执行:
    在这里插入图片描述

  • MySQL5.7中执行:
    MySQL 5.7 默认的客户端和服务器都用了 latin1 ,不支持中文,保存中文会报错。MySQL5.7截图如下:

在这里插入图片描述

在MySQL5.7中添加中文数据时,报错:

在这里插入图片描述

因为默认情况下,创建表使用的是 latin1 。如下:

在这里插入图片描述

操作2:修改字符集

vim /etc/my.cnf

在MySQL5.7或之前的版本中,在文件最后加上中文字符集配置:

character_set_server=utf8

在这里插入图片描述

操作3:重新启动MySQL服务

systemctl restart mysqld

但是原库、原表的设定不会发生变化,参数修改只对新建的数据库生效。

2.2 各级别的字符集

MySQL有4个级别的字符集和比较规则,分别是:

  • 服务器级别
  • 数据库级别
  • 表级别
  • 列级别
    执行如下SQL语句:
show variables like 'character%';

在这里插入图片描述

  • character_set_server:服务器级别的字符集
  • character_set_database:当前数据库的字符集
  • character_set_client:服务器解码请求时使用的字符集
  • character_set_connection:服务器处理请求时会把请求字符串从character_set_client转为character_set_connection
  • character_set_results:服务器向客户端返回数据时使用的字符集
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 字符集与比较规则(了解)

2.4 请求到响应过程中字符集的变化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. SQL大小写规范

3.1 Windows和Linux平台区别

  • 在 SQL 中,关键字和函数名是不用区分字母大小写的,比如 SELECT、WHERE、ORDER、GROUP BY 等关键字,以及 ABS、MOD、ROUND、MAX 等函数名。
  • 不过在 SQL 中,你还是要确定大小写的规范,因为在 Linux 和 Windows 环境下,你可能会遇到不同的大小写问题。 windows系统默认大小写不敏感 ,但是 linux系统是大小写敏感的
  • 通过如下命令查看:
SHOW VARIABLES LIKE '%lower_case_table_names%'

在这里插入图片描述

在这里插入图片描述

3.2 Linux下大小写规则设置

  • 当想设置为大小写不敏感时,要在 my.cnf 这个配置文件 [mysqld] 中加入 lower_case_table_names=1 ,然后重启服务器。
  • 但是要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则将找不到数据库名。
  • 此参数适用于MySQL5.7。在MySQL 8下禁止在重新启动 MySQL 服务时将 lower_case_table_names 设置成不同于初始化 MySQL 服务时设置的 lower_case_table_names 值。如果非要将MySQL8设置为大小写不敏感,具体步骤为:
1、停止MySQL服务 
2、删除数据目录,即删除 /var/lib/mysql 目录 
3、在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1 
4、启动MySQL服务

3.3 SQL编写建议

在这里插入图片描述

4. sql_mode的合理设置

4.1 宽松模式 vs 严格模式

在这里插入图片描述

在这里插入图片描述

4.2 宽松模式再举例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.3 模式查看和设置

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ModelBulider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值