SQL的1999语法
目录
交叉连接
实现交叉连接
自然连接
实现自然连接(实际上就是内连接)
ON和USING
使用自然连接时要求两张表的字段名称相同,但是如果不相同或者两张表中有两组字段是重名,这时就要利用 ON 子句指定关联条件,利用 USING 子句设置关联字段
利用 USiNG 子句设置关联字段实现自然连接
利用 ON 子句设置关联条件
外连接
左外连接
全外连接
Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
对于数据表的连接操作,从实际使用来说,各个数据库都是支持的,但是外连接使 用“ (+) ”是 Oracle 自带的,其他数据库是不支持的。所以对所有的数据库,进行表连接最好的做法是利用以下的语法完成
select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] [cross join 表 2 [ 别名 ]] [natural join 表 2 [ 别名 ]] [join 表 2 [ 别名 ] on ( 条件 ) | using( 关联字段 )] [left | right | full outer join 表 2 [ 别名 ] on( 条件 )] ;
在进行表连接的时候,如果是内连接,则使用等值判断;
如果是外连接,则使用 left、outer、full等操作。
而上面语法中的 cross join、natural join、join很少使用。
不过我们也简单看 一下如何操作它们
交叉连接
目的是产生笛卡尔积
语法如下
select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] cross join 表 2 [ 别名 ] ;
实现交叉连接
select *
from emp cross join dept;
执行有很多行,这里我就不示范了,等同于
select *
from emp,dept;
大家可以试试
自然连接
利用关联字段,自己进行笛卡尔积的消除(只要字段名称相同即可,系统会自动匹配)
select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] natural join 表 2 [ 别名 ] ;
实现自然连接(实际上就是内连接)
select *
from emp natural join dept;
上面代码等同于前面所介绍的查询语句
select *
from emp,dept
where emp.deptno=dept.deptno;
大家可以自己试试
ON和USING
使用自然连接时要求两张表的字段名称相同,但是如果不相同或者两张表中有两组字段是重名,这时就要利用 ON 子句指定关联条件,利用 USING 子句设置关联字段
利用 USiNG 子句设置关联字段实现自然连接
SQL> select *2 from emp join dept using(deptno);DEPTNO EMPNO ENAME JOB MGR HIREDATE SAL COMM DNAMELOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------10 7839 KING PRESIDENT 17-11月-81 5000 ACCOUNTINGNEW YORK10 7782 CLARK MANAGER 7839 09-6月 -81 2450 ACCOUNTINGNEW YORK10 7934 MILLER CLERK 7782 23-1月 -82 1300 ACCOUNTINGNEW YORK20 7902 FORD ANALYST 7566 03-12月-81 3000 RESEARCHDALLAS20 7369 SMITH CLERK 7902 17-12月-80 800 RESEARCHDALLAS20 7566 JONES MANAGER 7839 02-4月 -81 2975 RESEARCHDALLAS30 7900 JAMES CLERK 7698 03-12月-81 950 SALESCHICAGO30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 SALESCHICAGO30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 SALESCHICAGO30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 SALESCHICAGO30 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 SALESCHICAGODEPTNO EMPNO ENAME JOB MGR HIREDATE SAL COMM DNAMELOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 SALESCHICAGO已选择 12 行。
利用 ON 子句设置关联条件
SQL> select *2 from emp e join dept d on(e.deptno=d.deptno);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7839 KING PRESIDENT 17-11月-81 5000 10 10 ACCOUNTINGNEW YORK7782 CLARK MANAGER 7839 09-6月 -81 2450 10 10 ACCOUNTINGNEW YORK7934 MILLER CLERK 7782 23-1月 -82 1300 10 10 ACCOUNTINGNEW YORK7902 FORD ANALYST 7566 03-12月-81 3000 20 20 RESEARCHDALLAS7369 SMITH CLERK 7902 17-12月-80 800 20 20 RESEARCHDALLAS7566 JONES MANAGER 7839 02-4月 -81 2975 20 20 RESEARCHDALLAS7900 JAMES CLERK 7698 03-12月-81 950 30 30 SALESCHICAGO7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 30 SALESCHICAGO7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 30 SALESCHICAGO7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 30 SALESCHICAGO7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 30 SALESCHICAGOEMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 30 SALESCHICAGO已选择 12 行。
同样,上面代码效果等同于前面所介绍的查询语句
select *
from emp,dept
where emp.deptno=dept.deptno;
不过显示结果的时候,deptno 字段只显示一次,而前面介绍的方法会显示两次
外连接
select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] left | right | full outer join 表 2 ;
左外连接
select *
from emp e left outer join dept d on(e.deptno=d.deptno);
上面代码等同于前面所介绍的查询语句
select *
from emp e,dept d
where e.deptno=d.deptno(+);
全外连接
SQL> select *2 from emp e full outer join dept d on(e.deptno=d.deptno);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7369 SMITH CLERK 7902 17-12月-80 800 20 20 RESEARCHDALLAS7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 30 SALESCHICAGO7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 30 SALESCHICAGO7566 JONES MANAGER 7839 02-4月 -81 2975 20 20 RESEARCHDALLAS7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 30 SALESCHICAGO7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 30 SALESCHICAGO7782 CLARK MANAGER 7839 09-6月 -81 2450 10 10 ACCOUNTINGNEW YORK7839 KING PRESIDENT 17-11月-81 5000 10 10 ACCOUNTINGNEW YORK7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 30 SALESCHICAGO7900 JAMES CLERK 7698 03-12月-81 950 30 30 SALESCHICAGO7902 FORD ANALYST 7566 03-12月-81 3000 20 20 RESEARCHDALLASEMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7934 MILLER CLERK 7782 23-1月 -82 1300 10 10 ACCOUNTINGNEW YORK8989 HELLO40 OPERATIONSBOSTON已选择 14 行。
此时把没有员工的部门和没有部门的员工的信息都显示出来了

