【MySQL】MySQL中的数据类型

前言

数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则。
限制存储在数据列列中的数据。例如,数值数据类型列只能接受数值类型的的数据。
在设计表时,应该特别重视所用的数据类型。使用错误的数据类型可能会严重地影响应用程序的功能和性能。

基本常用的数据类型

数据类型:整型、浮点型、字符串、日期等。

字符串数据类型

最常用的数据类型是字符串数据类型。它们存储字符串,如名字、地址、电话号码、邮政编码等。
不管使用何种形式的字符串串数据类型,字符串值都必须括在引号内

有两种基本的串类型,分别为定长串和变长串:

定长串:char

  1. 接受长度固定的字符串,其长度是在创建表时指定的。定长列不允许存储多于指定长度字符的数据。
  2. 指定长度后,就会分配固定的存储空间用于存放数据。

char(10) 不管实际插入多少字符,它都会占用10个字符位置。

变长串:varchar

  • 存储可变长度的字符串。

varchar(10) 如果实际插入5个字符,那么它只占5个字符位置,插入的数据长度不能超过10个字符。

注意

既然变长数据类型这样灵活,为什么还要使用定长数据类型?
答:因为性能,MySQL处理定长列远比处理变长列快得多。

数据类型说明
char1-255个字符的定长串。它的长度必须在创建时指定,否则MySQL假定为char(1)
enum接受最多64K个串组成的一个预定义集合的零个或多个串
longtext与text相同,但最大长度为4GB
med iumtext与text相同,但最大长度为16K
set接受最多64个串组成的一个预定义集合的零个或多个串
text最大长度为64K的变长文本(0~65535)
tinytext与text相同,但最大长度为255字节
varchar长度可变,最多不超过255字节。如果在创建时指定为varchar(n),则可存储0到n个字符的变长串(其中n ≤ 255)

数值类型

数值数据类型存储数值。MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。支持的取值范围越大,所需存储空间越多。

与字符串不一样,数值不应该括在引号内。

数据类型说明
bit位字段,1 ~ 64位。(在MySQL 5之前,bit 在功能上等价于 tinyint )
bigint整数值,支持 -9223372036854775808 ~ 9223372036854775807 (如果是unsigned,为 0 ~ 18446744073709551615的数)
boolean(或bool)布尔标志,或者为0或者为1,主要用于开/关(on/off) 标志
decimal(或dec)精度可变的浮点值
double双精度浮点值
float单精度浮点值
int(或integer)整数值,支持 -2147483648 ~ 2147483647 (如果是unsigned,为 0 ~ 4294967295的数)
mediumint整数值,支持 -8388608 ~ 8388607 (如果是unsigned,为0 ~ 16777215 的数)
real4字节的浮点值
smallint整数值,支持 -32768~ 32767 (如果是unsigned,为0 ~ 65535的数)
tinyint整数值,支持 -128 ~ 127 (如果为unsigned,为0 ~ 255) 的数

decimal(5,2) 表示数值总共5位, 小数占2位。
tinyint 1字节(8位) 无符号:0-255。有符号:-128,127。
int 4字节。 无符号:-21亿,21亿。有符号:0-42亿。

MySQL中没有专门存储货币的数据类型,一般情况下使用decimal(8, 2)

有符号或无符号

所有数值数据类型(除bit和boolean外)都可以有符号或无符号。

  • 有符号数值列可以存储正或负的数值。
  • 无符号数值列只能存储正数。
  • 默认情况为有符号,但如果你知道自己不需要存储负值,可以使用unsigned关键字。

unsigned 无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以)

注意

如果将邮政编码类似于01234存储为数值类型,则保存的将是数值1234,此时需要使用字符串类型手机号应该用什么进行存储呢?
答:手机号不需要计算,最大值已经超过42亿,所以一般使用char(11)存储,如果还要加地区号(例如:+86)再加3位或5位就可以。

日期和时间类型

MySQL使用专门的数据类型来存储日期和时间值。

数据类型说明
date表示1000-01-01 ~ 9999-12-31的日期,格式为 yyyy-MM-dd
datetimedate 和 time 的组合
timestamp功能和 datetime 相同(但范围较小)
time格式为 HH:mm:ss
year用2位数字表示, 范围是70 (1970年) ~ 69 (2069年),用4位数字表示,范围是1901年 ~ 2155年

datetime 8字节1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

二进制数据类型

二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等。

数据类型说明
blobblob最大长度为64 KB
mediumblobblob最大长度为16 MB
longblobblob最大长度为4 GB
tinyblobblob最大长度为255字节

通常情况下不会使用二进制数据类型进行,多媒体数据的存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网友小锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值