数据库基础02——MySQL常用数据类型
在这里声明一下 mysql 5.5.的文档,如果公司确定用mysql,直接看文档最详细
https://dev.mysql.com/doc/refman/5.5/en/
mysql主要的数据类型:
1、串数据类型
2、数值数据类型
3、日期和时间数据类型
4、二进制数据类型
1、串数据类型
mysql遵循了ANSI SQL标准,同样分为定长串 和变长串两种数据类型,存储字符串以及字节。
为什么要使用定长数据类型?答案:性能
MySQL处理定长列远比处理变长列快得多。此外, MySQL不允许对变长列(或一个列的可变部分)进行索引。这也会极大地影响性能 。但是不要乱用定长数据类型,只有长度确定的类型才用,不然浪费空间。 剩余的位数会用空格填充。
数据类型 | 说明 |
---|---|
CHAR(size) | 1~255个字符的定长串。它的长度必须在创建时指定,否则MySQL 假定为CHAR(1) (可包含字母、数字以及特殊字符) |
ENUM(x,y,z,etc.) | 接受最多64 K 个串组成的一个预定义集合的某个串。即:允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的.可以按照此格式输入可能的值:ENUM(‘X’,‘Y’,‘Z’) |
SET | 接受最多64个串组成的一个预定义集合的零个或多个串 |
TEXT | 最大长度为65535(16K)的变长字符串 |
TINYTEXT | 与TEXT相同,但最大长度为255字节 |
LONGTEXT | 同TEXT,存放最大长度为 4,294,967,295(约4GB) 个字符的字符串。 |
MEDIUMTEXT | 同TEXT, 存放最大长度为 16,777,215 (约16K)个字符的字符串。 |
VARCHAR | 长度可变,最多不超过255字节。如果在创建时指定为VARCHAR(n), 则可存储0到n个字符的变长串(其中n≤255) (可包含字母、数字以及特殊字符 |
2、数值数据类型
**有符号或无符号 ** :所有数值数据类型(除BIT和BOOLEAN外)都可以有符号或无符号。有符号数值列可以存储正或负的数值,无符号数值列只能存储正数。默认情况为有符号,但如果你知道自己不需要存储负值,可以使用UNSIGNED关键字,这样做将允许你存储两倍大小的值。
数据类型 | 说明 |
---|---|
BIT | 位字段, 1~64位。(在MySQL 5之前, BIT在功能上等价于 TINYINT |
BIGINT | 整数值,支持 -9223372036854775808~9223372036854775807 (如果是UNSIGNED,为0~18446744073709551615)的数 |
BOOLEAN(或BOOL) | 布尔标志,或者为0或者为1,主要用于开/关(on/off)标志 |
DECIMAL(或DEC) | 精度可变的浮点值 |
DOUBLE | 双精度浮点值 |
FLOAT | 单精度浮点值 |
INT(或INTEGER) | 整数值,支持 -2147483648~2147483647(如果是UNSIGNED, 为0~4294967295)的数 |
MEDIUMINT | 整数值,支持 -8388608~8388607(如果是UNSIGNED,为0~ 16777215)的数 |
REAL | 4字节的浮点值 |
SMALLINT | 整数值,支持 -32768~32767(如果是UNSIGNED,为0~ 65535)的数 |
TINYINT | 整数值,支持 -128~127(如果为UNSIGNED,为0~255)的数 |
注意:MySql 没有专美存储货币的数据类型,一般情况下使用DECIMAL(8,2) 来表示
关于 FLOAT(size,d) 和DOUBLE(size,d):
MySQL对于单精度值使用四个字节,对于双精度值使用八个字节。
因为FLOAT
,SQL标准允许FLOAT
在括号中的关键字后面的位中选择性地指定精度(但不是指数的范围) 。MySQL还支持此可选的精度规范,但精度值仅用于确定存储大小。精度从0到23会产生一个4字节的单精度FLOAT
列。精度从24到53会产生一个8字节的双精度DOUBLE
列。
3、日期和时间数据类型
数据类型 | 说明 |
---|---|
DATE | 表示1000-01-01~9999-12-31的日期,格式为 YYYY-MM-DD |
DATETIME | DATE和TIME的组合,即年月日时分秒 |
TIMESTAMP | 功能和DATETIME相同(但范围较小) |
TIME | 格式为HH:MM:SS |
YEAR | 用2位数字表示,范围是70(1970年)~69(2069 年),用4位数字表示,范围是1901年~2155年 |
4、二进制数据类型(存字节)
数据类型 | 说明 |
---|---|
BLOB | Blob最大长度为64 KB |
MEDIUMBLOB | Blob最大长度为16 MB |
LONGBLOB | Blob最大长度为4 GB |
TINYBLOB | Blob最大长度为255字节 |