【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 是一种通用的比较规则

后缀表示该比较规则是否区分语言中的重音、大小写。具体如下:

后缀英文释义描述
_aiaccent insensitive不区分重音
_asaccent sensitive区分重音
_cicase insensitive不区分大小写
_cscase sensitive区分大小写
_binbinary以二进制方式比较

通常我们都是使用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大小写的区别具体来说:

  1. 数据库名、表名、表的别名、变量名是严格区分大小写的;
  2. 关键字、函数名称在SQL 中不区分大小写;
  3. 列名(或字段名)与列的别名(或段别名)在所有的情况下均是忽略大小写的

在MySQL 8下禁止在重新启动 MySQL 服务时将 lower_case_table_names 设置成不同于初始化 MySOL 服务时设置的 lower_case_table_names

PS:非大佬请不要尝试将windows的修改为0,作者已经因为想要这么操作导致不得不重装MySQL了

如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:

  1. 关键字和函数名称全部大写;
  2. 数据库名、表名、表别名、字段名、字段别名等全部小写:
  3. SQL 语句必须以分号结尾

3. 默认数据库

安装MySQL后,系统默认带的四个默认数据库

  • mysql

    MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息一些运行过程中产生的日志信息,一些帮助信息以及时区信息等

  • information_schema

    保存着MySQL服务器 维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。在系统数据库 information_schema 中提供了一些以 innodb_sys 开头的表,用于表示内部系统表

  • performance_schema

    主要保存MySQL服务器运行过程中的一些状态信息,可以用来 监控MySQL 服务的各类性能指标。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息

  • sys

    主要是通过视图的形式把 information_schemaperformance_schema 结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能

4. 与文件系统相关

举例: 数据库a , 表b

1、如果表b采用 InnoDB,data\a中会产生1个或者2个文件:

  • b.frm : 描述表结构文件,字段长度等
  • 如果采用 系统表空间 模式的,数据信息和索引信息都存储在 ibdata1
  • 如果采用 独立表空间 存储模式,data\a中会产生 b.ibd 文件(存储数据信息和索引信息)

此外

  1. MySQL5.7 中会在data\a的目录下生成 db.opt 文件用于保存数据库的相关配置。比如: 字符集、比较规则。而MySQL8.0不再提供 db.opt文件
  2. 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): 存放索引信息文件

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的表操作,配置文件,储存引擎,数据类型

MySQL中的表操作 1 查库(已密码登陆mysql) show databases; 2 添加库 create database t1; 3 表操作 1选定操作库 use t1 2在库里添加表格式 create table t1(id int, name varchar(32), gender varchar(32),age int); 3往表里添加具体元素 insert…

OpenCV 笔记(2):图像的属性以及像素相关的操作

Part11. 图像的属性 11.1 Mat 的主要属性 在前文中,我们大致了解了 Mat 的基本结构以及它的创建与赋值。接下来我们通过一个例子,来看看 Mat 所包含的常用属性。 先创建一个 3*4 的四通道的矩阵,并打印出其相关的属性,稍后会详细…

django建站过程(2)创建第一个应用程序页面

创建第一个应用程序页面 设置第一个页面【settings.py,urls.py,views.py】settings.pyurls.pyviews.py django是由一系列应用程序组成,协同工作,让项目成为一个整体。前面已创建了一个应用程序baseapp,使用的命令 python manage.py startapp baseapps这…

2023全新小程序广告流量主奖励发放系统源码 流量变现系统

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 分享软件,吃瓜视频,或其他资源内容,通过用户付费买会员来变现,用户需要付费,有些人喜欢白嫖,所以会流失一部分用户,所以就写了这个系统…

RustCC分享会|非凸科技与开发者共同探讨Rust安全进化

10月15日,非凸科技受邀参加RustCC联合多家开发者社区组织的Global Tour of Rust技术分享活动,旨在为Rust开发者提供交流互动的平台,分享Rust语言的知识、经验和最佳实践。 活动上,非凸科技成都分公司研发总监赵海峰以“Rust安全进…

系统架构师备考倒计时13天(每日知识点)

1. 数据仓库四大特点 面向主题的。操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。集成的。数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整…

TechSmith Camtasia 2023 for Mac 屏幕录像视频录制编辑软件

​ TechSmith Camtasia for Mac 2023中文破解版 是一款专业的屏幕录像视频录制编辑软件,非常容易就可以获得精彩的截屏视频。创建引人注目的培训,演示和演示视频。Camtasia 屏幕录制软件简化,直观,让您看起来像专业人士。利用Camt…

安卓使用android studio跨进程通信之AIDL

