数据类型
数值类型
整型
默认有符号类型,用unsigned关键字指定为无符号类型
整型类型不要加宽度,宽度并非存储宽度,存储宽度已固定,指定的为显示宽度
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1字节 | -128,127 | 0,255 | 小整数值 |
SMALLINT | 2字节 | -23768,32767 | 0,65535 | 大整数值 |
MEDIUMINT | 3字节 | -8388608,8388607 | 0,4294967295 | 大整数值 |
INT或INTEGER | 4字节 | -2147483648,2147843647 | 0,4294967295 | 大整数值 |
BIGINT | 8字节 | -9233372036854775808,9233372036854775807 | 0,18446744073709551615 | 极大整数 |
浮点型
也分有无符号,unsigned
FLOAT[(M,D)],M表示多少位整数,D表示多少位负数
FLOAT,DOUBLE,DECIMAL精度越高
FLOAT和DOUBLE的M值多大255
DECIMAL,M值最大65
类型 | 大小 | 发范围(有符号) | 无符号 | 有用途 |
FLOAT | 4字节 | |||
DOUBLE | 8字节 | |||
DECIMAL | DECIMAL(M,D),如果M>D为M+2否则为D+2 |
日期类型
create table student( -> id int, -> name char(6), -> born_year year, -> birth_date date, -> class_time time, -> reg_time datetime);
insert into student values(1,'ya',now(),now(),now(),now());
插入时可用now()调用数据库当前时间
year:2018
date:2018-05-20
time:09:40:46
datetime:8字节,year范围1001-9999,2018-05-20 09:40:46
timestamp:4字节,year范围1970-2038
字符类型
在一个表中不要char和varchar混用。
字符类型宽度为字符的个数
char,定长,不够末尾补0,查询的时候给空格取消掉了。mysql比较查询的时候不管末尾空格。但开头的空格不做任何处理。like模糊查询,前后空格都不会自动去掉。
存取性能高,浪费空间。
varchar,变长,传几个存几个,不能超过规定长度。节省空间,存取速度慢。
char_length(name)查看字符宽度
select char_length(n2) from t9;
设置数据库模式,让怎么存怎么取,即不自动去掉空格
SET sql_mode="PAD_CHAR_TO_FULL_LENGTH";
char类型规定5个字符,插入2个字符,查询出来也就5个字符
select char_length(n1) from t9; +-----------------+ | char_length(n1) | +-----------------+ | 5 | +-----------------+
varchar类型规定5个字符,插入2个字符,实际查询出来也就2个字符
select char_length(n2) from t9; +-----------------+ | char_length(n2) | +-----------------+ | 2 | +-----------------+ 1 row in set (0.00 sec)
枚举类型与集合类型
enum,选择一个
set,选取多个
mysql> create table consumer( -> id int, -> name char(16), -> sex enum('male','female','other') -> level enum('level1','level2','level3'), -> hobbies set('play','music','read','run'));
enum类型不传入规定值,则设置成空
mysql> insert into consumer values(1,'ya','x','level1','run'); Query OK, 1 row affected, 1 warning (0.01 sec) mysql> select * from consumer; +------+------------------+------+--------+---------+ | id | name | sex | level | hobbies | +------+------------------+------+--------+---------+ | 1 | ya | | level1 | run | +------+------------------+------+--------+---------+ 1 row in set (0.00 sec) mysql>