MySQL数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。

最初,服务器字符集和排序规则取决于启动mysqld时使用的选项。可以使用 --character-set-server该字符集。同样可以添加 --collation-server用于排序规则。这些可以在服务器启动时在命令行或选项文件中进行设置,并可以在运行时进行更改。

一般开发我们要求MySQL数据库存放中文数据,所以在MySQL配置文件里面一般会指定字符集和排序规则。

我们可以执行SHOW CHARACTER SET,查看MySQL服务器支持的字符集和排序规则。

如果未指定服务器的字符集和排序规则,则默认采用latin1和latin1_swedish_ci。

同时也可以可以清晰的看出,latin1和utf-8的默认排序规则分别是latin1_swedish_ci和utf8_general_ci,同时长度分别占1个和1-3个字节。

数据库

创建数据库的时候,

如果不指定数据库的字符集和排序规则,则数据库默认采用服务器配置的字符集和排序规则。

如果指定数据库的字符集而未指定排序规则,则数据库采用字符集对应默认的字符集。

如果指定数据库的排序规则而未指定字符集,则数据库采用排序规则归类的字符集(即排序规则对应的字符集)。

所有数据库字符集选项都存储在一个名为 db.opt(db代表数据库Schema名称,一般在数据库文件目录下)可以在数据库文件目录中找到。

可以这样查看

同样可以这样查看

创建表的时候,

如果不指定表的字符集和排序规则,则表默认采用数据库配置的字符集和排序规则。

如果指定表的字符集而未指定排序规则,则表采用字符集对应默认的字符集。

如果指定表的排序规则而未指定字符集,则表采用排序规则归类的字符集。

创建列的时候,

如果不指定列的字符集和排序规则,则数据库默认采用表所在的字符集和排序规则。

如果指定列的字符集而未指定排序规则,则列采用字符集对应默认的字符集。

如果指定列排序规则而未指定字符集,则列采用排序规则归类的字符集。

以上文字可能看起来比较繁琐,总结就是,我们在为各个对象创建字符集和排序规则的时候,如果我们指定了优先级高的,优先级高的会覆盖级别低的。优先级即服务器 < 数据库 < 表 < 列。

MySQL数据库字符集和排序规则的四个级别的更多相关文章

  1. 【mysql】 数据库字符集和排序规则

    库的字符集影响表和字段的字符集 数据库字符集 >表的字符集 > 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的 ...

  2. mysql 批量修改 表字段/表/数据库 字符集和排序规则

    今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是   表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...

  3. 关于mysql中字符集和排序规则说明

    文章转自 http://blog.csdn.net/smallSBoy/article/details/52997138 数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set ...

  4. mysql中字符集和排序规则说明

    数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...

  5. mysql字符集和排序规则

    1.关于字符集和排序规则所为字符集,就是用来定义字符在数据库中的编码的集合.常见的字符集有:utf8(支持中文)和AccIS(不支持中文) 数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规 ...

  6. MySQL 是怎样运行的:从根儿上理解 MySQL:字符集和比较规则

    本文章借鉴自https://juejin.im/book/5bffcbc9f265da614b11b731 字符集和比较规则简介 一些重要的字符集 ASCII字符集 共收录128个字符,包括空格.标点 ...

  7. 翻译:MariaDB字符集和排序规则

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  8. MySQL数据库字符集和整理

    MySQL数据库字符集和整理(2009-11-20 22:23:37) mysql数据库 it    其实这个表在MySQL数据库中通过phpMyAdmin就能看到,icech只是把表格整理了一下方便 ...

  9. mysql中字符集和校对规则

    首先,明确一下字符集和校对规则的概念:    字符集(charset):是一套符号和编码    校对规则(collation):是在字符集内用于比较字符的一套规则,比如有的规则区分大小写,有的则无视 ...

随机推荐

  1. Tensorflow从0到1(一)之如何安装Tensorflow(Windows和Linux两种版本)

    现在越来越多的人工智能和机器学习以及深度学习,强化学习出现了,然后自己也对这个产生了点兴趣,特别的进行了一点点学习,就通过这篇文章来简单介绍一下,关于如何搭建Tensorflow以及如何进行使用.建议 ...

  2. .gitignore 模式匹配

    匹配模式前使用 / 表示根目录 匹配模式后使用 / 代表是目录(不是文件) 匹配模式前加 ! 表示取反 * 代表任意个字符 ? 匹配任意一个字符 ** 匹配任意级目录

  3. P3366【模板】最小生成树

    P3366[模板]最小生成树 Kruskal #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ...

  4. maven开发SSH

    虽然开发SSH的基本步骤都差不多,但每次都从头开始做真的会有点儿烦,把maven的SSH框的基本代码放出来,下次就可以复制粘贴哈哈. 1. 配置文件: (1)pom.xml <project x ...

  5. LightOJ1236

    题目大意: 给你一个 n,请你找出共有多少对(i,j)满足 lcm(i,j) = n (i<=j) . 解题思路: 我们利用算术基本定理将 n,i,j 进行分解: n = P1a1 * P2a2 ...

  6. XXX_ProductCRUD的项目结构与配置文件

    MVC_ProductCRUD                                                       Hibernate_ProductCRUD 项目结构    ...

  7. Unity实现精灵资源动态加载

    private Sprite LoadSourceSprite(string relativePath) {         //把资源加载到内存中         UnityEngine.Objec ...

  8. pytest跟unittest的优势跟劣势

    一.用例编写规则 1.使用unittest编写测试用例必须遵循以下规则: 1.必须首先 导入 import unittest 2.测试类必须要继承 unittest.TestCase 3.测试方法必须 ...

  9. PIC单片机的XC8

    用MPLAB IDE 对pic16f887进行编程的时候需要配置字 用__CONFIG(0xc3e4);__CONFIG(0xffff); 就可以 但是用MPLAB X IDE 对pic16f887编 ...

  10. 飞机调度 Now or Later? LA 3211 (2-SAT问题)

    洛谷题目传送门 题目描述 有n架飞机需要着陆.每架飞机都可以选择“早着陆”和“晚着陆”两种方式之一,且必须选择一种.第i架飞机的早着陆时间为Ei,晚着陆时间为Li,不得在其他时间着陆.你的任务是为这些 ...