【MySQL】Linux中MySQL的使用及配置

一、字符集修改

1、MySQL8.0之前,字符集都默认是latin1,从MySQL8.0开始,字符集utf8mb4,这意味着,在默认情况下,MySQL8.0之前都是不支持中文的

# 查看字符集信息,主要是character_set_server和character_set_database
show variables like '%character%';

# 创建一个database,进行插入中文测试
create database dbtest1;

create table test1(
id INT,
name VARCHAR(10)
);

insert into test1(id,name)VALUES(1,'decade');
insert into test1(id,name)VALUES(2,'十年');

我们发现,在MySQL5.7中,如果不修改字符集,插入中文时会报错

insert into test1(id,name)VALUES(2,'十年')
1366 - Incorrect string value: '\xE5\x8D\x81\xE5\xB9\xB4' for column 'name' at row 1

2、修改字符集
Windows系统中,我们要修改MySQL的字符集,需要修改my.ini文件
而在Linux系统中,MySQL的配置文件为/etc/my.cnf

vim /etc/my.cnf

# 输入i,进入编辑模式,在mysqld标签下加入如下配置,设置服务器级别的字符集
character_set_server=utf8
# 输入esc退出编辑模式,:wq!,保存文件的变更

# 保存后,重启MySQL服务
systemctl restart mysqld

注意:上述指令不会已经创建的database的字符集产生影响
在建表时,如果没有显式指定字符集,那么新建表的字符集会和当前database的字符集保持一致

3、修改已创建的database或者表的字符集

# 修改database的字符集
ALTER DATABASE dbtest1 CHARACTER set 'utf8';
# 查看数据库database的字符集
show create DATABASE dbtest1;
# 修改已创建表的字符集
ALTER TABLE test1 CONVERT to CHARACTER set 'utf8';
# 修改已创建表的字符集和比较规则
ALTER TABLE test1 CHARACTER set 'utf8' COLLATE 'utf8_general_ci'; 
# 查看已创建表的字符集
show create table test1;
# 修改字段的字符集
alter table test1 modify name varchar(10) character set utf8;

4、MySQL存在四个级别的字符集

  • 服务器级别
  • 数据库级别
  • 表级别
  • 列级别

优先级,列>表>数据库>服务器,如果优先级高的没有设置字符集,那么默认使用它上一级的字符集

二、SQL大小写规范

1、在SQL中,关键字(如SELECT、WHERE、ORDER、GROUP BY等)以及函数名(如ABS、ROUND、MAX)是不区分大小写的
2、Windows默认对大小写不敏感,Linux对大小写是敏感的
分别在Windows和Linux中执行SHOW VARIABLES LIKE '%lower_case_table_names%';,结果如下
在这里插入图片描述
在这里插入图片描述

  • value默认为0,表示大小写敏感
  • value设置为1表示不敏感,创建的数据库和表都是以小写的形式放在磁盘中,sql语句都是先转换成小写再去执行
  • value设置为2,数据库和表按照创建时的大小写进行存放,sql的执行也会先转换成小写

3、Linux中MySQL的大小写规则

  • 数据库名、表名、表的别名、变量名严格区分大小写
  • 关键字、函数名在SQL中不区分大小写
  • 列名、列的别名忽略大小写

4、SQL编写规范

  • 关键字、函数名全部大写
  • 数据库名、表名、表的别名、字段名、字段别名等全部小写,便于和关键字、函数名进行区分
  • SQL语句以分号结尾

三、sql_mode

1、sql_mode会影响MySQL支持的语法以及数据校验的严格性

2、宽松模式和严格模式

  • 如果sql_mode是宽松模式,当插入的数据不满足要求时,也可能会被接受,而且不会报错
  • 如果是严格模式,当试图插入错误数据时,数据库不会接受,会报error错误,并且事务回滚

3、sql_mode的查看与修改

  • 查看
mysql> select @@SESSION.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@SESSION.sql_mode                                                                                                                        |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
  • 临时修改:修改session会话或者全局global变量
# 只在当前会话中有效
SET SESSION sql_mode = 'STRICT_TRANS_TABLES';
# 只在当前服务中有效,MySQL服务重启就会失效
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES';
  • 永久修改:修改配置文件my.cnf并重启MySQL服务
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

如有错误,欢迎指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/737635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

感应电机转差速度估算

在感应电机矢量控制中,需要计算出感应电机的机械转差速度(同步速度和转子速度之间的差)。以下方程描述了感应电机磁场定向控制 (FOC) 中转差速度值的关系: 如果我们保持转子磁通恒定,并且 d 轴与转子磁通参考系对齐&am…

ArkTS开发系列之导航 (2.7动画)

上篇回顾: ArkTS开发系列之导航 (2.6 图形) 本篇内容:动画的学习使用 一、 知识储备 1. 布局更新动画 包含显式动画(animateTo)和属性动画(animation) 动画类型名称特点显式动画闭包内的变…

CV每日论文--2024.6.24

1、Whiteboard-of-Thought: Thinking Step-by-Step Across Modalities 中文标题:思维白板:跨模式逐步思考 简介:这段话描述了一种利用思维白板提示来增强大型语言模型在视觉推理任务中的性能的方法。 人类在解决需要视觉思考的问题时,通常会…

计算机网络知识点汇总(三)

