MYSQL数据库管理-数据类型

1 mysql数据库常用数据类型

mysql支持多种数据类型主要包括:数值类型,日期/时间类型,字符串类型、二进制类型。

  • (1)数值类型

  • 假)设列值范围在0-99999若使用整数,则mediuint unsigned最佳,存储小数则float最佳。

TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,FLOAT,DOUBLE,定点小数类型DECIMAL

MYSQL数据库管理-数据类型_第1张图片

MYSQL数据库管理-数据类型_第2张图片

MYSQL数据库管理-数据类型_第3张图片

不论是定点类型还是浮点类型,如果用户指定精度超过精度范围,则会四舍五入。

int(M),当不指定M值时候默认为11,选项有unsigned zerofill。m指定数据显示的宽度,例如int(5)

mysql@ [rmmdb] 20:16: >create table tint1(id int(10));
Query OK, 0 rows affected (0.09 sec)

mysql@ [rmmdb] 20:22: >insert into tint1 values(1);
Query OK, 1 row affected (0.03 sec)

mysql@ [rmmdb] 20:22: >select *from tint1;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql@ [rmmdb] 20:22: >select length(id) from tint1;
+------------+
| length(id) |
+------------+
|          1 |
+------------+
1 row in set (0.05 sec)

mysql@ [rmmdb] 20:22: >

create table t1(id int,id1 int(19),id2 int(10) unsigned zerofill,id3 int(5) unsigned zerofill);

 

  • (2)日期类型

YEAR,TIME,DATE,DATETIME,TIMESTAMP

如果只记录年份则使用year类型即可。

如果只记录时间则使用time类型即可。

如果记录日期和时间则使用datetime或者timestamp,最好采用datetime。

mysql允许不严格的时间语法插入格式,任何标点符号都可以作为日期部分的间隔符号

例如:19@01@12,180101, 12。12.。12,等字符串的表示都是等价的。

MYSQL数据库管理-数据类型_第4张图片

最后两位为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

MYSQL数据库管理-数据类型_第5张图片

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(0-255) 固定长度。

char(5)和varchar(5)的区别,,,对于'a    '的查询CHAR只显示a,varchar显示'a    '

MYSQL数据库管理-数据类型_第6张图片

MYSQL数据库管理-数据类型_第7张图片

MYSQL运行在严格模式下超长插入会报错,在不严格模式条件下,会截断字符串。

mysql> set sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    -> ;

Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> insert into t values('abcdefg','abcdefg');
Query OK, 1 row affected, 2 warnings (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t;
+-------+-------+
| id1   | id2   |
+-------+-------+
| a     | a     |
| abcde | abcde |
+-------+-------+
2 rows in set (0.00 sec)

mysql>

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数据库管理-数据类型_第8张图片

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 可以是其中变量的组合。

你可能感兴趣的:(MYSQL基础管理)