ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)

我们首先看下常见建表语句:

mallAllGoodsCREATE TABLE `qywl`.`mallAllGoods` ( `id` varchar(64) NOT NULL COMMENT '主键id',`userId` varchar(64) NOT NULL DEFAULT '' COMMENT '发布人id',`storeId` varchar(64) NOT NULL DEFAULT '' COMMENT '发布商号id',`data` varchar(1000) NOT NULL DEFAULT '' COMMENT '服务详情',`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '服务类型(2车源,3货源,4酒店、5本地生活,6卡车)',`createTime` timestamp(6) default CURRENT_TIMESTAMP(6) NOT NULL COMMENT '创建时间',`updateTime` timestamp(6) default CURRENT_TIMESTAMP(6) NOT NULL ON update CURRENT_TIMESTAMP(6) COMMENT '更新时间',`logicalDel` tinyint(1) DEFAULT '0' NOT NULL COMMENT '逻辑删除标识(0未删除,1已删除)',PRIMARY KEY (`id`),INDEX `idx_userId` (`userId`),INDEX `idx_storeId` (`storeId`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='所有服务信息表';

定义:

CHARSET :给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,给定字符列表为{‘A’,’B’}时,{‘A’=>0, ‘B’=>1}就是一个字符集;
COLLATE 是指在同一字符集内字符之间的比较规则;确定比较规则后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;


COLLATE 会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,总之,凡是涉及到字符类型比较或排序的地方,都和COLLATE有关。
命名惯例:以对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;

mysql字符集和校验规则的对应关系:

每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中有一个是默认(Default Collation);

查询mysql数据库所支持的字符集种类:

sql
1show character set;

7a914b0693f4bf64bdf8e354636c294d.png

查询mysql数据库所支持字符集的校验规则:

sql
1show collation;

64bce798357a28ef8773819d6bf02a02.png

Mysql的字符集和校验规则有4个级别的默认设置:服务器级,数据库级,表级和字段级客户端交互时,也可以指定校验规则

查看服务器级字符编码

sql
1show variables like 'character_set_server'

查看服务器级校验规则

sql
1show variables like 'collation_server'


服务器级字符集和校验规则,在Mysql启动时确定,在my.cnf中设置,如果没有指定字符集,默认为latin1,如果没有设置校验规则,默认使用字符集校验规则。

在mysql8.0以下版本中,默认的CHARSET是Latin1,默认的COLLATE是latin1_swedish_ci。从mysql8.0开始,默认的CHARSET已经改为了utf8mb4,默认的COLLATE改为了utf8mb4_0900_ai_ci。

sql
1
2
3[mysqld]character-set-server=utf8collation_server=utf8_general_ci

数据库级字符集和校验规则:

查看数据库级字符编码

sql
1show variables like 'character_set_database'

查看数据库级校验规则

sql
1show variables like 'collation_database'

库级别设置

sql
1CREATE DATABASE <db_name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


如果库级别没有设置,则库级别默认使用服务器级别的设置。

表级别设置

sql
1
2
3CREATE TABLE (……) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


如果表级别没有设置,则表级别会继承库级别的设置。

列级别的设置

sql
1
2
3
4CREATE TABLE (`field1` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',……) ……


如果列级别没有设置,则列级别会继承表级别的设置。

也可以在写SQL查询的时候显示声明COLLATE来覆盖任何库表列的COLLATE设置

sql
1
2SELECT DISTINCT field1 COLLATE utf8mb4_general_ci FROM table1;SELECT field1, field2 FROM table1 ORDER BY field1 COLLATE utf8mb4_unicode_ci;

优先级:

如果全都显示设置了,那么优先级顺序是 SQL语句 > 列级别设置 > 表级别设置 > 库级别设置 > 服务器别设置

几个需要注意的点:

1. 不同校验规则连表查会报错

sqlselect * from mallPageView as mLEFT JOIN mallStore as son m.storeId=s.id;[Err] 1267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='可以指定排序规则:select * from mallPageView as mLEFT JOIN mallStore as son CONVERT(m.storeId USING utf8) COLLATE utf8_unicode_ci=s.id;


2. utf8和utf8mb4

utf-8 是变化长度的编码,储存需要1~4个字节
然而,mysql的utf8只存储最多3个字节。所以有些字符存不进去,像emoji表情等。
为了兼容4字节,MySQL在5.5.3之后增加了这个utf8mb4的编码。
建库,建表时,强烈建议编码使用utf8mb4。

3. utf8_unicode_ci、utf8_general_ci该用哪一个

当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言。
utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß'等于‘ss'。

utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的 校对规则相比,比较正确性较差。

例如,使用utf8_general_ci和utf8_unicode_ci两种校对规则下面的比较相等:
Ä = A
Ö = O
Ü = U

两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:
ß = s

但是,对于utf8_unicode_ci下面等式成立:
ß = ss

总结:

utf8_general_ci校对速度快,但准确度稍差
utf8_unicode_ci准确度高,但校对速度稍慢


DBA建议使用传统的utf8_general_ci

参考资料:https://www.mysqlzh.com/doc/94.html

作者:合一研发部-王治虎

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

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

相关文章

SQL 附加数据库时出现 无法打开物理文件错误

错误信息: 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------ 无法打开物理文件 "D:\SqlDataBase\Test.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server&#xff0c;错误…

Flash网页游戏辅助工具制作简析

《热血三国》好像是比较热&#xff0c;玩的人也挺多的&#xff0c;年前一个朋友希望能让我写一个这个游戏的外挂&#xff0c;也出于无聊&#xff0c;所以去玩了一下&#xff0c;谁知道一玩就有点喜欢这个游戏了&#xff0c;当然玩归玩&#xff0c;东西还是要做地&#xff0c;当…

sqlserver2008导出mysql_SQLserver 2008将数据导出到Sql脚本文件的方法

请看下面的操作图解。1.使用Sql Server Management Studio 2008 连接数据库。2.选中要导出数据的数据库节点&#xff0c;点鼠标右键&#xff0c;在菜单中选择“任务”->“生成脚本”&#xff0c;如图&#xff1a;3。在弹出的界面中&#xff0c;点2次“下一步”进入如图界面中…

opencv配置_Opencv在vs2012下的配置

别问我为什么记录这么老的版本&#xff0c;问就是因为老师推荐和因为怕自己再次把小米的搜索框给忘记了&#xff0c;又找个好几十分钟的【环境变量】。另外&#xff0c;要敲敲自己的脑袋&#xff0c;作为小米电脑的老用户怎么可以把搜索框给忘记了呢&#xff1f;第一步&#xf…

php7安装mysqli扩展_Ubuntu14版本下无法使用php7.2版本的bcmath扩展

在使用如下命令安装bcmath扩展的时候sudo apt-add-repository ppa:ondrej/phpsudo apt-get updatesudo apt-get install php7.2-bcmath提示如下信息Reading package lists... DoneBuilding dependency tree Reading state information... DoneE: Unable to locate packag…

input 0.1无法相加_你真的知道0.1+0.2为何不等于0.3吗?

打开chrome控制台&#xff0c;给一个特别简单的输入如下&#xff1a;0.1 0.2 // 0.30000000000000004 复制代码不知道你有没有吃惊&#xff0c;这么简单的一个计算&#xff0c;无论在js中还是在python中&#xff0c;都不是准确的0.3&#xff0c;这是为什么呢&#xff1f;缘起要…

python图像增强_Python图像的增强处理操作示例【基于ImageEnhance类】

本文实例讲述了Python图像的增强处理操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a; python中PIL模块中有一个叫做ImageEnhance的类&#xff0c;该类专门用于图像的增强处理&#xff0c;不仅可以增强&#xff08;或减弱&#xff09;图像的亮度、对比度、色度&…

python 二项分布_二项分布的理论基础、应用及Python实践

二项分布是概率统计中非常基础、非常实用的一种分布&#xff0c;可以说它在我们的生活中无所不在。它说明了这样一种现象&#xff1a;在给定的试验次数中&#xff0c;某一结果会发生多少次。比如&#xff1a;这个月有多少天会刮北风&#xff1f;今年有多少天会下雨&#xff1f;…

python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

在现阶段大数据的时代中&#xff0c;想要实现对数据的获取和分析&#xff0c;要先具备足够的数据源&#xff0c;网络爬虫技术就为其数据获取提供了良好的条件&#xff0c;且还能够实现对数据源的目的性采集。在网络爬虫技术应用中&#xff0c;Python 脚本语言的使用十分广泛&am…

maven 整体打包_Spirng boot maven多模块打包不踩坑(示例代码)

本文参考 https://blog.csdn.net/Ser_Bad/article/details/78433340经过实战一次通过。回话不多说&#xff0c;话费不多说&#xff0c;直接上图。项目整体结构&#xff1a;父模块&#xff1a;xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocatio…

使用mysql制作学生成绩单_【实例讲解】快速制作学生成绩单

本文由网友潇之骥授权原创直发今天有位学校的老师找我给她作学生成绩单&#xff0c;给的数据如图1&#xff1a;(图1)需要的效果如下&#xff1a;(图2)讲解&#xff1a;要实现这种效果&#xff0c;只要用【邮件合并】这个功能就可以轻松搞定。要用好【邮件合并】这个功能&#x…

c语言 判断一个图是否全连通_基于云平台的全链路大规模网络连通性检测系统详解...

虚拟网络排查问题困难&#xff0c;传统的traceroute等工具很难起到太大作用&#xff0c;大部分情况下都需要到宿主机、混合云网关上抓包来troubleshooting&#xff0c;耗时又费力。有些场景中包的传送路径比较长(如跨域、混合云等)&#xff0c;可能丢包的地方比较多&#xff0c…

java对接华为推送服务_华为HMS Core 4.0版本即将来袭:包含新推送服务

据官方消息&#xff0c;在12月27日的HUAWEI Developer Groups(简称HDG)大连活动上&#xff0c;华为消费者云服务HMS运营经理透露HMS Core 4.0版本即将上线&#xff0c;由原来的14项增加至24项核心开放功能&#xff0c;近日即将开放新版本众测&#xff0c;不久之后开发者们将会体…

python xml etree_python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别和基本使用...

1、解析速度&#xff1a;ElementTree在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree &#xff0c;另外一种是速度快一点的 xml.etree.cElementTree 。你要记住&#xff1a; 尽量使用 C 语言实现的那种&#xff0c;因为它速度更快&#xff0c;而…

CISSP的成长之路(二十一):用户持有凭证

在51CTO安全频道特别策划的CISSP的成长之路系列的上一篇文章《讲解身份验证过程》里,J0ker给大家介绍了用户验证时所依赖的三种验证要素、密码和密码短语及其安全使用原则。作为技术实施难度和成本最低的用户验证方案&#xff0c;基于密码的用户验证方案广泛应用于我们的日常生…

独家:Havok 发布新的 AI 中间件

独家&#xff1a;Havok 发布新的 AI 中间件 March 23rd, 2009 Alex J. Champandard 2009-3-23&#xff0c;赖勇浩&#xff08;http://blog.csdn.net/lanphaday&#xff09;译 原文地址&#xff1a;http://aigamedev.com/middleware/havok-ai-announced 在20日&#xff08;上周五…

mysql查询入门_Mysql入门(四)查询

我们继续查询~条件查询及逻辑运算符条件查询如果我只想查询&#xff0c;年级小于30的&#xff0c;可以加个where条件关键字~条件查询敲黑板select * from yingxiong where y_age<30where 表示条件(条件关键字)&#xff0c;在where之后跟过滤的条件注意&#xff1a;逻辑运算符…

maven provided_Maven 教程之 pom.xml 详解

点击上方“Java知音”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;dunwuhttps://github.com/dunwu/blog推荐阅读(点击即可跳转阅读)1. SpringBoot内容聚合2. 面试题内容聚合3. 设计模式内容聚合4. Mybatis内容聚合5. 多线程内容聚合简介什…

python将一个列表里面的某类元素取出来_03|Python列表常见操作

欢迎关注pythoner派微信公众号及头条号Python常见的数据结构我们在上一节中已经讲过再阅读文章前&#xff0c;请打开PythonIDE列表&#xff1a;1.定义一个列表现在我们有3瓶不同类型的啤酒&#xff0c;现在我们将其放入列表之中beer [粉象,白熊,橙色炸弹]2.向列表中追加元素现…

使用SDL打造游戏世界之入门篇 - 2

VC6下SDL的安装和初步使用首先&#xff0c;我们为所有的工程创建一个文件夹tutorial,将下载的开发库SDL-devel-1.2.8-VC6.zip拷贝到tutorial下并解压&#xff0c;并保证如下的文件夹层次&#xff08;图2&#xff09;如下&#xff1a;图2下面我们打开Visual Studio6.0&#xff0…