【MySQL架构篇】MySQL字符集、大小写规范及默认数据库
文章目录
- 1. 字符集与字符集比较规则
- 2. 大小写规范
- 3. 默认数据库
- 4. 与文件系统相关
1. 字符集与字符集比较规则
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: 服务器向客户端返回数据时使用的字符集
查看字符集默认比较规则:
SHOW charset;

上表中,MySQL版本一共支持41种字符集,其中的 Default collation 列表示这种字符集中一种默认的比较规则,里面包含着该比较规则主要作用于哪种语言,比如 utf8_polish_ci 表示以波兰语的规则比较 utf8_spanish_ci 是以西班牙语的规则比较,utf8_general_ci 是一种通用的比较规则
后缀表示该比较规则是否区分语言中的重音、大小写。具体如下:
| 后缀 | 英文释义 | 描述 |
|---|---|---|
| _ai | accent insensitive | 不区分重音 |
| _as | accent sensitive | 区分重音 |
| _ci | case insensitive | 不区分大小写 |
| _cs | case sensitive | 区分大小写 |
| _bin | binary | 以二进制方式比较 |
通常我们都是使用utf8_general_ci
说明1:
utf8_unicode_ci 和 utf8_general_ci 对中、英文来说没有实质的差别
utf8_unicode_ci 校对速度快,但准确度稍差
utf8_general_ci 准确度高,但校对速度较差
一般情况,用 utf8_general_ci 就够了,但如果应用中有德语、法语或者俄语,请一定使用 utf8_unicode_ci
说明2:
修改了数据库的默认字符集和比较规则后,原来创建的表的字符集和比较规则并不会改变,如果需要,那么需要单独修改
响应过程中编码解码的总结图:

