mysql基础1
l 数据库表列类型
1.整数类型
整数类型 |
大小 |
表数范围(有符号) |
表数范围(无符号) |
作用 |
TINYINT |
1字节 |
(-128,127) |
(0,255) |
小整数值 |
SMALLINT |
2字节 |
(-32768,32767) |
(0,65535) |
大整数值 |
MEDIUMINT |
3字节 |
(-8388608,8388607) |
(0,16777215) |
大整数值 |
INT/INTEGER |
4字节 |
(-2147483648,2147483647) |
(0,4294967295) |
大整数值 |
BIGINT |
8字节 |
(-9233372036854775808,9223372036854775807) |
(0,18446744073709551615) |
极大整数值 |
MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示
主键自增:不使用序列,通过auto_increment,要求是整数类型
2.浮点数类型
浮点数类型 |
大小 |
作用 |
FLOAT |
4字节 |
单精度浮点数值 |
DOUBLE |
8字节 |
双精度浮点数值 |
需要注意的是与整数类型不一样的是,浮点数类型的宽度不会自动扩充。 score double(4,1)
3.字符串类型
字符串类型 |
大小 |
描述 |
CHAR(M) |
0~255字符 |
允许长度0~M个字符的定长字符串 |
VARCHAR(M) |
0~65535字符 |
允许长度0~M个字符的变长字符串 |
BINARY(M) |
0~255字节 |
允许长度0~M个字节的定长二进制字符串 |
VARBINARY(M) |
0~65535字节 |
允许长度0~M个字节的变长二进制字符串 |
TINYBLOB |
0~255字节 |
二进制形式的短文本数据(长度为不超过255个字符) |
TINYTEXT |
0~255字节 |
短文本数据 |
BLOB |
binary large object |
二进制形式的长文本数据 |
TEXT |
|
长文本数据 |
MEDIUMBLOB |
0~16777215字节 |
二进制形式的中等长度文本数据 |
MEDIUMTEXT |
0~16777215字节 |
中等长度文本数据 |
LOGNGBLOB |
0~4294967295字节 |
二进制形式的极大文本数据 |
LONGTEXT |
0~4294967295字节 |
极大文本数据 |
CHAR和VARCHAR类型相似,均用于存于较短的字符串,主要的不同之处在于存储方式。CHAR类型长度固定,VARCHAR类型的长度可变。
因为VARCHAR类型能够根据字符串的实际长度来动态改变所占字节的大小,所以在不能明确该字段具体需要多少字符时推荐使用VARCHAR类型,这样可以大大地节约磁盘空间、提高存储效率。
CHAR和VARCHAR表示的是字符的个数,而不是字节的个数
4.日期和时间类型
类型 |
格式 |
取值范围 |
0值 |
TIME |
‘HH:MM:SS’ |
(‘-838:59:59’, ‘838:59:59’) |
‘00:00:00’ |
DATE |
‘YYYY-MM-DD’ |
(‘1000-01-01’, ‘9999-12-31’) |
‘0000-00-00’ |
YEAR |
YYYY |
(1901, 2155), 0000 |
0000 |
DATETIME |
‘YYYY-MM-DD HH:MM:SS’ |
(‘1000-01-01 00:00:00’, ‘9999-12-31 23:59:59’) |
‘0000-00-00 00:00:00’ |
TIMESTAMP 时间戳 |
‘YYYY-MM-DD HH:MM:SS’ |
(‘1970-01-01 00:00:01’ UTC, ‘2038-01-19 03:14:07’ UTC) |
‘0000-00-00 00:00:00’
|
TIMESTEMP类型的数据指定方式与DATETIME基本相同,两者的不同之处在于以下几点:
(1) 数据的取值范围不同,TIMESTEMP类型的取值范围更小。
(2) 如果我们对TIMESTAMP类型的字段没有明确赋值,或是被赋与了NULL值,MySQL会自动将该字段赋值为系统当前的日期与时间。
(3) TIMESTEMP类型还可以使用CURRENT_TIMESTAMP来获取系统当前时间。
(4) TIMESTEMP类型有一个很大的特点,那就是时间是根据时区来显示的。例如,在东八区插入的TIMESTEMP数据为2017-07-11 16:43:25,在东七区显示时,时间部分就变成了15:43:25,在东九区显示时,时间部分就变成了17:43:25。