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返回。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聚类分析 | IPOA优化FCM模糊C均值聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 (多图聚类)IPOA优化FCM模糊C均值聚类优化算法,matlab代码,超多图 基于改进的鹈鹕优化算法(IPOA)优化FCM模糊C均值聚类优化,matlab代码,直接运行…

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP:10.129.157.49 分配IP:10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

窗口售票系统1.0版本

本窗口售票系统实现了三个售票窗口的随机售票,实现随机到某一个窗口买票,总票余量都会减少,即三个窗口共享同一个票余量。若票余量小于一次性购票量,则提示报错;若车票售罄,则代码结束运行。 代码实现&…

用户和组管理

用户管理 用户管理包括创建用户、修改用户属性、删除用户等操作。 创建用户 使用 useradd 命令可以创建新用户。 格式:useradd [选项] username 步骤1:创建新用户 useradd tom 步骤 2: 设置用户密码 新用户创建后,需要设置一个密码才能…

需求8——通过一个小需求来体会AI如何帮助改bug

这篇文章,我们通过一个简单的例子来说明,平时在写需求的时候,我们可以在什么时候用AI来帮助我们写代码。 首先来看一下这个需求:系统中某个用户使用的时候出现了bug,通过手机建立临时任务报错,没有办法新增…

ElasticSearch备考 -- Update by query Reindex

一、题目 有个索引task,里面的文档长这样 现在需要添加一个字段all,这个字段的值是以下 a、b、c、d字段的值连在一起 二、思考 需要把四个字段拼接到一起,组成一个新的字段,这个就需要脚本, 这里有两种方案&#xff…

ES(Elasticsearch)SSL集群部署

8.x后ES不在需要自行准备JDK环境,部署的服务包含ES、Kibana、Logstash,使用二进制方式部署,为了提高安全性,加密logstash、kibana及其他客户端到ES间的通信。 1、准备工作 1.1、 es无法使用root用户启动 useradd -m -s /bin/bas…

论文阅读:Split-Aperture 2-in-1 Computational Cameras (二)

Split-Aperture 2-in-1 Computational Cameras (一) Coded Optics for High Dynamic Range Imaging 接下来,文章介绍了二合一相机在几种场景下的应用,首先是高动态范围成像,现有的快照高动态范围(HDR)成像工作已经证…

Kubernetes-Kind篇-01-kind搭建测试集群

1、Kind 介绍 官方文档地址:https://kind.sigs.k8s.io/ github仓库地址:https://github.com/kubernetes-sigs/kind 国内镜像仓库地址:https://gitcode.com/gh_mirrors/ki/kind/overview kind 是一种使用 Docker 容器 nodes 运行本地 Kubern…

HI6338 (DIP-8内置75W方案)

Hi6338 combines a dedicated current mode PWM controller with integrated high voltage power MOSFET.Vcc low startup current and low operating current contribute to a reliable power on startup design with Hi6338. the IC operates in Extended ‘burst mode’ to …

Nginx请求头丢失,引发出来的问题

1.问题 新增的几个 header 参数是这样的: api_key_idapi_key_value 我配置有2层nginx转发,从机器A到机器B再到目标服务,遇到一个接口请求需要在header中传递api_key_id和api_key_value这2个参数,但是在EC2机器上直接curl目标服…

更美观的HTTP性能监测工具:httpstat

reorx/httpstat是一个旨在提供更美观和详细HTTP请求统计信息的cURL命令行工具,它能够帮助开发者和运维人员深入理解HTTP请求的性能和状态。 1. 基本概述 项目地址:https://github.com/reorx/httpstat语言:该工具主要是以Python编写&#xff…

机器人末端的负载辨识

关节处的摩擦力变小了,导致系统的参数辨识精度会变高,因为动力学方程中的摩擦力项占的比例会变小。 为什么要有一个负载的参数辨识,因为对于整个系统来说,除了负载哈,其他关节都是不变的,出厂时都设置好了&…

金蝶云星空个别字段无法录入异常处理

用户反馈,在录入单据时,第一条数据能录入数量,新增第二条时就无法录入。 用户反馈截图如下: 我登录自己的账号查看,并未发现相同的问题,同时用户也说已经退出重新登录过,问题依旧。 到现场看用…

使用RESTful API构建Web应用程序

开始正式介绍 RESTful API 之前,我们需要首先搞清:API 到底是什么? API(Application Programming Interface) 翻译过来是应用程序编程接口的意思。 我们在进行后端开发的时候,主要的工作就是为前端或者其…

LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy

案例分享:在给定的Shape内填充dummy 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3 from shapely.geometry import Polygon, MultiPolygon import numpy as np import matplotlib.pyplot as pltclass CellFilledWithCon…

简单的网络爬虫爬取视频

示例代码爬取一个周杰伦相关视频 import requests# 自己想下载的视频链接 video_url https://vdept3.bdstatic.com/mda-qg8cnf4bw5x6bjs5/cae_h264/1720516251158906693/mda-qg8cnf4bw5x6bjs5.mp4?v_from_shkapp-haokan-hbf&auth_key1728497433-0-0-4a32e13f751e04754e4…

电子科技大学高级算法设计与分析-MaxFlow网络流基础知识梳理

MaxFlow网络流 1 网络流基础概念 source:源点 sink:终点 Flow:流量 capacity:容量 Residual:残量 Residual Network:残量网络 Augmenting path:增广路径,表示从源点 s 到终点 t 不包…

爬虫prc技术----小红书爬取解决xs

知识星球:知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具知识星球是创作者连接铁杆粉丝,实现知识变现的工具。任何从事创作或艺术的人,例如艺术家、工匠、教师、学术研究、科普等,只要能获得一…

【redis-06】redis的stream流实现消息中间件

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…