Oracle连接查询
2014-04-26 15:17
302 查看
1、NVL(comm,0)
NVL函数将NULL 变为指定的内容。
2、DECODE(col/expression,search1,result1,search2,result2,[…])
select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual;
3、 自然连接不显示含有NULL的值
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
等同于
SELECT * FROM dept NATURAL JOIN emp;
SELECT * FROM emp join dept using(deptno);
4、左连接(+)在右面,以左边的表为准,显示左边含有NULL的数据
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO(+)
ORDER BY ENAME;
等同于
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E LEFT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO ORDER BY ename;
5、右连接(+)在左面,以右边的表为准,显示右边含有NULL的数据
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO
ORDER BY ENAME;
等同于
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E RIGHT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
6、全连接
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E FULL OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
7、交叉连接
SELECT * FROM t1 CROSS JOIN t2;
8、查询员工的工资等级
SELECT E.ENAME, S.GRADE
FROM EMP E, SALGRADE S
WHERE S.LOSAL <= E.SAL
AND E.SAL <= S.HISAL;
9、exists查询
查询没有员工的部门
SELECT * FROM dept d WHERE NOT EXISTS (SELECT * FROM emp e WHERE e.deptno=d.deptno);
10、自连接查询
查询员工的上级名称
11、嵌套查询
SELECT * FROM EMP WHERE (deptno,job)=(SELECT deptno, job FROM emp WHERE ename='SMITH');
UPDATE emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';
NVL函数将NULL 变为指定的内容。
2、DECODE(col/expression,search1,result1,search2,result2,[…])
select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual;
3、 自然连接不显示含有NULL的值
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
等同于
SELECT * FROM dept NATURAL JOIN emp;
SELECT * FROM emp join dept using(deptno);
4、左连接(+)在右面,以左边的表为准,显示左边含有NULL的数据
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO(+)
ORDER BY ENAME;
等同于
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E LEFT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO ORDER BY ename;
5、右连接(+)在左面,以右边的表为准,显示右边含有NULL的数据
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO
ORDER BY ENAME;
等同于
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E RIGHT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
6、全连接
SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO
FROM EMP E FULL OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY ENAME;
7、交叉连接
SELECT * FROM t1 CROSS JOIN t2;
8、查询员工的工资等级
SELECT E.ENAME, S.GRADE
FROM EMP E, SALGRADE S
WHERE S.LOSAL <= E.SAL
AND E.SAL <= S.HISAL;
9、exists查询
查询没有员工的部门
SELECT * FROM dept d WHERE NOT EXISTS (SELECT * FROM emp e WHERE e.deptno=d.deptno);
10、自连接查询
查询员工的上级名称
11、嵌套查询
SELECT * FROM EMP WHERE (deptno,job)=(SELECT deptno, job FROM emp WHERE ename='SMITH');
UPDATE emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';
相关文章推荐
- oracle -连接查询
- oracle多表连接查询
- Oracle学习(5)---数据定义语言---连接查询
- VS2010连接Oracle在查询数据时报"指定的转换无效"
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- Oracle单表内连接查询
- oracle左连接查询,取右边第一个
- 在SQL Server 2005中连接Oracle,完成查询、插入操作
- Oracle in 引号连接的子查询用法
- oracle心得4--集合查询@oracle中的多表连接@案例分析
- oracle 表连接与子查询示例
- oracle 内连接 外连接 查询 笔记
- 通过plsql查询当前连接的数据库的配置情况,如查询oracle的安装地址,和oracle的tns配置
- 32位连接64位oracle查询数据中文乱码
- 【Oracle】--连接查询
- 【Oracle】模糊查询与高级连接查询
- 【Oracle】多表连接查询——内连接、左连接、右连接、全连接(外连接)、完全连接
- ORACLE连接类型 各种连接查询PL/SQL测试
- C#连接Oracle查询数据乱码问题解决
- 查询数据库当前用户连接信息(MySQL,Oracle)