1.2 计算机网络体系结构与参考模型 1.2.1 计算机网络分层结构 计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。换言之,计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义。要强调的是,这些功能究竟是用何种硬件…

中小企业应该怎么挑选和使用进销存管理系统?

中小企业应该怎么挑选和使用进销存管理系统? 一、中小企业为啥需要进销存系统? 进销存系统,简单来说,就是一套集进货、销售、库存于一体的管理软件。它通过对企业生产经营中物料流、资金流进行条码全程跟踪管理,能提…

LED恒流调光电路

LED等在工作的时候发热较大,所以通常选用铝基板作为底板;常用白色油墨。 LED必须在恒流源电路下工作,下图为最简单的恒流源:B极电压3.3V不变左下侧蓝色的为稳压二极管,由于BE极可以看做二极管,压降为0.7V&…

国产MCU芯片(1):航顺芯片MCU概览

前言: 截止2023年底,全国有3451家芯片设计公司,已经IPO的就有168家,尚未IPO的3283家中超过一半的年营收在1000万以下,迅猛发展的几年的确有些国产芯片开始站上赛道,这也是国际大背景下的一种必然选择,毕竟突然间出现的大市场需要国产顶上,但资本市场是周期性的,国产替…

自动驾驶---Perception之Lidar点云3D检测

1 背景 Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人…

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中 code review! 文章目录 CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中1.CMAKE_INSTALL_PREFIX详解变量作用设置 CMAKE_INSTALL_PREFIX示例影响范围常见用法特别…

maya模型仓鼠制作

小仓鼠建模(6)_哔哩哔哩_bilibili 20240623作品---个人评价:第一次做的,虽然有点丑,但是还能看!希望后面有些进步

第10章 启动过程组 (识别干系人)

第10章 启动过程组 10.2识别干系人,在第三版教材第361~362页; 文字图片音频方式 视频13 第一个知识点:主要工具与技术 1、数据收集 问卷调查 包括一对一调查、焦点小组讨论,或其他大规模信息收集技术 头脑风暴 头脑风暴&#xff…

章十九、JavaVUE —— 框架、指令、声明周期、Vue-cli、组件路由、Element

目录 一、 框架 ● vue.js 框架 ● 特点 ● Vue 安装 二、 第一个vue程序 ● 创建项目 ​编辑 ● 导入 vue.js ● 创建vue对象,设置属性,使用模版渲染到页面 介绍 — Vue.js (vuejs.org) 三、 vue指令 ● v-text ● v-html ● v-…

5个wordpress成品站主题

Sora索啦高端制造业wordpress主题 红色高端制造业wordpress主题,适合外贸企业出海建独立站的wordpress模板。 https://www.jianzhanpress.com/?p5885 Polar钋啦wordpress外贸主题 制造业wordpress网站模板,适合生产制造企业官方网站使用的wordpress外…

产品体验周刊第1期(2024-6-24)

产品体验 微信公众号改版 微信公众号文章底部改版,原“点赞”“再看”相关的读者互动模块固定底部栏。作者内容与读者反馈本就是一起组成内容的必要元素,相比较于抖音、小红书,微信公众号的改版可能来的稍微晚了一点。 微信输入法 平常发微…

Linux根目录挂载点(/dev/mapper/centos-root)扩容

如果我们在安装系统是采用自定义分区的话,就可以提前规划好这个事情。但是如果平常没注意就直接采用默认安装的方式的话。一旦 根目录的容量耗尽,将会影响业务的运行。今天我们来扩容逻辑卷。 默认安装的话会给home目录分比较多的空间,我们可…

浅析缓存技术

缓存技术的原理 缓存技术通过在内存中存储数据副本来加速数据访问。当应用程序需要数据时,首先检查缓存是否存在数据副本,如果有则直接返回,否则再从原始数据源获取。这种机制大大减少了访问时间,提升了系统的响应速度和整体性能。…

家政预约小程序14权限配置

目录 1 创建用户2 创建角色3 启用登录4 实现退出总结 我们现在小程序端的功能基本开发好了,小程序开发好之后需要给运营人员提供管理后台,要分配账号、配置权限,我们本篇就介绍一下权限如何分配。 1 创建用户 在微搭中,用户分为内…

使用Fiddler如何创造大量数据!

1、找到评论提交接口 找到我们的评论 2、构造数据 怎么再次发送呢? 这里发送了4次 我们创造了4条数据,我们再去评论区瞅瞅 3、如何解决图片显示问题? 手机端-设置-Wlan-高级-网址不适用代理,将不需要图片的域名加入 4、不抓包的…

MySQL锁、加锁机制(超详细)—— 锁分类、全局锁、共享锁、排他锁;表锁、元数据锁、意向锁;行锁、间隙锁、临键锁;乐观锁、悲观锁

文章目录 一、概述1.1 MySQL锁的由来1.2 锁定义1.3 锁分类 二、共享锁与排他锁2.1 共享锁(S锁)2.2 排他锁(X锁)2.3 MySQL锁的释放 三、全局锁3.1 介绍3.2 语法3.3 特点 四、表级锁4.1 介绍4.2 表锁4.3 元数据锁(Meta D…

SpringUtils.getBean 空指针异常问题

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 今天在新的jeecg-boot里加入下面的代码 /*** 部门经理处理类** author nbacheng* date 2023-08-06*/ AllArgsConstructor Component("DepManagerHandler") DependsOn({"Sp…