上海嘉定建设局官方网站,高能建站,做一个大型网站,虾皮购物网站怎么做文章目录 1. 字符集与字符集比较规则2. 大小写规范3. 默认数据库4. 与文件系统相关 1. 字符集与字符集比较规则
MySQL有4个级别的字符集和比较规则#xff0c;分别是
服务器级别数据库级别表级别列级别
当创建对应表或列未指定字符集时#xff0c;默认会取其上一级别的字符… 文章目录 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_connectioncharacter_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 1lower_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采用 InnoDBdata\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采用MyISAMdata\a中会产生3个文件: MySQL5.7 中: b.frm : 描述表结构文件字段长度等 MySQL8.0 中 b.xxx.sdi : 描述表结构文件字段长度等 b.MYD (MYData): 数据信息文件存储数据信息(如采用独立表存储模式) b.MYI(MYIndex): 存放索引信息文件