码迷,mamicode.com
首页 > 数据库 > 详细

mysql入门-数据类型(一)

时间:2019-07-26 01:27:33      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:ros   两种   alt   基础   字符串   ext   需求   就是   也有   

mysql数据类型概述

mysql基础就先从支持的数据类型说起,mysql一共支持三种数据类型,数值类型,字符串类型,日期。

   数值类型:数值类型又分为两种类型整型和浮点类型

        整型:bit、bool、tinyint、smallint、mediumint、int、bigint

        浮点型:float、double、decimal

   字符串类型:char、varchar、tinytext、text、mediumtext、longtext、tinyblob、blod、mediumblob、longblob

   日期类型:date、time、datetime、year、timestamp

数值类型

第一个说整型,整型是一个比较常用的数据类型,在it这块还是比较常见的。整形有五种,分别为bit、bool、tinyint、smallint、mediumint、int、bigint。

那么这五种类型的所占空间是多少呢,咱们先来测一下。建立一张表,随意建立一个。

-- 存在删除表
drop table if exists test_table_one;
create table test_table_one(
    a bit,
    b bool,
    c TINYINT,
    d SMALLINT,
    e int,
    f BIGINT
)

查看一下表结构。

-- 查看表结构
desc test_table_one;

得到结果。

技术图片

从这张表中,我们看到的并不是这些类型的实际存储大小,这些只不过是最小的显示位数,基本上建表的时候使用默认给定的就可以了,除非有特殊需求,指定了zerofill,类似下面这种情况。

drop table if exists test_table_one;
create table test_table_one(
    a bit,
    b bool,
    c TINYINT,
    d SMALLINT,
    e int(10) ZEROFILL,
    f BIGINT
)

要想指定显示的位数,就可以像上边e int(10)这样去指定。

得到的结果

insert into test_table_one set e = 1;
select * from test_table_one;

技术图片

真正的存储空间占用的大小在下面这张图(来自于w3c)

技术图片

 

当选用类型的时候,一定要考虑好字段的范围,然后根据范围去选,这里给出一个阿里开发规范中的推荐选择,就是id应该选择bigint类型。


 

 接下来就是浮点类型了,浮点类型有三种,float,double、decimal。这三种类型还有另一种表现形式,float(m,d),double(m,d),decimal(m,d),解读一下第二种表示方式的含义,其中m为全部位数的个数,d为小数的最大位数。在float和double中,m的范围为0到60,而d的范围为0到30,,表示的范围在上面的表中有体现。

再说一下decimal,decimal也有两种表现形式一种是decimal,第二种就是decimal(m,d),m和d的含义和double和float的意义一样,唯一不同的是,如果使用decimal,并且没有指定m和d,这里有一个默认的值,m默认为10,d默认为0.测一下。

drop table if exists test_table_two;
create table test_table_two(
    a float,
    b double,
    c decimal
)

desc test_table_two;

 

 运行结果为

技术图片

系统给定的默认值为m=10,d=0,当存入的数精度不符时,三种都会发生截断现象。测试数据

drop table if exists test_table_two;
create table test_table_two(
    a float(6,3),
    b double(6,3),
    c decimal(6,3)
)

desc test_table_two;

insert into test_table_two values(1.23456,2.345,5.6789);
select * from test_table_two;

 

结果:

技术图片

不光超出的位数发生了截断,而且还进行了四舍五入。不过阿里还是推荐使用decimal(m,d)的这种方式,一只没弄清楚原因。

未完,待续。。。。。。

 

mysql入门-数据类型(一)

标签:ros   两种   alt   基础   字符串   ext   需求   就是   也有   

原文地址:https://www.cnblogs.com/Lighting-Sui/p/11247673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!