0
点赞
收藏
分享

微信扫一扫

数据类型(详解)

王传学 2022-04-14 阅读 78

共分为三大类型:数值型,字符串型和日期时间型。

 

对于数值型数据,可以进一步将其划分为整数型和小数型。

一 。整数型:

        在 SQL 中,整型细分成五类,分别为:

        tinyint:迷你整型,使用 1 个字节存储数据(常用);

        smallint:小整型,使用 2 个字节存储据;

        mediumint:中整型,使用 3 个字节存储数据;

        int:标准整型,使用 4 个字节存储数据(常用);

        bigint:大整型,使用 8 个字节存储数据。

        小数型,即带有小数点或者范围超出整型的数值类型。

二 。小数型:

细分为浮点型和定点型两种

        浮点型:小数点浮动,精度有限,容易丢失精度;

        定点型:小数点固定,精度固定,不会丢失精度。

第 1 种:浮点型

        浮点型数据是一种精度型数据,因为超出指定范围之后,其会丢失精度,自动进行四舍五入操 作。浮点型分为两种精度:

        float:单精度,占用 4 个字节存储数据,精度范围大概为 7 位左右;

        double:双精度,占用 8 个字节存储数据,精度范围大概为 15 位左右。

        浮点型的使用方式:如果直接用float,则表示没有小数部分;如果用float(M,D),其中M代表总长 度,D代表小数部分长度,M-D则为整数部分长度。

扩充:

        在咱们向浮点数表my_float插入数据的时候,可以直接插入小数,也可以插入用科学计数法表示 的数据。此外,插入浮点型数据时,整数部分是不能超出长度范围的,但是小数部分是可以超出长度范围的,系统会自动进行四舍五入的操作。特别是,如果浮点数是因为系统进位(四舍五入)导致整数部分超出指定的长度,那么系统是允许成立的。

第 2 种:定点型

        定点型数据,绝对的保证整数部分不会被四舍五入,也就是说不会丢失精度,但小数部分有可能丢失精度,虽然理论上小数部分也不会丢失精度。

扩展:

        当咱们插入数据的时候,定点数的整数部分一定不能超出长度范围(进位也不可以),小数部分的长度则可以随意超出,没有限制,系统会自动进行四舍五入的操作:

字符串:

        类型分成了 6 类,分别为:char、varchar、text、blob、enum和set.

第 1 类:定长字符串

        定长字符串:char,即磁盘(二维表)在定义结构的时候就已经确定了最终数据的存储长度。

        char(L):L 表示 Length,即可以存储的长度,单位为字符,最大长度为 255;

        char(4):表示在 UTF8 环境下,需要 4*3=12 个字节。

第 2 类:变长字符串

        变长字符串:varchar,即在分配存储空间的时候,按照最大的空间分配,但是实际用了多少,则是根据具体的数据来确定。

        varchar(L):L 表示 Length,理论长度是 65536,但是会多出 1 到 2 个字节来确定存储的实际长度;

        varchar(10):例如存储 10 个汉字,在 UTF8 环境下,需要 10*3+1=31 个字节。

实际上,如果存储长度超过 255 个字符,则既不用定长字符串也不用变长字符串,而是用文本字符串text.

        如何选择定长字符串或者是变长字符串呢?

        定长字符串对磁盘空间比较浪费,但是效率高:如果数据基本上确定长度都一样,就使用定长字符串,例如身份证、电话号码等;

                变长字符串对磁盘空间比较节省,但是效率低:如果数据不能确定长度(不同的数据有变化),就使用变长字符串,例如地址、姓名等。

第 3 类:文本字符串

如果数据量非常大,通常说超过 255 个字符就会使用文本字符串。

文本字符串根据存储的格式进行分类,可以分为:

        text:存储文字;

        blob:存储二进制数据(其实际上都是存储路径),通常不用。

第 4 类:枚举字符串

        枚举字符串:enum,需要事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

枚举字符串的使用方式:

        定义:enum('元素1','元素2','元素3'...),例如enum('男','女','保密');

        使用:存储的数据,只能是事先定义好的数据。

日期时间型:

共有五种类型,分别为:

        datetime:日期时间,其格式为yyyy-MM-dd HH:mm:ss,表示的范围是从 1000 年到 9999 年,有零值,即0000-00-000000:00;

        date:日期,就是datetime的date部分;

        time:时间,或者说是时间段,为指定的某个时间区间之间,包含正负时间;

        timestamp:时间戳,但并不是真正意义上的时间戳,其是从1970年开始计算的,格式和datetime一致

举报

相关推荐

0 条评论