【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.mzph.cn/news/115855.shtml

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

相关文章

stream流相关操作

stream真的没有什么好说的,filter、map这俩常用的程序可以说每天都要写好几遍,那么问题来了,为什么还要拿出来讲讲呢?当然不可能是因为想要划水,主要是工作中它的其他相关方法也有不少涉及。以下是按照不同需求涉及到的…

docker 安装 Centos7

1. 从docker 安装 Centos7 查看有哪些 centos7 系统:docker search centos72. 安装 centos7 docker pull docker.io/ansible/centos7-ansible3.使用镜像创建容器 docker run -itd -p 8022:22 --namevm01 -v /bodata:/bodata -h vm01 --privilegedtrue 688353a31…

#力扣:面试题 02.03. 删除中间节点@FDDLC

面试题 02.03. 删除中间节点 - 力扣(LeetCode) 一、Java /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val x; }* }*/ class Solution {public void deleteNode(List…

华为OD 字符串统计(全量和占用字符集)(100分)【java】B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

如何能通过表面挖掘到深层次的底层思维?

如何能通过表面挖掘到深层次的底层思维? 挖掘深层次的底层思维是一项复杂且细致的工作,通常涉及到个人反思、观察、沟通和分析等多个方面。下面是一些可能会对你有帮助的策略和方法: 1. 提问的艺术 五次为什么:这是一种简单而有…

flutter doctor检测环境,出现CocoaPods installed but not working

1. 安装flutter, 地址: 安装和环境配置 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 2. 安装成功后,通过flutter doctor检测环境。以mac为例,出现了CocoaPods installed but not working 错误提示时,以下为解决方案: 2.1 rvm i…

java实现邮件发送

一 申请授权码 具体申请方式请自行百度&#xff0c;很简单的 二 163网易邮箱发送 2.1 导入pom <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency> 2…

matlab逐像元计算栅格数据10年间的变化趋势代码

% 指定目标文件夹的路径 folder_path E:\; % 替换为目标文件夹路径% 使用 dir 函数列出目标文件夹下的指定位置的文件 file_pattern *.tif; % 例如&#xff0c;获取所有扩展名为".tif"的文件 files dir(fullfile(folder_path, file_pattern)); % 装载文件 dataLis…

QtCreator 查看类帮助文档,快捷键操作:按两次F1 全屏帮助,Esc取消全屏

如何查看类帮助文档 选择类&#xff0c;按F1查看类帮助文档。 示例&#xff1a; #include <QLabel> // 将光标放在QLabel上&#xff0c;按F1右侧弹出的类帮助手册可视宽度很小&#xff0c;如果按两次 F1 键&#xff0c;帮助文档将会以全屏模式显示&#xff0c;以便更清…

Linux高性能编程学习-TCP/IP协议族

一、TCP/IP协议族结构与主要协议 分层&#xff1a;数据链路层、网络层、传输层、应用层 1. 数据链路层 功能&#xff1a;实现网卡驱动程序&#xff0c;处理数据在不同物理介质的传输 协议&#xff1a; ARP&#xff1a;将目标机器的IP地址转成MAC地址RARP&#xff1a;将MAC地…

2023年10月小程序云开发cms内容管理无法使用,无法同步内容模型到云开发数据库的解决方案

一&#xff0c;问题描述 最近越来越多的同学找石头哥&#xff0c;说cms用不了&#xff0c;其实是小程序官方最近又搞大动作了&#xff0c;偷偷的升级的云开发cms&#xff08;内容管理&#xff09;以下都称cms&#xff0c;不升级不要紧&#xff0c;这一升级&#xff0c;就导致我…

SpringBoot Lombok的使用

目录 下载Lombok插件 Lombok的用法 获取日志对象 生成get,set方法 Lombok框架的实现原理 Lombok的常用注解 下载Lombok插件 要使用Lombok首先要确保idea安装了lombok插件 在项目中添加 lombok依赖 在<dependency>里右键生成点击edit starters 插件(没有就下载,可…

STM32不使用 cubeMX实现外部中断

这篇文章将介绍如何不使用 cubeMX完成外部中断的配置和实现。 文章目录 前言一、文件加入工程二、代码解析exti.cexti.hmain.c 注意&#xff1a;总结 前言 实验开发板&#xff1a;STM32F103C8T6。所需软件&#xff1a;keil5 &#xff0c; cubeMX 。实验目的&#xff1a;如何不…

Python 测试框架unittest和pytest的优劣

一、Unittest Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试&#xff0c;测试用例的初始化、…

【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建

为摒弃在接受keil邮件&#xff0c;研究了下gun编译&#xff0c;以STM32F407为例&#xff0c;简单记录 1. 软件包准备 Git 选择对应版本直接安装即可https://git-scm.com/download/winmakegcc ​ 1&#xff09;将上述软件包放置于C盘根目录 2&#xff09;添加环境变量 3&am…

循环神经网络(Recurrent Neural Network)

1. 为什么需要循环神经网络 RNN 上图是一幅全连接神经网络图&#xff0c;我们可以看到输入层-隐藏层-输出层&#xff0c;他们每一层之间是相互独立地&#xff0c;(框框里面代表同一层)&#xff0c;每一次输入生成一个节点&#xff0c;同一层中每个节点之间又相互独立的话&#…

07、Python -- 序列相关函数与封包解包

目录 使用函数字符串也能比较大小序列封包序列解包多变量同时赋值 最大值、最小值、长度 序列解包与封包 使用函数 len()、max()、min() 函数可获取元组、列表的长度、最大值和最小值。 字符串也能比较大小 字符串比较大小时&#xff0c;将会依次按字符串中每个字符对应的编…

GB28181学习(十二)——报警事件通知和分发

要求 发生报警事件时&#xff0c;源设备将报警信息发送给SIP服务器&#xff1b;报警事件通知和分发使用MESSAGE方法&#xff1b;源设备包括&#xff1a; SIP设备网关SIP客户端联网系统综合接处警系统以及卡口系统 目标设备包括&#xff1a; 具有接警功能的SIP客户端联网系统综…

学习pytorch14 损失函数与反向传播

神经网络-损失函数与反向传播 官网损失函数L1Loss MAE 平均MSELoss 平方差CROSSENTROPYLOSS 交叉熵损失注意code 反向传播在debug中的显示code B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/nn.html#loss-functions 损失函数 L1Loss MAE 平均 import to…

Linux使用find命令查找文件

find命令 简介语法格式基本参数 参考实例根目录下文件名称的例子指定路径下特定类型的例子指定路径、文件类型特定文件名称的例子指定路径、文件类型特定文件大小的例子指定路径、文件类型 查找近期修改时间的例子指定路径、文件类型 查找空文件或目录的例子指定路径、文件类型…