当前位置:   article > 正文

MySQL 5.7常用的数据类型概述_mysql57是不是没有integee

mysql57是不是没有integee

MySQL支持以下几类SQL数据类型:数字类型、日期和时间类型、字符串(字符和字节)类型。本文对每个类别中类型属性、数据类型存储要求进行简单的概述。

数据类型描述使用以下约定:
   对于整数类型,M表示最大显示宽度。
   对于浮点和定点类型,M是可以存储的位数总数(精度)。
   对于字符串类型,M是最大长度。M的最大允许值取决于数据类型。
   D适用于浮点和定点类型,表示小数点(小数位数)后的位数。

1. 整数类型(Integer Types)

   1.1、 TINYINT(小整数型)

     - 占用存储空间:1个字节
     - 默认值:0
     - 长度范围:-128到127(有符号),0到255(无符号)
     - 优点:占用存储空间小,适用于存储小范围整数
     - 缺点:不能存储较大范围的整数
     - 使用场景:适用于存储状态码、标识符等小范围整数值的情况
     - 使用示例:创建一个表示性别的列,使用TINYINT数据类型存储0表示男性,1表示女性

   1.2、SMALLINT(小整数型)

     - 占用存储空间:2个字节
     - 默认值:0
     - 长度范围:-32768到32767(有符号),0到65535(无符号)
     - 优点:占用存储空间较小,适用于存储中等范围整数
     - 缺点:不能存储较大范围的整数
     - 使用场景:适用于存储年龄、数量等中等范围整数值的情况
     - 使用示例:创建一个表示年龄的列,使用SMALLINT数据类型存储年龄信息

   1.3、INT(整数型)
   

     - 占用存储空间:4个字节
     - 默认值:0
     - 长度范围:-2147483648到2147483647(有符号),0到4294967295(无符号)
     - 优点:常用的整数类型,适用于存储常规大小的整数
     - 缺点:不能存储较大范围的整数
     - 使用场景:适用于存储ID、数量等常规大小整数值的情况
     - 使用示例:创建一个表示订单编号的列,使用INT数据类型存储订单编号信息

   1.4、 BIGINT(大整数型)

     - 占用存储空间:8个字节
     - 默认值:0
     - 长度范围:-9223372036854775808到9223372036854775807(有符号),0到18446744073709551615(无符号)
     - 优点:适用于存储大范围整数,可以存储非常大的整数值
     - 缺点:占用存储空间较大,可能会浪费存储空间
     - 使用场景:适用于存储较大范围整数值的情况,如用户ID、订单号等
     - 使用示例:创建一个表示用户ID的列,使用BIGINT数据类型存储用户ID信息

     - MySQL支持的整数类型所需的存储空间和使用范围
      (Required Storage and Range for Integer Types Supported by MySQL)

      - 参考地址:
      https://dev.mysql.com/doc/refman/5.7/en/integer-types.html


2. 浮点数类型(Floating-Point Types)

   2.1、FLOAT(单精度浮点数)

     - 占用存储空间:4个字节
     - 默认值:0
     - 优点:占用存储空间相对较小,适用于存储需要较低精度的浮点数
     - 缺点:精度相对较低,可能存在舍入误差
     - 使用场景:适用于存储温度、价格等不需要高精度的浮点数值的情况
     - 使用示例:创建一个表示温度的列,使用FLOAT数据类型存储温度信息
     - 语法:FLOAT(M,D),这里(M,D)表示总共可以存储多达M个数字的值,其中D个数字可以在小数点之后。
            例如,定义为FLOAT(7,4)的列在显示时看起来像-999.9999。
            MySQL在存储值时执行四舍五入,因此如果将999.00009插入FLOAT(7,4)列,则近似结果为999.0001。

   2.2、DOUBLE(DOUBLE PRECISION - 双精度浮点数)

     - 占用存储空间:8个字节
     - 默认值:0
     - 优点:具有更高的精度,适用于存储需要更高精度的浮点数
     - 缺点:占用存储空间较大,可能会占用更多的存储空间
     - 使用场景:适用于存储GPS坐标、金融数据等需要高精度的浮点数值的情况
     - 使用示例:创建一个表示经度的列,使用DOUBLE数据类型存储经度信息
     - 语法:DOUBLE PRECISION(M,D),这里(M,D)表示总共可以存储多达M个数字的值,其中D个数字可以在小数点之后。

      
   - MySQL也支持这个可选的精度规范,但FLOAT(p)中的精度值仅用于确定存储大小。
      从0到23的精度会产生一个4字节的单精度(FLOAT)列。从24到53的精度产生一个8字节的双精度(double)列。
   - 由于浮点值是近似值,而不是作为精确值存储,因此在比较中,试图将其视为精确值可能会导致问题。
   - 为了最大限度地实现可移植性,需要存储近似数字数据值的代码应该使用FLOAT或DOUBLE PRECISION,不指定精度或位数。
   - 参考地址:
      https://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html


