《Mysql 字符集》
一:什么是字符集呢?
- 引用书中的例子:同样是大熊猫,在大陆叫熊猫,在台湾叫猫熊,在美国叫Panda,要到了非洲,可能都不知道叫啥(于是就乱码了)。
- 在例子之后引入字符集的概念:字符集就是指符号和字符编码的集合。
- 不同地方的字典是不同的,就像你给美国人民看“熊猫两个字”,他们绝对不会联想出是 Panda(大熊猫) 这种动物的。
- SO,正确的使用字符集是非常重要的,使得输入与输出相匹配,才能出现正确的结果。
二:什么是字符集校对规则?(了解)
- 这里只做了解,因为每种字符集都用默认的校对规则,会在之后讲述。
- 简单来说,就是一种字符集合的排序规则。
三:字符集简介
- GB2312 包含简体中文及常用符号,采用双字节编码方式(一个汉字存两个字节)
- GBK 包含 中、日、韩 的大字符集,GB2312 可以说是 GBK 的子集,也可以说 GBK 是 GB2312 的超集。也是双字节编码方式。
- UFT8 支持大部分的常见字符(西、中、日、韩、法、俄),对英文一个字节编码,对于其他(如中文),采用三个字节编码。
- UTF8MB4 一个字符 4 字节存储,支持的字符最广,占用也最大。(支持 emoji)
四:如何选择合适的字符集?
- 支持多国语言配置, 选择 UTF-8
- 如果需要兼容老数据,必须选择包含该字符集的字符集合(也就是必须选择包含老数据的字符集)
- 如果只支持一般中文,数据量大,并且需要较高的性能,请选用GBK(比UTF8占用更小)
- 需要做字符集运算,选择定长字符,因为定长比不定长处理速度更快
- 选用字符集之后,请保持所有字符集一致
五:查看当前数据库版本支持什么字符集?
- 可以通过使用 show character set 查看 数据库版本 支持的字符集
六:服务端默认字符集用处?
- 设定 服务端字符集,避免因为服务端字符集和表字符集不同导致的乱码等问题。
- 
- 在这里涉及几个比较关键的,拿出来说一下
- 客户端发出的SQL语句,字符集由 character_set_client 来指定。
- 服务端收到SQL语句,字符集由 character_set_connection 来指定
- 服务端返回结果,字符集由 character_set_results 来指定。
七:如何设定服务端默认字符集?
- 全局设定
- 整个 MySQL 服务中生效。
- 写入 Mysql.conf 配置,每次启动 Mysql 服务生效。
- character_set_server=utf8
- 客户端设置,修改字符集(重启服务丢失)
- set global character_set_server=utf8;
八:用于指定存储数据时的字符集?
- 数据库级别
- 建立指定字符集的数据库
- CREATE DATABASE 数据库名 CHARSET 字符集;
- 查看数据库使用字符集
- SHOW CREATE DATABASE 数据库名;
- 修改数据库使用字符集
- ALTER DATABASE 数据库名 CHARSET 字符集;
- 表级别
- 建立表指定字符集
- CREATE TABLE 表名 (...) CHARSET=字符集;
- 修改表指定字符集
- ALTER TABLE 表名 CHARACTER SET 字符集;
- 列级别
- 建立指定字段字符集
- CREATE TABLE 表名 (字段名 VARCHAR(20) CHARSET 字符集....);
- 查看表中各列字符集定义
- SHOW FULL COLUMNS FROM 表名;
《Mysql 字符集》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Xmpp获取离线消息
文章只是选取了其中一段,无XMPP基础的人可能看起来有点复杂; 假设我们注册了一个用户,用户名叫shimiso,那么我们如何让shimiso这个用户一登陆就取到离线消息呢? PPConnection. ...
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏览器 ...
- ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据
本文中的45,对应 修改数据文件大小 里面的45 1.移动表前先对表空间做整理 alter tablespace data_cis_test coalesce; 2.在dba_extents找到与ID ...
- servlet中web.xml配置详解
Web.xml常用元素 <web-app> 所有部署描述符文件的顶层(根)元素 <display-name></display-name>定义了WEB应用的名字 & ...
- 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用
实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //-----------------Module_logic_gate ...
- 使用ActivityGroup需要注意的地方
Group里面的所有“孩子Activity”不能直接调用finish(),只能等ActivityGroup调用它自己的finish()后,会自动调用所有“孩子Activity”的finish().
- mac air 2012 mid 使用bootcamp 安装windows
一切都按正常顺序进行,到开始安装时,遇到错误: "提示windows无法安装到这个磁盘.选中的磁盘具有MBR分区表" 解决方法: 重新进入mac系统,使用bootcamp从头开始, ...
- [Laravel] 07 - Project: functions in Controller
故事背景 一.项目预览 From: https://www.imooc.com/video/12521 表单操作 一.新增信息 既然是操作,自然会想到:控制器. 控制器 [1] 路由 ----> ...
- &与&问题
1.后台传到前端的url,如果有&会被前端解析成&的(直接js获取的时候),所以最好是将数值放到input中,然后再获取
- Python实现C代码统计工具(四)
目录 Python实现C代码统计工具(四) 标签: Python 计时 持久化 声明 运行测试环境 一. 自定义计时函数 1.1 整个程序计时 1.2 代码片段计时 1.3 单条语句计时 二. 性能优 ...