当前位置: 首页 > news >正文

SQL第13课——创建高级联结

本课讲另外一些联结(含义和使用方法),如何使用表别名,如何对被联结的表使用聚集函数。

13.1 使用表别名

第7课中使用别名引用被检索的表列,给列起别名的语法如下:

SQL除了可以对列名和计算字段使用别名,还可以对表名起别名

好处:

1. 缩短SQL语句

2. 允许在一条select语句中多次使用相同的表。

customers as c使用c作为customers的别名

!!!Oracle中没有as,不支持as关键字,使用方法为:customers c

表别名只在查询执行中使用,表别名不返回到客户端

13.2 使用不同类型的联结

第12课只介绍了内联结或等值联结的简单联结,现在介绍三种其他联结:自联结(self-join), 自然联结(natural join), 外联结(outer join).

13.2.1  自联结

使用表别名的一个主要原因是能在一条select语句中不止一次使用相同的表。如下例:

要给与Jim Jones同一公司的所有顾客发送一封信件。

查询要求:首先找出Jim Jones工作的公司,然后找出该公司工作的顾客。

方法一:使用子查询:

方法二:使用联结:

此查询中需要的两个表是相同的表,避免歧义性,使用两个别名。

!!!自联结通常作为外部语句,替代从相同表中检索数据的使用子查询语句。许多DBMS处理联结远比处理子查询快得多。

13.2.2 自然联结

对表进行联结,至少有一列不止出现在一个表中,标准的联结返回所有数据,相同的列出现多次。

自然连接使每一列只返回一次。

自然联结要求只能选择那些唯一的列,一般通过对一个表使用通配符(select * ),而对其他表的列使用明确的子集来完成。

13.2.3 外联结

有时候需要包含没有关联行的那些行。例如:

1. 对每个顾客下的订单进行计数,包括那些至今尚未下订单的顾客。

2. 列出所有产品以及订购数量,包括没有人订购的产品;

3. 计算平均销售规模,包括那些至今尚未下订单的顾客。

内联结:所有顾客及其订单:

外联结:包含没有订单顾客在内的所有顾客

在使用outer join语法时,必须使用right或left关键字指定包括其所有行的表;

right:指出的是outer join右边的表,

left:指出的是outer join左边的表。

上面的例子使用left outer join 从from 子句左边的表(customers表)中选择所有行。

SQLite支持Left outer join ,不支持right outer join

两种基本的外联结形式:左外联结和右外联结。

全外联结(full outer join):检索两个表中的所有行并关联那些可以关联的行。与左外联结或右外联结包含一个表的不关联的行不同,全外联结包含两个表的不关联的行。(MySQL不支持)

13.3 使用带聚集函数的联结

第9课讲,聚集函数用来汇总数据。

聚集函数与联结一起使用:检索所有顾客及每个顾客所下的订单数。

group by子句按顾客分组数据,函数调用count(orders.order_num)对每个顾客的订单计数,作为num_ord返回。

相关文章:

SQL第13课——创建高级联结

本课讲另外一些联结(含义和使用方法),如何使用表别名,如何对被联结的表使用聚集函数。 13.1 使用表别名 第7课中使用别名引用被检索的表列,给列起别名的语法如下: SQL除了可以对列名和计算字段使用别名&a…...

订阅ROS2中相机的相关话题并保存RGB、深度和点云图

系统:Ubuntu22.04 ROS2版本:ROS2 humble 1.订阅ROS2中相机的相关话题并保存RGB图、深度图和点云图 ros2 topic list/stellar_1/rgb/image_raw /camera/depth/image_raw /stellar_1/points2CMakeLists.txt cmake_minimum_required(VERSION 3.15) projec…...

Open WebUI | 自托管的类 ChatGPT 网站

Open WebUI 是一个扩展性强、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 服务,包括 Ollama 和 OpenAI 兼容的 API。该项目在 GitHub 上已有 38k 星,非常受欢迎。 功能介绍 废话不多说,上图!…...

【Python】Python知识总结浅析

Python是一种高级编程语言,由Guido van Rossum于1991年首次发布。它以简洁的语法和强大的功能著称,适用于多种应用场景,包括Web开发、数据分析、人工智能、自动化脚本等。 易于学习和使用:Python的语法简洁明了,适合初…...

c#代码介绍23种设计模式_20策略者模式

