显示来自多个表的数据——JOIN
表关系简介
一、语法
SELECT 字段列表FROM TABLE1
[CROSS JOIN TABLE2 ] |
[NATURAL JOIN TABLE2 ] | [JOIN TABLE2 USING (字段名) ] | [JOIN TABLE2 ON (TABLE.COLUMN_NAME = TABLE2.COLUMN_NAME) ] |
[(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME) ];
二、自然连接
1、USING如果不希望参照被连接表的所有同名列进行等值连接,自然连接将无法满足要求,可以在连接时使用USING子句来设置用于等值连接的列(参照列)名。
不允许在参照列上使用表名或者别名作为前缀
2、ON--99语法 SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMPJOIN DEPTUSING (DEPTNO);--92语法 SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMP, DEPTWHERE EMP.DEPTNO = DEPT.DEPTNO;
如果要参照非同名的列进行等值连接,或想设置任意的连接条件,可以使用On子句
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMPJOIN DEPTON (EMP.DEPTNO = DEPT.DEPTNO);
三、自连接
自己和自己做链接--99语法 SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGRFROM EMPLOYEES WORKERJOIN EMPLOYEES MANAGERON (WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID);--92语法 SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGRFROM EMPLOYEES WORKER, EMPLOYEES MANAGERWHERE WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID;
四、非等值连接
--99语法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVELFROM EMPLOYEES EJOIN JOB_GRADES JON E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;--92语法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVELFROM EMPLOYEES E, JOB_GRADES JWHERE E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;
五、INNER|OUTER 连接
1、INNER 连接两个表连接,只返回匹配的行,被称为内连接。
2、LEFT OUTER | RIGHT OUTER 连接--查询所有员工以及其部门名字 --99语法 SELECT LAST_NAME, DEPARTMENT_NAMEFROM EMPLOYEES EINNER JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_ID;--92语法 SELECT LAST_NAME, DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。
3、FULL OUTER 连接--哪些部门没有员工,看出部门名字 --99语法 SELECT DEPARTMENT_NAMEFROM EMPLOYEES ERIGHT JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_IDWHERE LAST_NAME IS NULL;--92语法 SELECT DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID(+) = D.DEPARTMENT_IDAND LAST_NAME IS NULL;
两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为全外联接。
--99 SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES EFULL OUTER JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_ID;--92 SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DON E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID(+);
六、笛卡尔积
笛卡尔集会在下面条件下产生:1、连接条件被遗漏
2、连接条件不正确
3、所有表中的所有行互相连接
--99语法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES ECROSS JOIN DEPARTMENTS D;--92语法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS D;
相关文章:

20年第三次架构大调整,腾讯永远年轻!
整理 | 琥珀出品 | AI科技大本营(公众号ID:rgznai100)凌晨,腾讯官方公众号发布了一则消息,公布了成立 20 周年以来的新一轮整体战略升级。此前,国内各大互联网公司包括阿里、百度、美团、滴滴、京东都相继进…

NHibernate和Cuyahoga(二)(翻译):
原文:http://www.cuyahoga-project.org/home/developers.aspxMappings: 在我们使用像NHibernate这样强大的ORM工具的时候,映射类有时候是相当严格的.这就造成了很大的障碍,尤其是由于没有足够的真实的映射例子(更确切的说,对于Java版本的Hibernate来说,会有更多的例子).…

Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇
一.把异常信息Logging到数据库在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法。1.创建相关的数据库环境:我们可以用日志和监测应用程序块自带的SQL语句来…

观点PK_倘若做不好AI,云服务商还能勇往直前吗?
AI强大却不独立存在,如今已经成为人们普遍接受的理念之一。在这个火热的时代,AI技术不是一个独立的产品,而是一种“基本生产力”,它适用于大部分经济活动,可以让各行各业都产生“增倍效应”,可以预见的是&a…

