三、MySQL数据类型
字符类型
-
定长char
定长:char(字符个数) - 不指定宽度默认为1 - 最大字符数255 - 不够指定字符个数时在右边用空格补全 - 字符个数超出时,无法写入数据库 -
变长varchar
变长:varchar(字符个数) - 使用时必须指定宽度 - 最大存储65532(utf8编码最大支持21843) - 按数据实际大小分配存储空间 - 字符个数超出时,无法写入数据 大文本类型:text/blob - 字符串大于65535存储时使用 - 在实际使用中,很少使用大文本类型 -
整型
类型 名称 有符号范围 无符号范围 tinyint 微小整型 -128 ~ 1270 ~ 255smallint 小整型 -32768 ~ 327670 ~ 65535mediumint 中整型 -2**23 ~ 2**23-10 ~ 2**24-1int 大整型 -2**31 ~ 2**31-10 ~ 2**32-1bigint 极大整型 -2**63 ~ 2**63-10 ~ 2**64-1unsigned 使用无符号存储范围 create table info1( age tinyint ); create table info1( age tinyint unsigned ); create table info2( age int unsigned ); -
浮点型
create table info3( mon float(7,2) ); # 总长度7,负数占两位(正数5位) 存整型时,自动补两位小数位类型 名称 有符号范围 无符号范围 float 单精度 0 ~ 2**32-1double 双精度 0 ~ 2**64-1
时间类型
-
日期时间datetime
- 范围: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 - 格式: yyyymmddhhmmss(YYYY-MM-DD HH:MM:SS) -
日期时间timestamp
- 范围: 1970-01-01 00:00:00 ~ 2038-01-19 00:00:00 - 格式: yyyymmddhhmmss -
日期 date
- 范围: 0001-01-01 ~ 9999-12-31 - 格式: yyyymmdd(YYYY-MM-DD) -
年 year
- 范围: 1901 ~ 2155 - 格式: yyyy year类型 - 要求使用4位数赋值 - 当使用2位数赋值时 - 01~69视为 2001~2069 - 70~99视为 1970~1999 -
时间time
- 格式: hhmmss(HH:MM:SS)mysql> create table info5(name char(10), 年 year, 日期 date, 时间 time, 日期时间 datetime); mysql> insert into info5 values("tom",2014,070621,111111,19920213091214); mysql> insert into info5 values("tom", '2014', '07-06-21', '11:11:24', '1992-02-13 09:12:14'); -
关于时间与日期时间段
- 当未给timestamp字段赋值是,自动以当前系统时间赋值,而datetime值为空 mysql> create table info6(meetting datetime,party timestamp); mysql> insert into info6 values(now(),now()); mysql> insert into info6(meetting) values(now()); mysql> insert into info6(party) values(now()); mysql> select * from info6; +---------------------+---------------------+ | meetting | party | +---------------------+---------------------+ | 2021-11-04 23:13:54 | 2021-11-04 23:13:54 | | 2021-11-04 23:14:08 | 2021-11-04 23:14:08 | | NULL | 2021-11-04 23:14:22 | +---------------------+---------------------+ -
时间函数
MYSQL服务的内置命令,可以使用时间函数给字段赋值 curtime() # 获取当前的系统时间 curdate() # 获取当前的系统日期 now() # 获取当前的系统日期和时间 year() # 获取年 month() # 获取月 day() # 获取日 date() # 获取日期 time() # 获取时间mysql> insert into info5 values("tom",2014,curdate(),curtime(),now()); mysql> insert into info5 values("tom",now(),now(),now(),now()); # 只存存储与自己类型匹配的mysql> select curdate(); mysql> select curtime(); mysql> select now(); mysql> select year(now()); mysql> select month(now()); mysql> select day(now()); mysql> select date(now()); # 和curdate相同 mysql> select time(now()); # 和curtime相同 mysql> select day(curdate()); mysql> select day(20180213);
枚举类型
枚举类型(字段值,只能在列举的范围里选择)
-
enum 单选
- 格式:字段名 enum(值1, 值2, 值n) - 仅能选择一个值 - 字段值必须在列表里选择mysql> create table info7(name char(5), sex enum('boy', 'girl', 'no')); mysql> insert into info7 values('qiqi', 'boy'); mysql> insert into info7 values('qiqi', 'buzh'); # 不在选择列表中,不能插入 ERROR 1265 (01000): Data truncated for column 'sex' at row 1 -
set 多选
- 格式: 字段名 set(值1, 值2, 值N) - 选择一个或多个值 - 字段值必须在列表里选择mysql> create table info8(name char(5), likes set('eat','game','money','std')); mysql> insert into info8 values("heh","eat,game");

浙公网安备 33010602011771号