欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL笔记之数据类型详解

程序员文章站 2024-02-18 14:18:34
字符型数据 字符型数据可以使用定长或变长的字符串来实现,其不同点在于固定长度的字符串使用空格向右填充,以保证占用同样的字节数;变长字符串不需要向右填充,并且所有字节数可变...

字符型数据

字符型数据可以使用定长或变长的字符串来实现,其不同点在于固定长度的字符串使用空格向右填充,以保证占用同样的字节数;变长字符串不需要向右填充,并且所有字节数可变。

char                         定长型,字节长度固定,最大长度为255字节,可以使用char(20)这种方式限定长度,查询速度快,但不灵活

varchar                    变长型,字节长度随数据量变化,最多可存储65535字节,varchar(20)可以限定长度,查询速度不及char,但使用灵活

如果需要存储文本或者文档,需要使用text类型数据,包括四种

tinytext                     255字节

text                          65535字节

mediumtext             16777215字节

longtext                   4294967295字节

以上三种在进行分组排序或者比较的时候只采用前1024字节进行比较

字符集

对于拉丁语系,比如英语,其中每个字母只需要1个字节来存储;而其他一些语言,比如中文,包含了大量字符,每个字符的存储需要多个字节,因此这类字符集被称为多字符集

在mysql中,可以使用show cahracter set语句查看字符集

复制代码 代码如下:

mysql> show character set;
+----------+-----------------------------+---------------------+--------+
| charset  | description                 | default collation   | maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | big5 traditional chinese    | big5_chinese_ci     |      2 |
| dec8     | dec west european           | dec8_swedish_ci     |      1 |
| cp850    | dos west european           | cp850_general_ci    |      1 |
| hp8      | hp west european            | hp8_english_ci      |      1 |
| koi8r    | koi8-r relcom russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 west european        | latin1_swedish_ci   |      1 |
| latin2   | iso 8859-2 central european | latin2_general_ci   |      1 |
| swe7     | 7bit swedish                | swe7_swedish_ci     |      1 |
| ascii    | us ascii                    | ascii_general_ci    |      1 |
| ujis     | euc-jp japanese             | ujis_japanese_ci    |      3 |
| sjis     | shift-jis japanese          | sjis_japanese_ci    |      2 |
| hebrew   | iso 8859-8 hebrew           | hebrew_general_ci   |      1 |
| tis620   | tis620 thai                 | tis620_thai_ci      |      1 |
| euckr    | euc-kr korean               | euckr_korean_ci     |      2 |
| koi8u    | koi8-u ukrainian            | koi8u_general_ci    |      1 |
| gb2312   | gb2312 simplified chinese   | gb2312_chinese_ci   |      2 |
| greek    | iso 8859-7 greek            | greek_general_ci    |      1 |
| cp1250   | windows central european    | cp1250_general_ci   |      1 |
| gbk      | gbk simplified chinese      | gbk_chinese_ci      |      2 |
| latin5   | iso 8859-9 turkish          | latin5_turkish_ci   |      1 |
| armscii8 | armscii-8 armenian          | armscii8_general_ci |      1 |
| utf8     | utf-8 unicode               | utf8_general_ci     |      3 |
| ucs2     | ucs-2 unicode               | ucs2_general_ci     |      2 |
| cp866    | dos russian                 | cp866_general_ci    |      1 |
| keybcs2  | dos kamenicky czech-slovak  | keybcs2_general_ci  |      1 |
| macce    | mac central european        | macce_general_ci    |      1 |
| macroman | mac west european           | macroman_general_ci |      1 |
| cp852    | dos central european        | cp852_general_ci    |      1 |
| latin7   | iso 8859-13 baltic          | latin7_general_ci   |      1 |
| utf8mb4  | utf-8 unicode               | utf8mb4_general_ci  |      4 |
| cp1251   | windows cyrillic            | cp1251_general_ci   |      1 |
| utf16    | utf-16 unicode              | utf16_general_ci    |      4 |
| cp1256   | windows arabic              | cp1256_general_ci   |      1 |
| cp1257   | windows baltic              | cp1257_general_ci   |      1 |
| utf32    | utf-32 unicode              | utf32_general_ci    |      4 |
| binary   | binary pseudo charset       | binary              |      1 |
| geostd8  | geostd8 georgian            | geostd8_general_ci  |      1 |
| cp932    | sjis for windows japanese   | cp932_japanese_ci   |      2 |
| eucjpms  | ujis for windows japanese   | eucjpms_japanese_ci |      3 |
+----------+-----------------------------+---------------------+--------+
 rows in set (0.00 sec)

其中maxlen列大于1则代表此行为多字符集,比如gb2312,存储一个汉字最多需要2个字节,utf8最多则需要3个

数值型数据

整数型数据

MySQL笔记之数据类型详解

浮点型数据

MySQL笔记之数据类型详解

数值型数据可以定义为unsigned,对整数而已可以改变其范围,对浮点数而言可以限定其不能为负数

 

时间数据

MySQL笔记之数据类型详解