05 表的连接、子查询

在熟悉了表的增删改查,表中数据的增删改查,本文将着重阐述如何进行表连接以及子查询。
所谓表连接,就是多张表在一起做笛卡尔乘积,它有多种形式;所谓子查询就是把一个sql查询的结果作为另外一个sql执行之前的输入。

1 系统、环境和前提约束

2 操作

  • 以系统管理员启动cmd命令行

     
     
    16204070-f05e17713628f4db.png
    以系统管理员启动cmd
     

    表连接分为以下几种方式:

# 在windows命令行下连接scott
sqlplus scott/tiger
# 通常意义上的表连接
select * from emp e, dept d; --emp表有14行记录、dept表有4行记录,做笛卡尔乘积,共有56行记录
select * from emp e, dept d where e.deptno=d.deptno -- 查询出了emp中用户对应的部门信息
# 内连接
select * from emp e inner join dept d on e.deptno=d.deptno; -- 查询出了emp中用户对应的部门信息
# 左外连接
insert into dept(deptno) values(50);  --向dept表中加入一条只有deptno的空记录
insert into emp(empno) values(16); --向dept表中加入一条只有empno的空记录
select * from emp e left join dept d on e.deptno=d.deptno; --以join左边的表为主,不会查出右边表的空记录,但会查询左边表的空记录
# 右外连接
select * from emp e right join dept d on e.deptno=d.deptno; --以join右边的表为主,不会查出左边表的空记录,但会查询右边表的空记录
# 全外连接
select * from emp e fulljoin dept d on e.deptno=d.deptno; --以join两边的表为主,既会查出左边表的空记录,也会查询右边表的空记录

再看了表连接之后,我们执行以下语句,继续熟悉子查询:

# 查询编号为7788的员工所在部门名称和地址
select dname, loc from dept where deptno=(select deptno from emp where empno=7788);
# 查询工资最高的员工信息
select * from emp where sal >= all (select nvl(sal,0) from emp );
# 查询编号为7788的员工的领导信息
select * from emp where empno=(select mgr from emp where empno=7788);

以上就是我们常用的表连接和子查询语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值