Navicat 博客

SQL 反连接 2024 年 10 月 21 日,由 Robert Gravelle 撰写

最强大的 SQL 功能之一是 JOIN 操作,它提供了一种优雅而简单的方法,将一个表中的每一条记录与另一个表中的每一条记录结合起来。不过,有时我们可能想从一个表中找到另一个表中没有的值。正如我们将在今天的博客文章中看到的,通过包含一个谓词来连接表,连接也可以用于此目的。这种连接被称为反连接,对于回答各种与业务相关的问题很有帮助,例如:

  • 哪些客户没有下单?
  • 哪些员工还没有被分配到部门?
  • 本周哪些销售人员没有达成交易?

本期博客将以 PostgreSQL dvdrental 数据库 为例,介绍反连接的类型以及如何编写反连接。 我们将在 Navicat Premium Lite 17 中编写和执行查询。

SQL 半连接 2024 年 10 月 15 日,由 Robert Gravelle 撰写

大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型,但还有一些连接类型是基于关系代数运算符的,在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型:半连接(Semi Join)。下周我们将讨论与之类似的反连接。为了更好地了解这些连接类型是如何工作的,我们将在 Navicat Premium Lite 17 中对 PostgreSQL dvdrental 数据库 执行一些 SELECT 查询。这是一个基于 MySQL Sakila 样本数据库的免费数据库。

使用 Having 子句筛选聚合字段 2024 年 10 月 8 日,由 Robert Gravelle 撰写

如果你编写 SQL 查询已有一段时间,那么你可能对 WHERE 子句非常熟悉。虽然它对聚合字段没有影响,但有一种方法可以根据聚合值过滤记录,那就是使用 HAVING 子句。本博客将介绍它的工作原理,并提供几个在 SELECT 查询中使用它的示例。

使用 EXISTS 编写 SELECT 查询 2024 年 9 月 26 日,由 Robert Gravelle 撰写

基于 SQL 中的 EXISTS 运算符为我们提供了一种基于其他数据是否存在(或不存在)来检索数据的简便方法。更具体地说,它是一个逻辑运算符,用于评估子查询的结果,并返回一个布尔值,该值指示是否返回了行。尽管 IN 运算符可用于类似的目的,但需要注意它们之间的一些差异。今天的博客将介绍如何使用 EXISTS 运算符的几个示例,并提供一些指导,说明何时应使用 EXISTS 而不是 IN。

了解通用 SQL 语法 2024 年 9 月 12 日,由 Robert Gravelle 撰写

上世纪 90 年代中期,Sun Microsystems 公司推出了一种“一次编写,[随处]运行”的编程语言。这种语言就是 Java。尽管时至今日它仍然是最受欢迎的编程语言之一,但其口号却显得有些过于乐观。Java 语言的发展历程与 SQL 有着诸多相似之处。Java 也可以几乎不做修改或只稍作修改就能从一个数据库移植到另一个数据库,甚至跨操作系统运行。至少,这是我们的梦想。但在现实世界中,生产级代码为了在新环境中运行往往需要进行一些调整。本文将概述 SQL 语法在不同数据库供应商之间可能存在的差异的一些原因。

Navicat 文章
频道条目
分享
文章归档