mysql的数据类型

SQL中将数据分为三大类:数值类型,字符串类型,时间日期格式类型,其中每种类型下还有细分好几种类型

 SQL中数值类型全部都是默认有符号,也就是有正数和负数区分


(1)整数型

在sql中需要考虑磁盘的存储空间,所以将整数型细分以下五种。


1)tinyint: 迷你整形,使用一个字节存储,表示的状态最多256种

2)smallint: 小整形,使用2个字节存储,表示的状态最多为65536种

3)mediumint: 中整形,使用3个字节存储。

4)int: 标准整形,使用4个字节存储

5)bigint: 大整形,使用8个字节存储。

上面五种,最常用的就是tinyint和int这两种,最多再加上bigint这种。

上图中'type'一列表示的是所占宽度。

(2)小数型(包括浮点型和定点型)

浮点型的特点是小数点浮动,有精度丢失;定点型特点就是小数点固定,不会丢失精度。浮点型又分float和double,float占用4个字节存储数据,精度范围大概为7位左右;double占用8个字节存储数据,精确范围大概为15位左右。

浮点型:创建浮点数表:直接float表示没有小数部分;float(M,D) 其中M表示总长度,D表示小数部分长度,所以整数部分长度为M-D;



定点型:定点型是绝对保证整数部分精度不丢失,小数部分理论上也不会丢失精度。


(3)数据类型-时期时间

时间日期类型分类

Datetime: 时间日期,格式是YYYY-mm-ddHH:ii:ss,表示的范围是从1000到9999年,有0值,也就是有0000-00-00 00:00:00

Date: 日期,就是datetime中的date部分

Time: 时间段,指定的某个区间之间。

Timestamp:字面是时间戳,但并不是时间戳,只是从1970年开始的YYYY-mm-ddHH:ii:ss,格式与datetime完全一致。

Year: 年份 有两种形式:year(2)和year(4)

每种类型格式和取值范围如下表

(4)字符串数据类型

定长字符串:char,磁盘上二维表在定义结构的时候,就已经确定了最终数据的存储长度。

char(L): L代表length,可以存储的长度,单位为字符,最大长度值可以为255.

char(4): 在UTF8环境下,需要4*3=12个字节(utf8默认3个字节存储一个字符)


变长字符串:varchar, 在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少是根据具体的数据来确定。varchar(L): L表示字符长度,理论长度是65536个字符,但是会多出一到2个字节来确定存储的实际长度。


如何选择定长或者是变长字符串?

定长的磁盘空间比较浪费,但是效率高;

变长的磁盘空间比较节省,但是效率低;

如果数据基本上确定长度都一样,那么建议使用定长,例如身份证,电话号码,手机号码。

如果数据不能确定长度(不同数据有变化),建议使用变长,例如姓名,地址。


文本字符串

       上面提到char最大长度是255个,如果数据量非常大,通常说超过255个字符就会使用文本字符串。文本字符串根据存储的数据的格式分成text和blob两类。

text: 存储文字(二进制数据实际上都是存储路径)

blob: 存储二进制数据(通常不用)


枚举

Enum:事先将所有可能出现的结果都设计好,实际上存储的数据数据必须是规定好的数据中的一个。


枚举的使用方式

定义:enum(可能出现的元素列表);例如 enum(‘男’, ‘女’, ‘保密’)

其实在enum中还可以插入数字型数据,这是为什么?

枚举原理:枚举在进行定义的时候,系统会自动建立一个数字与枚举元素的对应关系,然后在进行数据插入,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统自动将数值转换成对应的字符串显示。

集合字符串

集合跟枚举类似,实际存储的也是数值,而不是字符串(集合是多选),集合的使用方式如下:

定义: set(元素列表)

使用:可以使用元素列表中的元素(一个或者多个),用逗号分隔。

集合中实际也是采用数字来存储的,本篇关于字符串的数据类型就介绍到这里




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值