# 连接查询
连接查询也可称为跨表查询，需要关联多个表进行查询。
```
-- 建表并插入数据。
gaussdb=# CREATE TABLE emp(
    id int,         -- 员工编号。
    name varchar,   -- 员工姓名。
    deptno int      -- 所属部门编号。
);
gaussdb=# CREATE TABLE dept(
    deptno int,     -- 所属部门编号。
    depname varchar -- 部门名称。
);
gaussdb=# INSERT INTO emp VALUES (1, 'Joe', 10), (2, 'Scott', 20), (3, 'Ben', 999);   -- Ben还没有确认是哪一个部门所以部门编号是999。
gaussdb=# INSERT INTO dept VALUES (10, 'hr'), (20, 'it'), (30, 'sal');                -- sal部门没有员工。
```
- 内连接（INNER JOIN）
  ```
  gaussdb=# SELECT t1.id,t1.name,t2.depname FROM emp t1 JOIN dept t2 ON t1.deptno = t2.deptno;
   id | name  | depname 
  ----+-------+---------
    1 | Joe   | hr
    2 | Scott | it
  (2 rows)
  ```
  
- 左连接（LEFT JOIN）
  ```
  gaussdb=# SELECT t1.id,t1.name,t2.depname FROM emp t1 LEFT JOIN dept t2 ON t1.deptno = t2.deptno;
   id | name  | depname 
  ----+-------+---------
    1 | Joe   | hr
    2 | Scott | it
    3 | Ben   | 
  (3 rows)
  ```
  
- 右连接（RIGHT JOIN）
  ```
  gaussdb=# SELECT t1.id,t1.name,t2.depname FROM emp t1 RIGHT JOIN dept t2 ON t1.deptno = t2.deptno;
   id | name  | depname 
  ----+-------+---------
    1 | Joe   | hr
    2 | Scott | it
      |       | sal
  (3 rows)
  ```
  
- 全连接（FULL JOIN）
  ```
  gaussdb=# SELECT t1.id,t1.name,t2.depname FROM emp t1 FULL JOIN dept t2 ON t1.deptno = t2.deptno;
   id | name  | depname 
  ----+-------+---------
    1 | Joe   | hr
    2 | Scott | it
      |       | sal
    3 | Ben   | 
  (4 rows)
  -- 删除表。
  gaussdb=# DROP TABLE emp,dept;
  ```
  
- 多表连接
  ```
  gaussdb=# CREATE TABLE t1(a int, b int, c int);
  gaussdb=# CREATE TABLE t2(a int, b int, c int);
  gaussdb=# CREATE TABLE t3(a int, b int, c int);
  gaussdb=# INSERT INTO t1 VALUES(1,generate_series(1,10),generate_series(1,20));
  gaussdb=# INSERT INTO t2 VALUES(generate_series(1,5),generate_series(1,10),generate_series(1,20));
  gaussdb=# INSERT INTO t3 VALUES(generate_series(6,10),generate_series(1,20),generate_series(1,10));
  gaussdb=# SELECT * FROM t1 LEFT JOIN t2 ON t1.a =t2.a INNER JOIN t3 ON t1.b = t3.b AND t2.c = t3.c;
   a | b | c  | a | b | c | a | b | c
  ---+---+----+---+---+---+---+---+---
   1 | 1 |  1 | 1 | 1 | 1 | 6 | 1 | 1
   1 | 6 |  6 | 1 | 6 | 6 | 6 | 6 | 6
   1 | 1 | 11 | 1 | 1 | 1 | 6 | 1 | 1
   1 | 6 | 16 | 1 | 6 | 6 | 6 | 6 | 6
  (4 rows)
  gaussdb=# DROP TABLE t1,t2,t3;
  ```
  
 
