1 mysql数据库常用数据类型
mysql支持多种数据类型主要包括:数值类型,日期/时间类型,字符串类型、二进制类型。
- 数值类型
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,FLOAT,DOUBLE,定点小数类型DECIMAL
不论是定点类型还是浮点类型,如果用户指定精度超过精度范围,则会四舍五入。
- 日期类型
YEAR,TIME,DATE,DATETIME,TIMESTAMP
mysql允许不严格的时间语法插入格式,任何标点符号都可以作为日期部分的间隔符号。
例如:[email protected]@12,180101, 12。12.。12,等字符串的表示都是等价的。
最后两位为ss,10点21分如果写成1021则入库为00:10:21
4 08为4*24+8 :00:00
datetime和timestamp存储字节不同,timestamp会根据查询的时区变化。
- 字符串类型
主要包括文本字符串和二级制字符串
char varchar tinytext text mediumtext logtext enum和set
1 char和varchar,CHAR(M)是固定长度字符创,不够用空格补齐,取值范围0-255.当检索到char类型时后面的空格将被删除。
mysql> select id from monidb.t;
+----+
| id |
+----+
| c |
+----+
1 row in set (0.08 sec)
mysql> select length(id) from monidb.t;
+------------+
| length(id) |
+------------+
| 1 |
+------------+
1 row in set (0.02 sec)
varchar(0-65536),占用空间为实际长度+1
char(5)和varchar(5)的区别,,,对于'a '的查询CHAR只显示a,varchar显示'a '
mysql> insert into monidb.t(id) values('a ');
Query OK, 1 row affected (0.10 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select length(id) from monidb.t;
+------------+
| length(id) |
+------------+
| 3 |
| 1 |
| 2 |
+------------+
3 rows in set (0.03 sec)
mysql> alter table monidb.t modify id char(5);
Query OK, 3 rows affected (0.07 sec)
mysql> select length(id) from monidb.t;
+------------+
| length(id) |
+------------+
| 1 |
| 1 |
| 2 |
+------------+
3 rows in set (0.08 sec)
enum枚举类型,(‘var1','var2',var3') ,包含null值(没有not null约束的话)
mysql> create table emn(sex enum('boy','girl') not null default 'boy')
-> ;
Query OK, 0 rows affected (0.11 sec)
mysql> des emn
-> ;
ERROR 1064 (42000):
mysql> desc emn
-> ;
+-------+--------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------+------+-----+---------+-------+
| sex | enum('boy','girl') | NO | | boy | |
+-------+--------------------+------+-----+---------+-------+
1 row in set (0.13 sec)
set(‘var1','var2',var3') ENUM只能在变量中选择,而set 可以是其中变量的组合。