Oracle 数据库三张表左连接查询实例(oracle三张表左连接)

Oracle数据库三张表左连接查询实例

在Oracle数据库中,我们经常需要处理多个表之间的数据关联查询。在实际开发中,使用左连接查询语句可以很方便地完成多表查询操作。本文将介绍如何在Oracle数据库中使用左连接查询语句,以三张表为例进行详细说明。

三张表的模拟

我们模拟了三张表,包括部门表、员工表和订单表。这三张表与关联关系如下:

1. 部门表(dept_table):存储部门ID、部门名称、部门负责人等信息。

2. 员工表(emp_table):存储员工ID、员工姓名、所属部门ID、职位等信息。

3. 订单表(order_table):存储订单ID、订单金额、下单时间、订单状态等信息。

表结构定义和初始化数据如下:

–创建部门表

CREATE TABLE dept_table (

dept_id NUMBER(10) PRIMARY KEY,

dept_name VARCHAR2(50),

manager VARCHAR2(50)

);

–插入数据

INSERT INTO dept_table VALUES (1, ‘市场部’, ‘张经理’);

INSERT INTO dept_table VALUES (2, ‘研发部’, ‘李经理’);

INSERT INTO dept_table VALUES (3, ‘销售部’, ‘王经理’);

–创建员工表

CREATE TABLE emp_table (

emp_id NUMBER(10) PRIMARY KEY,

emp_name VARCHAR2(50),

dept_id NUMBER(10),

position VARCHAR2(50)

);

–插入数据

INSERT INTO emp_table VALUES (101, ‘张三’, 1, ‘市场专员’);

INSERT INTO emp_table VALUES (102, ‘李四’, 2, ‘软件工程师’);

INSERT INTO emp_table VALUES (103, ‘王五’, 3, ‘销售代表’);

–创建订单表

CREATE TABLE order_table (

order_id NUMBER(10) PRIMARY KEY,

amount NUMBER(10),

order_time DATE,

status VARCHAR2(50),

emp_id NUMBER(10)

);

–插入数据

INSERT INTO order_table VALUES (10001, 500, TO_DATE(‘2022-01-01’, ‘YYYY-MM-DD’), ‘已付款’, 101);

INSERT INTO order_table VALUES (10002, 300, TO_DATE(‘2022-01-02’, ‘YYYY-MM-DD’), ‘未付款’, 102);

INSERT INTO order_table VALUES (10003, 800, TO_DATE(‘2022-01-03’, ‘YYYY-MM-DD’), ‘已付款’, 103);

左连接查询语句

左连接查询是一种关联查询语句,它返回左表中的所有记录和右表中匹配的记录,如果右表中没有对应的记录,则用NULL填充。左连接查询语句的语法如下:

SELECT [列1], [列2], … [列n]

FROM [表1]

LEFT JOIN [表2] ON [表1].[列1] = [表2].[列1]

LEFT JOIN [表3] ON [表1].[列2] = [表3].[列2]

WHERE [条件];

其中,[表1]、[表2]、[表3] 表示需要关联的三张表,[列1]、[列2] 表示需要查询的列名,[条件] 表示查询条件。

三表左连接查询实例

现在,我们想查询员工及其所在部门、订单状态等信息。可以使用如下左连接查询语句:

SELECT emp_table.emp_id, emp_table.emp_name, dept_table.dept_name, dept_table.manager, order_table.status

FROM emp_table

LEFT JOIN dept_table ON emp_table.dept_id = dept_table.dept_id

LEFT JOIN order_table ON emp_table.emp_id = order_table.emp_id;

执行完以上语句可以得到以下结果:

emp_id | emp_name | dept_name | manager | status

101 | 张三 | 市场部 | 张经理 | 已付款

102 | 李四 | 研发部 | 李经理 | 未付款

103 | 王五 | 销售部 | 王经理 | 已付款

以上结果展示了员工ID、员工姓名、所在部门名称、上级经理姓名以及订单状态等信息。

在以上示例中,我们先以员工表作为基础表,然后通过左连接分别查询部门表和订单表,并关联到员工表上,最终获取我们需要的查询结果。

总结

本文中,我们通过一个例子详细介绍了在Oracle数据库中使用左连接查询语句的方法。在实际开发过程中,三张表及以上的关联查询是非常普遍的需求,掌握了左连接查询语句的应用,可以让我们更加方便地处理复杂的数据关联查询。


数据运维技术 » Oracle 数据库三张表左连接查询实例(oracle三张表左连接)