我写这篇文章不想从最基础的介绍开始,我直接上步骤吧. 1.创建服务端 1.1:创建服务端项目:我的as版本比较高,页面就是这样的 1.2:创建AIDL文件,右键项目,选中aidl aidl名字可以自定义也可以默认 basicTypes是自带的,可以删掉,也可以不删,然后把你自己所需的接口写上去 1.3:创建…

让uniGUI支持https

今天在专家的帮助下,成功的让uniGUI支持https了。 首先,去申请个**的证书。我同事去阿里申请的,申请回是一个zip文件,里面有两个文件,一个扩展是per,一个key 然后,把这两个证书文件放到uniGUI…

06、Python 序列 与 列表 与 元组 的关系和创建 和 简单使用

目录 序列元组与列表关系总结 创建元组与列表方式一创建元组注意点 创建元组与列表方式二简单使用通过索引访问元素子序列序列加法序列乘法in运算 了解Python序列 创建列表和元组 通过索引访问元素 子序列 序列运算 序列 所谓序列,指的是一种包含多项数据的数据结…

【蓝桥每日一题]-动态规划 (保姆级教程 篇11)#方格取数2.0 #传纸条

目录 题目:方格取数 思路: 题目:传纸条 思路: 题目:方格取数 (跑两次) 思路: 如果记录一种方案后再去跑另一个方案,影响因素太多了,所以两个方案要同时开…

FL Studio 21 for Mac中文破解版百度网盘免费下载安装激活

FL Studio 21 for Mac中文破解版是Mac系统中的一款水果音乐编辑软件,提供多种插件,包括采样器、合成器和效果器,可编辑不同风格的音乐作品,Pattern/Song双模式,可兼容第三方插件和音效包,为您的创意插上翅膀…

Unity3D 基础——鼠标悬停更改物体颜色,移走恢复

方法介绍 【unity学习笔记】OnMouseEnter、OnMouseOver、OnMouseExit_unity onmouseover_一白梦人的博客-CSDN博客https://blog.csdn.net/a1208498468/article/details/117856445 GetComponent()详解_getcomponet<> 动态名称-CSDN博客https://blog.csdn.net/kaixindrag…

uniapp 测试 app 到安卓模拟器部署方法以及常见错误解决 无废话

uniapp 测试 app 到安卓模拟器 1.1 安装安卓模拟器 https://www.yeshen.com/ 1.2 查看安装模拟器端口 右击夜神模拟器属性打开文件位置 在打开的文件夹找到 debugReport 双击运行查看运行出来的端口号 一般都是&#xff1a;62001 1.3 HBuilder 配置 选中项目运行运行到手机…

自然语言处理---Transformer机制详解之ELMo模型介绍

1 ELMo简介 ELMo是2018年3月由华盛顿大学提出的一种预训练模型. ELMo的全称是Embeddings from Language Models.ELMo模型的提出源于论文<< Deep Contextualized Word Representations >>.ELMo模型提出的动机源于研究人员认为一个好的预训练语言模型应该能够包含丰…

opencv dnn模块 示例(19) 目标检测 object_detection 之 yolox

文章目录 0、前言1、网络介绍1.1、输入1.2、Backbone主干网络1.3、Neck1.4、Prediction预测输出1.4.1、Decoupled Head解耦头1.4.2、Anchor-Free1.4.3、标签分配1.4.4、Loss计算 1.5、Yolox-s、l、m、x系列1.6、轻量级网络研究1.6.1、轻量级网络1.6.2、数据增强的优缺点 1.7、Y…

【JavaEE】线程安全的集合类 -- 多线程篇(9)

线程安全的集合类 多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表 多线程环境使用 ArrayList 自己使用同步机制 (synchronized 或者 ReentrantLock)Collections.synchronizedList(new ArrayList); synchronizedList 是标准库提供的一个基于 synchronized 进…

nginx的使用

一、nginx下载 1.打开nginx官网http://nginx.org/en/index.html 下载安装链接 nginx&#xff08;NGINX&#xff09;详细下载安装及使用教程&#xff08;非常适合入门&#xff09;_nginx下载-CSDN博客 二、安装nginx # 前往用户根目录 cd ~#下载nginx1.13.7wget http://nginx…

Flink之Window窗口机制

窗口Window机制 窗口概述窗口的分类是否按键分区按键分区窗口非按键分区 按照驱动类型按具体分配规则滚动窗口Tumbling Windows滑动窗口 Sliding Windows会话窗口 Session Windows全局窗口 Global Windows 时间语义窗口分配器 Window Assigners时间窗口计数窗口例子 窗口函数 W…

商品价格区间筛选

列表应用&#xff0c;商品价格区间筛选。 (本笔记适合熟悉python列表及列表的条件筛选的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么…