1)int 大整型(占4个字节的存储空间)
0 ~ 2**32-1(约为42亿)
2)tinyint 微小整型(占1个字节的存储空间)
0~255
3)bigint 极大整型(占8个字节的存储空间)
e.g.
create table stu (id int,name char(15),age tinyint unsigned,phone bigint);
备注:1字节 = 8位,可以表示2*8 = 256种状态,表示无符号的整形数字范围为0-255;表示有符号整形范围为-128-127;
1)float(占4个字节,最多显示7个有效位) ---->常用于成绩
...字段名 float(总位数, 小数位) ...
float(5,2)取值范围:-999.99~+999.99
2)decimal(最多可以显示28个有效位)
...字段名 decimal(总位数, 小数位) ...
存储空间计算:
1.整数部分和小数部分分开存储
2.原则:将9的倍数包装成4个字节,余数占用的字节数如下:
余数 | 字节 |
1-2 | 1个字节 |
3-4 | 2个字节 |
5-6 | 3个字节 |
7-8 | 4个字节 |
3.例如:decimal(19,9)
整数部分:10/9=1 ... 1 ----->4字节 + 1字节 = 5字节
小数部分:9/9=1 ... 0 ----->4字节 + 0字节 = 4字节
备注:float的最大缺陷最多显示7个有效位,因此使用较少;而decimal则是使用最为频繁的数据类型,效率非常高,且存储的范围非常大。
当列中存储的字符串达不到最大长度时,使用空格进行补足
char(必须说明'宽度值')
varchar(必须说明'宽度值')
char:浪费存储空间,但性能高
varchar:节约存储空间,但存储性能低
备注:数值类型宽度为显示宽度,和占用存储空间大小无关;字符类型的宽度,超过则无法存储;
ysql> create table tab3(number int(3) zerofill); #int(3)为显示宽度,int占用4个存储字节,表示0~2*32-1
ysql> insert into tab3 value(1),(2),(03);
ysql> select * from tab3;
001 |
002 |
003 |
ysql> insert into tab3 value(12345678);
ysql> select * from tab3;
001 |
002 |
003 |
12345678 |
字段名 enum(val1,val2,...) 多选
字段名 set(val1,val2,...) 单选
备注:字段值只能在列举的范围内选择
date | 日期"YYYY-MM-DD" |
time | 时间"HH:MM:SS" |
datetime | 日期时间"YYYY-MM-DD HH-MM-SS" |
timestamp | 日期时间"YYYY-MM-DD HH-MM-SS" |
备注:datetime : 不给值默认返回Null;timestamp(时间戳) :不给值默认返回当前时间。
日期时间函数 | 返回值 | 命令行查看 |
NOW() | 返回服务器当前的时间 | select now(); |
CURDATE() | 返回当前日期 | select curtime(); |
CURTIME() | 返回当前时间 | select curdate(); |
备注1:在命令行查询函数返回的结果 :select 函数(); 如:select database(); 查询当前所在数据库
备注2:insert into tab1 values(...,CURDATE(),CURTIME(),NOW());
select ... from 表名where 字段名 运算符 (时间 - interval 时间间隔单位);
说明:
时间间隔需要使用 interval 关键字声明;时间间隔单位可以是1 day | 2 hour | 1 minute | 1 year | 3 month
示例:
where meeting > (now() - interval 1 day) #现在的时间 - 1天的时间 = 一天前的时间
1)查询1天以内的记录:
select * from 表名 where 字段名 > (now() - interval 1 day)
2)查询2年前至今年的记录:
select * from tb2 where time1>(now() - interval 2 year) and time1<(now() + interval 1 year);