pgsql数据库中的多表查询
时间: 2025-02-01 18:45:38 浏览: 44
### PostgreSQL多表连接查询
在PostgreSQL中,执行多表查询是一项常见的操作。通过使用SQL中的`JOIN`语句可以有效地组合来自多个表的数据。
#### 使用INNER JOIN进行两表关联
当两个表之间存在外键关系时,可以通过`INNER JOIN`来获取匹配记录:
```sql
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
```
此查询会返回订单表(`orders`)和客户表(`customers`)之间的交集数据,即只有那些在两张表都有对应记录的结果才会被显示出来[^1]。
#### LEFT OUTER JOIN保留左表全部记录
如果希望即使右侧表没有对应的记录也能够显示出左侧表的信息,则应采用`LEFT OUTER JOIN`:
```sql
SELECT departments.department_name, employees.employee_name
FROM departments
LEFT OUTER JOIN employees ON departments.dept_id = employees.dept_id;
```
这段代码将展示部门表(`departments`)里的所有条目以及它们所关联的员工姓名;对于没有任何雇员分配给它的部门也会一并列出其名称。
#### RIGHT OUTER JOIN保持右表完整性
相反地,为了确保右边表格内的每一项都能呈现(即便左边缺少配对),则需运用`RIGHT OUTER JOIN`:
```sql
SELECT products.product_code, suppliers.supplier_name
FROM products
RIGHT OUTER JOIN suppliers ON products.supplier_id = suppliers.supplier_id;
```
这里的产品供应商列表会被完全展现,而不管是否有产品与其相联系。
#### FULL OUTER JOIN实现双向无遗漏联结
最后一种方式是利用`FULL OUTER JOIN`完成两侧均不丢失任何信息的目标:
```sql
SELECT students.student_id, courses.course_title
FROM students
FULL OUTER JOIN enrollments ON students.student_id = enrollments.student_id
FULL OUTER JOIN courses ON enrollments.course_id = courses.course_id;
```
上述例子展示了学生选课情况下的三张表联合检索——无论某位同学是否报名课程或是某些科目下尚无人修读都不会影响最终结果集中这些实体的存在形式。
阅读全文
相关推荐

