2. 大小写规范
在MySQL中,windows系统默认大小写不敏感,但是 linux 系统是大小写敏感的
通过如下命令查看:
SHOW VARIABLES LIKE '%lower_case_table_names%'; -- linux 0; windows 1
- lower_case_table_names参数值的设置:
- Linux默认为0,大小写敏感
- 设置1,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转换为小写对表和数据库进行查找
- 设置2,创建的表和数据库依据语句上格式存放,凡是查找都是转换为小写进行
两个平台上SQL大小写的区别具体来说:
- 数据库名、表名、表的别名、变量名是严格区分大小写的;
- 关键字、函数名称在SQL 中不区分大小写;
- 列名(或字段名)与列的别名(或段别名)在所有的情况下均是忽略大小写的
在MySQL 8下禁止在重新启动 MySQL 服务时将 lower_case_table_names 设置成不同于初始化 MySOL 服务时设置的 lower_case_table_names 值
PS:非大佬请不要尝试将windows的修改为0,作者已经因为想要这么操作导致不得不重装MySQL了
如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:
- 关键字和函数名称全部大写;
- 数据库名、表名、表别名、字段名、字段别名等全部小写:
- SQL 语句必须以分号结尾
3. 默认数据库
安装MySQL后,系统默认带的四个默认数据库
-
mysql
MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息一些运行过程中产生的日志信息,一些帮助信息以及时区信息等
-
information_schema
保存着MySQL服务器
维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。在系统数据库information_schema中提供了一些以innodb_sys开头的表,用于表示内部系统表 -
performance_schema
主要保存MySQL服务器运行过程中的一些状态信息,可以用来
监控MySQL服务的各类性能指标。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息 -
sys
主要是通过视图的形式把
information_schema和performance_schema结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能
4. 与文件系统相关
举例: 数据库a , 表b
1、如果表b采用 InnoDB,data\a中会产生1个或者2个文件:
b.frm: 描述表结构文件,字段长度等- 如果采用
系统表空间模式的,数据信息和索引信息都存储在ibdata1中 - 如果采用
独立表空间存储模式,data\a中会产生b.ibd文件(存储数据信息和索引信息)
此外
- MySQL5.7 中会在data\a的目录下生成
db.opt文件用于保存数据库的相关配置。比如: 字符集、比较规则。而MySQL8.0不再提供db.opt文件 - MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中
2、如果表b采用MyISAM,data\a中会产生3个文件:
-
MySQL5.7 中:
b.frm: 描述表结构文件,字段长度等MySQL8.0 中 b.xxx.sdi : 描述表结构文件,字段长度等
-
b.MYD (MYData): 数据信息文件,存储数据信息(如采用独立表存储模式)
-
b.MYI(MYIndex): 存放索引信息文件
相关文章:
【MySQL架构篇】MySQL字符集、大小写规范及默认数据库
文章目录 1. 字符集与字符集比较规则2. 大小写规范3. 默认数据库4. 与文件系统相关 1. 字符集与字符集比较规则 MySQL有4个级别的字符集和比较规则,分别是 服务器级别数据库级别表级别列级别 当创建对应表或列未指定字符集时,默认会取其上一级别的字符…...
【Linux系统编程】命令模式2
目录 一,Linux下的初阶认识 1,管道 2,时间戳 二,Liunx系统命令操作 1,date时间指令 2,cal日历指令 3,which和find查找指令 3-1,which指令: 3-2,find…...
【Leetcode】【中等】1726.同积元组
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/tuple-with-same-product/ 给你…...
Git教程
文章目录 Git 介绍GIt历史Git 安装环境配置工作区、缓存区和仓库区(版本库)工作区(工作目录)暂存区仓库区git工作目录下文件的装填 Git 生成公钥及添加到gitlab或Gerrit上Git常用命令git stautsgit statu -sgit addgit commitgit reset1. git reset --ha…...
使用序列化技术保存数据 改进 IO流完成项目实战水果库存系统
上一节内容是 使用IO流完成项目实战水果库存系统https://blog.csdn.net/m0_65152767/article/details/133999972?spm1001.2014.3001.5501 package com.csdn.fruit.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java…...
0基础学习PyFlink——使用PyFlink的Sink将结果输出到外部系统
在《0基础学习PyFlink——使用PyFlink的SQL进行字数统计》一文中,我们直接执行了Select查询操作,在终端中直接看到了查询结果。 select word, count(1) as count from source group by word; ------------------------------------------------------ |…...
会声会影2024旗舰版详细功能介绍
随着网络视频的蓬勃发展,越来越多的人开始涉足视频剪辑领域,毕竟技多不压身嘛。在众多剪辑软件中,剪映和会声会影是备受新手青睐的两种。那么,会声会影和剪映哪个好呢?在它们之间,哪一个更适合初学者呢接&a…...
QtCreator 查看类帮助文档,快捷键操作:按两次F1 全屏帮助,Esc取消全屏
如何查看类帮助文档 选择类,按F1查看类帮助文档。 示例: #include <QLabel> // 将光标放在QLabel上,按F1右侧弹出的类帮助手册可视宽度很小,如果按两次 F1 键,帮助文档将会以全屏模式显示,以便更清…...
C语言文件操作(1)
C语言文件操作(1) 文章目录 C语言文件操作(1)一、理解文件1.概述2.分类①.正常角度②.文本文件和二进制文件 二、文件的打开和关闭1.流和标准流2.文件类型指针3.文件的打开和关闭以及使用类型 三、文件缓冲区 一、理解文件 1.概述…...
adb 操作命令(adb调试QT项目使用到的命令)
1.adb连接串口 获取root权限 adb root && adb remount && adb shell2.测试串口命令 stty -F /dev/ttyS4 cs8 -parenb -cstopb -echoecho "12345\n" > /dev/ttyS8cat /dev/ttyS4 &3.软件在安卓系统上的名字已经活动名称(下面是示…...
mysql下载和安装,使用
先下载安装 官方下载 已下载备份软件 安装,一路下一步设置环境变量 4. 打开一个cmd,输入mysql -u root -p...
Redis底层核心数据结构详解
文章目录 一、深入String(SDS)1. 字符串简介2. SDS存在的意义3. SDS结构设计4. SDS与C字符串的区别4.1 常数复杂度获取字符串长度4.2 杜绝缓冲区溢出4.3 二进制安全4.4 SDS API 5 小结 二、深入List (QuickList)1. 链表节点结构设计2. Redis的链表实现的…...
如何学会从产品经理角度去思考问题?
如何学会从产品经理角度去思考问题? 从产品经理的角度思考问题意味着你需要关注产品从构思到上市全过程中的各个方面,包括用户需求、市场趋势、设计、开发、测试、上市后的用户反馈等。以下是一些策略和方法,帮助你培养从产品经理角度思考问…...
正则表达式的神奇世界:表达、匹配和提取
正则表达式的神奇世界:表达、匹配和提取 前言第一: 什么是正则表达式?第二: 字符匹配和量词:1. 字符匹配:2. 量词:3. 贪婪和非贪婪匹配: 第三:字符类和元字符1. 字符类&a…...
密码登录虽安全,但有时很麻烦!如何禁用或删除Windows 11中的密码登录
如果你想在Windows 11上自动登录,在本指南中,我们将向你展示如何删除你的帐户密码。 在Windows 11上,你可以至少通过三种方式从帐户中删除登录密码。在你的帐户上使用密码有助于保护你的计算机和文件免受来自internet或本地的未经授权的访问。然而,在某些情况下,密码可能…...
Python实现的快速排序代码
Python实现的快速排序代码 def bubble_sort(arr): n len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j1]: arr[j], arr[j1] arr[j1], arr[j] return arr 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,…...
【USRP】通信基带物理层历史
无线通信的基带物理层开发历史涵盖了从早期无线技术到当前复杂的移动通信标准的各种进步。以下是关于无线通信基带物理层开发的简要历史概述: 无线电初期:20世纪初,Guglielmo Marconi等人通过无线电进行了早期的无线通信尝试。这些早期的尝试…...
依靠继承与聚合,实现maven搭建分布式项目
简介聚合 对于复杂的Maven项目,一般建议采用多模块的方式来设计开发,便于后期维护管理。但是构建项目时,如果每次都需要按模块一个一个进行构建会十分麻烦,而Maven的聚合功能就可以很好的解决这个问题,当用户对聚合模…...
华为OD 叠积木(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
vue重修之自定义项目、ESLint和代码规范修复
文章目录 VueCli 自定义创建项目ESlint代码规范及手动修复代码规范错误 VueCli 自定义创建项目 安装脚手架 (已安装) npm i vue/cli -g创建项目 vue create xxx选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) …...
别再死记M法T法公式了!用Arduino和常见编码器手把手教你电机测速(附代码)
用Arduino实战编码器测速:告别公式背诵,从接线到可视化分析 当你第一次拿到那个小巧的增量式编码器时,可能会被那些专业术语吓到——M法、T法、分辨率、倍频...但我要告诉你一个秘密:这些概念远没有看起来那么可怕。本文将带你用最…...
SAP SD装运点自动带出逻辑详解:从销售订单到交货单的完整流程与配置检查清单
SAP SD装运点自动带出逻辑深度解析:从销售订单到交货单的实战指南 在SAP SD模块中,装运点(Shipping Point)的自动决定机制是供应链执行的核心枢纽。想象一下这样的场景:当销售团队在系统中录入一笔跨国订单时ÿ…...
如何在Windows上轻松完成Android刷机:FastbootEnhance终极指南
如何在Windows上轻松完成Android刷机:FastbootEnhance终极指南 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 还在为复杂的Android刷…...
Mask2Former vs MaskFormer:图像分割新老模型对比测试(含小物体分割优化方案)
Mask2Former vs MaskFormer:图像分割实战对比与小物体优化指南 当我们在城市街景中试图识别每一个交通标志,或在医学影像中定位微小的病灶时,小物体分割的精度直接决定了AI系统的实用价值。作为Meta(原Facebook)AI研究…...
玛伐凯泰治疗梗阻性肥厚型心肌病,36周pVO₂提高1.7mL/kg/min
梗阻性肥厚型心肌病(HCM)作为一种以心肌肥厚为特征的遗传性心脏病,严重影响患者的生活质量与生存率。传统治疗手段虽能在一定程度上缓解症状,但无法从根本上解决心肌过度收缩的核心病理生理机制,患者病情仍可能持续进展…...
ArduinoOcppMongoose:轻量级OCPP 1.6 WebSocket嵌入式适配器
1. ArduinoOcppMongoose:面向智能充电终端的轻量级OCPP 1.6 WebSocket适配器1.1 项目定位与工程价值ArduinoOcppMongoose 是一个专为资源受限嵌入式平台设计的 OCPP(Open Charge Point Protocol)1.6 协议栈通信适配层,其核心作用是…...
哔哩下载姬:为什么这个开源工具能彻底改变您的B站视频下载体验?
哔哩下载姬:为什么这个开源工具能彻底改变您的B站视频下载体验? 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频…...
Qt打印报表避坑指南:如何用QPrinter设置A4纸横向/纵向并实现精准分页?
Qt报表打印实战:精准控制A4纸方向与分页的7个关键技巧 在开发企业级应用时,报表打印功能往往是刚需,但也是最容易出问题的环节之一。最近接手一个财务系统项目时,就遇到了这样的场景:客户要求将月度对账单导出为PDF&am…...
ChatGLM3-6B与Kubernetes集成:云原生部署实战
ChatGLM3-6B与Kubernetes集成:云原生部署实战 1. 引言 在人工智能快速发展的今天,如何高效部署和管理大语言模型成为了许多开发者和企业面临的实际问题。传统的单机部署方式虽然简单,但在面对高并发访问、弹性扩缩容和故障恢复等场景时显得…...
FPGA等精度频率计设计与实现
1. 等精度频率计的核心原理 等精度频率测量法之所以在FPGA设计中备受青睐,关键在于它巧妙地规避了传统方法的测量盲区。想象一下用两种不同的秒表测量短跑成绩:一个秒表由裁判手动控制(软件闸门),另一个由运动员冲线瞬…...
