目录
参考文档:MySQL :: MySQL 5.7 参考手册 :: 11 种数据类型MySQL 数据类型 | 菜鸟教程 (runoob.com)
Mysql的三大数据类型:
1、数值类型
2、字符串类型
3、日期和时间类型
一、数值类型
1、整数类型(精确值) - 整数、整数、小整数、小整数、小整数、整数、 MEDIUMINT, BIGINT
Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
Signed和Unsigned的区别?
2、定点类型(精确值)- 十进制、数字
Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC
3、浮点类型(近似值)- 浮点型、双精度型
Floating-Point Types (Approximate Value) - FLOAT, DOUBLE
4、数值类型总结:
二、字符串类型
String Data Types(字符串类型)
char(字符)和 varchar的区别?
TEXT(文本)和LONGTEXT是MySQL中存储文本数据类型的两种数据类型。
BLOG(网络日志)和LONGBLOG是MySQL中的数据类型,用于存储文本数据。
BINARY(二进制)和VARBINARY都是MySQL的数据类型,用于存储二进制数据。
ENUM(枚举)类型是什么,作用是什么?
SET(集合)类型是什么,作用是什么?
三、日期和时间类型
1、日期和时间类型:
2、日期和时间类型总结:
如上图所示:
INT只能存放10位整数数字,并且根据类型不会超过2147483647或者2147483647
如果我们超过了10位整数,我们就需要使用BIGINT进行定义啦。
Storage 表示存储,表示占多少字节的意思
Signed 表示有符号(数据里可以带符号如:+、-),Unsigned表示无符号(数据从0开始,无负数) ,因此Minimum Value Signed 表示有符号整数类型的最小值,Minimum Value Unsigned 表示无符号整数类型的最小值。
Maximum Value Signed 表示有符号整数类型的最大值,Maximum Value Unsigned表示无符号整数类型的最大值。
Signed和Unsigned是计算机中用于表示数字的数据类型。Signed表示有符号的数字,可以表示正数、负数和零;而Unsigned表示无符号的数字,只能表示非负数(即正数和零),不能表示负数。
Signed和Unsigned的区别在于它们的最高位(即最左边的一位)的含义不同。对于Signed,最高位表示符号位,0表示正数,1表示负数;对于Unsigned,最高位表示数值位,0表示数字为非负数,1表示数字为正数。
例如,对于8位的Signed和Unsigned,它们的表示范围如下:
Signed:-128 ~ 127 (最高位为符号位)
Unsigned:0 ~ 255 (最高位为数值位)
需要注意的是,在进行计算时,Signed和Unsigned的结果可能不同。例如,当两个有符号的数相加时,如果结果超出了该数据类型的范围,就会发生溢出,导致结果不正确。而Unsigned则不会出现这种情况,因为它只能表示非负数。因此,在使用Signed和Unsigned时,需要根据实际情况选择合适的数据类型。
说明salary只有五位数字,其中最后两位为小数,前三位为整数,一共五位。
例如,我把我下面表格中的salary定义成了定点类型
但是我们如何知道salary定点类型一共占用了我的多少内存空间呢?
如图所示
我们通过length() 查询了字符存储空间的大小
通过char_length() 查看了字符的长度 --》字符的个数
因此对于DECIMAL(M,D),我认为DECIMAL消耗的字节数是依赖于我们定义的M和D来判断的,如果M为10,那么消耗的字节就为10个字节。
MySQL浮点类型是指可以存储小数的数据类型,它包括FLOAT和DOUBLE两种类型。
FLOAT类型可以存储4个字节的浮点数,可以存储的值的范围是-3.402823466E+38到3.402823466E+38,精度为7位小数。
DOUBLE类型可以存储8个字节的浮点数,可以存储的值的范围是-1.7976931348623157E+308到1.7976931348623157E+308,精度为15位小数。
需要注意的是,由于浮点数的存储方式是近似值,而非精确值,因此在进行计算时可能会出现误差。如果需要精确计算,应该使用DECIMAL类型。
char是固定长度的字符串,varchar是可变长度的字符串。
当我们使用char(10)定义姓名的时候,不管我们的名字有两个或者是三个字,char(10)都会消耗10个字节,因为char类型在它定义空间大小的时候就已经固定了。
而我们使用varchar(10)定义姓名的时候,当我们输入三个字节个数,那么varchar就会占用三个字节,我们使用两个字节个数,varchar就会占用两个字节,varchar表示的就是可变字符串类型,他占用的内存空间是在一定范围内是可以改变的,如上面我们定义了varchar(10)就说明,它能存储不超过10个字节个数的数据进去,其中占用的字节数与他存入的数据字符个数有关。
因此varchar比char更省内存空间。
TEXT数据类型用于存储最大长度为65535个字符的文本数据,例如文章、评论等。它可以存储纯文本、HTML代码和XML数据。它占用的存储空间取决于实际存储的数据长度。
LONGTEXT数据类型用于存储最大长度为4294967295个字符的文本数据,例如博客正文、邮件正文、书籍等。它也可以存储纯文本、HTML代码和XML数据。它占用的存储空间取决于实际存储的数据长度。
这两种数据类型的作用是允许在MySQL数据库中存储大量的文本数据,使得在应用程序中可以方便地读取和处理这些数据。
BLOG可以存储最大长度为65,535字节的二进制数据,而LONGBLOG可以存储最大长度为4,294,967,295字节的二进制数据。这些数据类型在存储文本数据时非常有用,例如存储大型文档、图像、音频和视频文件等。
在应用程序中,可以使用BLOG和LONGBLOG来存储用户上传的文件或其他二进制数据。此外,这些数据类型还可以用于存储应用程序生成的大量文本数据,例如日志文件或其他数据记录。
BINARY类型用于存储固定长度的二进制数据,即长度是固定的。例如,如果定义一个长度为10的BINARY类型的列,那么该列中存储的二进制数据的长度就是10个字节,如果存储的数据长度小于10个字节,MySQL会自动在数据后面添加0来填充。
VARBINARY类型用于存储可变长度的二进制数据,即长度是可变的。例如,如果定义一个VARBINARY类型的列,那么该列中存储的二进制数据的长度可以是任意长度,最大长度由定义时指定。
BINARY和VARBINARY类型通常用于存储图片、音频、视频等二进制文件,以及加密数据等。
ENUM是一种数据类型,用于定义枚举类型。枚举类型是一组具有预定义值的常量,通常用于表示一组相关的选项或状态。ENUM可以让程序员在编写代码时更加清晰地表达自己的意图,同时也可以帮助编译器和其他工具更好地理解程序的含义。在一些编程语言中,ENUM还可以用于实现状态机、控制流等高级功能。
枚举是一种数据类型,它用于定义一组有限的常量。枚举常量通常表示一些特定的状态或类型,我们通过枚举定义选项,我们只能选择被枚举的选项进行输入,而我们不能插入其他没有被枚举的选项。
SET类型是MySQL中的一种数据类型,用于存储多个不同的值。SET类型可以存储最多64个不同的值,每个值都有一个唯一的编号,使用逗号分隔。SET类型常用于存储一些只有有限个取值的属性,例如性别、婚姻状况、职业等。使用SET类型可以简化数据库表的设计,提高数据的存储效率。
我们先创建一共表格myset_sc用于存储set类型的数据,然后我们在表格中插入了数据basketball
查看表格
但是我们想要插入其他的数据(其他的爱好,如fishing),那么他就会报错,说明不行
因此我们需要输入的数据必须是集合里面存在的数据。
而且输入的数据如果出现重复项的话,那么集合类型就会对数据进行去重操作。
1、DATE类型只能表示年-月-日(通常用来记录生日时间)
2、TIME只能表示小时-分钟-秒
3、DATETIME能表示年-月-日-小时-分钟-秒,支持的范围为'1000-01-01 00:00:00''9999-12-31 23:59:59'(通常用来考勤等)
4、TIMESTAMP也能表示年-月-日-小时-分钟-秒,但是TIMESTAMP有时间范围限制,从'1970-01-01 00:00:01'到'2038-01-19 03:14:07'(常用)(通常使用在注册账号时间,交易,下订单时间)
5、YEAR只能表示年