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是顶级类,它具有所有类型都拥有的属性。

相关推荐
盖世英雄酱581361 分钟前
java 深度调试【第一章:堆栈分析】
java·后端
野猪亨利66711 分钟前
Qt day1
开发语言·数据库·qt
siriuuus22 分钟前
Linux MySQL 多实例部署与配置实践
linux·运维·mysql
本就一无所有 何惧重新开始28 分钟前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
isaki13731 分钟前
qt day1
开发语言·数据库·qt
流星白龙40 分钟前
【Qt】4.项目文件解析
开发语言·数据库·qt
小钻风336640 分钟前
HTTPS是如何确保安全的
网络·数据库
低音钢琴41 分钟前
【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
java·spring boot·后端
蓝色汪洋1 小时前
string字符集
java·开发语言
卿言卿语1 小时前
CC1-二叉树的最小深度
java·数据结构·算法·leetcode·职场和发展