接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中使用左连接的实战操作,希望本文对您有所帮助。