MySQL 数据类型
2010-12-03 16:53
1661 查看
1.数值类型
MYSQL支持所有标准SQL,这其中包括:
- 精确数值数据类型:INTERGER/INT,SMALLINT,DECIMAL/DEC,NUMERIC
- 近似数值数据类型:FLOAT,REAL,DOCULE PRECISION
- BIT数据类型
作为对标准SQL的扩展,MySQL还支持TINYINT,MEDIUMINT及BIGINT,如下图:
Type | Bytes | Minimum Value | Maximum Value |
(Signed/Unsigned) | (Signed/Unsigned) | ||
TINYINT |
1 | -128 |
127 |
0 |
255 |
||
SMALLINT |
2 | -32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 | -8388608 |
8388607 |
0 |
16777215 |
||
INT |
4 | -2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT |
8 | -9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |
- 如果ZEROFILL指定给数值列,则MYSQL会自动添加UNSIGNED属性
- 整数或浮点类型均可指定AUTO_INCREMENT属性,当被赋值NULL或0时会自动设置成下一个序列值,AUTO_INCREMENT序列从1开始
- MYSQL将DOUBLE与DOUBLE PRECISION等同,将REAL也与DOUBLE PRECISION等同
- DECIMAL与NUMERIC用来存储精确数值数据,NUMERIC是DECIMAL的一种实现,MYSQL5.5将DECIMAL与NUMERIC存储为二进制格式
- BIT数据类型用来存储比特数值,BIT(M)中M允许从1到64,位数不足时会自动左侧补0
- SERIAL 等同于BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
- MYSQL会尝试从各种格式的输入中解析日期与时间,但还是有格式限制的
- 只有两位数的YEAR,会让MYSQL感到迷惑,所以MYSQL会尝试作下面的解析:在70~99之间的年会被解析成:1970~1999,在00~69之间的年会被解析成2000~2069
- MYSQL在解析日期时,日期的输入顺序必须为:year-month-day,否则无法正确解析
- 默认情况下,MYSQL会将超出范围或不合法的日期与时间,转换成0,但对于超出范围的TIME,会将其归整到一个恰当的时间点上。下面是“0”格式的格式,前提是没有设置NO_ZERO_DATE,否则会抛出警告: p, li { white-space: pre-wrap; }
Data Type
“Zero” Value
'0000-00-00 00:00:00'
'0000-00-00'
'0000-00-00 00:00:00'
'00:00:00'
0000
- DATEIME,DATE与TIMESTAMP的区别在于所表示的日期时间范围不同:DATETIME是 p, li { white-space: pre-wrap; } :'1000-01-01 00:00:00' to '9999-12-31 23:59:59',DATE是:‘1000-01-01’到‘9999-12-31’,而TIMESTAMP是:‘1970-01-01 00:00:01’UTC到‘2038-01-19 03:14:07’UTC(随MYSQL的版本不同而改变)
- MYSQL识别日期时间时遵循相对“松散”的格式,即不关心日期日间之间的分隔符是什么,有或没有,只要日期正确,都可以识别,如:‘10-12-04 21:50:59’,‘10.12.04 21+50+59’,‘10/12/04 21*50^59’,‘101204215059’,都是一样的,都可以被正确识别出来。
- TIMESTAMP 类型会自动初始化及更新. TIMESTAMP默认值为CURRENT_TIMESTAMP,除非其被指定了其它默认值,参考如下:
自动初始化与更新 ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 自动初始化 ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 自动更新 ts TIMESTAMP DEFAULT 0 NO UPDATE CURRENT_TIMESTAMP 无 ts TIMESTAMP DEFAULT 0
- 在排序时,只有max_sort_length个字节被使用,默认值是1024,如果想在不改变此变量的前提下,使更多的字节加入排序,可以彩用SUBSTRING()方法
- 当查询结果中包含BLOB或TEXT实例列时,MYSQL是采用在磁盘上创建临时表的方式处理的,因为MEMORY引擎是不支持这两种类型的.因为磁盘的使用会导致性能下降,所以除非确实需要,否则在查询中不要包含TEXT或BLOB列,特别是不要使用如SELECT *,来查询所有列.
- BLOB与TEXT的最大值决定于它们的类型,但是客户端与服务器之间的实际可传输的最大值却取决于空闲内存的数量及通信缓冲区的大小. 我们可能通过调整max_allowed_packet来增大缓冲,但需要在客户端与服务器端同时设置
- 如果一个无效的值赋予了ENUM对象,那么一个空字符串会被插入,作为一个特殊的错误值,这个字符串与"正常"的空字符串有差别,其在数值上为0.
- 如果ENUM列被声明允许为NULL,那么NULL就是一个合法的值,且默认值就是NULL,如果声明为NOT NULL,那么其默认值就是列表中的第一个元素.
- 每个被枚举的值都有一个索引,索引从1开始,所以当枚举值无效时其值会被赋予0,NULL的索引是NULL,(这里所说的索引,专指相应元素在枚举列表中所处的位置.
SET Member |
Decimal Value |
Binary Value |
'a' |
1 |
0001 |
'b' |
2 |
0010 |
'c' |
4 |
0100 |
'd' |
8 |
1000 |
相关文章推荐
- mysql基本数据类型
- mysql数据类型介绍(含text,longtext,mediumtext说明)
- MySQL中各数据类型的取值范围
- MySQL数据类型 转
- Java(Mybatis)和SQL(MySQL)之间的数据类型转换
- 【读书笔记】【MySQL高性能】Schema与数据类型优化
- MySql数据类型转化-CAST与CONVERT 函数的用法
- 31、mysql数据类型
- MYSQL的数据类型
- mysql 如何手动插入数据blob类型数据
- bool 数据类型 在access ,MsSql,MySql 中的区别
- MySQL 数据类型
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
- MySQL入门--mysql字段的数据类型
- MySQL的数据类型和建库策略详解
- MySQL中字段的数据类型和约束
- MySQL-存储过程(数据类型、函数)
- MySQL数据类型
- 02、mysql数据类型和列属性
- MYSQL数据表类型