MySQL数据类型--------字符串类型实战
2017-06-29 18:31
323 查看
1. 背景
* MySQL支持的字符串类型有CHAR、VARCHAR、二进制、var二进制、BLOB、文本等等。
2. 字符串类型所需的存储和值范围
3. 定义与变长区别 (CHAR VS VARCHAR)
4. 字符串类型相关注意事项
* 在BLOB和TEXT列上创建索引时,必须制定索引前缀的长度
* VARCHAR和VARBINARY必须长度是可选的
* BLOB和TEXT列不能有默认值
* BLOB和TEXT列排序时只使用该列的前max_sort_length个字节
5. 字符串类型与排序规则
* 查看字符串相关信息 [ Default collation: 默认排序规则 ]
6. 总结
以需求驱动技术,技术本身没有优略之分,只有业务之分。
* 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 |
值 | 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 |
* 在BLOB和TEXT列上创建索引时,必须制定索引前缀的长度
* VARCHAR和VARBINARY必须长度是可选的
* BLOB和TEXT列不能有默认值
* BLOB和TEXT列排序时只使用该列的前max_sort_length个字节
mysql> show variables like 'max_sort_length'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_sort_length | 1024 | +-----------------+-------+ 1 row in set (0.01 sec)
5. 字符串类型与排序规则
* 查看字符串相关信息 [ Default collation: 默认排序规则 ]
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所有排序规则
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)* 修改默认排序规则
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. 总结
以需求驱动技术,技术本身没有优略之分,只有业务之分。
相关文章推荐
- MySQL基础教程3 —— 数据类型之字符串类型
- MYSQL支持的数据类型——字符串类型
- MySQL数据类型-字符串类型
- mysql5.7官网直译数据类型--字符串类型1
- mysql数据类型——字符串char(m)和varchar(m)
- MySQL数据类型--------整数类型实战
- CrazyWing:Python自动化运维开发实战 八、Python数据类型之字符串
- MySQL数据类型--------日期与时间类型实战
- mySql比较并获取当前时间x分钟之前的数据(时间是字符串类型)
- mysql支持的数据类型——字符串类型
- 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)
- mysql关于字符串字段数据类型
- 关于含有单双引号字符串类型的数据插入mysql遇到的问题
- MySQL数据类型--------枚举与集合类型实战
- MySQL架构优化实战系列1:数据类型与索引调优全解析
- mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)字符串拼接cancat实战例子
- mysql中的字符串类型数据索引优化
- MySQL 字符串数据类型
- MySQL中enum类型数据,要传入字符串
- Mysql数据类型---字符串类型