【MySQL】MySQL中常用的数据类型float和decimal、char和varchar、datetime和timestamp、enum和set

本文详细介绍了MySQL中的数据类型,包括float和decimal的区别,char与varchar的选择,datetime与timestamp的适用场景,以及enum和set的用法。强调了数据类型的精度、存储空间和使用场景,并提供了实例进行说明。
摘要由CSDN通过智能技术生成

【MySQL】MySQL中常用的数据类型float和decimal、char和varchar、datetime和timestamp、enum和set

  推荐相关文章👇

  【MySQL】MySQL中常用的数据类型float和decimal、char和varchar、datetime和timestamp、enum和set
  【MySQL】MySQL的基本操作命令集合(MariaDB 入门整理)
  【MySQL】数据库的存储引擎、字符集、校验规则(InnoDB、ACID、utf8、utf8mb4)
  【MySQL】SQL的分类 DDL、DML、DQL、DCL



一、数据类型的分类

在这里插入图片描述

数值大小

在这里插入图片描述

补充:

  • 在MySQL中,整型可以指定有/无符号,默认是有符号的;通过unsigned来说明某个字段是无符号的。

  • bit (M) 在显示时,是按照ASII码对应的值显示。ASSII码表

  • float(M,D) M表示显示的总长度,D表示指定的小数位数,超出的会直接被舍弃。

  • decimal和float相比,decimal精度更高。float的小数最大位数D=7,而decimal的整数最大位数M=65,小数最大位数D=30,decimal默认M=10,D=0。注意:M>D


二、小数类型

2.1 float 类型

float(M,D) [unsigned]; M指定显示长度,D指定小数位数,占用4个字节的空间

  注意: MySQL在保存值时会进行四舍五入 (M>D)

  实例: float(4,2) 表示的范围是 -99.99~99.99;float(4,2) unsigned 表示的范围是 0~99.99


2.2 decimal 类型

decimal(M,D) [unsigned]; M指定显示长度,D指定小数位数

  实例: decimal(5,2) 表示的范围是 -999.99~999.99;decimal(5,2) unsigned 表示的范围是 0~999.99

  补充: float和decimai虽然都是浮点类型,但是表示的精度不一样。float表示的精度大约是7位

      decimal的显示长度M最大为65位,小数位数D最大为30位。如果M和D被省略,默认decimal(10,0)。


2.3 /etc/my.cnf

  如果插入的数值超出表示范围,MySQL会显示能够表示的最大值。
在这里插入图片描述

  为了防止超出显示范围的值插入,我们需要在MySQL的配置文件中配置一下。路径: /etc/my.cnf mysqld就是配置MySQL服务端启动时所需要读到的参数信息,添加sql_mode的校验。

在这里插入图片描述

  再来验证一下,此时,插入超出显示范围的值就会直接报错,提示所插入的值超出范围。

在这里插入图片描述


三、字符串类型

3.1 char 类型

char(L); 固定长度字符串,L是可以存储的长度,单位字符,最长255个字符(L个字符长度)

在这里插入图片描述

实例

create database class_info charset=utf8 collate utf8_general_ci;
create table test1(name char(3));
insert into test1 values('jon');

  请问:此次向表中插入的数据所占内存为几个字节? 9字节

  "长度" :长度不等同于字节数量。

  "固定" :一旦长度L确定,需要结合字符集来考录占用内存大小的。“固定” 的本质是已经将内存开辟好了,消耗的内存是一样大的。

  注意:utf8字符集每一个字符是使用1-3个字节表示的。

     utf8mb4字符集每一个字符是使用1-4个字节表示的。

  推荐博文【MySQL】数据库的存储引擎、字符集、校验规则(InnoDB、ACID、utf8、utf8mb4)


3.2 varchar 类型

varchar(L); 可变长度字符串,L表示字符长度,单位字符,最长12844个字符,最大65535个字节

  varchar类型占用内存的大小=字符串真实占用内存大小 + 1~2个字节(表示字符串的长度)

  当前字符串占用的内存<255的,那么+1个字节;当前字符串占用的内存>=255的,那么+2个字节。

实例:

create database class_info charset=utf8 collate utf8_general_ci;
create table test2(name varchar(2));
insert into test2 values('李明');

   请问:此次向表中插入的数据所占内存为几个字节? 5字节(2+2+1)

​ varchar类型最大可占用65535个字节,那么L最大是(65535-[1,2])/3 ≈ \approx 12844

在这里插入图片描述
char和varchar的对比

实际存储 char(4) varch(4) char所占字节 varchar所占字节
abcd abcd
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值