mysql 数据库使用数据类型有
数值类型
整数类型
tinyint 占用 1 个字节的微小整数 默认是有符号的整数 取值范围是 - 128-127 如果需要设置成无符号微小整数需要在类型后面加上 unsigned 关键字 无符号的取值范围是 0-255
smallint 占用 2 个字节的小整数 默认是有符号的整数 取值范围是 - 32768-32767 如果需要设置成无符号小整数需要在类型后面加上 unsigned 关键字 无符号的取值范围是 0-65535
mediumint 占用 3 个字节的中整数 默认是有符号的整数 取值范围是 - 2 的 23 次方到 2 的 23 次方 - 1 如果需要设置成无符号中整数需要在类型后面加上 unsigned 关键字 无符号的取值范围是 0-2 的 24 次方 - 1
int 占用 4 个字节的大整数 默认是有符号的整数 取值范围是 - 2 的 31 次方到 2 的 31 次方 - 1 如果需要设置成无符号的大整数需要在类型后面加上 unsigned 无符号的取值范围是 0-2 的 32 次方 - 1
bigint 占用 8 个字节的极大整数 默认是有符号的整数 取值范围是 - 2 的 63 次方到 2 的 63 次方 - 1 如果需要设置成无符号的大整数需要在类型后面加上 unsigned 无符号的取值范围是 0-2 的 64 次方 - 1
整数类型的可以指定显示宽度, 不影响类型存储范围, int(5) 表示显示宽度为 5 当不足 5 位时用空格在左边补充 , 如果需要用 0 补充, 需要加 zerofill 关键字
- mysql> create table _123.t2(age tinyint(3) zerofill) ;
- mysql> insert into _123.t2 values(12);
- mysql> select * from _123.t2;
- +------+
- | age |
- +------+
- | 012 |
- +------+
- 1 row in set (0.00 sec)
浮点数类型
float 占用 4 个字节的单精度浮点数 定义方式为 float(m,n) m 为总位数长度, n 位小数位数长度 float 是非标准类型, 在数据库中保存的是近似值
double 占用 8 个字节的双精度浮点数 double(m,n)m 为总位数长度, n 位小数位数长度 double 是非标准类型, 在数据库中保存的是近似值
decimal 定点数
** 浮点数如果不写经度和标度, 会按照实际精度值保存, 如果有精度和标度, 则会自动将四舍五入后的结果插入, 系统不会报错; 定点数如果不写精度和标度, 则按照默认值 decimal(10,0) 来操作, 如果数据超过了精度和标度值, 系统会报错
字符类型 **
char 定长的字符类型最长为 255 个字符, 字符数不够定义的长度时会在右边用空格补充占位
varchar 不定长的字符类型最长 65535 个字符 , 根据字符数的长度来开辟存储空间, 由于在存储之前需要计算存储空间所以存储速度会比 char 慢, 在实际应用中应该避免大量使用 varchar 类型
text/blob 在字符数大于 65535 时使用, 可以存储视频音频图片等文件但是不建议使用数据库存储这些数据, 一般使用存储文件的路径链接到物理存储空间
时间日期类型
year 年 默认赋值格式 YYYY 四位数的年份 1 个字节
date 日期 默认赋值格式是 YYYYMMDD 四位年份两位月份两位日期 4 个字节
time 时间 默认赋值格式是 hhmmss 两位小时两位分钟两位秒 3 个字节
datetime 日期时间 默认赋值格式 YYYMMDD hhmmss 8 个字节 取值范围是 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59.99 如果不给该类型的字段赋值, 则用空代替
timestamp 日期时间 默认赋值格式 YYYMMDD hhmmss 4 个字节 取值范围是 1970-01-01 00:00:00 ~ 2038-1-19 03:14:07.99 如果不给该类型的字段赋值, 则用当前系统时间赋值
insert into _123.t4 values("tt",1990,083000,19900921,20180228193000);
如果是使用带格式的时间赋值需要以字符串的方式插入 (用引号引起来)
- insert into _123.t4 values("tt",1990,"08:30:00","1990-09-21","2018-02-28 19:30:00");`
- Query OK, 1 row affected (0.02 sec
- ```)
- # 几个关于时间的函数
获取当前系统日期时间函数 now() sysdate()
now() 在调用开始时就得到了时间 sysdate() 得到的是执行时的时间
获取日期函数 date() 需要传入一个日期时间参数 date(20180909121212) 得到的是 2018-09-09
如需要获取当前的日期 date(now()) 或 curdate()
获取时间函数 time() 需要传入一个日期时间参数 time(20180909121212) 得到的是 12:12:12
如需要获取当前系统的时间 time(now()) 或 curtime()
获取年的函数 year() 需要传入一个日期时间参数
获取月的函数 month() 需要传入一个日期时间参数
获取日的函数 day() 需要传入一个日期时间参数
获取小时的函数 hour() 需要传入一个日期时间参数
获取分钟的函数 minute() 需要传入一个日期时间参数
获取秒的函数 second() 需要传入一个日期时间参数
- -----
- # 枚举类型
- -----
枚举类型的值就是在指定的值列表中选择
set 多选类型 set(值列表)
creat table db1.t1(sex enum("boy","girl"))
插入的值的时候 sex 字段只能是 boy 或者 girl 中的一个
enum 单选类型 enum(值列表)
creat table db1.t2(love set("film","girl","game"))
插入的值的时候 love 字段只能是 film 或者 girl 或者 "game" 中的一个或者多个
- mysql>create table _123.t5(name char(32),sex enum("boy","girl"),love set("film","music","girl"));
- mysql>insert into _123.t5 values("bob",1,"film,girl");
- mysql> select * from _123.t5;
- +------+------+-----------+
- | name | sex | love |
- +------+------+-----------+
- | bob | boy | film,girl |
- +------+------+-----------+
来源: http://www.bubuko.com/infodetail-2503836.html