概述

表连接分为内连接和外连接

内连接

内连接实际上就是利用where子句对两张表形成的笛卡尔集进行筛选,我们前面学习的查询都是内连接,也是在开发过程中用的最多的连接查询。

基本语法:

select  字段1,字段2,. . .  from 表1  inner join 表2  on  条件 . . .

select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; 等同于

select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno;

外连接

左外连接     (如果左侧的表完全显示我们就说是左外连接)

右外连接      (如果右侧的表完全显示我们就说是右外连接)

完全外连接    (完全显示两个表,没有匹配的记录置为空)

SQL> create table stu(id number,name varchar2(32));

SQL> create table exam(id number,grade number);

实际应用

显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。

select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id;

上面我们使用的内连接:它的特点是只有两张表同时匹配,才被选择。

使用左外连接:

select stu.name,stu.id,exam.grade from stu left join exam on stu.id=exam.id;

如果stu(左表)的记录没有和exam任何一条记录匹配,也要被选中。

怎么判断一张表是左边,如果在left join左边,就是左表。

另外一种写法:

select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id(+);

右连接(显示所有成绩,如果没有名字匹配,显示空)

select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;

完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)

说明:有外联,指定是右边的表如果没有和左边任何一条记录匹配,也要被选中。

另外还有一种写法:

select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)=exam.id;

把(+)写在左边,就表示右外联。

小结:实际上左外联和右外联是可以互为转换

显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。

(1)select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;

(2)select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)= exam.id;

(3)select stu.name,stu.id,exam.grade from exam left join stu on stu.id=exam.id;

(4)select stu.name,stu.id,exam.grade from stu,exam where exam.id= stu.id(+);

完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)

即:两个表查询,不管有没有匹配,全都显示。

select stu.name,stu.id,exam.grade from stu full outer join exam on stu.id=exam.id;

转载于:https://www.cnblogs.com/fanweisheng/p/11113719.html

oracle表内连接和外连接相关推荐

  1. Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例

    Oracle数据库:oracle内连接inner join on,多表查询各种自链接.内连接.外连接的练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得 ...

  2. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  3. oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)

    永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! oracle连接总结(内连接.外连接.自然连接,交叉连接,自连接) 1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一 ...

  4. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  5. MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接

    文章目录 多表查询的分类 等值连接 vs 非等值连接 自连接 vs 非自连接 内连接 vs 外连接 SQL92和SQL99语法如何实现内外连接 多表查询的分类 这个分类是根据多表查询时的连接条件而划分 ...

  6. Mysql表连接:内连接、外连接、交叉连接、自然连接真的都不一样吗

    文章目录 前言 测试环境 创建测试数据 对比测试 内连接 交叉连接 外连接 左外连接 右外连接 自然连接 一般自然连接 自然左外连接 自然右外连接 STRAIGHT_JOIN 逗号分隔连接表 各种连接 ...

  7. oracle 内连接、外连接、全连接

    oracle 内连接.外连接.全连接 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...

  8. mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接

    一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...

  9. MySQL 内连接、左连接、右连接、外连接、多表查询

    MySQL 内连接.左连接.右连接.外连接.多表查询 构建环境: create table t_emp(id int primary key, name varchar(20),deptId int ...

  10. 二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类:1)sql ...

最新文章

  1. HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
  2. 本是同根生,相煎何太急?
  3. Linux下实现文件双向同步
  4. gin post 数据参数_Gin 使用示例(四):绑定查询字符串或 POST 数据
  5. ABAP 编程语言中的系统字段(System Fields)
  6. 域名带后缀_[Python 爬虫]获取顶级域名及对应的 WHOIS Server 及 whoisservers.txt 下载...
  7. 面试官十大常问面试问题总结
  8. 【为了爱,为了pascal】【第三章】 认识PASCAL语言基础
  9. 召唤神龙Ladon强化Cobalt Strike
  10. 电信dns地址是多少?
  11. python中一元二次方程的判别式_【Python算法作业】解一元二次方程
  12. 大数据讲课笔记5.5 MR案例——倒排索引
  13. 2022-2028全球婚恋交友软件行业调研及趋势分析报告
  14. 查看mysql中SQL的执行计划
  15. 一个虎扑社区数据分析实战
  16. 小程序 wx.showModal
  17. Adobe软件安装错误127替代方案
  18. Python之面相对象 - 函数VS方法 反射
  19. Fluent Ribbon界面布局
  20. jdk下载与安装教程(win10)

热门文章

  1. 装ubuntu_系统安装_win10下安装Ubuntu后,启动时无win10选项的解决办法。
  2. win10亮度怎么调_装好原版win10后,没有这样设置过,你的系统怎么可能好用!...
  3. TortoiseSVN使用教程
  4. ext3日志模式---文件系统
  5. c++时间类型详解 time_t
  6. ixigua解析_资本运作系列课程五:《科创板申请上市估值模型理论解析》现场直播回放...
  7. java编辑遗忘曲线代码_用jsp写出记忆曲线的表格(用学习新概念英语做例子)
  8. 0 y 100写成c语言,c语言100编程实例
  9. C++ OS 网络 数据库 (面试)
  10. main函数执行前后发生了什么