1、字符串类型

1)char(m):定长的字符串。

mysql数据类型(详解)_mysql

2)varchar(m):不定长的字符串。

mysql数据类型(详解)_创建表_02


上述知识,可以参考下图理解:

mysql数据类型(详解)_创建表_03

3)char和varchar存储的空间利用率比较。

mysql数据类型(详解)_字符串_04


从上表中可以看出:

mysql数据类型(详解)_创建表_05

4)tinytext、text、longtext

mysql数据类型(详解)_mysql_06


注意:只要存放的是字符串类型,都要注意编码问题,一般使用的是utf8编码。

2、数值类型

mysql数据类型(详解)_字符串_07


有符号位与无符号位详解网址:

mysql数据类型(详解)_字符串_08

2.1、整型数据类型,声明时的参数问题

mysql数据类型(详解)_创建表_09

1)unsigned参数。

-- 创建表
create table person(
pname varchar(20),
page tinyint unsigned,
psex bit(1)
) charset=utf8;

-- 插入两条记录
insert into person(pname,page,psex)
values("张三",18,0),("李四",22,0);

观察下图:

mysql数据类型(详解)_字符串_10


从上图可以看出:

mysql数据类型(详解)_时间类型_11

2)zerofill参数必须和M参数配合使用"才有意义"。

-- 对学号字段进行一个说明:
-- 1:学号不能为负;
-- 2:学号一般位数相同,即使不同,也会用0填充。
-- eg:00001,00013,00128,01280。
-- 创建表
create table student(
sid smallint(5) zerofill not null default 0,
sname varchar(20),
sage tinyint unsigned,
ssex bit(1) default 0
) charset=utf8;

-- 插入两条记录
insert into student(sname,sid)
values ("张飞",5),("吕布",1);

观察下图:

mysql数据类型(详解)_字符串_12


从上图可以看出:

mysql数据类型(详解)_创建表_13

3、小数类型(浮点数和定点数类型)

mysql数据类型(详解)_mysql_14


举例说明:

-- swage代表工资;sbonus代表津贴,津贴不能是负数。
-- 创建表
create table salary(
sname varchar(20),
swage float(6,2),
sbonus float(5,2) unsigned not null default 0
) charset=utf8;

-- 插入两条记录
insert into salary(sname,swage,sbonus)
values ("纪晓岚",9999.99,111.11),("和珅",-9999.99,444.44);

观察下图:

mysql数据类型(详解)_mysql_15


从上图中可以看出:

mysql数据类型(详解)_创建表_16

3.1、float/double和decimal精度比较

-- 创建表
create table bank(
id varchar(20),
acc1 float(9,2),
acc2 decimal(9,2)
) charset=utf8;

-- 插入两条记录
insert into bank(id,acc1,acc2)
values
(1,1234567.45,1234567.45),
(2,1234567.678,1234567.678);

观察下表:

mysql数据类型(详解)_创建表_17


从上表中可以看出:

mysql数据类型(详解)_mysql_18

4、日期/时间类型

1)什么是日期类型和时间类型?

  • 日期类型:2019-11-16(2019年11月16号)
  • 时间类型:10:45:30(10点45分30秒)

2)日期/时间类型

mysql数据类型(详解)_时间类型_19