数据库之数据类型

目录

一、数据类型

二、数值类型

三、整数类型

四、日期和时间类型


一、数据类型

数据表由多个字段构成,每个字段可以指定不同的数据类型,数据类型用于规定数据的存储格式、约束和有效范围。在定义数据表字段时,应根据实际情况选择合适的数据类型。MySQL提供的数据类型主要包括数值类型、日期和时间类型、字符串类型以及JSON类型。


二、数值类型

数值类型用于存储数字型数据,包括整数类型(TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT)、浮点数类型(FLOAT,DOUBLE)和定点数类型(DECIMAL)。其中,整数类型的字段用于存储整数,浮点数和定点数类型的字段用于存储小数。

不同的数值类型提供不同的存储范围,并且每种类型可以设置两种格式,分别为有符号和无符号,有符号表示可以存储负数,无符号表示只能存储0或正数。


三、整数类型

在定义整数类型的字段时,在类型名称后面的括号中加入数字,可以指定显示宽度,当数值的位数小于显示宽度时会由空格填充,当数值的位数大于显示宽度时,只要不超过该数据类型的存储范围,就可以插入并且能够显示。指定显示宽度只用于显示,并不能限制存储范围和占用字节,例如,INT(3)一样会占用四个字节,最大值也会是INT类型允许的最大值。

查看系统帮助:

HELP CONTENTS 查看MySQL帮助文档支持的目录列表

最后以HELP开头,加上任意一个数据类型,可以查看其存储范围

浮点数类型和定点数类型

浮点数类型分为两种,单精度(FLOAT)和双精度(DOUBLE),而定点数类型只有DECIMAL一种。

MySQL中的浮点数在计算时可能会出现误差,这是浮点数一直存在的缺陷,而定点数类型会将数据以字符串的形式存入数据库,其准确度比浮点数要高,因此,如果对数据的准确度要求较高,选择定点数类型会比较安全。

浮点数类型和定点数类型都可以使用类型名称后面加“(M,D)”的形式来定义,其中M称为精度,表示数值的位数(整数位+小数位);D称为标度,表示小数点后的位数。

四、日期和时间类型

向日期和时间类型的字段插入数据时,最好使用引号将值包含起来。

1.YEAR

YEAR类型用于存储只有年份的值,存储格式为YYYY,它可以被声明为YEAR或YEAR(4),具有四个字符的显示宽度。在向数据库中插入YEAR类型的数据时,可以输入不严格的值。

转换规则有以下几点:

数值1~69和70~99自动转换为2001~2069和1970~1999。

字符串‘1’~‘69’和‘70’~‘99’自动转换为2001~2069和1970~1999。

字符串‘0’或‘00’自动转换为2000。

2.DATE

DATE类型用于存储具有日期部分但没有时间部分的值,存储格式为YYYY-MM-DD,其中YYYY代表年,MM代表月,DD代表日。在向数据库中插入DATE类型的数据时,转换规则有一下几点:

格式为‘YYYY-MM-DD’和‘YYYYMMDD’的字符串会转换为标准格式。

格式为YYYYMMDD和YYDDMM的数值都会转换为标准格式。

格式为‘YY-MM-DD’和‘YYDDMM’的字符串都会转换为标准格式。

在使用字符串表示DATE类型数据时,MySQL允许任何符号作为日期部分的分隔符。例如,‘2017/10/10’,‘2017.10.10’和‘2017#10#10’都会被系统转换为‘2017-10-10’格式。但是在使用数值表示时,日期之间不能加任何分隔符,例如2017-10-10将不能为时间类型的数据插入数据库。

3.TIME

TIME类型用于存储具有时间部分但没有日期部分的值,存储格式为HH:MM:SS,HH表示小时,MM表示分钟,SS表示秒。TIME类型的存储范围是-838:59:59到838:59:59,其不仅可用于表示一天中的时间(小于24小时),而且可用于表示两个事件之间的时间间隔(可能远远大于24小时,或者为负)。在向数据库中插入TIME类型的数据库时,转换规则有一下几点:

TIME类型支持‘D HH:MM:SS’格式,D表示日,可以在0~34之间取值,会被转换为小时,即D*24+HH。

TIME类型支持没有分隔符的字符串或数值的格式。例如,113050会被系统转换为11:30:50。

当数据为TIME类型的缩写值时,如果没有分隔符,MySQL会认为值得最右边两位表示秒,例如,‘1010’会被转换成00:10:10;如果有分隔符,MySQL会认为值得最左边两位表示小时,例如,‘10:10’会被转换为10:10:00。

4.DATETIME

DATETIME类型用于存储同时具有日期和时间得值,存储格式为YYYY-MM-DD HH:MM:SS,其中YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分钟,SS表示秒。在向数据库中插入DATETIME类型得数据时,转换规则有以下几点:

格式为YYYYMMDDHHMMSS和YYMMDDHHMMSS的数值会转换为标准格式。

格式为‘YYYYMMDDHHMMSS’和‘YYMMDDHHMMSS’的字符串会转换为标准格式。

5.TIMESTAMP

TIMESTAMP类型与DATETIME类型相似,用于存储同时具有日期和时间的值,存储格式为YYYY-MM-DD HH:MM:SS,但是TIMESTAMP类型的存储范围较小。

TIMESTAMP类型与DATETIME类型最大的区别是:DATETIME类型存储的数据是什么,显示的就是什么;而TIMESTAMP类型的时间可以根据时区进行转换,在查询时,当前时区不同,显示的时间值也不同。

相关推荐

  1. 数据库数据类型

    2024-07-21 00:10:03       15 阅读
  2. 【代码】数据类型基本数据类型

    2024-07-21 00:10:03       23 阅读
  3. 数据结构基本数据类型(Python)

    2024-07-21 00:10:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 00:10:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 00:10:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 00:10:03       45 阅读
  4. Python语言-面向对象

    2024-07-21 00:10:03       55 阅读

热门阅读

  1. 代码保存板块

    2024-07-21 00:10:03       21 阅读
  2. Git 代码管理面试59题(一)

    2024-07-21 00:10:03       20 阅读
  3. Kudu节点数规划

    2024-07-21 00:10:03       25 阅读
  4. Emacs

    2024-07-21 00:10:03       18 阅读
  5. 提升 Google 对网站兴趣的关键:颜值与内容并重

    2024-07-21 00:10:03       14 阅读
  6. 【js自学打卡8】filter / 类与原型链 / 转字符串

    2024-07-21 00:10:03       22 阅读
  7. 2024年交安安全员考试题库及答案

    2024-07-21 00:10:03       15 阅读
  8. [C/C++入门][for]23、求阶乘

    2024-07-21 00:10:03       20 阅读
  9. [rustlings]13_error_handling

    2024-07-21 00:10:03       19 阅读
  10. C语言经典例题-5

    2024-07-21 00:10:03       22 阅读