1. 背景

* MySQL支持的字符串类型有CHAR、VARCHAR、二进制、var二进制、BLOB、文本等等。

2. 字符串类型所需的存储和值范围

类型
说明 N的含义 是否有字符集 最大长度
CHAR(N) 定义字符 字符 255
VARCHAR(N) 变长字符 字符 16384
BINARY(N) 定长二进制字节 字节 255
VARBINARY(N) 变长二进制字节 字节 16384
TINYBLOB 二进制大对象 字节 256
BLOB 二进制大对象 字节 16K
MEDIUMBLOB 二进制大对象 字节

16M

LONGBLOB 二进制大对象 字节 4G
TINYTEXT 大对象 字节 256
TEXT 大对象 字节 16K
MEDUIMBLOB 大对象 字节 16M
LONGTEXT 大对象 字节 4G

3. 定义与变长区别 (CHAR VS VARCHAR)

CHAR(4) 占用空间 VARHCAR(4) 占用空间
'' '    ' 4 bytes '' 1 bytes
'ab' 'ab  ' 4 bytes 'ab' 3 bytes
'abcd' 'abcd' 4 bytes 'abcd' 5 bytes
'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes

4. 字符串类型相关注意事项

* 在BLOB和TEXT列上创建索引时,必须制定索引前缀的长度

* VARCHAR和VARBINARY必须长度是可选的

* BLOB和TEXT列不能有默认值

* BLOB和TEXT列排序时只使用该列的前max_sort_length个字节

1
2
3
4
5
6
7
mysql> show variables like 'max_sort_length';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_sort_length | 1024  |
+-----------------+-------+
1 row in set (0.01 sec)

5. 字符串类型与排序规则

  * 查看字符串相关信息 [ Default collation: 默认排序规则 ]

1
2
3
4
5
6
7
mysql> show character set like 'utf8mb4';
+---------+---------------+--------------------+--------+
| Charset | Description   | Default collation  | Maxlen |
+---------+---------------+--------------------+--------+
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |      4 |
+---------+---------------+--------------------+--------+
1 row in set (0.01 sec)

  * 查看utfmb4所有排序规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql> show collation like 'utf8mb4%';
+------------------------+---------+-----+---------+----------+---------+
| Collation              | Charset | Id  | Default | Compiled | Sortlen |
+------------------------+---------+-----+---------+----------+---------+
| utf8mb4_general_ci     | utf8mb4 |  45 | Yes     | Yes      |       1 |
| utf8mb4_bin            | utf8mb4 |  46 |         | Yes      |       1 |
| utf8mb4_unicode_ci     | utf8mb4 | 224 |         | Yes      |       8 |
| utf8mb4_icelandic_ci   | utf8mb4 | 225 |         | Yes      |       8 |
| utf8mb4_latvian_ci     | utf8mb4 | 226 |         | Yes      |       8 |
| utf8mb4_romanian_ci    | utf8mb4 | 227 |         | Yes      |       8 |
| utf8mb4_slovenian_ci   | utf8mb4 | 228 |         | Yes      |       8 |
| utf8mb4_polish_ci      | utf8mb4 | 229 |         | Yes      |       8 |
| utf8mb4_estonian_ci    | utf8mb4 | 230 |         | Yes      |       8 |
| utf8mb4_spanish_ci     | utf8mb4 | 231 |         | Yes      |       8 |
| utf8mb4_swedish_ci     | utf8mb4 | 232 |         | Yes      |       8 |
| utf8mb4_turkish_ci     | utf8mb4 | 233 |         | Yes      |       8 |
| utf8mb4_czech_ci       | utf8mb4 | 234 |         | Yes      |       8 |
| utf8mb4_danish_ci      | utf8mb4 | 235 |         | Yes      |       8 |
| utf8mb4_lithuanian_ci  | utf8mb4 | 236 |         | Yes      |       8 |
| utf8mb4_slovak_ci      | utf8mb4 | 237 |         | Yes      |       8 |
| utf8mb4_spanish2_ci    | utf8mb4 | 238 |         | Yes      |       8 |
| utf8mb4_roman_ci       | utf8mb4 | 239 |         | Yes      |       8 |
| utf8mb4_persian_ci     | utf8mb4 | 240 |         | Yes      |       8 |
| utf8mb4_esperanto_ci   | utf8mb4 | 241 |         | Yes      |       8 |
| utf8mb4_hungarian_ci   | utf8mb4 | 242 |         | Yes      |       8 |
| utf8mb4_sinhala_ci     | utf8mb4 | 243 |         | Yes      |       8 |
| utf8mb4_german2_ci     | utf8mb4 | 244 |         | Yes      |       8 |
| utf8mb4_croatian_ci    | utf8mb4 | 245 |         | Yes      |       8 |
| utf8mb4_unicode_520_ci | utf8mb4 | 246 |         | Yes      |       8 |
| utf8mb4_vietnamese_ci  | utf8mb4 | 247 |         | Yes      |       8 |
+------------------------+---------+-----+---------+----------+---------+
26 rows in set (0.00 sec)

  * 修改默认排序规则

