跳至主要內容

MySQL基础(四)

Yaien Blog原创大约 2 分钟DBMySQL基础

MySQL基础(四)

MySQL基础笔记系列

数学相关

  1. 向下取整 floor(num)
select floor(3.85);
  1. 四舍五入 round(num)
select round(3.8);
  1. 四舍五入 round(num,m) m代表小数位数
select round(23.879,2);
  1. 非四舍五入 truncate(num,m) m代表小数位数
select truncate(23.879,2);
  1. 随机数 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 ....;

子查询可以写的位置

  1. 写在where或having后面 当做查询条件的值
  2. 写在创建表的时候
create table emp_10 as (select * from emp where deptno=10);
  1. 写在from后面 当成一张虚拟表 必须有别名
select ename from (select * from emp where deptno=10) newtable;

关联查询

  • 同时查询多张表的查询方式称为关联查询

关联查询必须写关联关系,如果不写会得到两张表的乘积,这个乘积称为笛卡尔积,工作中千万不要出现这种情况,这是一个错误的查询结果集

  1. 等值连接
select * from A,B where A.x=B.x and A.age>20;
  1. 内连接
select * from A join B on A.x=B.x where A.age>20;
  1. 外连接
select * from A left/right join B on A.x=B.x where A.age=20 
  1. 多表连接
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...;

总结:如果查询的数据是两张表的交集数据使用内连接,如果查询的数据是一张表的全部和另外一张表的交集使用外连接。

上次编辑于:
贡献者: yanggl