相关文章:
SQL的1999语法
目录 交叉连接 实现交叉连接 自然连接 实现自然连接(实际上就是内连接) ON和USING 使用自然连接时要求两张表的字段名称相同,但是如果不相同或者两张表中有两组字段是重名,这时就要利用 ON 子句指定关联条件,利用 USING 子句…...
【AIGC】Stable Diffusion安装包
Stable Diffusion 的安装教程通常分为以下几个步骤: 一、安装 Python: 确保您的系统中已经安装了 Python,并且版本符合 Stable Diffusion 的要求。通常情况下,Python 版本应为 3.6 或更高版本。您可以从 Python 官方网站下载并安…...
C++:迭代器的封装思想
C:迭代器的封装思想 list迭代器实现反向迭代器实现 本博客将通过实现list的迭代器,以及它的反向迭代器,来帮助大家理解迭代器的底层逻辑,以及封装思想。 list迭代器实现 迭代器是一个遍历容器的工具,其可以通过自增自…...
飞天使-k8s知识点17-kubernetes实操2-pod探针的使用
文章目录 探针的使用容器探针启动实验1-启动探针的使用-startupprobeLiveness Probes 和 Readiness Probes演示若存在started.html 则进行 探针的使用 kubectl edit deploy -n kube-system corednslivenessprobe 的使用 livenessProbe:failureThreshold: 5httpGet:path: /heal…...
tee漏洞学习-翻译-3:TrustZone exploit for MSM8974
原文:http://bits-please.blogspot.com/2015/08/full-trustzone-exploit-for-msm8974.html 在这篇博文中,我们将介绍利用上一篇文章中描述的 TrustZone 漏洞的完整过程。 在开发此漏洞时,我只使用了我值得信赖的(个人࿰…...
rust递归遍历磁盘目录及文件
Std库实现 //遍历dir目录,找出修改日期距离当前超过age天的文件名称,存入file_list中 fn visit_dir(dir: &Path, file_list: &mut Vec<String>, age: u64) -> io::Result<()> {if dir.is_dir() {for entry in fs::read_dir(dir)…...
C语言每日一题(56)平衡二叉树
力扣网 110 平衡二叉树 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20,…...
Flutter Android开发 梳理Google Material Design颜色体系
前言 做安卓开发(Kotlin语言),Flutter开发的人员应该都听说过谷歌一直推崇的Material Design,而Material Design Color是其推崇的颜色体系,具体来说,Material Design Color是一套旨在帮助设计师和开发者创…...
每日五道java面试题之java基础篇(六)
目录: 第一题:Java 创建对象有哪⼏种⽅式?第二题 .Integer a 127,Integer b 127;Integer c 128,Integer d 128;相等吗?第三题.Object 类的常⻅⽅法?第四题 List和Set的区别第五题 ArrayList和…...
c++ STL系列——(五)map
目录 引言 特点 包含头文件 基本特性 基本操作 插入元素 访问元素 移除元素 检查是否包含某个键 获取元素数量 高级特性 迭代器 自定义比较函数 实际应用 统计字符出现次数 缓存最近访问的元素 总结 引言 在C中,标准模板库(STL…...
Huggingface 文档翻译完毕
Accelerate 0.27 中文文档音频课程文档AutoTrain 中文文档AWS 中文文档竞赛中文文档Diffusers 0.26 中文文档深度强化学习课程文档数据集服务器中文文档Datasets 2.17 中文文档 Evaluate 0.4 中文文档Huggingface.js 中文文档Hub 中文文档Hub 客户端库 JS 0.20 中文文档推理 AP…...
C++中类的6个默认成员函数 【拷贝构造函数】
文章目录 拷贝构造函数的使用拷贝构造对于自定义类型【浅拷贝】深拷贝拷贝构造函数典型调用场景 拷贝构造函数的使用 在前几章学习对象的时候,我们有的时候需要一个与已存在对象一某一样的新对象 那在创建对象时,可否创建一个与已存在对象一某一样的新对…...
【前端高频面试题--Vuex下篇】
🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬前端高频面试题--Vuex篇 往期精彩内容Vuex 的原理Vuex中action和mutation的区别Vuex 和 localStor…...
MySQL性能调优篇(4)-查询语句的优化与重构
MySQL数据库查询语句的优化与重构 MySQL是一种常用的关系型数据库管理系统,广泛应用于Web开发中。在实际应用中,对数据库查询语句的优化和重构是提高应用性能和响应速度的重要手段。本文将介绍一些常见的优化技巧和重构方法,帮助开发者提高数…...
LInux、源码编译安装
步骤: 步骤1:安装开发工具gcc与make,释放源代码至指定目录 yum -y install gcc make 步骤2:tar解包,释放源代码至指定目录 tar -xf /root/tools.tar.gz -C /usr/local 步骤3:./configure 配置,…...
wordpress好的网站主题
有什么好的网站主题,都分享在这里了。 蓝色风格的wordpress模板,好的wordpress网站主题,需要既好看,又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题,布局经典,设计好的&am…...
【Java多线程】对进程与线程的理解
目录 1、进程/任务(Process/Task) 2、进程控制块抽象(PCB Process Control Block) 2.1、PCB重要属性 2.2、PCB中支持进程调度的一些属性 3、 内存分配 —— 内存管理(Memory Manage) 4、线程(Thread)…...
C# CAD交互界面-自定义面板集-查找定位(六)
运行环境 vs2022 c# cad2016 调试成功 一、代码说明 1. 类成员变量声明: List<ObjectId> objectIds new List<ObjectId>(); // 用于存储AutoCAD实体对象的ObjectId列表 private static Autodesk.AutoCAD.Windows.PaletteSet _ps2; // 自定义浮动面板…...
5.7 BCC工具之disksnoop.py解读
一,disksnoop.py简介 disksnoop工具用于追踪块设备的I/O操作的延迟,它会在每次I/O执行完成后打印一行摘要信息。我们根据这些摘要日志,来分析当前的I/O操作是否存在延迟,以判断I/O是否达到了瓶颈。 二,代码示例 #!/usr/bin/python # # disksnoop.py Trace block device…...
QT:实现图片选择器
一、效果图 二、用到的类 qApp:可以快速获取到项目目录位置。 QSettings :编写config文件,记录上次打开图片的位置,下次打开图片会从上次的位置查找图片。 QPixmap:用于图片的缩放,防止图片过小࿰…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
