mysql中的list数据类型_mysql中的数据类型
阅读⽬录
1.数值类型
2.⽇期时间类型
3.字符串类型
4.ENUM和SET类型
数值类型
MySQL⽀持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
MySQL⽀持的整数类型有TINYINT、MEDIUMINT和BIGINT。下⾯的表显⽰了需要的每个整数类型的存储和范围。
对于⼩数的表⽰,MYSQL分为两种⽅式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),⽽定点数只有decimal⼀种,在mysql中以字符串的形式存放,⽐浮点数更精确,适合⽤来表⽰货币等精度⾼的数据。
BIT数据类型保存位字段值,并且⽀持MyISAM、MEMORY、InnoDB和BDB表。
类型⼤⼩范围(有符号)范围(⽆符号)unsigned约束⽤途
TINYINT
1 字节
(-128,127)
(0,255)
⼩整数值
SMALLINT
2 字节
(-32 768,32 767)
(0,65 535)
⼤整数值
MEDIUMINT
3 字节
(-8 388 608,8 388 607)
(0,16 777 215)
⼤整数值
INT或INTEGER
4 字节
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
⼤整数值
BIGINT
8 字节
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
极⼤整数值
FLOAT
4 字节
float(255,30)
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度
浮点数值
DOUBLE
8 字节
double(255,30)
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度
浮点数值
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
double(65,30)
依赖于M和D的值
依赖于M和D的值
⼩数值
#创建表⼀个是默认宽度的int,⼀个是指定宽度的int(5)
mysql> create table t1 (id1 int,id2 int(5));
Query OK, 0 rows affected (0.02sec)#像t1中插⼊数据1,1
mysql> insert into t1 values (1,1);
Query OK,1 row affected (0.01sec)#可以看出结果上并没有异常
mysql> select * fromt1;+------+------+
| id1 | id2 |
+------+------+
| 1 | 1 |
+------+------+rowin set (0.00sec)#那么当我们插⼊了⽐宽度更⼤的值,会不会发⽣报错呢?
mysql> insert into t1 values (111111,111111);
Query OK,1 row affected (0.00sec)#答案是否定的,id2仍然显⽰了正确的数值,没有受到宽度限制的影响
mysql> select * fromt1;+------------+--------+
| id1 | id2 |
+------------+--------+
| 0000000001 | 00001 |
| 0000111111 | 111111 |
+------------+--------+rowsin set (0.00sec)#修改id1字段 给字段添加⼀个unsigned表⽰⽆符号
mysql>alter table t1 modify id1 int unsigned;
Query OK, 0 rows affected (0.01sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>desc t1;+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id1 | int(10) unsigned | YES | | NULL | |
| id2 | int(5) | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+rowsin set (0.01sec)#当给id1添加的数据⼤于214748364时,可以顺利插⼊mysql> insert into t1 values (2147483648,2147483647);
Query OK,1 row affected (0.00sec)#当给id2添加的数据⼤于214748364时,会报错
mysql> insert into t1 values (2147483647,2147483648);
ERROR1264 (22003): Out of range value for column 'id2' at row 1int整数⽰例
int整数⽰例
#创建表的三个字段分别为float,double和decimal参数表⽰⼀共显⽰5位,⼩数部分占2位
mysql> create table t2 (id1 float(5,2),id2 double(5,2),id3 decimal(5,2));
Query OK, 0 rows affected (0.02sec)#向表中插⼊1.23,结果正常
mysql> insert into t2 values (1.23,1.23,1.23);
Query OK,1 row affected (0.00sec)
mysql> select * fromt2;+------+------+------+
| id1 | id2 | id3 |
+------+------+------+
| 1.23 | 1.23 | 1.23 |
+------+------+------+rowin set (0.00sec)#向表中插⼊1.234,会发现4都被截断了
mysql> insert into t2 values (1.234,1.234,1.234);
Query OK,1 row affected, 1 warning (0.00sec)
mysql> select * fromt2;+------+------+------+
| id1 | id2 | id3 |
+------+------+------+
| 1.23 | 1.23 | 1.23 |
| 1.23 | 1.23 | 1.23 |
+------+------+------+rowsin set (0.00sec)#向表中插⼊1.235发现数据虽然被截断,但是遵循了四舍五⼊的规则
mysql> insert into t2 values (1.235,1.235,1.235);
Query OK,1 row affected, 1 warning (0.00sec)
mysql> select * fromt2;+------+------+------+
| id1 | id2 | id3 |
+------+------+------+
| 1.23 | 1.23 | 1.23 |
| 1.23 | 1.23 | 1.23 |
| 1.24 | 1.24 | 1.24 |
+------+------+------+rowsin set (0.00sec)#建新表去掉参数约束
mysql>create table t3 (id1 float,id2 double,id3 decimal);
Query OK, 0 rows affected (0.02sec)#分别插⼊1.234
mysql> insert into t3 values (1.234,1.234,1.234);
Query OK,1 row affected, 1 warning (0.00sec)#发现decimal默认值是(10,0)的整数
mysql> select * fromt3;+-------+-------+------+
| id1 | id2 | id3 |
+-------+-------+------+
| 1.234 | 1.234 | 1 |
+-------+-------+------+rowin set (0.00sec)#当对⼩数位没有约束的时候,输⼊超长的⼩数,会发现float和double的区别
mysql> insert into t3 values (1.2355555555555555555,1.2355555555555555555,1.2355555555555555555555); Query OK,1 row affected, 1 warning (0.00sec)
mysql> select * fromt3;+---------+--------------------+------+
| id1 | id2 | id3 |
+---------+--------------------+------+
| 1.234 | 1.234 | 1 |
| 1.23556 | 1.2355555555555555 | 1 |
+---------+--------------------+------+rowsin set (0.00 sec)
⼩数⽰例
⽇期和时间类型
表⽰时间值的⽇期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有⼀个有效值范围和⼀个"零"值,当指定不合法的MySQL不能表⽰的值时使⽤"零"值。TIMESTAMP类型有专有的⾃动更新特性,将在后⾯描述。
类型⼤⼩
(字节)范围格式⽤途
DATE
3
1000-01-01/9999-12-31
YYYY-MM-DD
年⽉⽇
mysql创建表数据类型TIME
3
'-838:59:59'/'838:59:59'
HH:MM:SS
时分秒
YEAR
1
1901/2155
YYYY
年份值
DATETIME
8
1000-01-01 00:00:00/9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
年⽉⽇时分秒
TIMESTAMP
4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。