Home  >  Article  >  Database  >  There are several ways to query multiple tables

There are several ways to query multiple tables

coldplay.xixi
coldplay.xixiOriginal
2020-06-29 11:23:4612197browse

There are three methods for multi-table query, which are: 1. Traditional method, including left outer join query, right outer join query, and complete outer link query; 2. Subquery method, including single row query and multi-row query. Query; 3. Aggregation query methods, including summation, average query, and total number of records.

There are several ways to query multiple tables

There are three methods for multi-table query, namely:

1. Traditional method

/*-- 传统连接方式 --*/
 
select e.ename,d.dname
 
from dept d , emp e
 
where d.deptno = e.deptno
 
 
 
/*--natural join 两张表中只有一个同名栏位时行连接 --*/
 
select e.ename,d.dname
 
from dept d 
 
 
natural join emp e
 
 
 
/*--using 两个表中有多个同名栏位时 --*/
 
select e.ename,d.dname
 
from dept d join emp e
 
using(deptno)

1. Left outer join query

/*--左外连结 左表的全部记录(部门表中的所有记录:demp)-- */
 
/*--方式1--*/
 
select e.ename,d.dname from dept d left outer join emp e
 
on d.deptno = e.deptno
 
/*--方式2--*/ 
 
 
select e.ename,d.dname
 
from dept d , emp e
 
where d.deptno = e.deptno(+)

2. Right outer join query

/*--左外连结 左表的全部记录(部门表中的所有记录:demp)-- */
 
/*--方式1--*/
 
select e.ename,d.dname from dept d left outer join emp e
 
on d.deptno = e.deptno
 
/*--方式2--*/ 
 
 
select e.ename,d.dname
 
from dept d , emp e
 
where d.deptno = e.deptno(+)

3. Complete outer link query

/*--完全外连结(匹配与不匹配)-- (包括部门表及员工表中的所有记录)*/
 
select e.ename,d.dname from dept d full outer join emp e
 
on d.deptno = e.deptno

2. Sub-query (single or multiple rows)

1. Single-row query

/*--子查询(单行,多行)--*/
 
select * from emp
 
where sal > (select avg(sal) from emp)
 
/*--单行子查询可以引用(=,>,>=,<,<=,<>)操作符 --*/
 
select * from emp e
 
where e.deptno=(select d.deptno from dept d where d.deptno=1 )

2. Multi-row query

/*--多行子查询可以引用(in,any,all)操作符--*/
 
select * from emp e
 
where e.deptno in(select d.deptno from dept d)
 
/*-- any 比较返回值中的任何一个,其中一个满足,则返回true --*/
 
select * from emp e
 
where e.sal < any(select sal from emp where deptno=2)
 
/*-- all 比较返回值中的所有,全部满足,则返回true --*/
 
select * from emp e
 
where e.sal < all(select sal from emp where deptno=2)

3. Aggregation query (sum, average, total number of records)

1. Sum, average query

/*--求和,平均 --*/
 
select sum(sal),avg(sal) from emp
 
select avg(nvl(sal,0)) from emp

2. Total number of records

/*--记录总数 --*/
 
select count(*) from emp
 
select count(memo) from emp /*--统计该栏非空记录 --*/
 
select count(distinct(sex)) from emp /*--去掉重复记录 --*/
 
/*-- group by --*/
 
select e.deptno,sum(e.sal)
 
from emp e
 
group by e.deptno
 
/*-- group by having --*/
 
select e.deptno,avg(e.sal)
 
from emp e
 
group by e.deptno
 
having avg(e.sal) > 4500

Related learning recommendations: mysql video tutorial

The above is the detailed content of There are several ways to query multiple tables. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn