数据类型【mysql数据库】

本文详细介绍了MySQL中各种数据类型的特性,包括数值类型(如无符号与有符号的区别)、浮点类型(float和decimal),以及字符串、日期时间、枚举和集合类型。重点强调了MySQL如何通过数据类型进行约束,确保数据的完整性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数值类型

默认都是有符号,无符号要在对应的类型后跟unsigned

在语言上,可能会有截断,但mysql会对不合法的数据做拦截。所以,mysql中,数据类型本身也是一种约束(约束使用者),保证数据库中的数据是可预期的,完整的。

类型字节最小值最大值
(有/无符号)(有/无符号)
TINYINT(tinyint)1-128127
0255
SMALLINT2-3276832767
065535
MEDIUMINT3
INT4
BIGINT8

二、bit类型

BIT(M) 位类型,M指定位数,默认值1,范围1-64

system clear:清屏

 bit类型数据,默认是按ASCII码值来显示的:

按十进制显示:

三、浮点类型

1、float

float (m,d) (unsigned):m指定显示长度,d指定小数位数 4字节

可以四舍五入,但四舍五入后的数据也不能超范围,否则无法插入:

2、decimal

decimal也是一种浮点数类型,float会存在精度的损失,而decimal可以规避这个问题。

decimal (m,d) (unsigned):m指定显示长度,d指定小数位数

float的精度大约为7位(小数部分),而decimal的整数最大位数m为65,小数最大位数d为30,默认m为10,d为0.(不同mysql版本会有些差异)

四、字符串类型

1、char

char[L]:固定长度字符串,可存储的长度为L(单位:字符),L最大为255.

注意:一个汉字虽然占2/3字节,但也是一个字符。

 2、varchar

varchar[L]:变长字符串,L表示字符串长度,L最大为65535字节,其中有1-3字节是用来记录数据大小的,所以有效字节数为65532(utf-8:65532/3个字符,gbk:65532/2个字符)。

utf-8编码,1个字符3字节,最大只能存21845(实际还要-1到3字节)个字节。

char和varchar的区别?

 1、char(L)是固定长度,意味着L多大就分多大空间,而varchar(L)的L只是决定了字符串长度的上限,实际是需要多大空间就分配多大空间。

如果长度都一样,推荐用char,长度有变化,推荐用varchar。

 五、日期和时间类型

date:日期 yyyy-mm-dd,占3字节

datetime:时间日期,yyyy-mm-dd hh:ii:ss 表示范围从1000到9999,占8字节

timestamp:时间戳,从1970年到现在的yyyy-mm-dd hh:ii:ss(年月日时分秒),格式和datetime一样,占4字节。

在插入一行数据时时,timestamp这一列会自动插入当前时间戳:

更新某一列时,时间戳也会自动更新:

 六、enum和set

enum:枚举、单选类型

enum('选项1','选项2','选项3',... );

提供若干个选项的值,最终一个单元格,只能存储其中一个值

set:集合,多选类型

set('选项值1','选项值2','选项值3',... );

提供若干个选项的值,最终一个单元格,可存储多个值

enum类型插入数据,可以看到,enum不能插入其他值,允许为空:

也可以插入选项值的下标,且下标从1开始:

set类型插入数据,不允许插入set中没有的选项值,可以同时插入多个,也允许为空:

NULL是空,表什么都没有,'':表示有东西,只不过是个空串。插入0就表示插入空串。

注意:在set这里,数字并不表示下标!!!

它是用bit位来表示有无这种选项值的,eg:

游泳 足球 乒乓球 羽毛球 代码

0        0        0        0        1        所以输入1,就表示输入代码

0        0        1        1        1        输入7,就表示输入代码、羽毛球、乒乓球                        

七、enum和set类型查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值