Oracle入门基础(五)一一多表查询
SQL> --等值连接
SQL> --查询员工信息:员工号  姓名 月薪 部门名称
SQL> set linesize 80
SQL> desc dept
名称                                      是否为空? 类型
 DEPTNO                                   NOT NULL NUMBER(2)
 DNAME                                     VARCHAR2(14)
  LOC                                          VARCHAR2(13)
SQL> select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;
 EMPNO ENAME             SAL DNAME
  7369 SMITH             800 RESEARCH
  7499 ALLEN            1600 SALES
  7521 WARD             1250 SALES                                          
SQL> --不等值连接
SQL> --查询员工信息:员工号  姓名 月薪 工资级别
SQL> select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s
  3  where e.sal between s.losal  and s.hisal;
 EMPNO ENAME             SAL      GRADE
  7369 SMITH             800          1
  7900 JAMES             950          1                                     
SQL> --外连接:
SQL> --按部门统计员工信息:部门号 部门名称  人数
SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
  2  from emp e,dept d
  3  where e.deptno=d.deptno
  4  group by d.deptno,d.dname;
部门号 部门名称             人数
    10 ACCOUNTING              3
    20 RESEARCH                5
    30 SALES                   6                                                                                                                                              
SQL> 希望把某些不成立的记录(40号部门),任然包含在最后的结果中 ---> 外连接
SQL> 左外连接: 当where e.deptno=d.deptno不成立的时候,等号左边的表任然被包含在最后的结果中
SQL>     写法:where e.deptno=d.deptno(+)
SQL> 右外连接: 当where e.deptno=d.deptno不成立的时候,等号右边的表任然被包含在最后的结果中
SQL>     写法:where e.deptno(+)=d.deptno
SQL> */
SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
  2  from emp e,dept d
  3  where e.deptno(+)=d.deptno
  4  group by d.deptno,d.dname;
部门号 部门名称             人数
    10 ACCOUNTING              3
    40 OPERATIONS              0
    20 RESEARCH                5
    30 SALES                   6                                            
SQL> host cls
SQL> --自连接
SQL> --查询员工信息:员工姓名  老板姓名
SQL> set linesize 200
SQL> select * from emp;
EMPNO ENAME      JOB        MGR HIREDATE      SAL       COMM    DEPTNO
  7902 FORD       ANALYST         7566 03-12月-81           3000                    20
  7934 MILLER     CLERK           7782 23-1月 -82           1300                    10                                                                                                              
SQL>  --自连接: 通过表的别名,将同一张表视为多张表
SQL> select e.ename 员工姓名,b.ename 老板姓名
  2  from emp e,emp b
  3  where e.mgr=b.empno;
 员工姓名   老板姓名
	FORD       JONES
	SCOTT      JONES
	JAMES      BLAKE                                                                                                                                                                                                                                                                                                                                                                  
SQL> --自连接不适合操作大表
SQL> --层次查询
SQL> select level,empno,ename,mgr
  2  from emp
  3  connect by prior empno=mgr
  4  start with mgr is null
  5  order by 1;
 LEVEL      EMPNO ENAME             MGR
     1       7839 KING
     2       7566 JONES            7839
     2       7698 BLAKE            7839
     3       7654 MARTIN           7698
     3       7844 TURNER           7698
     4       7876 ADAMS            7788
     4       7369 SMITH            7902
Oracle入门基础(五)一一多表查询的更多相关文章
- 【T-SQL基础】01.单表查询-几道sql查询题
		概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ... 
- Vc数据库编程基础MySql数据库的表查询功能
		Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ... 
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
		select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ... 
- Mysql基础(五):多表查询、pymysql模块
		目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 3. 子查询 4. pymysql模块 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 将两表所有的数据一 ... 
- Oracle入门基础(六)一一子查询
		SQL> --查询工资比SCOTT高的员工信息 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SA ... 
- Oracle笔记(六) 多表查询
		最近看了李兴华的oracle视频,这是网上别人做的笔记非常细致,分享给大家,第六篇 原创地址:http://www.cnblogs.com/mchina/archive/2012/09/07/2651 ... 
- 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
		数据库从入门到精通合集(超详细,学习数据库必看) 查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表 ... 
- Oracle入门基础(1)
		1.数据库系统和数据管理系统的区别? 数据库系统=数据库的管理系统+oper操作员+硬件 2.Oracle的版本 8i /9i 10g/11g 12c(cloud) 3.Oracle主要组 ... 
- java:Oracle(聚合函数,多表查询,表之间的关系)
		1.聚合函数 --max,min,sum,avg,count,nvl(,) -- max:最大值 -- max既能取数字的最大值,也可以取字符串的最大值(英文字母排列顺序),根据场景实际意义来看,最好 ... 
- MyBatis学习总结(五)——实现关联表查询(转载)
		本文转载自:http://www.cnblogs.com/jpf-java/p/6013516.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数 ... 
随机推荐
- 『无为则无心』Python面向对象 — 59、魔法方法
			目录 1.魔法方法__new__() 2.魔法方法__init__() 3.魔法方法__del__() 4.魔法方法__str__()和__repr__() 5.魔法方法__call__() 6.魔法 ... 
- simple js
			simple js 题目描述:小宁发现了一个网页,但却一直输不对密码.(Flag格式为 Cyberpeace{xxxxxxxxx} ) 打开题目后,有一个Enter password框,要求输入密码, ... 
- IEnumerable< T >和IEnumerable区别 |枚举接口
			为什么我们在继承IEnumerable< T >接口的时候也要实现IEnumerable接口. 新的代码里面都用IEnumerable< T >,因为泛型的类型是安全的.我们可 ... 
- [源码解析] NVIDIA HugeCTR,GPU 版本参数服务器---(8) ---Distributed Hash之后向传播
			[源码解析] NVIDIA HugeCTR,GPU 版本参数服务器---(8) ---Distributed Hash之后向传播 目录 [源码解析] NVIDIA HugeCTR,GPU 版本参数服务 ... 
- Java 实现Https访问工具类 跳过ssl证书验证
			不多BB ,代码直接粘贴可用 import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.F ... 
- cpolar——安全的内网穿透工具
			什么是cpolar? cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务. 它能用在哪些场景? 微信公众号开发,实时断点调试微信消息 ... 
- 安装CentOS 7
			1.安装引导 首先要设置计算机的启动顺序为CD-ROM或USB 启动,保存设置后将CD放入光驱或插入USB,重新启动计算机. 计算机重启后显示有几个选项的引导菜单.如果在 60 秒内没有按任何键,则运 ... 
- linux su、sudo、sudo su、sudo -i的用法和区别
			sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认一次时长15分钟. su : 切换到某某用户模式,提 ... 
- Vue-表单验证-全选-反选-删除-批量删除
			<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ... 
- 微信小程序码生成及canvas绘制
			吐槽:某厂的开发文档写的跟屎一样 1.后台返回accessToken,小程序请求获取小程序码 uni.request({ url: 'https://api.weixin.qq.com/wxa/get ... 