目录 1、策略模式的定义 2、策略模式的结构 3、涉及到三个角色: 4、策略者模式在.NET中应用 5、策略者模式的适用场景 6、策略者模式的优缺点 7、实现思路 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税…...

FPGA-UART串口接收模块的理解

UART串口接收模块 背景 在之前就有写过关于串口模块的文章——《串口RS232的学习》。工作后很多项目都会用到串口模块,又来重新理解一下FPGA串口接收的代码思路。 关于串口相关的参数,以及在文章《串口RS232的学习》中已有详细的描述,这里就…...

复习HTML(基础)

目录 HTML含义 HTML作用 HTML的常用元素 元素的特点 元素的分类 1 是否嵌套关系 2 是否独占一行 块元素:独占一行 行内元素:共享一行 行内元素与块级元素的转换 3是否有结束标签 常用标签 1 标题标签:有六级 我们用h1 ~h6 表…...

Linux聊天集群开发之环境准备

一.windows下远程操作Linux 第一步:在Linux终端下配置openssh,输入netstate -tanp,查看ssh服务是否启动,默认端口22.。 注:如果openssh服务,则需下载。输入命令ps -e|grep ssh, 查看如否配有, ssh-agent …...

can 总线入门———can简介硬件电路

文章目录 0. 前言1. CAN简介2. 主流通讯协议对比3. CAN 硬件电路4. CAN 电平标准5. CAN 收发器 0. 前言 博客内容来自B站上CAN总线入门教程视频讲解,博客中的插图和内容均为视频中的内容。视频链接 CAN总线入门教程 1. CAN简介 先来看看一它名字的意思&#xff0c…...

【重学 MySQL】六十、空间类型

【重学 MySQL】六十、空间类型 空间数据类型的分类空间数据类型的属性空间数据的表示方式空间数据的操作应用场景 在MySQL中,空间类型(Spatial Types)主要用于支持地理特征的生成、存储和分析。这些地理特征可以表示世界上具有位置的任何东西…...

python实现DES算法

DES算法 一、算法介绍1.1 背景1.2 原理1.3 基本功能函数1.3.1 初始置换函数 I P IP IP1.3.2 f f f 轮函数1.3.3 逆初始置换函数 I P − 1 IP^{-1} IP−1 1.4 子密钥的生成 二、代码实现2.1 子密钥生成实现2.2 DES加解密实现2.3 完整代码 三、演示效果 一、算法介绍 1.1 背景…...

基于LORA的一主多从监测系统_框架搭建

第一节、框架搭建 打开CubeMAX,选择好芯片,进行基础配置 第一步、先配置时钟源 第二步、配置SYS选项 配置debug口以及计数器源,我这里选择TIM1 第三步、选择I2C接口 配置如下即可,默认配置不用改 第四步、串口选择 我们这里使…...

优化理论及应用精解【25】

文章目录 优化学习率调度1. 阶梯衰减(Step Decay)2. 余弦退火(Cosine Annealing)3. 多项式衰减(Polynomial Decay)4. 指数衰减(Exponential Decay)总结 梯度弥散效应 参考文献 优化 …...

贝锐蒲公英网盘首发,秒建私有云,高速远程访问

虽然公共网盘带来了不少便利,但是大家对隐私泄露和重要数据泄密的担忧也随之增加。如果想要确保数据安全,自建私有云似乎是一条出路,然而面对搭建私有云的复杂步骤,许多人感到力不从心,NAS设备的成本也往往让人望而却步…...

