MySQL中常用的数据类型

MySQL支持多种数据类型,主要包括以下几类:


1.数值类型:
         整数类型:tinyint、smallint、mediumint、int、bigint
         区别存储大小和范围不同。
         tinyint:占用1字节的存储空间,有符号的范围是-128 ~ 127,无符号的范围是 0 ~ 255。
         smallint:占用2字节,有符号范围是 -32768 ~ 32767,无符号范围是0 ~ 65535。
         mediumint:占用3字节,有符号范围是-8388608 ~ 8388607,无符号范围是0 ~ 16777215。
         int:占用4字节,有符号范围是-22147483648 ~ 2147483647,无符号是0 ~ 4294967295。
         bigint:占用8字节,有符号的范围是-9223372036854775808 ~ 9223372036854775807,                                           无符号范围是0 ~ 18446744073709551615。
         浮点数类型float和double。用于存储小数。
         区别: double类型比float类型有更高的精度。 

                        float是单精度浮点数,占用4字节,精度大约是7位小数。

                        double是双精度浮点数,占用8字节,精度大约是15位小数。

          定点数类型:decimal。用于需要精确值的数值,如货币。

        举例: sql语句:column_name DECIMAL(P,D);
                         P表示有效数字数的精度,范围 1到65.
                         D表示小数点后的位数,范围0到30。
                         MySQL要求D小于或等于P

         例如:DECIMAL(19,9) 表示列可以存储9位小数的19位数。

拓展:MySQL以二进制格式存储DECIMAL值,DECIMAL(19,9) 对于小数部分具有9位数字,对于整数部分具有10位数字,小数部分需要4个字节,整数部分需要5个字节,所以,DECIMAL(19,9)列总共需要9个字节。】


 2.日期和时间类型:date、time、year、datetime、timestamp。用于表示和存储时间值。
         date: 表示日期,格式‘YYYY-MM-DD’,范围是‘1000-01-01’到‘9999-12-31’,占用3字节。
         time: 表示时间,格式为‘HH:MM:SS’,范围是'-838:59:59'到'838:59:59',占用3字节。
         year: 表示年份,格式'YYYY',范围是1901到2155',占用1字节的存储空间。
         datetime: 表示日期和时间,格式为:'YYYY-MM-DD HH:MM:SS',范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59',占用8字节。
         timestamp: 表示日期时间,格式为:''YYYY-MM-DD HH:MM:SS',范围是'1970-0-01 00:00:01 UTC' 到 '2038-01-19 03:14:07 UTC',占用4字节。
         timestamp和datetime区别:timestamp以UTC格式存储,并会自动检索当前时区并进行转换。此外,如果存入的是NULL,timestamp会自动存储当前时间,而datetime会存储NULL。


3.字符串类型:char,varchar,binary,varbinary,blob,text,enum和set。
         char: 存储固定长度非二进制字符串。若插入的值长度小于列定义的长度,MySQL会用空格填充剩余的空间。当检索这些值时,尾部的空格会被移除。
         varchar: 存储可变长度非二进制字符串,只占用实际需要的空间,加上一个或两个额外字节来记录值的长度。尾部的空格在存储和检索时都会被保留。
         binary:类似于char类型,但存储的是二进制字符串。如果插入的值的长度小于列定义的长度,MySQL会用0x00(零字节)填充剩余的空间。
         varbinary:类似于varchar类型,但存储的是二进制字符串。只占用实际需要的空间,加上一个或两个额外字节来记录值的长度。
         blob:用于存储可变长度的大量二进制数据。有四种类型的blob:tinyblob,blob,mediumblob,longblob,存储的最大数据量不同。

                tinyblob:最大长度为 255 (2^8 - 1) 字节。

                blob:最大长度为 65,535 (2^16 - 1) 字节,即 64KB。   

                mediumblob:最大长度为 16,777,215 (2^24 - 1) 字节,即 16MB。

                longblob:最大长度为 4,294,967,295 (2^32 - 1) 字节,即 4GB。
         text:用于存储可变长度的大量非二进制字符串数据。有四种类型:tinytext,text,mediumtext,longtext,存储的最大数据量不同。

                tinytext:最大长度为 255 (2^8 - 1) 字符。

                 text:最大长度为 65,535 (2^16 - 1) 字符,即64KB。

                mediumtext:最大长度为 16,777,215 (2^24 - 1) 字符,即 16MB。

                ​​​​​​longtext:最大长度为 4,294,967,295 (2^32 - 1) 字符,即 4GB。

         enum:存储字符串值的预定义列表中的单个值。列定义中包含合法字符串值的列表,但enum的值在内部都被存储为数字。
         set:类似于enum,但set可以包含零个或多个enum列表中的值。列定义中包含合法字符串值的列表,但set的值在内部被存储为数字。


4.空间数据类型:包括geometry,point,linestring,polygon,multipoint,multilinestring,multipolygon,geometrycollection。这些类型用于存储空间数据,如地理信息,几何图形等。
         geometry:是所有空间数据类型的基类,可以存储任何类型的空间数据(point,linestring,polygon等)
         point:表示一个几何点,通常由经纬度作为坐标。
         linestring:表示一串点列,若不闭合,则它是simple的;若闭合,则是closed的。
         polygon:表示一个多边形,可以有内部空洞。
         multipoint:表示多个点的集合。
         multilinestring:表示多个线段的集合。
         multipolygon:表示多个多边形的集合。
         geometrycollection:可以存储任何类型的几何对象的集合。
 以上类型都是建立在OpenGIS Geometry Model之上的,其中Geometry是顶级类,它具有所有类型都拥有的属性。

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值