SQL的1999语法

news2024/11/25 16:33:34

目录

交叉连接

实现交叉连接

自然连接

实现自然连接(实际上就是内连接)

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 DNAME
           LOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------
        10       7839 KING                 PRESIDENT                     17-11月-81           5000            ACCOUNTING
           NEW YORK
        10       7782 CLARK                MANAGER                  7839 09-6月 -81           2450            ACCOUNTING
           NEW YORK
        10       7934 MILLER               CLERK                    7782 23-1月 -82           1300            ACCOUNTING
           NEW YORK
        20       7902 FORD                 ANALYST                  7566 03-12月-81           3000            RESEARCH
           DALLAS
        20       7369 SMITH                CLERK                    7902 17-12月-80            800            RESEARCH
           DALLAS
        20       7566 JONES                MANAGER                  7839 02-4月 -81           2975            RESEARCH
           DALLAS
        30       7900 JAMES                CLERK                    7698 03-12月-81            950            SALES
           CHICAGO
        30       7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0 SALES
           CHICAGO
        30       7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400 SALES
           CHICAGO
        30       7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500 SALES
           CHICAGO
        30       7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300 SALES
           CHICAGO

    DEPTNO      EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM DNAME
           LOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------
        30       7698 BLAKE                MANAGER                  7839 01-5月 -81           2850            SALES
           CHICAGO

已选择 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 DNAME
                      LOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------
      7839 KING                 PRESIDENT                     17-11月-81           5000                    10         10 ACCOUNTING
                      NEW YORK
      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10         10 ACCOUNTING
                      NEW YORK
      7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10         10 ACCOUNTING
                      NEW YORK
      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20         20 RESEARCH
                      DALLAS
      7369 SMITH                CLERK                    7902 17-12月-80            800                    20         20 RESEARCH
                      DALLAS
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20         20 RESEARCH
                      DALLAS
      7900 JAMES                CLERK                    7698 03-12月-81            950                    30         30 SALES
                      CHICAGO
      7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30         30 SALES
                      CHICAGO
      7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30         30 SALES
                      CHICAGO
      7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30         30 SALES
                      CHICAGO
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30         30 SALES
                      CHICAGO

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAME
                      LOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------
      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30         30 SALES
                      CHICAGO

已选择 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 DNAME
                      LOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------
      7369 SMITH                CLERK                    7902 17-12月-80            800                    20         20 RESEARCH
                      DALLAS
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30         30 SALES
                      CHICAGO
      7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30         30 SALES
                      CHICAGO
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20         20 RESEARCH
                      DALLAS
      7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30         30 SALES
                      CHICAGO
      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30         30 SALES
                      CHICAGO
      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10         10 ACCOUNTING
                      NEW YORK
      7839 KING                 PRESIDENT                     17-11月-81           5000                    10         10 ACCOUNTING
                      NEW YORK
      7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30         30 SALES
                      CHICAGO
      7900 JAMES                CLERK                    7698 03-12月-81            950                    30         30 SALES
                      CHICAGO
      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20         20 RESEARCH
                      DALLAS

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAME
                      LOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------
      7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10         10 ACCOUNTING
                      NEW YORK
      8989 HELLO
                                                                                                                      40 OPERATIONS
                      BOSTON

已选择 14 行。

此时把没有员工的部门和没有部门的员工的信息都显示出来了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1451500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows10安装配置nvm以达到切换nodejs的目的

前言 各种各样的项目,各种node环境,还有node_modules这个庞然大物。。想想都觉得恐怖。 所以现在有了:nvm-切换node环境,pnpm–解决重复下载同样类库的问题。 下面将就如何在win10下配置进行说明 nvm下载配置 nvm的github下载地…

springboot189基于SpringBoot电商平台的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

黄金交易策略(Nerve Nnife.mql4):做单手数设计

完整EA:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 NK的做单量是由参数设定的,以下分别是参数项: 考虑到复利的情况,若10000本金,在以上三个参数的设计下,第1单的购买量是0.01*10,第2单是0.01*10*2…

题解43-48

124. 二叉树中的最大路径和 - 力扣(LeetCode) 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和…

文案馆头像壁纸微信小程序源码【支持流量主】

文案馆头像壁纸微信小程序源码【支持流量主】 源码介绍:文案馆头像壁纸微信小程序源码是一款可以获取套图、头像、壁纸的小程序。小程序源码内置流量主功能 需求环境:微信小程序phpmysql 下载地址: https://www.changyouzuhao.cn/13453.ht…