[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛

&#x1f525;博客介绍&#xff1a; EvLast &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 帮助小白快速入门算法竞赛 &#x1f44d…...

HTML+CSS基础 第二季课堂笔记

一、列表 列表都不是单打独斗的&#xff0c;通常都是一组标签组成 1 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff0c;ul&#xff08;容器级标签&#xff09;&#xff0c;li&#xff08;容器级&#xff09; ul&#xff1a;英文ulordered …...

【Easy RL】Easy RL蘑菇书全书学习笔记

【Easy RL】Easy RL蘑菇书全书学习笔记 第一章 强化学习基础1.1 强化学习概述监督学习强化学习与监督学习的不同之处二者的区别总结强化学习的特征强化学习的优越性预演&#xff08;rollout&#xff09;和 轨迹&#xff08;trajectory&#xff09;的概念端到端的概念深度强化学…...

JavaWeb(二)

Servlet开发技术 [外链图片转存中…(img-Cnu8X2V4-1728026684827)] 简述Servlet的创建过程&#xff1f; package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; …...

【C++】--类和对象(2)

&#x1f44c;个人主页: 起名字真南 &#x1f446;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的默认成员函数2 构造函数3 析构函数4 拷贝构造5 赋值运算符重载5.1 运算符重载5.2 赋值运算符的重载 1 类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;…...

最新BurpSuite2024.9专业中英文开箱即用版下载

1、工具介绍 本版本更新介绍 此版本对 Burp Intruder 进行了重大改进&#xff0c;包括自定义 Bambda HTTP 匹配和替换规则以及对扫描 SOAP 端点的支持。我们还进行了其他改进和错误修复。 Burp Intruder 的精简布局我们对 Burp Intruder 进行了重大升级。现在&#xff0c;您可…...

AI全栈开发实战:基于Cursor的智能代码生成与架构设计

1. 项目概述&#xff1a;当AI代码助手遇上全栈开发最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Cursor-FullStack-AI-App”。光看名字&#xff0c;你大概能猜到它和Cursor这个AI代码编辑器有关&#xff0c;并且涉及全栈应用开发。但它的价值远不止于此。作为一个在前…...

面向开发者的轻量级计划管理工具:配置驱动与命令行优先

1. 项目概述&#xff1a;一个为开发者而生的计划管理工具在软件开发的世界里&#xff0c;我们每天都在与各种“计划”打交道&#xff1a;版本迭代计划、个人学习计划、项目里程碑、甚至是每日的待办清单。然而&#xff0c;一个尴尬的现实是&#xff0c;市面上大多数项目管理工具…...

轻量级Web框架Oli:从核心原理到生产实践

1. 项目概述&#xff1a;一个轻量级、可扩展的Web应用框架最近在梳理手头几个小项目的技术栈时&#xff0c;我又把amrit110/oli这个仓库翻了出来。这是一个在GitHub上由开发者amrit110创建并维护的名为oli的项目。乍一看标题&#xff0c;你可能会有点懵&#xff0c;oli是什么&a…...

长期使用后回顾,Taotoken账单明细对项目财务核算的实际帮助

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用后回顾&#xff0c;Taotoken账单明细对项目财务核算的实际帮助 对于一个持续数月、深度依赖大模型能力的项目组而言&#…...

基于CircuitPython与ItsyBitsy M4打造可编程宏键盘:从硬件到代码全解析

1. 项目概述&#xff1a;打造你的专属输入利器 在键盘这个看似成熟的领域里&#xff0c;我们真的满足于厂商提供的“标准答案”吗&#xff1f;对于视频剪辑师、程序员、设计师或者硬核游戏玩家来说&#xff0c;一套固定的键位布局和功能&#xff0c;往往意味着效率的妥协。真正…...

暗黑破坏神II终极角色编辑器:Diablo Edit2完全使用指南

暗黑破坏神II终极角色编辑器&#xff1a;Diablo Edit2完全使用指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit Diablo Edit2是暗黑破坏神II玩家必备的角色存档编辑器&#xff0c;这款开源工具…...

FPGA驱动ADS1256的ADC精度优化实战(三)

1. 硬件连接优化&#xff1a;从杜邦线到PCB布局的精度跃升 第一次用杜邦线连接FPGA和ADS1256时&#xff0c;我测得的电压误差居然有30mV&#xff0c;这让我差点怀疑人生。后来把万用表直接怼到ADC引脚上&#xff0c;才发现杜邦线本身就有5-8mV的压降波动。这种看似微不足道的干…...

Cadence Allegro铺铜实战:从动态避让到静态优化,我的多层板效率提升心得

Cadence Allegro铺铜实战&#xff1a;从动态避让到静态优化&#xff0c;我的多层板效率提升心得 在高速PCB设计领域&#xff0c;Cadence Allegro作为行业标准工具&#xff0c;其铺铜功能直接影响设计效率与产品质量。当板层超过8层、元件密度突破500pin/inch时&#xff0c;动态…...

手把手教你为AK7739音频芯片移植TDM接口(基于Linux ALSA框架)

手把手教你为AK7739音频芯片移植TDM接口&#xff08;基于Linux ALSA框架&#xff09; 在嵌入式音频系统开发中&#xff0c;TDM&#xff08;Time Division Multiplexing&#xff09;接口因其高带宽和多通道支持能力&#xff0c;成为专业音频设备的首选方案。AK7739作为一款高性能…...

ssm基于Java的试题库管理系统(10030)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...