MySQL学习笔记(二)编码
ALTER TABLE tbl_name
DROP PRIMARY KEY;索引
若是有AUTO_INCREMENT,要先去掉才能删除主键rem
整数型字符串
数据类型 | 有符号型存储范围 | 无符号型存储范围 | 字节 |
---|---|---|---|
TINYINT | $-2^7$ ~ $2^7-1$ | $0$ ~ $2^8-1$ | 1 |
SMALLINT | $-2^{15}$ ~ $2^{15}-1$ | $0$ ~ $2^{16}-1$ | 2 |
MEDIUMINT | $-2^{23}$ ~ $2^{23}-1$ | $0$ ~ $2^{24}-1$ | 3 |
INT | $-2^{31}$ ~ $2^{31}-1$ | $0$ ~ $2^{32}-1$ | 4 |
BIGINT | $-2^{63}$ ~ $2^{63}-1$ | $0$ ~ $2^{64}-1$ | 8 |
BOOL,BOOLEAN | 0为false,其余为true | 1 |
超过指定长度要求时自动截断it
浮点数table
数据类型 | 存储范围 | 字节 |
---|---|---|
FLOAT[M,D] | $-3.2010^{38}$ ~ $-1.1710^{-38}$ & $0$ & $1.17510^{-38}$ ~ $3.4010^{38}$ | 4 |
DOUBLE[M,D] | $-1.7910^{308}$ ~ $-2.2210^{-308}$ & $0$ & $2.2210^{-308}$ ~ $1.7910^{308}$ | 8 |
其中,M表示总长度,D表示小数部分长度
超过指定长度要求时自动四舍五入class
定点型数据类型
数据类型 | 存储范围 | 字节 |
---|---|---|
DECIMAL[M,D] | 和DOUBLE相同,以字符串形式存储 | 8 |
超过指定长度要求时自动截断
DECIMAL比FLOAT和DOUBLE精度高学习笔记
数据类型 | 存储需求 |
---|---|
CHAR(M) | M个字节,$0 <=M<= 255$ |
VARCHAR(M) | L+1个字节,$L<=M,0 <=M<= 65535$ |
TINYTEXT | L+1个字节,$L<2^8$ |
TEXT | L+2个字节,$L<2^{16}$ |
MIDUMTEXT | L+3个字节,$L<2^{24}$ |
LONGTEXT | L+4个字节,$L<2^{32}$ |
ENUM('value1','value2',...) | 1或2个字节,取决于枚举值的个数,最多65535个值 |
SET('value1','value2',...) | 一、二、三、4或8个字节,取决于set成员的数目,最多64个 |
CHAR通常比VARCHAR存储空间大,但查询速度更快
在字符串长度达不到CHAR的要求时,会在后面自动填充空格,但查询时不会去掉空格;VARCHAR不会自动填充,尾部若有空格会保留
TEXT列不能有默认值,检索时不存在大小写转换
ENUM类型自动过滤空格,下标从1开始,下表越界时不能添加
数据类型 | 存储范围 | 存储需求 |
---|---|---|
TIME | -838:59:59 ~ 838:59:59 | 3 |
DATE | 1000-01-01 ~ 9999-12-31 | 3 |
DATETIME | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 |
TIMESTAMP | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 | 4 |
YEAR | 1901-2155 | 1 |