数据类型
整数类型
- TINYINT相当于java数据类型中的byte,SMALLINT相当于short,BIGINT相当于long
- 整数类型可以设置 自增约束条件 auto_increment
- 创建字段定义整数类型时 int(m),m仅限制显示长度,并不能限制其本身的存储大小
浮点数类型和定点数类型
- 浮点数和定点数定义方式都可以用(m,n),m表示总位数,n表示小数位数
- DECIMAL是以字符串形式存储的,精确度要求高时推荐使用
文本字符串类型
- CHAR(M)定义时指定长度,当保存数据时,右侧填充空格补足长度,但插入数据中尾部的空格会自动删除
- VARCHAR实际占用空间为实际长度+1,不会删除插入数据尾部的空格
- CHAR浪费存储空间,但处理速度快
- MyISAM引擎推荐使用CHAR,InnoDB推荐使用VARCHAR
在检索效率上来讲,char > varchar,因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar.例如存储用户MD5加密后的密码,则应该使用char.
二进制字符串类型
- BLOB存储的二进制字符串,没有字符集,排序和比较基于列值字节的数值
- TEXT存储的非二进制字符串,有字符集,排序和比较基于字符集
日期、时间类型
- DATETIME存储的是输入的时间
- TIMESTAMP存储的是时间戳,可以理解为最后一次修改时间
常见运算
算术运算
select 2+3 from dual; -- +-*/%同理
比较运算
select null=null,null<=>null from dual;
- 结果是null和1,null参与算术运算结果为null,如果用安全的等于<=>可以比较null
逻辑运算
- 逻辑运算的结果为1或0
- 包括and,or,not,xor,&&,||,!
位运算
数学函数
-- 绝对值
select abs(-4);
-- 圆周率
select pi();
-- 非负数的二次平方根
select sqrt(4);
-- 取余
select mod(5,3);
-- 向上取整
select ceil(3.2);
select ceiling(3.2);
-- 向下取整
select floor(3.6);
-- 随机数0-1
select rand();
-- 若干个相同的随机数
select rand(1),rand(1),rand(