MySQL数据类型
(1)数据类型属性
1、UNSIGNED不要使用,可能会带来意想不到的情况,例:对于INT,如果超出范围,使用BIGINT
2、ZEROFILL对数字类型数据进行格式化输出,并默认添加UNSIGNED例:int(4),当保存的数据为1,输出为0001
(2)日期和时间
DATETIME 8字节 "1000-01-01 00:00:00"到"9999-12-31 23:59:59"
DATE 3字节 "1000-01-01"到"9999-12-31"
TIMESTAMP 4字节 "1970-01-01 00:00:00"到"2038-01-19 03:14:07"(实际存储内容为1970-01-01 :00:00:00到当前时间的毫秒数)
YEAR 1字节 YEAR(4)显示范围1901~2155 YEAR(2)显示范围1970~2070
TIME 3字节 "-838:59:59"~"838:59:59"
1.2.1日期时间函数
1、NOW等同于CURRENT_TIMESTAMP,返回执行SQL语句的时的时间
2、SYSDATE,返回执行到当前函数时的时间
1.2.2时间加减
DATE_ADD(date,INTERVAL expr unit) DATE_SUB(date,INTERVAL expr unit)
1、date可为日期类型或日期字符串
2、expr可为正负数
3、unit可为DAY、YEAR、MICROSECOND、SECOND、MINUTE、HOUR、WEEK、MONTH
1.2.3日期格式化
DATE_FORMAT(NOW(),'%y%m%d')
(3)数字类型
TINYINT 1 -128~127 0~255
SMALLINT 2 -32768~32767 0~65535
MEDIUMINT 3 -8388608~8388607 0~16777215
INT 4 -2147483648~2147483647 0~4294967295
BIGINT 8 -92233720368547758080~9223372036854775807 0~18446744073709551615
(4)浮点型
FLOAT 4 非精确类型
DOUBLE PRECISION 8 非精确类型
DECIMAL/NUMERIC 精确类型
(5)位类型
BIT(M) (M+7)/8字节 M为1到64
如果存放的值位数小于M,默认前面补0,例:对于BIT(6),b'110',最终存储b'000110'
采用位存储的方式,不能直接查看,需要通过HEX(bit)进行转换
(6)字符类型
CHAR(N) N的范围0~255,用来保存固定长度的字符串(当保存长度小于N,会自动右填充)
VARCHAR(N) N的范围0~65535,用来保存可变长字符串(其存储时会在前缀长度列表加上实际存储的字符长度)
(7)二进制类型
BINARY(N)、VARBINARY(N) 类似字符类型,存储形式为二进制,N表示字节长度
(8)大数据类型
BLOB存储二进制大数据、TEXT存储大文本
(9)集合类型
ENUM可以枚举65536个元素,SET最多64个 例:sex ENUM('male','female')