《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 安装并启动 ...
随机推荐
- Git的使用(一)
最近在解除git的使用,开始觉得git某些地方还是挺方便的. 1.svn的话管理起来是比较方便,可是断网的话,会用不了 2.git的话,管理一些开源的东西比较方便,并且比较好管理日常写的demo程序, ...
- 【iCore4 双核心板_ARM】例程七:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在 规定时间喂狗(提前或超时),自动复位ARM,本实验通过按键按下,停止喂狗,从而产 生复位. 核心代码: in ...
- Java知多少(64)线程死锁
需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock).死锁发生在当两个线程对一对同步对象有循环依赖关系时.例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程.如果X的线程 ...
- Threads vs. Tasks
Posted on Friday, October 11, 2013 .Net has three low-level mechanisms to run code in parallel: Thre ...
- 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现
Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...
- TI开发环境下载资源
CCSV7.0 版本下载 http://processors.wiki.ti.com/index.php/Download_CCS IAR7.10 版本下载 https://www.iar.com/ ...
- 从浏览器中输入URL到页面加载的发生了什么-转载
转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...
- CentOS6上实现Tomcat8 service启动,并查看status
service配置脚本,“/etc/init.d/tomcat”,实现通过"service tomcat status " 查看tomcat状态,并输出PID,见脚本 # desc ...
- java程序员必须要学会的linux命令总结
1.查找文件find / -name filename.txt 根据名称查找/目录下的filename.txt文件.find . -name “*.xml” 递归查找所有的xml文件2.查看一个程序是 ...
- Java 简单的rpc 一
一,简单rpc 是基于Java socket 编程 ServerSocket serverSocket = new ServerSocket(9999); System.out.println(&qu ...