MySQL字段类型详解
MySQL提供了整数和浮点数的数值类型。可根据所要表示的值的范围选择相应的类型。 对于整数类型,如果指定了AUTO_INCREMENT 属性,则列必须为PRIMARY KEY 或UNIQUE 索引。将NULL 插入AUTO_INCREMENT 列将会插入一个大于该列中当前最大值的值。如果指定了UNSIGNED 属性,则相应的整数类型不允许取负值。 如果指定了ZEROFILL 属性,则用前导零填充数值类型值以达到列的显示宽度。
1. TINYINT[(M)] 说明:非常小的整数 允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取值范围:-128 到127(-27 到27-1),或者如果为U N S I G N E D,则0 到2 5 5(0 到2 8-1) 缺省值:如果列可为NULL;则为NULL;如果列为NOT NULL,则为0 存储需求:1字节
2. SMALLINT[(M)] 说明:小整数 允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取值范围:-32768 到3 27 6 7(-215 到215-1),或者如果为U N S I G N E D,则0 到6 5 5 3 5(0 到216-1) 缺省值:如果列可为NULL;则为NULL;如果列为NOT NULL,则为0 存储需求:2 字节
3. MEDIUMINT[(M)] 说明:中等大小的整数 允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取值范围:-8388608 到8 3 8 8 6 07(-22 3 到22 3-1),或者如果为U N S I G N E D,则0 到16 7 7 2 15(0 到22 4-1) 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 存储需求:3 字节
4. INT[(M)] 说明:标准大小的整数 允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取值范围:-2147483648 到2 14 7 4 8 3 6 4 7(-231到2 3 1-1),或者如果为U N S I G N E D,则0 到4 2 9 4 9 6 7 2 9 5(0 到2 3 2-1) 缺省值:如果列为NULL,则为NULL;如果列为NOT FULL,则为0 存储需求:4 字节 同义词:I N T E G E R [(M)]
5. BIGINT[(M)] 说明:大整数 允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取值范围:-9223372036854775808 到9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07(-263 到2 6 3-1),或者如果为U N S I G N E D,则0 到18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 15(0 到26 4 -1) 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 存储需求:8 字节
6. FLOAT [(M, D)] 说明:小浮点数;单精度(精度小于D O U B L E) 允许的属性:Z E R O F I L L 取值范围:最小非零值为±1.75494351E -38; 最大非零值为±3 . 4 0 2 8 2 3 4 6 6 E + 3 8 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 存储需求:4 字节 同义词:MySQL3.23 版以前,FLOAT(4) 为具有缺省M 和D 值的FLOAT的同义词。 注释:在MySQL3.23 以后,FLOAT(4) 为真浮点类型(值存储为硬件所允许的完整精度,而不四舍五入为缺省的小数位数)
7. DOUBLE[(M, D)] 说明:大浮点数;双精度(比FLOAT更精确) 允许的属性:Z E R O F I L L 取值范围:最小非零值为±2 . 2 2 5 07 3 8 5 8 5 07 2 0 14 E -308; 最大非零值为±1。7 9 7 6 9 3 13 -4 8 6 2 3 15 7 E + 3 0 8 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 存储需求:8 字节 同义词:DOUBLE PRECISION[(M, D)] 和R E A L [ (M, D)] 为D O U B L E [(M, D)] 的同义词。MySQL3.23 版以前,FLOAT(8) 为具有缺省M 和D 值的FLOAT的同义词。 注释:在MySQL3.23 以后,FLOAT(8) 为真浮点类型(值存储为硬件所允许的完整精度,而不四舍五入为缺省的小数位数)。
8. DECIMAL(M, D) 说明:存储为串的浮点数(每位数字、小数点或“-”号都占1字节)。 允许的属性:Z E R O F I L L 取值范围:最大取值范围与DOUBLE 相同;给定DECIMAL 类型的有效取值范围由M和D 决定。如果D 为零,则列值无小数点或小数部分。 缺省值:如果列可为NULL,则为NULL,如果列为NOT NULL,则为0 存储需求:对于MySQL3.23 前的版本,为M 字节,而MySQL3.23 以后的版本,为M+ 2 字节。 同义词:N U M E R I C (M, D) 注释:在MySQL3.23 以后,M 的值为符合ANSI SQL 标准,不包括符号字符或小数点所占的字节数。
MYSQL串类型串类型串类型串类型 MySQL的串类型常用来存储文本,它不但是通用的而且还能存储任何数据。可用串类型来存储最大长度可变的值,而且可以选择在处理值时是否区分大小写。
1. CHAR(M) 说明:0 到M 字节长的定长字符串。在MySQL3.23 版以前,M 应该为一个1到255 之间的整数。而MySQL3.23 版以后,M 应该为一个0 到255 之间的整数。短于M 个字符的串存储进右边补空格。长于M 个字符的串存储时剪断为长度是M 的串。在检索值时,去掉后跟的空格。 允许的属性:B I N A RY 允许的长度:0 到M 字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:M 字节 比较:不区分大小写(如果具有B I N A RY 属性,则区分大小写)
2. VARCHAR(M) 说明:0 到M 字节长的可变长字符串。M 应该为1到255 之间的一个整数,或者自MySQL3.23 后为0 到255 之间的一个整数。存储时后跟的空格被去掉。存储时,大于M 个字符的串剪断为M 个字符。 允许的属性:B I N A RY 允许的长度:0 到M 字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度,加上1字节用来记录长度 比较:不区分大小写(如果具有B I N A RY 属性,则区分大小写)
3. TINYBLOB 说明:小BLOB 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到2 5 5(0 到28-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的1个字节 比较:区分大小写
4. BLOB 说明:常规大小的BLOB 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到6 5 5 3 5(0 到216-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的2 个字节 比较:区分大小写
5. MEDIUMBLOB 说明:中等大小的BLOB 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到16 7 7 7 2 15(0 到224 -1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的3 个字节 比较:区分大小写
6. LONGBLOB 说明:大BLOB 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的4 个字节 比较:区分大小写
7. TINYTEXT 说明:小TEXT 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到2 5 5(0 到2 8 -1)字节,缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的2 个字节 比较:不区分大小写
8. TEXT 说明:常规大小的TEXT 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到6 5 5 3 5(0 到216-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的2 个字节 比较:不区分大小写
9. MEDIUMTEXT 说明:中等大小的TEXT 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到16 7 7 7 2 15(0 到22 4-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的3 个字节 比较:不区分大小写
10. LONGTEXT 说明:大TEXT 值 允许的属性:除通用属性外无其他属性 允许的长度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字节 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“” 存储需求:值的长度加上用于记录长度的4 个字节 比较:不区分大小写
11. ENUM(“v a l ue 1”, “v a l ue 2”, ...) 说明:枚举,列值可赋予值列表中的某个成员 允许的属性:除通用属性外无其他属性 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为第一个枚举值 存储需求:对1到255 个成员的枚举1个字节,对255 到65535 个成员的枚举2 个字节 比较:不区分大小写(MySQL3.22.1版以前区分大小写)
12. SET(“v a l ue 1”,“v a l ue 2”, ...) 说明:集合,列值可赋予值列表中的零个或多个成员 允许的属性:除通用属性外无其他属性 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”(空集) 存储需求:1字节(1到8个成员的集合),2字节(9 到16个成员的集合),3字节(17到2 4个成员的集合),4 字节(2 5到3 2个成员的集合)或8字节(3 3到6 4个成员的集合) 比较:不区分大小写(MySQL3.22.1版以前区分大小写)
MYSQL日期和时间类型日期和时间类型日期和时间类型日期和时间类型
MySQL提供以各种形式表示时间数据的类型。这些数据有日期和时间类型。有一种特殊的时间戳类型,它在记录更改时自动更新。还有一种用于存储年份的类型,在不需要完全的日期时使用
1. DAT E 说明:“Y Y Y Y- M M - D D”格式的日期 允许的属性:除通用属性外无其他属性 取值范围:“10 0 0 - 0 1- 0 1”到“9 9 9 9 - 12 - 3 1” 零值:“0 0 0 0 - 0 0 - 0 0” 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“0 0 0 0 - 0 0 - 0 0” 存储需求:3 字节(MySQL3.22 版以前为4 字节)
2. TIME 说明:“H H : M M : S S”格式的时间(负值为“ - HH:MM:SS”);表示占用的时间,但也可以作为日常时间 允许的属性:除通用属性外无其他属性 取值范围:“- 8 3 8 : 5 9 : 5 9”到“8 3 8 : 5 9 : 5 9” 零值:“0 0 : 0 0 : 0 0” 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“0 0 : 0 0 : 0 0” 存储需求:3 字节 注释:虽然在非法值插入TIME 列时,“0 0 : 0 0 : 0 0”用作零值,但它也作为一个合法的值出现在正常的取值范围内
3. DAT E T I M E 说明:以“Y Y Y Y-MM-DD hh:mm:ss”格式表示的日期和时间(两个部分都需要) 允许的属性:除通用属性外无其他属性 取值范围:“1000-01-0100:00:00”到“9999-12-3123:59:59” 零值:“0000-00-00 00:00:00” 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“ 0 0 0 0 - 0 0 - 0 00 0 : 0 0 : 0 0” 存储需求:8 字节
4. TIMESTA M P [ (M) ] 说明:以YYYYMMDDHHMMSS 格式表示的时间(日期和时间) 允许的属性:除通用属性外无其他属性 取值范围:19700101000000 到2037 年的某个时刻 缺省值:当前日期和时间。注意DESCRIBE 和SHOW COLLUMNS 报告缺省值为NULL 存储需求:4 字节 注释:插入NULL 到表的第一个T I M E S TAMP 列将会插入当前日期和时间。更改行中其他列的值使第一个T I M E S TAMP 列被更新为这个修改的日期和时间。在内部计算中存储和使用的值全都为14 位字符精度,与显示宽度无关。如果指定了NOT NULL属性,则此属性不起作用
5. YEAR 说明:YYYY 格式表示的年份 允许的属性:除通用属性外无其他属性 取值范围:1900 到2 15 5 零值:0 0 0 0 缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 0 0 0 存储需求:1字节 注释:YEAR 是在MySQL3.22 版中引入的