3. 字符串类型(character string)

  3.1、CHAR(固定长度字符串)

     - 占用存储空间:根据定义的长度而定,最多255个字节
     - 默认值:空字符串
     - 长度范围:0到255个字符
     - 优点:存储空间固定,适用于存储长度固定的字符串
     - 缺点:如果存储的字符串长度不足定义的长度,会在末尾填充空格
     - 使用场景:适用于存储状态码、国家代码等长度固定的字符串的情况
     - 使用示例:创建一个表示状态码的列,使用CHAR(3)数据类型存储状态码信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/char.html

   3.2、VARCHAR(可变长度字符串)

     - 占用存储空间:根据实际存储的数据长度而定,最多65535个字节
     - 默认值:空字符串
     - 长度范围:0到65535个字符
     - 优点:占用的存储空间根据实际数据长度变化,适用于存储长度可变的字符串
     - 缺点:存储空间相对较大,可能会浪费存储空间
     - 使用场景:适用于存储用户输入、描述信息等长度可变的字符串的情况
     - 使用示例:创建一个表示用户输入的列,使用VARCHAR(255)数据类型存储用户输入信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/char.html


4. 二进制类型(BINARY and VARBINARY Types)

   4.1、 BINARY(固定长度二进制类型)

     - 占用存储空间:根据定义的长度而定,最多255个字节
     - 默认值:空二进制
     - 长度范围:0到255个字节
     - 优点:存储空间固定,适用于存储长度固定的二进制数据
     - 缺点:如果存储的二进制数据长度不足定义的长度,会在末尾填充0
     - 使用场景:适用于存储加密密钥、哈希值等长度固定的二进制数据的情况
     - 使用示例:创建一个表示哈希值的列,使用BINARY(32)数据类型存储哈希值信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html

   4.2、VARBINARY(可变长度二进制类型)

     - 占用存储空间:根据实际存储的数据长度而定,最多65535个字节
     - 默认值:空二进制
     - 长度范围:0到65535个字节
     - 优点:占用的存储空间根据实际数据长度变化,适用于存储长度可变的二进制数据
     - 缺点:存储空间相对较大,可能会浪费存储空间
     - 使用场景:适用于存储图像、文件等长度可变的二进制数据的情况
     - 使用示例:创建一个表示图像的列,使用VARBINARY数据类型存储图像数据
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html

   - BINARY和VARBINARY类型类似于CHAR和VARCHAR,只是它们存储二进制字符串而不是非二进制字符串。也就是说,它们存储字节字符串,而不是字符串。这意味着它们具有二进制字符集和排序规则,并且比较和排序基于值中字节的数值。

5. BLOB and TEXT Types

   5.1、 BLOB(二进制大对象)

     - 占用存储空间:根据实际存储的数据长度而定,最多65535个字节
     - 默认值:空二进制
     - 长度范围:0到65535个字节
     - 优点:适用于存储大型二进制对象,如音频、视频文件等
     - 缺点:占用的存储空间相对较大,可能会影响性能
     - 使用场景:适用于存储大型二进制对象,如多媒体文件、文档等
     - 使用示例:创建一个表示音频文件的列,使用BLOB数据类型存储音频文件数据
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/blob.html

   5.2、TEXT(大文本类型)

     - 占用存储空间:根据实际存储的数据长度而定,最多65535个字节
     - 默认值:空字符串
     - 长度范围:0到65535个字符
     - 优点:适用于存储大量文本数据,无需指定固定长度
     - 缺点:占用的存储空间相对较大,可能会影响性能
     - 使用场景:适用于存储文章内容、评论等大段文本数据的情况
     - 使用示例:创建一个表示文章内容的列,使用TEXT数据类型存储文章内容
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/blob.html

   - BLOB是一个二进制大对象,可以容纳可变数量的数据。BLOB有四种类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
      它们的区别仅在于它们可以保持的值的最大长度。
   - TEXT有四种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。它们对应于四种BLOB类型,具有相同的最大长度和存储要求。