Fluke ADPT 连接器新增对福禄克万用 Fluke 15B Max 的支持

所需设备: 1、Fluke ADPT连接器; 2、Fluke 15B Max; Fluke 15B Max拆机图: 显示界面如下图: 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造!!!

CPU-GPU异构并行化APSP算法

一、Floyd-Warshall算法 介绍 Floyd-Warshall算法(英语:Floyd-Warshall algorithm),中文亦称弗洛伊德算法或佛洛依德算法,是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但…

[ai笔记7] google浏览器ai学习提效定制优化+常用插件推荐

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第7篇分享! 工欲善其事必先利其器,为了ai学习的效能提升,放假期间对google浏览器做了一次系统整改,添加了一些配置和插件,这里既有一些显示、主…

opencv通道分离与合并

void QuickDemo::channels_demo(Mat & image) {std::vector<Mat>mv;//通道分离合并split(image,mv);//原图 指针(Mat)imshow("蓝色", mv[0]);imshow("绿色", mv[1]);imshow("红色", mv[2]); } split(image,mv);//原图 指针(Mat) 这里…

AI:128-基于机器学习的建筑物能源消耗预测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

OpenAI Sora 初体验

OpenAI Sora 初体验 就在刚刚&#xff0c;OpenAI 再次投下一枚重磅炸弹——Sora&#xff0c;一个文本到视频生成模型。 我第一时间体验了 Sora。看过 Sora 的能力后&#xff0c;我真的印象深刻。对细节的关注、无缝的角色刻画以及生成视频的绝对质量真正将可能性提升到了一个新…

C++数据结构与算法——字符串

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

STM32 寄存器操作 GPIO 与下降沿中断

一、如何使用stm32寄存器点灯&#xff1f; 1.1 寄存器映射表 寄存器本质就是一个开关&#xff0c;当我们把芯片寄存器配置指定的状态时即可使用芯片的硬件能力。 寄存器映射表则是开关的地址说明。对于我们希望点亮 GPIO_B 的一个灯来说&#xff0c;需要关注以下的两个寄存器…

PLC_博图系列☞FBD

PLC_博图系列☞FBD 文章目录 PLC_博图系列☞FBD背景介绍FBD优势局限性 FBD 元素 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 FBD 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的博图软件。我并不是专业的PLC编程人员&#xff0c;也不懂电路…

1036 跟奥巴马一起编程 (15)

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

【JavaEE】_文件与IO

目录 1.文件概述 1.1 文件的概念 1.2 文件的存储 1.3 文件的分类 1.4 目录结构 1.5 文件操作 1.5.1 文件系统操作 1.5.2 文件内容操作 2. Java文件系统操作 2.1 File类所处的包 2.2 构造方法 2.3 方法 2.3.1 与文件路径、文件名有关的方法 2.3.2 文件是否存在与普…

c++之function和bind详解-SurfaceFlinger学习必备语法基础

背景 C中的function和bind是为了更方便地进行函数对象的封装和调用而设计的&#xff0c;在SurfaceFlinger源码中也是有很多使用部分。 比如分析Vsync相关源码时候有相关回调时候 可以看到这里的mRegistration就有个参数是 std::bind,怎么这里就可以进行回调呢&#xff1f; 所…

代码随想录 Leetcode860. 柠檬水找零

题目&#xff1a; 代码(首刷自解 2024年2月15日&#xff09;&#xff1a; class Solution { public:bool lemonadeChange(vector<int>& bills) {vector<int> leftchange(2,0);//leftchange[0]代表5元数量&#xff0c;1代表10for (int i 0; i < bills.size…

最小生成树(Kruskal算法及相关例题)

1.Kruskal算法概念以及基本思路 &#xff08;1&#xff09;概念&#xff1a; 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。它的时间复杂度为O&#xff08;ElogE&#xff09;(E是图G的边的总数)&#xff0c;适合于求边稀疏的网的最小生成树 。 其基本思想是&#xff…

OS文件管理

文件管理 文件的属性 文件所包含的属性&#xff1a; 文件名&#xff1a;由创建文件的用户决定文件名&#xff0c;主要为了方便用户找到文件&#xff0c;同一目录下不允许有重名文件。标识符&#xff1a;一个系统内的各文件标识符唯一&#xff0c;对用户来说毫无可读性&#…