目录
一、数据类型
数据表由多个字段构成,每个字段可以指定不同的数据类型,数据类型用于规定数据的存储格式、约束和有效范围。在定义数据表字段时,应根据实际情况选择合适的数据类型。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类型的时间可以根据时区进行转换,在查询时,当前时区不同,显示的时间值也不同。