6. 日期和时间类型(DATE, DATETIME, and TIMESTAMP Types)

   6.1、 DATE(日期类型)

     - 占用存储空间:3个字节
     - 默认值:'0000-00-00'
     - 长度范围:'1000-01-01'到'9999-12-31'
     - 优点:存储日期值,占用存储空间较小
     - 缺点:不能存储时间信息
     - 使用场景:适用于存储生日、注册日期等日期信息的情况
     - 使用示例:创建一个表示生日的列,使用DATE数据类型存储生日信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/datetime.html

   6.2、DATETIME(日期和时间类型)

     - 占用存储空间:8个字节
     - 默认值:'0000-00-00 00:00:00'
     - 长度范围:'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
     - 优点:存储日期和时间值,适用于存储完整的日期和时间信息
     - 缺点:占用存储空间较大
     - 使用场景:适用于存储订单时间、日志记录时间等完整的日期和时间信息的情况
     - 使用示例:创建一个表示订单时间的列,使用DATETIME数据类型存储订单时间信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/datetime.html

   6.3、TIMESTAMP (时间戳)

      - 占用存储空间:TIMESTAMP数据类型占用4个字节。 
      - 默认值:TIMESTAMP数据类型的默认值为当前时间。 
      - 长度范围:TIMESTAMP数据类型的范围为'1970-01-01 00:00:01'到'2038-01-19 03:14:07'。 
      - 优点:TIMESTAMP数据类型可以存储日期和时间信息,占用的存储空间较小。 
      - 缺点:TIMESTAMP数据类型的范围有限,只能存储到2038年。 
      - 使用场景:TIMESTAMP数据类型适用于存储日期和时间信息,如记录数据的创建时间或更新时间。 
      - 使用示例:创建一个表示文章发布时间的列,使用TIMESTAMP数据类型存储发布时间信息。 
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/datetime.html
       

   - DATE类型用于有日期部分但没有时间部分的值。MySQL检索并显示“YYYY-MM-DD”格式的DATE值。
      支持的范围为“1000-01-01”到“9999-12-31”。
   
   - DATETIME类型用于同时包含日期和时间部分的值。MySQL检索并显示“YYYY-MM-DD hh:MM:ss”格式的DATETIME值。
      支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

   - TIMESTAMP数据类型用于同时包含日期和时间两部分的值。
      TIMESTAMP的范围为1970-01-01 00:00:01' UTC 到 2038-01-19 03:14:07' UTC。

7. TIME(时间类型)

     - 占用存储空间:3个字节
     - 默认值:'00:00:00'
     - 长度范围:'-838:59:59'到'838:59:59'
     - 优点:存储时间值,占用存储空间较小
     - 缺点:不能存储日期信息
     - 使用场景:适用于存储开店时间、会议时间等时间信息的情况
     - 使用示例:创建一个表示开店时间的列,使用TIME数据类型存储开店时间信息
     - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/time.html

8. BIT (Bit-Value Type)

      - 占用存储空间:BIT数据类型占用的存储空间取决于指定的位数,每8位占用1个字节。 
      - 默认值:BIT数据类型的默认值为NULL。 
      - 长度范围:BIT数据类型可以指定的位数范围为1到64。 
      - 优点:BIT数据类型可以有效地存储位标志或布尔值,占用的存储空间较小。 
      - 缺点:BIT数据类型的位数固定,不适合存储可变长度的二进制数据。 
      - 使用场景:BIT数据类型适用于存储位标志、开关状态或布尔值等需要占用存储空间较小的情况。 
      - 使用示例:创建一个表示用户权限的列,使用BIT(8)数据类型存储8个权限位的信息。
      - 语法:BIT(M),BIT数据类型用于存储bit值。BIT(M)使得能够存储M-bit。M的取值范围从1到64。
         如果将一个值分配给长度小于M位的BIT(M)列,则该值将在左侧填充零。例如,给BIT(6)列赋值b'101'实际上与赋值b'000101'相同。
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/bit-type.html
 
   注意:BIT数据类型在MySQL中通常用于存储位标志或布尔值,但在不同的数据库中可能存在差异.

