mysql学习-数据类型详解

本文详细介绍了MySQL中的各种数据类型,包括数值类型、时间类型及字符串类型,并解释了每种类型的特点和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数值类型

M为最大显示宽度。最大有效显示宽度为255。显示宽度与存储大小或类型包含的值的范围无关
如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名。
在整数列定义中,SERIAL DEFAULT VALUE是NOT NULL AUTO_INCREMENT UNIQUE的一个别名。

warning: 你应当清楚,在整数值(其中一个是UNSIGNED类型)之间使用减号的时候,结果是无符号

  • BIT[(M)]
    位字段类型。M表示每个值的位数,范围从1到64。如果M被省略,默认为1。
  • TINYINT[(M)][UNSIGNED][ZEROFILL]
    很小的整数。带符号的范围是-128到127,无符号的范围是0-255。
  • BOOL, BOOLEAN
    是TINAYINT(1)的同义词。zero为假,非zero为真。
  • SAMLLINT[(M)][UNSGINED][ZEROFILL]
    小整数。带符号的范围-32768-32767。无符号范围0-65535。
  • MEDIUMINT[(M)][UNSIGNED][ZEROFILL]
    中等大小整数,带符号-8388608-8388607,无符号的范围0-16777215。
  • INT[(M)][UNSIGNED][ZEROFILL]
    普通大小的整数。带符号的范围是-2147483648-2147483647。无符号0-4294967295。
  • INTEGER[(M)][UNSIGNED][ZEROFILL] = INT
  • BIGINT[(M)][UNSIGNED][ZEROFILL]
    大整数。带符号-9223372036854775808到9223372036854775807。无符号范围:0到18446744073709551615。

    warning: 一定记得,大整数的计算要控制范围。。

  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
    小(单精度)浮点数。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。这些是理论限制,基于IEEE标准。实际的范围根据硬件或操作系统的不同可能稍微小些。
    M是小数纵位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。

  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
    普通大小(双精度)浮点数。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到 1.7976931348623157E+308。这些是理论限制,基于IEEE标准。实际的范围根据硬件或操作系统的不同可能稍微小些。
    M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。双精度浮点数精确到大约15位小数位。
    如果指定UNSIGNED,不允许负值。

    2、时间类型

  • DATE
    日期。支持的范围为'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式显示DATE值,但允许使用字符串或数字为DATE列分配值。

  • DATETIME
    日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。

    4.1 参考手册。
  • TIME
    时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式显示TIME值,但允许使用字符串或数字为TIME列分配值。

  • YEAR[(2|4)]
    两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970年到2069年。MySQL以YYYY 格式显示YEAR值,但允许使用字符串或数字为YEAR列分配值。

字符串类型

  • CHAR 是CHARACTER的简写。NATIONAL CHAR是标准的定义CHAR列应该使用默认的字符集。
  • VARCHAR
    字符VARYING的简写。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列的长度大于255,长度的前缀是两个字节。

  • BINARY(M)
    BINARY类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串。

  • VARBINARY(M)
    VARBINARY类型类似于VARCHAR类型,但保存二进制字节字符串而不是非二进制字符串。

  • TINYBLOB
    最大长度为255(28–1)字节的BLOB列。

  • TINYTEXT
    最大长度为255(28–1)字符的TEXT列。

  • BLOB[(M)]
    最大长度为65,535(216–1)字节的BLOB列。

可以给出该类型的可选长度M。如果给出,则MySQL将列创建为最小的但足以容纳M字节长的值的BLOB类型。

  • TEXT[(M)]

最大长度为65,535(216–1)字符的TEXT列。

  • MEDIUMBLOB
    最大长度为16,777,215(224–1)字节的BLOB列。

  • MEDIUMTEXT
    最大长度为16,777,215(224–1)字符的TEXT列。

  • LONGBLOB
    最大长度为4,294,967,295或4GB(232–1)字节的BLOB列。LONGBLOB列的最大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。

  • LONGTEXT
    最大长度为4,294,967,295或4GB(232–1)字符的TEXT列。LONGTEXT列的最大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。

  • ENUM('value1','value2',...)
    枚举类型。只能有一个值的字符串,从值列'value1','value2',...,NULL中或特殊 ''错误值中选出。ENUM列最多可以有65,535个截然不同的值。ENUM值在内部用整数表示。

  • SET('value1','value2',...)
    一个设置。字符串对象可以有零个或多个值,每个值必须来自列值'value1','value2',...SET列最多可以有64个成员。SET值在内部用整数表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值