mysql 必知必会整理—全球化与本地化[十六]
前言
简单介绍一下字符集。
数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。
因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。
字符集为字母和符号的集合;
编码为某个字符集成员的内部表示;
校对为规定字符如何比较的指令。
校对为什么重要 排序英文正文很容易,对吗?或许不。考
虑词APE、apex和Apple。它们处于正确的排序顺序吗?这有
赖于你是否想区分大小写。使用区分大小写的校对顺序,这
些词有一种排序方式,使用不区分大小写的校对顺序有另外
一种排序方式。这不仅影响排序(如用ORDER BY排序数据),
还影响搜索(例如,寻找apple的WHERE子句是否能找到
APPLE)。在使用诸如法文à或德文ö这样的字符时,情况更复
杂,在使用不基于拉丁文的字符集(日文、希伯来文、俄文
等)时,情况更为复杂。
在MySQL的正常数据库活动(SELECT、INSERT等)中,不需要操心太多的东西。使用何种字符集和校对的决定在服务器、数据库和表级进行。
正文
MySQL支持众多的字符集。为查看所支持的字符集完整列表,使用以下语句:
SHOW CHARACTER SET;
这条语句显示所有可用的字符集以及每个字符集的描述和默认校对。
为了查看所支持校对的完整列表,使用以下语句:
SHOW COLLATION;
此语句显示所有可用的校对,以及它们适用的字符集。可以看
到有的字符集具有不止一种校对。例如,latin1对不同的欧洲
语言有几种校对,而且许多校对出现两次,一次区分大小写(由_cs表示),
一次不区分大小写(由_ci表示)。
通常系统管理在安装时定义一个默认的字符集和校对。此外,也可
以在创建数据库时,指定默认的字符集和校对。为了确定所用的字符集
和校对,可以使用以下语句:
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
实际上,字符集很少是服务器范围(甚至数据库范围)的设置。
不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建表时指定。

此语句创建一个包含两列的表,并且指定一个字符集和一个校对顺序。
这个例子中指定了CHARACTER SET和COLLATE两者。一般,MySQL如下确定使用什么样的字符集和校对。
如果指定CHARACTER SET和COLLATE两者,则使用这些值。
如果只指定CHARACTER SET,则使用此字符集及其默认的校对(如SHOW CHARACTER SET的结果中所示)。
如果既不指定CHARACTER SET,也不指定COLLATE,则使用数据库默认。
除了能指定字符集和校对的表范围外,MySQL还允许对每个列设置它们,如下所示:

这里对整个表以及一个特定的列指定了CHARACTER SET和COLLATE。
如前所述,校对在对用ORDER BY子句检索出来的数据排序时起重要的作用。
如果你需要用与创建表时不同的校对顺序排序特定的SELECT语句,可以在SELECT语句自身中进行:

此SELECT使用COLLATE指定一个备用的校对顺序(在这个例子中,为区分大小写的校对)。这显然将会影响到结果排序的次序。
临时区分大小写 上面的SELECT语句演示了在通常不区分大小写的表上进行区分大小写搜索的一种技术。当然,反过来也是可以的。
SELECT的其他COLLATE子句 除了这里看到的在ORDER BY子 句中使用以外,COLLATE还可以用于GROUP BY、HAVING、聚集函数、别名等。
最后,值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用Cast()或Convert()函数。
结
下一节账户安全。
mysql 必知必会整理—全球化与本地化[十六]的更多相关文章
- 《MySQL必知必会》整理
目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...
- 《MySQL必知必会》学习笔记整理
简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...
- MySQL必知必会(第4版)整理笔记
参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...
- 《MySQL 必知必会》读书总结
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- 【MySQL 基础】MySQL必知必会
MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...
- mysql学习--mysql必知必会1
例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...
- mysql必知必会系列(一)
mysql必知必会系列是本人在读<mysql必知必会>中的笔记,方便自己以后查看. MySQL. Oracle以及Microsoft SQL Server等数据库是基于客户机-服务器的数据 ...
- 《mysql必知必会》读书笔记--存储过程的使用
以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
随机推荐
- 13 Codeforces Round 886 (Div. 4)G. The Morning Star(简单容斥)
G. The Morning Star 思路:用map记录x,y,以及y-x.y+x 从前往后统计一遍答案即可 公式\(ans+=cnt[x]+cnt[y]-2 * cnt[x,y]+cnt[y+x] ...
- 为什么现在连Date类都不建议使用了?
一.有什么问题吗java.util.Date? java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用). ...
- k8s通过help、dry-run、explain提高编写yaml效率
在Kubernetes(k8s)环境中,help.dry-run和explain命令可以帮助你提高编写YAML文件的效率.这些命令提供了关于资源定义.命令用法和字段说明的信息,从而让你能够更快速.更准 ...
- Android USB开发—USB通信
USB通信两端分别称为:HOST(USB主机) 与 Device(USB从机/USB配件),常见的主机就是我们的计算机.而Android 可以支持USB主机模式与USB配件模式,意思就是Android ...
- Java课堂
import java.awt.*; import java.awt.event.*; import java.util.*; public class Main{ public static dou ...
- 宁波市ctf线下赛awd总结
这是第四届宁波市ctf比赛的线下awd经验总结. 由于主办方的服务器出错,原定于14:00开始的比赛,最后17:30才开始,一直打到20:30. 并且突然改了一部分比赛方式,取消了前30分钟的加固时间 ...
- 用phpStudy配置apache服务器
一:下载phpStudy 1进入官网https://www.xp.cn/download.html 选择稳定的2018版本 2执行下载好的文件,选择下载地址 注意!这里的安装路径不能有中文 3亮两个绿 ...
- RabbitMQ集群运维实践
一.RabbitMQ的集群模式 主要有两种:普通集群模式和镜像队列模式.下面分别介绍这两种模式的原理: 1.普通集群模式: 在普通集群模式下,RabbitMQ的集群节点之间主要同步元数据,而不同步存储 ...
- 三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析
三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析 三维模型的轻量化压缩是一项技术挑战,特别是在处理复杂的3DTile格式时.下面列举了一些处理过程中可能遇到的常见问题以及相应的处理方法: ...
- npm install安装依赖包时报错npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.js,npm ERR! ChromeDriver installation failed Error with http(s) request: Error: read ECONNRESET
PS E:\20231213\uirecorder> PS E:\20231213\uirecorder> PS E:\20231213\uirecorder> PS E:\2023 ...