一、数值整形类型:
类型 | 字节 | 最小值 | 最大值 |
(带符号/无符号) | (带符号/无符号) | ||
TINYINT | 1 (1字节 = 8 bit) | -128 | 127 |
0 | 2^8 =256 (转为二进制,包括0) | ||
SMALLINT | 2 (2*8 bit) | -32768 | 32767 |
0 | 2^(2*8) = 65535 | ||
MEDIUMIINT | 3 (3*8 bit) | -8388608 | 8388607 |
0 | 2^(3*8) = 16777215 | ||
INT | 4 (4*8 bit) | -2147483648 | 2147483647 |
0 | 2^(4*8) = 4294967296 | ||
BIGINT | 8 (8*8 bit) | -9223372036854775808 | 9223372036854775807 |
0 | 2^(8*8) = 18446744073709551616 |
二、数值浮点类型:
类型 | 字节 | 负数取值 | 非负数取值 | 备注 |
FLOAT | 4 | -3.402823466*E^(+38) ~ -1.175494151*E^(-38) | 0和 1.175494151*E^(-38) ~ 3.402823466*E^(+38) | E=10 |
BOUBLE | 8 | 1.7976931348623157*E^308 ~ -2.22507385072014*E^(-308) | 0 和 2.22507385072014*E^(-308) ~ 1.7976931348623157*E^308 | |
DECIMAL(M,D) / DEC(M,D) | M+2 | 同DOUBLE类型 | 同DOUBLE类型 | M:小数总位数;D:小数点后保留位数; |
三、日期和时间类型:
类型 | 字节 | 取值范围 | 零值 |
YEAR | 1 | 1901 ~ 2155 | 0000 |
DATE | 4 | 1000-01-01 ~ 9999-12-31 | 0000:00:00 |
TIME | 3 | -838:59:59 ~ 838:59:59 | 00:00:00 |
DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 0000-00-00 00:00:00 |
TIMESTAMP | 4 | 19700101080001 ~ 20380119111407 | 00000000000000 |
四、A.字符串CHAR(n)与VARCHAR(n)型对比
插入值 | CHAR(5) | 占用字节 | VARCHAR(5) | 占用字节 |
' ' | ' ' | 5 | ' ' | 1 |
'1' | '1' | 5 | '1' | 2 |
'123' | '123' | 5 | '123' | 4 |
'123 ' | '123 ' | 5 | '123 ' | 5 |
'12345' | '12345' | 5 | '12345' | 6 |
B.字符串 枚举类型:
类型 | 长度 | 用途 |
ENUM | 60000+ | 可在6万多个列出的值中选择指定的值插入表中,如值不在此枚举则插入空值 |
SET | 64 | 在64个列举的值中选择,同上 |
六、各种TEXT类型的对比
类型 | 允许长度 | 存储空间 |
TINYTEXT | 0 ~ 255 | 值的长度+2字节 |
TEXT | 0 ~ 65535 | 值的长度+2字节 |
MEDIUMTEXT | 0 ~ 167772150 | 值的长度+3字节 |
LONGTEXT | 0 ~ 4294967295 | 值的长度+4字节 |
SQL:
配置严格模式:将以下语句配置到my.ini中,修改配置注意备份;
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
SQL 分类:
DDL(数据定义语言) : create alter drop
DML (数据操作语言): select insert update delete
DCL (数据控制语言): CRANT REVOKE