数值类型
数值类型可以设置unsigned,表示无符号,数据从0开始,如tinyint设置无符号后,范围是0-255。也可以设置zerofill当存储的数据长度不够时,用0填充
- bit —比特值的类型 | 1-64 | 1
- tinyint—微整型,范围是-128to128
- bool,boolean—实际上MySQL用tinyint(1)来表示布尔型,0 false,其他值为true
- smallint—小整型,范围是 -32768 to 32767
- mediumint—中整型,-8388608 to 8388607
- int/integer—整型,-2147483648 to 2147483647
- bigint—大整型,-9223372036854775808 to 9223372036854775807
- decimal—小数型,可以精确记录小数,dec也是,但兼容其他数据库系统,比如语句 decimal(7,3) 规定了存储的值不超过 7 位数字,并且小数点后不超过 3 位。
- float—单精度浮点型, 范围-3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38,理论上范围是这么大,但实际中取决于硬件和操作系统值会偏小。
- double—双精度浮点型, -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308,同样的实际值会偏小。
时间和日期
MySQL允许时间、日期和时间戳值,并支持微秒(6位数),小数点的形式如2018-12-31 23:59:59.999999。
如表中的任何时间戳或DATETIME列都可以具有自动初始化和更新属性。 - date—日期,’1000-01-01’ to ‘9999-12-31’,mysql显示出来的是’YYYY-MM-DD’这种格式,但是存储的时候可以是整型如执行
INSERT into testd(testdate) values('130904'),(130904),('2013-09-4')
,存储进去之后都会变成2013-09-04并显示。 - datetime—日期和时间,’1000-01-01 00:00:00.000000’ to ‘9999-12-31 23:59:59.999999’,显示格式’YYYY-MM-DD HH:MM:SS[.fraction]’,同样也可以使用数值和字符存储。
- timestamp—时间戳,’1970-01-01 00:00:01.000000’ UTC to ‘2038-01-19 03:14:07.999999’ 显示格式2013-09-04 00:00:00,存储到秒级。
- time—时间值,’-838:59:59.000000’ to ‘838:59:59.000000’,显示格式’HH:MM:SS[.fraction]’
- year—年份值, 1901/2155 ,YYYY四位数字显示年份
字符型
许多字符串数据类型的列定义可以包括指定该列的字符集或排序的属性。这些属性适用于CHAR、VARCHAR、文本类型、ENUM和SET数据类型
CREATE TABLE t
( --设置字符
c1 VARCHAR(20) CHARACTER SET utf8,
--设置字符集
c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs
--设置成二进制存储
c3 ENUM('a','b','c') CHARACTER SET binary
)
- char—定长字符型, 0 to 255,指定长度后如果不够会
- varchar—可变长字符型,0 to 65,535.
- binary—和char类型相似,但是是用二进制存储而不是字符
- varbinary—二进制存储,和varchar类似。
- tinyblob—一个BLOB列最大长度为255字节。每个TINYBLOB值都使用1字节长度前缀存储,该前缀表示值的字节数。
- tinytext—文本类型,最大长度255个字符。如果值包含多字节字符,那么有效的最大长度就会减少。每个TINYTEXT值都使用一个1字节长度的前缀存储,该前缀表示值的字节数。
- blob—BLOB类型,最大长度为65535字节。每个BLOB值都使用一个2字节长度的前缀来存储,该前缀表示值的字节数
- text—文本类型,最大长度为65535字符。如果值包含多字节字符,那么有效的最大长度就会减少。每个文本值都使用一个2字节长度的前缀来存储,该前缀表示值的字节数。
- mediumblob— 最大长度16,777,215字节,使用一个3字节长度的前缀来存储,该前缀表示值的字节数。
- mediumtext—一个文本列最大长度为16777215字符。如果值包含多字节字符,那么有效的最大长度就会减少。每个MEDIUMTEXT值都使用一个3字节长度前缀存储,该前缀表示值的字节数。
- longblob—4g字节,4个字节长度前缀
- longtext—4g字符,4个字节长度前缀
- enum—字符串对象,它只能有一个值,从值“value1”的列表中选择“value2”,…,空值或特殊的“错误值”。枚举值在内部以整数表示。
- set—集合,每个值都必须从值“value1”、“value2”的列表中选择。集合值在内部表示为整数。
空间数据类型
json类型 - 格式
MySQL支持json的格式的存储,主要的格式:json数组[“abc”, 10, null, true, false],json对象:{“k1”: “value”, “k2”: 10}以及混合的。 - 用法