1
2
3
4
5
6
7
8
9
10
mysql> set names utf8mb4 collate utf8mb4_bin;
Query OK, 0 rows affected (0.00 sec)
mysql> show character set like 'utf8mb4';
+---------+---------------+--------------------+--------+
| Charset | Description   | Default collation  | Maxlen |
+---------+---------------+--------------------+--------+
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |      4 |
+---------+---------------+--------------------+--------+
1 row in set (0.00 sec)

6. 总结

以需求驱动技术,技术本身没有优略之分,只有业务之分。

本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1943246,如需转载请自行联系原作者

MySQL数据类型--------字符串类型实战相关推荐

  1. MySQL数据类型--------浮点类型实战

    1. 背景 * MySQL支持的浮点类型中有单精度类型(float), 双精度类型(double),和高精度类型(decimal),在数字货币类型中推荐使用高精度类型(decimal)来进行应用. * ...

  2. ( 4 )MySQL中的数据类型(字符串类型)

    MySQL中的数据类型(字符串类型) 字符长类型 六中数据库中的数据类型 char , varchar , text ,blob,enum,set char和varchar char定长:磁盘空间比较 ...

  3. 数据库开发——MySQL——数据类型——数值类型

    MySQL中定义数据字段的类型对数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为四类:数值.日期/时间.字符串(字符)类型.枚举类型与集合类型. 一.数值类型 MySQL支持所有标准S ...

  4. P5 MySQL数据类型和类型选择

    目录 一.数值类型 优化建议 二.日期和时间类型 优化建议 三.字符串类型 优化建议 四.扩:INT显示宽度   官方文档:https://dev.mysql.com/doc/refman/5.7/e ...

  5. MySQL数据类型-整数类型

    MySQL提供了多种数据类型,包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型.二进制数据类型: 不同的数据类型有各自的的类型,使用范围也各不相同,而且存储方式也不相同 有两种类型的数 ...

  6. mediumtext和string转换_数据类型 - 字符串类型 - 《TiDB v3.0 用户文档》 - 书栈网 · BookStack...

    字符串类型 TiDB 支持 MySQL 所有的字符串类型,包括 CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM 以及 SET,完整信息参考这篇文档. 类型定义 ...

  7. Redis数据类型--字符串类型

    夫陶公清风千古,余又何人,敢称庶几 文章目录 介绍 一.基本命令 1. 赋值与取值 2. 递增数字 二.命令进阶 1. 增加指定的整数 2. 减少指定的整数 3. 增加指定浮点数 4. 向尾部追加值 ...

  8. 【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )

    文章目录 I . 字符串定义 I . 字符串拼接 III . 字符串 API 调用 IV . 字符串 Demo 示例 I . 字符串定义 使用单引号 ' ' 和 双引号 " " 都 ...

  9. python isnumber_Python正课18 —— 基本数据类型 - 字符串类型

    一:定义 msg = 'hello' #本质:name = str('任意形式内容') 二.类型转换 数据类型转换:str()可以将任意数据类型转换成字符串类型,例如 # msg = 'hello' ...

最新文章

  1. 在Redhat安装部署Apache+MySQL+PHP(LAMP)
  2. C/C++中的段错误(Segmentation fault)[转]
  3. Codeforces Round #736 (Div. 2)E. The Three Little Pigs-长除法求多项式系数
  4. 系统架构师学习笔记-基于构件的开发
  5. CSS中box-sizing: border-box;的作用
  6. PyTorch 1.0 中文文档:torch.utils.dlpack
  7. 自学前端1年,靠着这份面试题和答案,我找到了20K工作
  8. Nagios 监控 SNMP 温度计
  9. Makefile-filter和filter-out
  10. 从XKCD网站下载自动所有漫画图片---python实现
  11. Eclipse @override报错解决
  12. java毕业设计网上租贸系统mybatis+源码+调试部署+系统+数据库+lw
  13. 信道容量迭代算法验证
  14. Spring基于XMLMysql | 注解Mysql的简单IOC案例
  15. Java 版植物大战僵尸思路和源码分享!
  16. Xiaojie雷达之路---毫米波雷达基础知识---速度估计
  17. python需要电脑多大内存合适_编程用surface怎么样发(学python要多大内存)
  18. 数据结构学习笔记 哈希表(一) 哈希表基础与哈希函数
  19. Messaging——Solace PubSub+
  20. RGB颜色空间与Lab颜色空间区别与联系(附转换代码)

热门文章

  1. 【摄像头】低照度和光圈
  2. 修改mysql数据库默认编码为utf8
  3. 坚果 android 系统升级,坚果手机的系统是什么?坚果手机能升级安卓5.0吗?
  4. python爬取疫情信息html.xpath p标签_python xpath 如何过滤div中的script和style标签
  5. 用python客户画像代码_客户画像与标签体系-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
  6. python栈溢出_Python栈溢出【新手必学】
  7. Java项目:精品养老院管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
  8. 关于SQL的基础知识点
  9. CSS之布局(盒子模型--内边距)
  10. linux如何查看指定目录下文件内容,Linux 系统下通过关键词查找指定目录下的文件内容...