oracle查询连接
来源:互联网 发布:淘宝食品流通许可证办理 编辑:程序博客网 时间:2024/05/18 01:14
SELECT * FROM EMP;
SELECT * FROM DEPT;
--左连接
--1、查询与左边表DEPT(4)相关联的数据,如DEPTNO=40在右边没有对应的数据,则显示为空
SELECT * FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO;
--查询与左边表相关联的数据,并统计DEPT表每个DNAME的记录条数,由1可知,DNAME='OPERATIONS'的条数为0
SELECT DNAME,COUNT(ENAME) FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO GROUP BY DNAME;
--2、查询与左边表emp表相关的数据,因为emp表中的DEPTNO中没有等于40的号,所以DEPT表中DEPTNO=40的数据不会显示
SELECT * FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO;
--查询与左边表相关的数据,由2可知,只会显示DEPT.DEPTNO=EMP.DEPTNO的数据
SELECT DNAME,COUNT(ENAME) FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO GROUP BY DNAME;
--右连接
SELECT * FROM DEPT RIGHT JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT DNAME,COUNT(ENAME) FROM DEPT RIGHT JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO GROUP BY DNAME;
--完全外连接
SELECT DNAME,COUNT(ENAME) FROM DEPT FULL JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO GROUP BY DNAME;
--内连接
SELECT * FROM DEPT INNER JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO;
--等价于
SELECT * FROM SCOTT.DEPT,SCOTT.EMP WHERE DEPT.DEPTNO=EMP.DEPTNO;
--自连接
SELECT M.ENAME FROM SCOTT.EMP M,SCOTT.EMP W WHERE M.EMPNO=W.MGR GROUP BY M.ENAME;
SELECT M.ENAME FROM SCOTT.EMP M,SCOTT.EMP W WHERE M.EMPNO=W.MGR AND W.ENAME='BLAKE';
SELECT * FROM SCOTT.EMP;
--创建表myemp
CREATE TABLE MYEMP
(
EMPNO NUMBER(4) NOT NULL,
EMPNAME VARCHAR2(20),
MGR NUMBER(4)
)
---important@……@
--从emp表中查询数据并添加到myemp中-----(注意:rownum表示记录的行数,例如:rownum<6表示获取前6行记录)
INSERT INTO MYEMP SELECT EMPNO,ENAME,MGR FROM EMP WHERE ROWNUM<6;
SELECT * FROM MYEMP;
--使用集合操作符
--创建表emps
CREATE TABLE EMPS
(
EMPNO NUMBER(4),
ENAME VARCHAR2(20),
JOB VARCHAR2(20),
MGR NUMBER(4),
HIRDATE DATE ,
SAL NUMBER(10,2),
COMM NUMBER(10,2),
DEPTNO NUMBER(4)
)
--从emp中查询数据并添加到表emp
INSERT INTO EMPS SELECT * FROM EMP WHERE ROWNUM<6;
SELECT * FROM EMPS;
--1、UNION----返回检索到的所有不重复的行
SELECT * FROM EMP
UNION
SELECT * FROM EMPS
--2、UNION ALL---查询检索的所有行,包括重复行
SELECT * FROM EMP
UNION ALL
SELECT * FROM EMPS;
--3、INTERSECT---返回两个查询都检索到的行,(即两张表的交集)
SELECT * FROM EMP
INTERSECT
SELECT * FROM EMPS;
--4、MINUS---返回第一个查询检索到的行减去第二个查询检索到的行所剩余的行
SELECT * FROM EMP
MINUS
SELECT * FROM EMPS;
SELECT * FROM DEPT;
--左连接
--1、查询与左边表DEPT(4)相关联的数据,如DEPTNO=40在右边没有对应的数据,则显示为空
SELECT * FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO;
--查询与左边表相关联的数据,并统计DEPT表每个DNAME的记录条数,由1可知,DNAME='OPERATIONS'的条数为0
SELECT DNAME,COUNT(ENAME) FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO GROUP BY DNAME;
--2、查询与左边表emp表相关的数据,因为emp表中的DEPTNO中没有等于40的号,所以DEPT表中DEPTNO=40的数据不会显示
SELECT * FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO;
--查询与左边表相关的数据,由2可知,只会显示DEPT.DEPTNO=EMP.DEPTNO的数据
SELECT DNAME,COUNT(ENAME) FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO GROUP BY DNAME;
--右连接
SELECT * FROM DEPT RIGHT JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT DNAME,COUNT(ENAME) FROM DEPT RIGHT JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO GROUP BY DNAME;
--完全外连接
SELECT DNAME,COUNT(ENAME) FROM DEPT FULL JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO GROUP BY DNAME;
--内连接
SELECT * FROM DEPT INNER JOIN EMP ON EMP.DEPTNO=DEPT.DEPTNO;
--等价于
SELECT * FROM SCOTT.DEPT,SCOTT.EMP WHERE DEPT.DEPTNO=EMP.DEPTNO;
--自连接
SELECT M.ENAME FROM SCOTT.EMP M,SCOTT.EMP W WHERE M.EMPNO=W.MGR GROUP BY M.ENAME;
SELECT M.ENAME FROM SCOTT.EMP M,SCOTT.EMP W WHERE M.EMPNO=W.MGR AND W.ENAME='BLAKE';
SELECT * FROM SCOTT.EMP;
--创建表myemp
CREATE TABLE MYEMP
(
EMPNO NUMBER(4) NOT NULL,
EMPNAME VARCHAR2(20),
MGR NUMBER(4)
)
---important@……@
--从emp表中查询数据并添加到myemp中-----(注意:rownum表示记录的行数,例如:rownum<6表示获取前6行记录)
INSERT INTO MYEMP SELECT EMPNO,ENAME,MGR FROM EMP WHERE ROWNUM<6;
SELECT * FROM MYEMP;
--使用集合操作符
--创建表emps
CREATE TABLE EMPS
(
EMPNO NUMBER(4),
ENAME VARCHAR2(20),
JOB VARCHAR2(20),
MGR NUMBER(4),
HIRDATE DATE ,
SAL NUMBER(10,2),
COMM NUMBER(10,2),
DEPTNO NUMBER(4)
)
--从emp中查询数据并添加到表emp
INSERT INTO EMPS SELECT * FROM EMP WHERE ROWNUM<6;
SELECT * FROM EMPS;
--1、UNION----返回检索到的所有不重复的行
SELECT * FROM EMP
UNION
SELECT * FROM EMPS
--2、UNION ALL---查询检索的所有行,包括重复行
SELECT * FROM EMP
UNION ALL
SELECT * FROM EMPS;
--3、INTERSECT---返回两个查询都检索到的行,(即两张表的交集)
SELECT * FROM EMP
INTERSECT
SELECT * FROM EMPS;
--4、MINUS---返回第一个查询检索到的行减去第二个查询检索到的行所剩余的行
SELECT * FROM EMP
MINUS
SELECT * FROM EMPS;
- oracle外连接查询
- oracle 连接查询
- oracle外连接查询
- Oracle中的连接查询
- 连接查询-Oracle
- oracle连接查询详解
- oracle查询连接
- oracle sql连接查询
- Oracle的连接查询
- oracle连接查询
- 查询Oracle 连接数
- oracle 连接查询
- Oracle的连接查询
- oracle连接查询
- Oracle连接查询详解
- oracle 连接查询
- Oracle连接查询
- oracle连接查询
- java 任意花朵数算法
- 黑马程序员之C#学习笔记:使用Stream.BeginRead方法读取FileStream的流内容
- grails Erro type :loadXML 错误
- ret,retf,iret等的区别
- ResourceHandle ResourceLoader和Client
- oracle查询连接
- VS2012 无法 Intellisense
- 字符和字符串
- C++ MFC ASCII码 字符 和十进制 或 十六进制字符串 互相转化
- HEVC学习(五) —— 帧内预测系列之三
- 11-14晚 javascript dom控制初步学习笔记
- smarty变量调节器2
- oracle事务及存储过程实例
- 事件驱动(案例)