9. ENUM(枚举类型)

      - 占用存储空间:ENUM数据类型的存储空间取决于枚举值的数量,每个枚举值占用1或2个字节。 
      - 默认值:ENUM数据类型的默认值为枚举列表中的第一个值。 
      - 长度范围:ENUM数据类型可以包含最多65535个枚举值。 
      - 优点:ENUM数据类型可以限制列只能取特定的值,占用的存储空间较小。 
      - 缺点:ENUM数据类型的枚举值一旦定义,不容易修改,且不适合存储可变的字符串。 
      - 使用场景:ENUM数据类型适用于列具有一组固定的取值范围,如性别、状态等。 
      - 使用示例:创建一个表示用户角色的列,使用ENUM('admin', 'user', 'guest')数据类型存储角色信息。
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/enum.html

   - ENUM是一个字符串对象,其值从允许的值列表中选择,这些值在表创建时在列规范中显式枚举。

10. SET

      - 占用存储空间:SET数据类型的存储空间取决于定义的集合大小,通常占用1、2、3、4或8个字节。 
      - 默认值:SET数据类型的默认值为空集合。 
      - 长度范围:SET数据类型可以包含最多64个集合成员。 
      - 优点:SET数据类型可以存储多个集合成员,占用的存储空间相对较小。 
      - 缺点:SET数据类型的集合成员一旦定义,不容易修改,且不适合存储可变的字符串。 
      - 使用场景:SET数据类型适用于列具有多个固定的取值范围,如用户角色、权限等。 
      - 使用示例:创建一个表示用户权限的列,使用SET('read', 'write', 'delete')数据类型存储权限信息。
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/set.html

   - SET是一个字符串对象,可以有零个或多个值,每个值都必须从创建表时指定的允许值列表中选择。由多个集合成员组成的SET列值由逗号(,)分隔的成员指定。这样做的结果是SET成员值本身不应该包含逗号。

11. Fixed-Point Types (Exact Value)(不动点类型)

   11.1、DECIMAL 

      - 占用存储空间:DECIMAL数据类型的存储空间取决于指定的精度和小数位数。根据官方文档,DECIMAL(M, D)占用的存储空间为(M+2)/9 字节,其中M为精度,D为小数位数。 
      - 默认值:DECIMAL数据类型的默认值为0。 
      - 长度范围:DECIMAL数据类型可以指定的精度范围为1到65,小数位数范围为0到30。 
      - 优点:DECIMAL数据类型可以存储精确的小数值,适用于需要确切数值计算的场景。 
      - 缺点:DECIMAL数据类型占用的存储空间较大,相对于其他浮点数类型,性能可能稍低。 
      - 使用场景:DECIMAL数据类型适用于需要精确数值计算的场景,如货币金额、税率等。 
      - 使用示例:创建一个表示商品价格的列,使用DECIMAL(10, 2)数据类型存储价格信息。
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html 

   11.2、NUMERIC

      - 占用存储空间:NUMERIC数据类型的存储空间取决于定义的精度和小数位数。 
      - 默认值:NUMERIC数据类型的默认值为0。 
      - 长度范围:NUMERIC数据类型可以定义的精度范围为1到65,小数位数范围为0到30。 
      - 优点:NUMERIC数据类型可以存储精确的数值,适用于需要确切数值计算的场景。 
      - 缺点:NUMERIC数据类型占用的存储空间较大,相对于其他数值类型,性能可能稍低。 
      - 使用场景:NUMERIC数据类型适用于需要精确数值计算的场景,如货币金额、税率等。 
      - 使用示例:创建一个表示订单总额的列,使用NUMERIC(10, 2)数据类型存储总额信息。
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html 

   - DECIMAL和NUMERIC类型存储精确的数字数据值。当保持精确性很重要时,例如货币数据时,会使用这些类型。
      在MySQL中,NUMERIC被实现为DECIMAL,
             

12. 数据类型存储要求

      Data Type Storage Requirements
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

13. 数据类型默认值

      Data Type Default Values
      - 参考地址:https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/999581
推荐阅读
相关标签
  

闽ICP备14008679号