MYSQL数据库表字段类型(⼀)
MySQL⽀持多种数据类型,主要有数值类型,⽇期/时间类型和字符串类型。
链接
整数类型
数值类型主要⽤来存储数字,MySQL提供了多种数值数据类型,不同的数据类型提供了不同的取值范围,可以存储的值范围越⼤,其所需要的存储空间也会越⼤。
类型名称说明存储需求
TINYINT很⼩的整数1字节
SMALLINT⼩的整数2字节
MEDIUMINT中等⼤⼩的整数3字节
INT(INTEGER)普通⼤⼩的整数4字节
BIGINT⼤整数8字节
数据类型有符号⽆符号
TINYINT-128-1270-255
SMALLINT-32767-327670-65535
MEDIUMINT-8388608-83886070-16777215
INT(INTEGER)-2147483648-21474836470-4294967295 BIGINT-922337203685477508-9223372036854775080-18446744073709551615
浮点数类型和定点数类型
MYSQL中使⽤浮点数和定点数来表⽰⼩数。浮点数类型有两种:单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)
类型名称说明存储需求
FLOAT单精度浮点数4字节
DOUBLE双精度浮点数8字节DECIMAL(M,D),DEC压缩的“严格”定点数M+2字节
DECIAMAL类型不同于FLOAT和DOUBLE,DECIMAL实际以串存放的,可能的最⼤取值范围与DOUBLE⼀样,但是其有效的取值范围由M 和D的值决定。如果改变M和固定D,则其取值范围将随M的变⼤⽽变⼤。
⽇期与时间类型
类型名称⽇期格式⽇期范围存储需求YEAR YYYY1901-21551字节TIME HH:MM:SS-839:59:59~838:59:593字节DATE YYYY-MM-DD1000-01-01~9999-12-33字节DATETIME YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00~9999-12-31 23:59:598字节TIMESTAMP YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC~ 2038-01-19 03:14:07 UTC4字节YEAR
YEAR类型是⼀个单字节类型,⽤于表⽰年,在存储时只需要1字节。可以使⽤各种指定YEAR值,如下所⽰:
1. 可以使⽤4位字符串(数字字符串如’2012’)或4位数字格式表⽰。插⼊’2010’或插⼊2010,插⼊到数据库的值均为2010。
2. 以2位字符串格式表⽰的YEAR,范围位’00’到‘99’。‘00-69’和‘70-99’范围的值分别被转换为2000-2069和1970-
1999范围的YEAR值。‘0’与‘00’作⽤相同。插⼊超过取值范围的值将被转换为2000。
3. 以2位数字表⽰的YEAR,范围为1-99.1-69和70-99范围的值分别转换位2001-2069和1970-1999范围的YEAR值。注意:在这⾥0
值将被转换位0000,⽽不是2000。
TIME
TIME类型⽤在只需要时间信息的值,在存储时需要3字节,格式位’HH:MM:SS’。其中,HH表⽰⼩时,MM表⽰分钟,SS表⽰秒。TIME 类型的取值范围位-838:59:59~838:59:59,⼩时部分会如此⼤的原因是TIME类型不仅只表⽰⼀天的时间,还可能时某个事件过去的时间或两个事件之间的时间间隔。
1. 'D HH:MM:SS’格式的字符串。可以使⽤下⾯任何⼀种"⾮严格的"语法:‘HH:MM:SS’,‘HH:MM’,‘D HH:MM’,‘D
HH’或‘SS’。这⾥的D表⽰⽇,可以取0-34之间的值。在插⼊数据库时,D被转换位⼩时保存,格式位’D*24+HH’。
2. 'HHMMSS’格式的,没有间隔符的字符串或者HHMMSS格式的数值,假定时有意义的时间。例如:‘101112’被理解
位’10:11:12’,但’109712’是不合法的(它有⼀个没有意义的分钟部分),存储时将变为00:00:00。
如果没有冒号,MYSQL解释值时,假定最右边的两位表⽰秒。(MySQL解释TIME值为过去的时间⽽不是当天的时间。)例如,读者可能认为’1112’和1112表⽰11:12:00(11点12分),但MYSQL将它们解释为00:11:12(11分12秒)。同样’12’和12被解释为00:00:12。相反,TIME值中如果使⽤冒号则肯定被看作当天的时间,也就是说,'11:12’表⽰11:12:00,⽽不是00:11:12。
DATE
DATE类型⽤在仅需要⽇期值时,没有时间部分,在存储时需要3字节。⽇期格式为’YYYY-MM-DD’。其中,YYYY表⽰年,MM表⽰⽉,DD表⽰⽇。在给DATE类型的字段赋值时,可以使⽤字符串类型或数字类型的数据插⼊,只要符合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-31。
4. 使⽤CURRENT_DATE或者NOW(),插⼊当前系统⽇期。
DATETIME
DATETIME类型⽤于需要同时包含⽇期和时间信息的值,在存储时需要8字节。⽇期格式为’YYYY-MM-
DD HH:MM:SS’。其中,YYYY 表⽰年,MM表⽰年,DD表⽰⽇,HH表⽰⼩时,MM表⽰分钟,SS表⽰秒。在给DATETIME类型的字段赋值时,可以使⽤字符串类型或者数字类型的数据插⼊,只要符合DATETIME的⽇期格式即可。
1. 以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串表⽰的值,取值范围为’1000-01-01
00:00:00’~‘9999-12-3 23:59:59’。输⼊’2012-12-31 05:05:05’或者’20121231050505’,插⼊数据库的DATETIME值都为2012-12-31 05:05:05。
2. 以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表⽰的⽇期,在这⾥YY表⽰两位的年值。与前⾯相同。
'00-69’和’70-99’范围的年值和上⾯转换⽅式相同。
3. 以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表⽰的⽇期和时间。例如,输⼊20121231050505,插⼊数据库的
DATETIME为2012-12-31 05:05:05;输⼊981231050505,插⼊数据的DATETIME为1998-12-31 05:05:05。TIMESTAMP
TIMESTAMP的显⽰格式与DATETIME相同,显⽰宽度固定在19个字符,⽇期格式为YYYY-MM-DD HH:MM:SS,在存储时需要4字节。TIMESTAMP列的取值范围⼩于DATETIME的取值范围,为’1970-01-01 00:00:01’UTC- '2038-01-19 03:14:07’UTC。其中,UTC~ '2038-01-19 03:14:07’UTC。其中,UTC为世界标准时间,因此在插⼊数据时,要保证在合法的取值范围内。
TIMESTAMP和DATATIME除了存储字节和⽀持的范围不同外,还有⼀个最⼤的区别就是:DATETIME在存储⽇期数据时,按实际输⼊的格式存储,即输⼊什么就存储什么,与时区⽆关;⽽TIMESTAMP值的存储时以UTC(世界标准时间)格式保存的,存储时对当前时区进⾏转换,检索时在在转换回当前时区。查询时,不同时区显⽰的值是不同的。mysql创建表数据类型
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论