【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) …...
GHelper终极指南:5步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿
GHelper终极指南:5步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyr…...
Umi-OCR终极指南:开源免费离线OCR的完整实战方案
Umi-OCR终极指南:开源免费离线OCR的完整实战方案 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。…...
C语言笔记6:变量生命周期、指针与数组指针全解析
#本篇博客基于C语言学习这两天核心笔记整理,聚焦变量生命周期与存储类型、指针基础与用法、数组与指针深度结合三大模块,从基础概念到代码实战,帮你彻底吃透C语言核心难点。一、变量生命周期与存储类型 1. 核心概念 生命周期:变量…...
GLM-4-9B-Chat-1M部署全攻略:vLLM加速+Chainlit界面,新手友好教程
GLM-4-9B-Chat-1M部署全攻略:vLLM加速Chainlit界面,新手友好教程 1. 为什么选择GLM-4-9B-Chat-1M GLM-4-9B-Chat-1M是智谱AI推出的新一代开源大模型,在多项基准测试中表现出色。这个版本特别针对长文本对话场景优化,支持高达1M&…...
保姆级教程:Qwen3-ASR-0.6B语音识别模型5分钟快速部署与使用
保姆级教程:Qwen3-ASR-0.6B语音识别模型5分钟快速部署与使用 1. 快速了解Qwen3-ASR-0.6B Qwen3-ASR-0.6B是一款轻量级但功能强大的语音识别模型,由通义千问团队开发。它最吸引人的特点是支持52种语言和方言的识别,包括中文普通话、英语、粤…...
南北阁Nanbeige 4.1-3B固件开发实战:从编译到烧录全流程
南北阁Nanbeige 4.1-3B固件开发实战:从编译到烧录全流程 探索如何利用南北阁Nanbeige 4.1-3B模型优化嵌入式设备的固件开发流程,提升开发效率与智能化水平。 1. 引言:当AI大模型遇见嵌入式固件开发 如果你正在开发物联网设备,肯定…...
哔哩下载姬:为什么这个开源工具能彻底改变您的B站视频下载体验?
哔哩下载姬:为什么这个开源工具能彻底改变您的B站视频下载体验? 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频…...
5分钟精通抖音批量下载神器:douyin-downloader完整使用指南
5分钟精通抖音批量下载神器:douyin-downloader完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
衣柜里的暖,是藏不住的牵挂
老李独居在老房子里,儿女都在外地打拼,一年到头难得回几次家,平日里冷冷清清的屋子,只有逢年过节才会热闹几分。 北方的冬天总是格外漫长,寒风一吹,窗户缝里都透着刺骨的凉,老李年纪大了&#x…...
PHP零起点入门:适合普通学习者的极简教程
PHP从零开始:手把手入门指南与实战教程 PHP是一门专门用于Web开发的服务器端脚本语言,最大特点是能嵌入HTML,上手简单且就业需求大。本文避开复杂术语,用“操作步骤实际代码”带你从0学会PHP,每个例子都能直接复制运行…...
