mysql数据类型(详解)
原创
©著作权归作者所有:来自51CTO博客作者黄至尊qwe的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、字符串类型
1)char(m):定长的字符串。
2)varchar(m):不定长的字符串。
上述知识,可以参考下图理解:
3)char和varchar存储的空间利用率比较。
从上表中可以看出:
4)tinytext、text、longtext
注意:只要存放的是字符串类型,都要注意编码问题,一般使用的是utf8编码。
2、数值类型
有符号位与无符号位详解网址:
2.1、整型数据类型,声明时的参数问题
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);
观察下图:
从上图可以看出:
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);
观察下图:
从上图可以看出:
3、小数类型(浮点数和定点数类型)
举例说明:
-- 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);
观察下图:
从上图中可以看出:
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);
观察下表:
从上表中可以看出:
4、日期/时间类型
1)什么是日期类型和时间类型?
- 日期类型:2019-11-16(2019年11月16号)
- 时间类型:10:45:30(10点45分30秒)
2)日期/时间类型