当前位置: 首页 > 后端技术 > Java

Mysql字段类型

时间:2023-04-01 15:15:03 Java

Mysql数据类型1.数值类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点小数数据类型FLOAT和DOUBLE,定点小数类型DECIMAL。类型存储范围(signed)unsignedTINYINT1byte-128~1270~255()SMALLINT2byte32768~327670~65535MEDIUMINT3byte-8388608~83886070~16777215INT4byte-2147483648~21474836470~4294967295Bytes(MLEBIGNYtes)注意:CREATETABLEtest1(idINT(3),`name`VARCHAR(5),ageINT(3));idINT(3)中括号中的3不是限制存储数据的大小,而是表示显示宽度。数据类型的显示宽度和取值范围无关。显示宽度仅用于显示,不能限制取值范围和占用空间。例如:INT(3)会占用4个字节的存储空间,允许的最大值不会是999,而是INT整数所允许的最大值。显示宽度只是表示MySQL可以显示的最大数字个数。当值的位数小于指定宽度时,将用空格填充。例如:将id=999999的数据输入test1,依然会成??功。INSERTINTOtest1VALUES(999999,'Xiaoming',12);select*fromtest1whereid=999999;idnameage999999Xiaoming12DECIMAL.浮点型和定点型都可以用(M,N)来表示。其中,M称为精度,表示总位数;N称为刻度,表示小数点后的位数。如果DECIMAL没有指定精度,则默认为(10,0)。无论是定点数还是浮点数类型,如果用户指定的精度超出精度范围,则进行四舍五入CREATETABLEtest2(idINT(4),scoreDECIMAL(3,2));插入test2值(1,5.123),(2,5.236),(3,5.1);SELECT*FROMtest2;--Resultidscore15.1225.2435.10如果插入大于999.99的数字会报错insertintotest2values(4,1000.4567);--结果查询:insertintotest2values(4,1000.4567)错误代码:1264Outofrangevalueforcolumn'score'atrow12日期/时间类型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP类型日期格式范围YEARYYYY1901-21551字节TIMEHH:MM:SS3字节DATEYYYY-MM-DD3bytesDATETIMEYYYY-MM-DDHH:MM:SS8bytesTIMESTAMPYYYY-MM-DDHH:MM:SS4bytes注:TIMESTAMP取值范围为1970-2038TIMESTAMP和DATETIME除存储字节外另外对于支持的范围,还有一个最大的区别:在存储日期数据时,DATETIME是按照实际输入的格式来存储的,即输入什么就存储什么,不考虑时区;而TIMESTAMP值以UTC(世界标准时间)格式存储,存储时转换当前时区,检索时转换回当前时区。查询时,不同时区显示的时间值不同。DATE:(1)以'YYYY-MM-DD'或'YYYYMMDD'字符串格式表示的日期,取值范围为'1000-01-01'~'9999-12-3'。例如,如果您输入“2012-12-31”或“20121231”,则插入数据库的日期将为2012-12-31。(2)以'YY-MM-DD'或'YYMMDD'字符串格式表示的日期,其中YY代表两位数的年份值。具有两位数年份值的日期是不明确的,因为世纪是未知的。MySQL使用以下规则来解释两位数的年份值:'00~69'范围内的年份值被转换为'2000~2069';'70~99'范围内的年份值被转换为'1970~1999'。例如输入'12-12-31',则插入数据库的日期为2012-12-31;如果输入“981231”,则插入数据库的日期为1998-12-31。(3)YY-MM-DD或YYMMDD数字格式表示的日期同上,00~69范围内的年份值转换为2000~2069,70范围内的年份值~99转换为1970~1999。例如输入12-12-31,则插入数据库的日期为2012-12-31;如果输入981231,则插入数据库的日期为1998-12-313。字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。字符串类型分为文本字符串和二进制字符串类型存储大小CHAR(M)M字节,1<=M<=255VARCHARL+1字节,L<=M,TINYTEXT0-255字节TEXT0-65535字节MEDIUMTEXT0-16,777,215字节LONGTEXT0-4,294,967,295或4GB字节ENUM1或2字节TINYBLOB0-255字节BLOB0-65535字节MEDIUMBLOB0-16,777,215字节LONGBLOB0-4,2429,5字节varchar(M)表示括号中的M有不同来自INT(4)的限制。这里,M对插入数据的长度有限制。如果太长会报错。CREATETABLEtest3(idINT(4),`name`VARCHAR(5),`remark`varchar(1000));insertintotest3values(1,'小红','第一条数据');--数据正常插入idnameremark1小红的第一条数据太长情况insertintotest3values(1,'Thisnameisreallylong','第二条数据');--显示name字段太长查询:insertintotest3values(1,'Thisnameisreallylong','第二条数据')错误代码:1406Datatoolongforcolumn'name'atrow1INSERTINTOtest3VALUES(1,'abcdef','第三条数据');--显示或超长查询:INSERTINTOtest3VALUES(1,'abcdef','第三条数据')错误码:1406Datatoolongforcolumn'name'atrow1varchar字段长度直接按字符计算,不区分中英文字符