MySQL数据类型

数据库中用字段来存储数据时,需要给每个字段指定合适的数据类型,用于限制或允许该字段中存储的数据。
例如,我们要运送一台电脑,大卡车和小轿车都可以完成,但是,如果使用大卡车运送一台电脑,显然有点小题大做,浪费了大卡车的空间。
在这里插入图片描述
MySQL中支持三种数据类型:数值型、字符串型、日期和时间型。
不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。因此应根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

数值型

数值型分为整数型和小数型。
在这里插入图片描述

  • 整数型中TINYINT占用存储空间最小,为1字节(8bit),BIGINT占用存储空间最大,为8字节(64bit)。
  • 小数型分为浮点数和定点数。浮点数有单精度浮点数FLOAT和双精度浮点数DOUBLE,定点数只有一种DECIMAL。
  • 浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总位数;D称为标度,表示小数的位数。
  • 浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,默认为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。
  • 不论是定点还是浮点类型,如果用户指定的精度超出精度范围,则会四舍五入处理。
  • 定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好。两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。
字符串型

字符串类型用来存储字符串数据,还可以存储图片和声音的二进制数据。
在这里插入图片描述

  • char存储定长字符串,可以指定字符长度,如char(10),不论存储数据是否达到10个字节,都会占用10个字节的空间(自动用空格填充),如’abc ',提取数据时需要用trim()去掉多余的空格。因为长度固定,方便程序的存储和查找,存取效率比较高。
  • varchar存储可变长度字符串,可以指定字符长度,如varchar(10),占用实际字符长度的存储空间,如’abc’。
  • 知道固定长度的用char,经常变化的字段用varchar。
日期和时间型

在这里插入图片描述
year

  • 以 4 位字符串或者 4 位数字格式表示 ‘YYYY’ 或者 YYYY,如输入 ‘2010’ 或 2010,插入数据库的值均为 2010。
  • 以 2 位字符串格式表示’00’~’69’ 和 ‘70’~’99’ 范围的值分别被转换为 2000~2069 和 1970~1999 范围的 year 值。‘0’ 与 ‘00’ 的作用相同。插入超过取值范围的值将被转换为 2000。
    以 2 位数字表示1~99 和 70~99 范围的值分别被转换为 2001~2069 和 1970~1999 范围的 year 值。 0 值将被转换为 0000,而不是 2000。
    time
  • ‘D HH:MM:SS’ 格式的字符串。还可以使用这些“非严格”的语法:‘HH:MM:SS’、‘HH:MM’、‘D HH’ 或 ‘SS’。这里的 D 表示日,可以取 0~34 之间的值。在插入数据库时,D 被转换为小时保存,格式为 “D*24+HH”。
  • ‘HHMMSS’ 格式、没有间隔符的字符串或者 HHMMSS 格式的数值,假定是有意义的时间。例如,‘101112’ 被理解为’10:11:12’,但是 ‘106112’ 是不合法的(它有一个没有意义的分钟部分),在存储时将变为 00:00:00。
  • 如果没有冒号,MySQL 解释值时,假定最右边的两位表示秒。如 ‘1112’ 和 1112 表示00:11:12, ‘12’ 和 12 表示00:00:12。TIME 值中如果使用冒号则肯定被看作当天的时间,如’11:12’ 表示 11:12:00。
    date
  • 以 ‘YYYY-MM-DD’ 或者 ‘YYYYMMDD’ 字符中格式表示的日期,如输入 ‘2015-12-31’ 或者 ‘20151231’,插入数据库的日期为2015-12-31。
  • 以 ‘YY-MM-DD’ 或者 ‘YYMMDD’ 字符串格式表示日期,‘00~69’ 范围的年值转换为 ‘2000 ~ 2069’,‘70~99’ 范围的年值转换为 ‘1970~1999’。如输入 ‘15-12-31’,插入数据库的日期为 2015-12-31;输入 ‘991231’,插入数据库的日期为 1999-12-31。
  • 以 YYMMDD 数字格式表示的日期,00~69 范围的年值转换为 2000~2069,80~99 范围的年值转换为 1980~1999。如输入 151231,插入数据库的日期为 2015-12-31,输入 991231,插入数据库的日期为 1999-12-31。
  • MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,‘98-11-31’、‘98.11.31’、‘98/11/31’和’98@11@31’ 是等价的,这些值也可以正确地插入数据库。
    datetime
  • 以 ‘YYYY-MM-DD HH:MM:SS’ 或者 ‘YYYYMMDDHHMMSS’ 字符串格式表示的日期,如输入 ‘2014-12-31 05:05:05’ 或者 '20141231050505’,插入数据库的 DATETIME 值都为 2014-12-31 05:05:05。
  • 以 ‘YY-MM-DD HH:MM:SS’ 或者 ‘YYMMDDHHMMSS’ 字符串格式表示的日期,‘00~79’ 范围的年值转换为 ‘2000~2079’,‘80~99’ 范围的年值转换为 ‘1980~1999’。如输入 ‘14-12-31 05:05:05’,插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
  • 以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 数字格式表示的日期和时间。如输入 20141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 140505050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
  • MySQL 允许“不严格”语法:任何标点符号都可用作日期部分或时间部分之间的间隔符。例如,‘98-12-31 11:30:45’、‘98.12.31 11+30+35’、‘98/12/31 113045’ 和 ‘98@12@31 113045’ 是等价的,这些值都可以正确地插入数据库。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值