mysql中数据类型

在Mysql中数据的类型如下:
这里写图片描述

一、数值类型

1.整数类型
这里写图片描述
说明:
1.在MySQL中,整型可以指定为有符号的和无符号的,默认是有符号的
2.指定无符号通过UNSIGNED来指定。

但是在用UNSIGNED有一些小细节
这里写图片描述
a-b提示的是越界,我们猜测会不会是因为int的范围太小。再做一次实验,创建一个表格,列类型为bigint。
这里写图片描述
仍然是越界,但在有的MySQL版本下,是会显示一个特别大的值,为4294967295。这是为什么呢?
对于无符号的整数值,是整数的最大值,即2^32-1。对于有符号的数来说,第一位表示符号位,如果为1,表示的是负数,取反加一等到负值,即-1。

那么,如何获得-1这个值呢?可以对SQL_MODE这个参数进行设置。
这里写图片描述
2.bit类型
语法:bit[(M)]
M表示每个值的位数,范围从1到64,M为可选项,默认为1.
这里写图片描述
说明:
bit字段显示的是按照ASCLL码对应的显示。

bit字段常用于存放0或1,定义bit(1)。可以节省空间。
这里写图片描述
3.小数类型
float类型
语法:float[(m,d)][unsigned]
M为总长度,d为小数位数,占用四个字节
这里写图片描述
float(4,2)范围:-99.99~99.99
float(4,2) unsigned范围:0~99.99
MySQL在保存值的时候会进行四舍五入。

decimal类型
语法:decimal[(m,d)][unsigned]
和float一样,区别是表示的精度不一样。decimal整数最大位数m为65,支持小数的最大位数d是30。d默认为10。
这里写图片描述
一般建议使用decimal类型。

二、文本、二进制类型

字符串
char(L):定长字符串,L是可存储的长度,单位为字符,最大长度为255.
varchar(L):变长字符串,L表示字符长度,最大长度为65535字节。
这里写图片描述
说明:
1.char(2)表示可以存放两个字符,可以是字母或汉字,但是不能超过两个。
2.C++中一个汉字占2个字符,MySQL数据库中中文英文均表示一个字符。
这里写图片描述
关于len的说明:
1.在varchar定义的属性头部会留出来1~3个字节,用于记录数据的大小,所以说有效字节数为65535-3=65532。
2.编码是utf8,varchar(n),n的最大值是65532/3=21844(utf8中一个汉字占3个字节),编码是gbk,varchar(n),n最大值是65532/2=32766(gbk一个汉字占2字节)。
3.实际上,len的长度最大为15000,更大的使用Text文本类型替代。

char和varchar的区别?(面试常问)
1.char的检索效率比varchar高;
2.定长字符串会造成磁盘空间浪费,但查找效率高;
3.变长字符串节省空间,但查找效率低。

三、时间日期

datetime:时间日期格式year-month-day hour-minute-seconds,表示范围是从1000到9999,占8字节。
date:时间日期格式year-month-day,占3字节。
timestamp:时间戳,格式与datetime相同,占4字节。
添加数据时,时间戳自动补上当前时间。
这里写图片描述

四、String类型

enum和set
这里写图片描述
说明:
1.枚举类型是单选的,set类型是可以多选。
2.在添加enum值时,可以添加对应的数字编号;

有时候我们会有这样的需求,查找爱好中包含某一选项的人。
这里写图片描述
这样查询的话,只显示出来爱好只有“登山”的人,不是我们想要的结果。
find_in_set属性刚好解决了这一问题。
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据类型用于定义数据的存储格式和范围。了解MySQL数据类型数据库设计和数据操作的基础。下面是MySQL常见的数据类型及其基本概念: 1. 数值型(Numeric Types): - 整数类型(INT、BIGINT、TINYINT等):用于存储整数值,可以指定有符号或无符号。 - 小数类型(DECIMAL、FLOAT、DOUBLE等):用于存储带有小数部分的数字。 2. 字符型(Character Types): - 字符串类型(CHAR、VARCHAR、TEXT等):用于存储字符序列,具有不同的长度限制和存储方式。 - 二进制类型(BINARY、VARBINARY、BLOB等):用于存储二进制数据(如图像、音频等)。 3. 日期与时间型(Date and Time Types): - 日期类型(DATE):用于存储年月日,格式为'YYYY-MM-DD'。 - 时间类型(TIME):用于存储时分秒,格式为'HH:MM:SS'。 - 日期时间类型(DATETIME、TIMESTAMP):用于存储年月日时分秒。 4. 布尔型(Boolean Type): - 布尔类型(BOOL、BOOLEAN):用于存储逻辑值,包括TRUE和FALSE。 5. 枚举型与集合型(Enumeration and Set Types): - 枚举类型(ENUM):用于存储一组预定义的值之一。 - 集合类型(SET):用于存储一组预定义的值之多个组合。 6. 其他特殊类型: - 自动增长类型(AUTO_INCREMENT):用于在插入数据时自动生成唯一的递增值。 - JSON类型:用于存储和操作JSON格式的数据。 这些数据类型具有不同的存储需求和数据范围,选择合适的数据类型对于数据库设计和性能优化非常重要。在创建表时,需要仔细选择适当的数据类型以确保数据的准确性和高效性。 此外,MySQL还支持用户自定义数据类型(User-defined Types)和空间数据类型(Spatial Data Types),用于满足特定需求,如存储地理位置信息等。 注意,在实际使用,还应考虑存储需求、数据完整性、查询效率等因素来选择适当的数据类型。详细的数据类型列表和使用说明可以参考MySQL官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值