Mysql数据类型
整数型数据类型
tinyint 很小的整数 1个字节
smallint 小的整数 2个字节
mediumint 中等大小的整数 3个字节
bigint 大整数 8个字节
根据占用字节数可以求出每一种数据类型的取值范围 tinyint需要1个字节(8bits)来存储,那么tinyint无符号数的最大值为2^8-1,即255;tinyint有符号的最大值为2^7-1,即127
在创建数据库中表的字段是,经常会遇到int(11)这类,括号中的数字表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。例如,假设声明一个int类型的字段:
year int(4)
该声明指明,在year字段中的数据一般只显示4位数字
注意:显示宽度与数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示得到数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要改制不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。例如,加入向year字段插入一个数值19999,当使用select查询该列值的时候,MySQL显示的将是完整的带有5位数字的19999,而不是4位数字的值。
系统添加的默认显示宽度
tinyint(4) smallint(6) mediumint(9) int(11) bigint(20)
MySQL中使用浮点数和定点数来表示小数,浮点类型有float和double,定点类型有decimal
浮点类型和定点类型都可以用(M,N)表示,其中M表示精度,表示总共的位数,N表示标度,表示小数的位数。
float需要4个字节存储,double需要8个字节存储,decimal(M,N)需要M+2个字节存储。
decimal是以串存放的,可能的最大屈指范围与double一样,但是其有效地取值范围由M和D的值决定。
日期与时间类型
datetime,date,timestamp,time,year
每一个类型都有合法的取值范围,当指定确实不合法的值是系统将插入0值。
year类型是一个单字节类型,需要1个字节存储,可以使用各种形式指定year值
1.以四位字符串或者四位数字格式表示 输入格式'YYYY'或者YYYY
2.以二位字符串个事表示的year,范围为'00'到'99' '00'~'69'表示2000到2069 '70'~'99'表示为1970到1999,'0'与'00'的表示数值相同,都是2000
3.以二位数字表示的year,范围为1~99,1~69表示2001~2069,70~99表示1970~1999,0值将会被转换为0000,不是2000。
注意:需要表示2000,请使用'0'或'00'
time类型用来表示时间信息,在存储时需要3个字节,格式'HH:MM:SS'。time类型可以表示过去的时间或两个事件之间的时间间隔,因此可以大于24小时,或者甚至为负。
表示方法:'D HH:MM:SS' 非严格语法:'HH:MM:SS' 'HH:MM' 'D HH:MM' 'D HH' 'SS',D表示日,取0~34之间的值。再插入数据库时,D被转换为小时保存,格式为"D*24+HH"。
表示方法:'HHMMSS'
注意:如果再插入数据的时候使用了一个非法数值,则系统会记录为00:00:00
注意:为TIME列分配简写值是应注意:如果没有冒号,MySQL解释值时,认为最右边的两位表示秒。'1112'和1112表示为00:11:12 ,'12'和12表示为00:00:12。相反,在time值中如果使用冒号则会被看作普通人理解的时间 '11:12'表示11:12:00,而不是00:11:12
注意:在使用'D HH'格式,小时一定要使用双位数值,如果是小于10的小时数,应在前面加0,例如'3 02'被翻译为74:00:00
DATE类型只有日期,没有时间部分,需要3个字节存储。表中存储格式为'YYYY-MM-DD'。在给DATE类型赋值时,可以使用以下形式:
1.'YYYY-MM-DD'或者'YYYYMMDD' 范围'1000-01-01'~'9999-12-3'
2.'YY-MM-DD'或者'YYMMDD'字符串格式表示的日期 YY取值00~69(2000~2069),70~99(1970~1999)
3.以YY-MM-DD或者YYMMDD数字格式表示的日期,效果同上
4.使用CURRENT_DATE或者NOW(),插入当前系统日期。
DATETIME类型存储时需要8个字节,表存储日期格式'YYYY-MM-DD HH:MM:SS'
1.'YYYY-MM-DD HH:MM:SS'或者'YYYYMMDDHHMMSS'字符串格式表示的值,取值范围'1000-01-01 00:00:00'~'9999-12-3 23:59:59'
2.'YY-MM-DD HH:MM:SS' 或者 'YYMMDDHHMMSS'字符串格式表示的日期,YY为00~69,70~99。
3.YY-MM-DD HH:MM:SS或者YYMMDDHHMMSS数字格式表示的日期和时间
TIMESTAMP的显示格式与DATETIME相同,显示宽度固定在19个字符,存储时需要4个字节,但是TIMESTAMP列的取值范围小于DATETIME的取值范围,为'1970-01-01 00:00:00' UTC~'2038-01-19 03:14:07' UTC
字符串类型CHAR,VARCHAR,BINARY,VARBINARY,BLOB,TEXT,ENUM,SET
可以存储字符串数据,也可以存储其他数据,如图片和声音的二进制数据。