接Oracle中使用左连接的实战操作(oracle中的左连)

接Oracle中使用左连接的实战操作

在Oracle数据库中,左连接是一种常用的连接方式。它可以将两个或多个表中的数据联结起来,同时还可以保留左表中的全部数据。本文将介绍在Oracle数据库中使用左连接的实战操作。

一、创建两个表

在本实战操作中,我们将创建两个表,一个是“部门表”,包含“部门编号”和“部门名称”两个字段;另一个是“员工表”,包含“员工编号”、“员工姓名”、“所属部门编号”和“入职时间”四个字段。

创建部门表的SQL语句如下:

CREATE TABLE dept (

deptno NUMBER(2) PRIMARY KEY,

dname VARCHAR2(14)

);

创建员工表的SQL语句如下:

CREATE TABLE emp (

empno NUMBER(4) PRIMARY KEY,

ename VARCHAR2(10),

deptno NUMBER(2),

hiredate DATE

);

二、插入数据

接下来,我们向两个表中插入一些测试数据,如下所示:

INSERT INTO dept VALUES (10, ‘ACCOUNTING’);

INSERT INTO dept VALUES (20, ‘RESEARCH’);

INSERT INTO dept VALUES (30, ‘SALES’);

INSERT INTO dept VALUES (40, ‘OPERATIONS’);

INSERT INTO emp VALUES (7369, ‘SMITH’, 20, TO_DATE(’17-DEC-1980′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7499, ‘ALLEN’, 30, TO_DATE(’20-FEB-1981′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7521, ‘WARD’, 30, TO_DATE(’22-FEB-1981′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7566, ‘JONES’, 20, TO_DATE(’02-APR-1981′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7654, ‘MARTIN’, 30, TO_DATE(’28-SEP-1981′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7698, ‘BLAKE’, 10, TO_DATE(’01-MAY-1981′, ‘DD-MON-YYYY’));

INSERT INTO emp VALUES (7782, ‘CLARK’, 10, TO_DATE(’09-JUN-1981′, ‘DD-MON-YYYY’));

三、使用左连接查询

接下来,我们将使用左连接查询部门名称和每个部门下的员工姓名。在Oracle数据库中,可以使用“LEFT JOIN”或“LEFT OUTER JOIN”关键字来实现左连接。

LEFT JOIN:

SELECT d.dname, e.ename

FROM dept d

LEFT JOIN emp e ON d.deptno = e.deptno;

LEFT OUTER JOIN:

SELECT d.dname, e.ename

FROM dept d

LEFT OUTER JOIN emp e ON d.deptno = e.deptno;

两个语句的执行结果相同。它们将返回四个部门的信息,其中“ACCOUNTING”部门没有员工,因此其第二列显示为NULL。

四、使用左连接汇总数据

接下来,我们将使用左连接对数据进行汇总。例如,我们可以计算每个部门的员工数量和平均入职时间。具体的SQL语句如下:

SELECT d.dname, COUNT(e.empno) AS emp_count, AVG(e.hiredate) AS avg_hiredate

FROM dept d

LEFT OUTER JOIN emp e ON d.deptno = e.deptno

GROUP BY d.dname;

执行该语句后,将返回每个部门的员工数量和平均入职时间。再次注意到,“ACCOUNTING”部门没有员工,因此其第二列为0,第三列为NULL。

以上就是在Oracle中使用左连接的实战操作,希望本文对您有所帮助。


数据运维技术 » 接Oracle中使用左连接的实战操作(oracle中的左连)