MySQL基础(四)
原创大约 2 分钟
MySQL基础(四)
MySQL基础笔记系列
数学相关
- 向下取整 floor(num)
select floor(3.85);
- 四舍五入 round(num)
select round(3.8);
- 四舍五入 round(num,m) m代表小数位数
select round(23.879,2);
- 非四舍五入 truncate(num,m) m代表小数位数
select truncate(23.879,2);
- 随机数 rand()
# 获取3-5 的随机整数
select floor(rand()*4);
分组查询 group by
# 格式: group by 自动名;
select .... from 表名 where .... group by .... order by ....limit...;
having
- where 后面写普通字段的条件
- having后面写聚合函数的条件,having需要结合group by使用
各个关键字的顺序:
select .... from 表名 where ..... group by .... having ..... order by .... limit ....;
子查询可以写的位置
- 写在where或having后面 当做查询条件的值
- 写在创建表的时候
create table emp_10 as (select * from emp where deptno=10);
- 写在from后面 当成一张虚拟表 必须有别名
select ename from (select * from emp where deptno=10) newtable;
关联查询
- 同时查询多张表的查询方式称为关联查询
关联查询必须写关联关系,如果不写会得到两张表的乘积,这个乘积称为笛卡尔积,工作中千万不要出现这种情况,这是一个错误的查询结果集
- 等值连接
select * from A,B where A.x=B.x and A.age>20;
- 内连接
select * from A join B on A.x=B.x where A.age>20;
- 外连接
select * from A left/right join B on A.x=B.x where A.age=20
- 多表连接
select 条件 from emp e join emp m on e.mgr=m.empno join dept d on e.deptno=d.deptno join xxx on xxx join xxx on xxx...;
总结:如果查询的数据是两张表的交集数据使用内连接,如果查询的数据是一张表的全部和另外一张表的交集使用外连接。