练习 MongoDB 操作 —— 备份篇(三)
2019独角兽企业重金招聘Python工程师标准>>> mongodb数据备份和还原主要分为二种, 一种是针对于库的mongodump和mongorestore, 一种是针对库中表的mongoexport和mongoimport。 mongodb 数据库操作--备份 还原 导出 导入 导入与导入 导入与导出…

判断是否为闰年oracle,ORACLE 通过日期变量判断是否闰年
最近在做同比环比报表,2月份的日期需要判断是否闰年,在网上查了很多资料,大部分都是用sysdate说明的,不是很理想,自己捣鼓了半天,终于整出来了。跟大家分享下。declarevbdate date;V_LASTDAY NUMBER(2,0);V…

CentOS 6.x中目录结构及用途
目录名称作用/根目录,一般根目录下只存放目录,不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件,包含…

oracle dataguard 日志 很多no,oracle dataguard 日志传输原理
Services),它不仅控制着传输redo数据到其它数据库,同时还管理着解决由于网络中断造成的归档文件未接收的过程。一、如何发送数据在primary数据库,DataGuard可以使用归档进程(ARCn)或者日志写进程(LGWR)收集redo数据并传输到standby࿰…

“偷鸡”不成的马斯克,终于丢掉了自己的“王位”
整理 | 非主流出品 | AI科技大本营(公众号ID:rgznai100)昨天,好战的马斯克丢了一血。据多家外媒报道,美国当地时间周六,埃隆马斯克与美国证券交易委员会(SEC)达成和解协议。马斯克必…

