数值类型
整型
在定义性别字段时如果用boolean型,其本质是tinyint类型,插入数据用true和false,查询结果是1和0
可以在定义表结构时指定整数类型的显示宽度,如果不指定,系统为每一个类型指定默认的宽度值
create table emp
(
id int(11)
);
id字段的数据类型为int(11),注意后面的数字11,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。
注意:
显示的宽度和数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。
浮点数类型和定点数类型
MySQL中使用浮点数和定点数来表示小数。浮点类型有两种:单精度float和双精度double。定点类型只有一种:decimal。浮点类型和定点类型都可以用(M,N)来表示,其中M表示精度,表示总共的位数;N表示标度,是表示小数的位数。
创建表emp,其中x、y、z数据类型依次为float(5,1),double(5,1)和decimal(5,1),向表中插入数据5.12、5.15和5.123
float和double是浮点存储,decimal是以串的形式存储,也叫定点存储,double和decimal精度相同
字符类型
char和varchar类型
char(M)为固定长度字符串,在定义时指定字符串列长。在保存时在右侧填充空格以达到指定的长度。M表示列长度,M的范围是0到255个字符。
varchar(M)是长度可变的字符串,M表示最大列长度。M的范围是0到65535。
char会自动删除插入数据的尾部空格,varchar不会删除尾部空格。
日期和时间类型
year类型
year类型表示年,可以使用各种格式指定
year的值:以4位字符串或者4位数字格式表示year,取值范围’1901’到‘2155’,输入格式为‘YYYY’或者YYYY,例如:输入’2010’或2010以2位字符串格式表示的year,范围’00‘到’99‘。’00‘到’69‘和’70‘到’99‘范围的值分别被转换成2000-2069和1970-1999范围的year的值。以2位数字表示的year,范围1到99。1到69和70到99范围的值分别被转换为2001到2069和1970到1999范围的year值。
time类型
current_date或now()查看系统当前日期
date类型
DATE类型用在仅需要日期值时,没有时间部分,在插入遵循 YYYY-MM-DD、 YY-MM-DD、 YYYYMMDD、 YYMMDD都可以,并且允许非严格语法,比如插入98.11.31 98/11/31 98@11@31,任何标点符合都可以做日期、时间的分割符
使用current_date或者now(),插入当前系统日期。
datatime类型
DATATIME类型用在需要同时包括日期和时间信息的值,格式为‘YYYY-MM-DD HH:MM:SS’、‘YYYYMMDDHHMMSS’、 ‘YY-MM-DD HH:MM:SS’、‘YYMMDDHHMMSS’、 YYYYMMDDHHMMSS、 YYMMDDHHMMSS
timestamp类型
TIMESTAMP的显示格式与DATETIME相同,但TIMESTAMP的取值范围小于DATETIME的取值范围,为‘1970-01-01 00:00:01’ UTC~‘2038-01-19 03:14:07’ UTC,其中UTC为世界标准时间,在插入数据时,要保证在合法的取值范围内。