MySQL - 3 - 支持的数据类型
2018-01-08 22:24
387 查看
MySQL支持的数据类型
参考资料
《深入浅出MySQL全文》
仅做学习记录,不深究。
数值类型
MySQL支持所有标准SQL中的数值类型,其中包括严格数值类型和近似数值数据类型
严格数值类型:integer、smallint、decimal、numeric
近似数值数据类型:float、real、double precision
MySQL 中的数值类型
紫色标出来的,是常用的数值类型。
日期时间类型
MySQL中有很多中数据类型可以用于日期和时间的表示,不同版本可能有所差异。
MySQL 中的日期和时间类型
这些数据类型的主要区别如下:
• 如果要用来表示年月日,通常用 DATE 来表示。
• 如果要用来表示年月日时分秒,通常用 DATETIME 表示。
• 如果只用来表示时分秒,通常用 TIME 来表示。
• 如果需要经常插入或者更新日期为当前系统时间,则通常使用 TIMESTAMP 来表示。TIMESTAMP 值返回后显示为“YYYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定为 19 个字符。如果想要获得数字值,应在 TIMESTAMP 列添加+0。
• 如果只是表示年份,可以用 YEAR 来表示,它比 DATE 占用更少的空间。YEAR 有 2 位或4 位格式的年。默认是 4 位格式。在 4 位格式中,允许的值是 1901~2155 和 0000。在2 位格式中, 允许的值是 70~69, 表示从 1970~2069 年。 MySQL 以 YYYY 格式显示 YEAR值。
从上面可以看出,每种日期时间类型都有一个有效值范围,如果超出这个范围,在默认的 SQLMode下,系统会进行错误提示,并将以零值来进行存储。不同日期类型零值的表示如下面所示
MySQL 中日期和时间类型的零值表示
可以用now()函数插入当前日期
Date、Time、DATETIME是最常用的日期类型,我们看看下面的例子:
字符串类型
MySQL中提供了多种对字符串数据的存储类型,不同版本可能有所差异。
MySQL 中的字符类型
上面标注出来的是常用的。
char 和 varchar 类型
char和varchar很相似,都用来保存MySQL中较短的字符串。
二者的主要区别在于存储方式的不同:
char列的长度固定为创建表时声明的长度,长度可以从0~255的任何值。
varchar列中的值为可变长字符串,长度可以指定为0~255或65535之间的值。
在检索的时候,char列删除了尾部的空格,而varchar则保留这些空格。
参考资料
《深入浅出MySQL全文》
仅做学习记录,不深究。
数值类型
MySQL支持所有标准SQL中的数值类型,其中包括严格数值类型和近似数值数据类型
严格数值类型:integer、smallint、decimal、numeric
近似数值数据类型:float、real、double precision
MySQL 中的数值类型
整数类型 | 字节 | 最小值 | 最大值 |
TINYINT | 1 | 有符号-128 无符号 0 | 有符号 127 无符号 255 |
SMALLINT | 2 | 有符号-32768 无符号 0 | 有符号 32767 无符号 65535 |
MEDIUMINT | 3 | 有符号-8388608 无符号 0 | 有符号8388607 无符号1677215 |
INT、INTEGER | 4 | 有符号-2147483648 无符号 0 | 有符号 2147483647 无符号 4294967295 |
BIGINT | 8 | 有符号-9223372036854775808 无符号 0 | 有符号 9223372036854775807 无符号 18446744073709551615 |
浮点数类型 | 字节 | 最小值 | 最大值 |
FLOAT | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
DOUBLE | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 |
定点数类型 | 字节 | 描述 | |
DEC(M,D), DECIMAL(M,D) | M+2 | 最大取值范围与 DOUBLE 相同, 给定 DECIMAL 的有效取值范围由 M 和 D决定 | |
位类型 | 字节 | 最小值 | 最大值 |
BIT(M) | 1~8 | BIT(1) | BIT(64) |
日期时间类型
MySQL中有很多中数据类型可以用于日期和时间的表示,不同版本可能有所差异。
MySQL 中的日期和时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038 年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
• 如果要用来表示年月日,通常用 DATE 来表示。
• 如果要用来表示年月日时分秒,通常用 DATETIME 表示。
• 如果只用来表示时分秒,通常用 TIME 来表示。
• 如果需要经常插入或者更新日期为当前系统时间,则通常使用 TIMESTAMP 来表示。TIMESTAMP 值返回后显示为“YYYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定为 19 个字符。如果想要获得数字值,应在 TIMESTAMP 列添加+0。
• 如果只是表示年份,可以用 YEAR 来表示,它比 DATE 占用更少的空间。YEAR 有 2 位或4 位格式的年。默认是 4 位格式。在 4 位格式中,允许的值是 1901~2155 和 0000。在2 位格式中, 允许的值是 70~69, 表示从 1970~2069 年。 MySQL 以 YYYY 格式显示 YEAR值。
从上面可以看出,每种日期时间类型都有一个有效值范围,如果超出这个范围,在默认的 SQLMode下,系统会进行错误提示,并将以零值来进行存储。不同日期类型零值的表示如下面所示
MySQL 中日期和时间类型的零值表示
数据类型 | 零值表示 |
DATETIME | 0000-00-00 00:00:00 |
DATE | 0000-00-00 |
TIMESTAMP | 00000000000000 |
TIME | 00:00:00 |
YEAR | 0000 |
mysql> insert emp values ('cyx',now(),6000,5); Query OK, 1 row affected, 1 warning (0.01 sec) mysql> select * from emp; +--------+------------+---------+--------+ | ename | hiredate | sal | deptno | +--------+------------+---------+--------+ | zzx | 2000-01-01 | 2000.00 | 1 | | lisa | 2003-02-01 | 3000.00 | 2 | | bjguan | 2004-04-02 | 5000.00 | 1 | | bzshen | 2005-04-01 | 4000.00 | 3 | | dony | 2005-02-05 | 2000.00 | 4 | | cyx | 2017-11-28 | 6000.00 | 5 | +--------+------------+---------+--------+ 6 rows in set (0.02 sec)
Date、Time、DATETIME是最常用的日期类型,我们看看下面的例子:
mysql> create table t( -> d date, -> t time, -> dt datetime); Query OK, 0 rows affected (0.01 sec) mysql> desc t; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | d | date | YES | | NULL | | | t | time | YES | | NULL | | | dt | datetime | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> insert into t values(now(),now(),now()); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from t; +------------+----------+---------------------+ | d | t | dt | +------------+----------+---------------------+ | 2018-01-05 | 03:40:29 | 2018-01-05 03:40:29 | +------------+----------+---------------------+ 1 row in set (0.00 sec)看结果,显而易见,DATETIME是DATE和TIME的组合。
字符串类型
MySQL中提供了多种对字符串数据的存储类型,不同版本可能有所差异。
MySQL 中的字符类型
字符串类型 | 字节 | 描述及存储需求 |
CHAR(M) | M | M 为 0~255 之间的整数 |
VARCHAR(M) | M 为 0~65535 之间的整数,值的长度+1 个字节 | |
TINYBLOB | 允许长度 0~255 字节,值的长度+1 个字节 | |
BLOB | 允许长度 0~65535 字节,值的长度+2 个字节 | |
MEDIUMBLOB | 允许长度 0~167772150 字节,值的长度+3 个字节 | |
LONGBLOB | 允许长度 0~4294967295 字节,值的长度+4 个字节 | |
TINYTEXT | 允许长度 0~255 字节,值的长度+2 个字节 | |
TEXT | 允许长度 0~65535 字节,值的长度+2 个字节 | |
MEDIUMTEXT | 允许长度 0~167772150 字节,值的长度+3 个字节 | |
LONGTEXT | 允许长度 0~4294967295 字节,值的长度+4 个字节 | |
VARBINARY(M) | 允许长度 0~M 个字节的变长字节字符串,值的长度+1 个字节 | |
BINARY(M) | M | 允许长度 0~M 个字节的定长字节字符串 |
char 和 varchar 类型
char和varchar很相似,都用来保存MySQL中较短的字符串。
二者的主要区别在于存储方式的不同:
char列的长度固定为创建表时声明的长度,长度可以从0~255的任何值。
varchar列中的值为可变长字符串,长度可以指定为0~255或65535之间的值。
在检索的时候,char列删除了尾部的空格,而varchar则保留这些空格。
相关文章推荐
- Mysql支持的数据类型有哪些?
- MySQL支持的数据类型
- mysql支持的数据类型简介
- Mysql支持的数据类型(总结)
- mysql支持的数据类型
- MySQL——MySQL支持的数据类型总结
- Mysql支持的数据类型
- 深入浅出mysql-mysql支持的的数据类型
- Mysql支持的数据类型(总结)
- MYSQL中支持的数据类型及取值范围
- MySQL支持的数据类型
- 【MySQL】MySQL支持的数据类型
- MYSQL支持的数据类型——字符串类型
- MySQL支持的数据类型
- Mysql支持的数据类型(总结)
- 如何查看MySQL支持的数据类型?
- MySQL支持的数据类型
- MySQL支持的数据类型
- Mysql支持的数据类型(总结)
- MySQL支持的数据类型