JVM指令详解(上)
文中提及的栈是虚拟机栈中的栈帧的操作数栈,本地变量表是栈帧中的本地变量表,如下图:/*** Author: qlq* Description* Date: 22:44 2018/9/25*/ public class MathTest {public static void main(String a[]){MathTest mathTest new MathTest();System.…

oracle修改时区无效,Oracle 时区问题
oracle中的tz_offset是用来返回给定时区与标准时区(UTC universal of time Coordinate 通用时间坐标)的偏移量,其参数可以是:1.一个合法的时区名2.一个离UTC的标准偏移量3.关键字SessionTimeZone或者是DB_timezone其中合法的时区名可以从系统视图V$TimeZ…

::operator new、sgi stl alloc、dlmalloc测试结果
注: 使用的dlmalloc为2.8.3版本使用GetTickCount(),测试1000000次的new/delete分配空间大小为2的幂,依次递增在Debug模式下sgi-stl alloc > dlmalloc > ::operator new在Release模式下dlmalloc > sgi-stl alloc > ::operator new…
假期快乐!超强面试资源等你Pick,先收藏!
整理 | Jane 出品 | AI科技大本营 【导读】准备面试不是一件简单的事情,本文的作者在过去一段时间先后参加 50 多次面试。过程是艰难的,但是在这个过程中也积累了一些非常有用的资源。今天 AI科技大本营就为大家整理了那些有价值的学习资源,…

oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比
数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 …

9月机器学习开源项目Top10
作者 | Mybridge译者 | 王天宇整理 | Jane出品 | AI科技大本营【导读】我们从过去一个月近 250 个有关机器学习的开源项目中,精心挑选出了最热门的 10 个。在挑选过程中,我们始终在各个项目之间作比较。Mybridge AI 基于大量的因素来估量项目的专业水平&…

翻译:CREATE DATABASE语句
本文为mariadb官方手册:CREATE DATABASE的译文。 原文:https://mariadb.com/kb/en/create-database/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh-cn/create-database/ 语法 CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT …

Consultanting Service
在我所做的咨询顾问工作中最耗费精力的事情就是去客户那边提案,对于咨询公司来说,这个过程就像高考一样。 这里的提案指的是,咨询公司给企业做的报告或者方案的演示 。提案之所以重要,是因为它质量的好坏直接关系到客户是否会继续…

第三次组织架构变动背后,腾讯AI走向何方?
AI科技大本营注:在 9 月末一场轰轰烈烈的“甚至连腾讯人自己都是睡梦中得知”的组织架构大调整后,不少业内人士给出了对暴风雨中腾讯的上帝视角评价。据了解,此次腾讯组织架构调整,酝酿已久,在腾讯内部早已不是秘密。如…

使按钮响应回车键
定在<head></head>之间 <script language"javascript"event"onkeydown"for"document">if(event.keyCode13) { document.all(Button1).focus(); document.all(Button1).click(); }</script> 转载于:https://www.cnb…

oracle cusor游标,ORACLE CURSOR 游标详解
DECLAREsqlStr VARCHAR2(2000); --拼写sqlflag int; --判断是否存在col_name VARCHAR2(100); --字段名字tab_name VARCHAR2(100); --表名col_type VARCHAR2(100); --表名operator_str VARCHAR2(100) : ;FindUser VARCHAR2(50) :ERSAFETY; --要查…

【播放器SDK】Android如何实现固定竖屏播放视频
安卓的固定竖屏播放并不受手机是否开启旋转的限制,需要用户设置Activity为固定竖屏。目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码FixedSkinActivity 1.在onCreate里面设置当前Activity为固定竖屏模式. se…

命令别名的设置alias,unalias
alias命令的作用是为系统中的命令设置别名,如果常用命令比较长,那么为其设置别名可以简化用户操作,例如为ls -l | more命令设置别名lm,这样只需要输入lm就可以得到和 ls -l | more相同的效果;为rm -i设置别名为rm,可以…
重磅!Facebook公布PyTorch 1.0预览版!
作者 | 琥珀 出品 | AI科技大本营(公众号ID:rgznai100) 今日,Facebook 宣布发布深度学习框架 PyTorch 1.0 开发者预览版,包括一些列工具和集成,使其与 Google Cloud、AWS、Azure 的机器学习服务更为兼容。…

cisco路由器视频下载
总共133M,我进行了两次压缩,才压缩到23M, 有拓扑图,对于新手学习非常有用。具体下载,我放到论坛上:有兴趣的网友,请到:http://bbs.51cto.com/viewthread.php?tid8652&extrapage%3D1转载于:https://blog.51cto.com/eskystar/2571

linux进程状态d状态,Linux下进程的状态
如下信息来自于命令man psHere are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:D uninterruptible sleep (usually IO)R running or runnable (on run …

linux哪个版本支持多线程,关于Linux操作系统的叙述错误的是()A、Linux是多用户、多任务、支持多线程的操作系统B、Linux的源...
【多选题】以下哪些是藏族崇尚白色的体现。【判断题】等到口语出现后,非语言表达便消失了。冷变形金属在加热时,随加热温度的升高,发生[填空(1)][填空(2)][填空(3)]莫菲(Murph&#…

马斯克受罚离任董事长,默多克之子或将成接替者!
美国东部时间 10 月 3 日上午,特斯拉公司股价早盘出现波动。期间,特斯拉创始人兼 CEO 埃隆马斯克(Elon Musk)被迫接受美国证券交易委员会(SEC)指控,并威胁离开董事会、新任董事长继任的消息传开…

Log4j使用技巧——让子类使用父类中定义的Logger
关于Log4j,是一个很庞大的话题,在这里,我不能对其特点和使用方法进行一一描述,只想记录自己在使用Log4j开发项目的过程中遇到的一些问题和自己的解决方案。在项目中,有时候会遇到这么一种情况,我们需要记录…

区分json与jsonp
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿,下边简单区分概括一下: JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。…

通俗理解PCA降维作用
作者 | 黄礼泊,广东工业大学数据挖掘与信息检索实验室(DMIR),机器学习与人工智能,目前研究方向最优化,将最优化理论运用在图像检索、压缩感知生物信号处理等领域。▌概述 本文主要介绍一种降维方法,PCA(Pr…