数据的增删改查:单表查询,多表查询,集合查询和子查询

时间:2023-01-15 00:48:09

单表查询

就是最普通的查询。

多表查询

自然连接

-- 显示员工的工作部门和地点
select e.empno, e.ename, e.job, e.sal, d.dname, d.loc from emp e, dept d where e.deptno = d.deptno;
-- 显示出每个员工的工资等级
select empno, ename, job, sal, grade from emp, salgrade where sal between losal and hisal;

左外连接

-- 左外连接,Orcale特有
select e.empno, e.ename, e.job, d.dname, d.loc
from emp e join dept d on e.deptno = d.deptno(+);
-- 左外连接,通用,右外连接同理
select e.empno, e.ename, e.job, d.dname, d.loc
from emp e left join dept d on e.deptno = d.deptno;

集合查询

集合查询就是将两个查询的查询结果进行交,并,差等操作。

  • UNION(并集):将两个查询结果不同的部分显示出来,相同的部分只显示一次。

  • UNION ALL(大并集):将两个查询结果全都显示出来,相同的部分会显示两次。不常用。

  • INTERSECT(交集):只显示两个查询结果的相同的部分。

  • MINUS(差集):只显示前一个查询结果中不同于后一个查询结果中的部分。与顺序有关。

子查询

子查询有SELECT子查询(可以返回一个数据),FROM子查询(返回的是一张表),WHERE子查询(可以返回一个,一列或一行数据),HAVING子查询(返回一个数据)。

  • SELECT子查询:1 + N查询,浪费时间,不常用。

  • FROM子查询:返回的是一张匿名表,可以起别名,与普通表使用相同。

  • WHERE子查询:使用得最多。>,<,>=,<=,=,!=都返回的是一个值。如果使用 > ANY,< ANY,> ALL,< ALL 返回的就是一列值。

  • HAVING子查询:与WHERE子查询基本相同,就是多了统计查询。