OceanBase 查詢和子查詢概述

2021-06-28 09:23 更新

查詢是指數(shù)據(jù)庫(kù)中用來(lái)獲取數(shù)據(jù)的方式,它可搭配條件限制的子句(如 ?WHERE?),排列順序的子句(如 ?ORDER BY?)等語(yǔ)句來(lái)獲取查詢結(jié)果。子查詢是指嵌套在一個(gè)上層查詢中的查詢。上層的查詢一般被稱為父查詢或外部查詢。子查詢的結(jié)果作為輸入傳遞回父查詢或外部查詢。父查詢將這個(gè)值結(jié)合到計(jì)算中,以便確定最后的輸出。SQL 語(yǔ)言允許多層嵌套查詢,即一個(gè)子查詢中還可以嵌套其他子查詢。同時(shí),子查詢可以出現(xiàn)在 SQL 語(yǔ)句中的各種子句中,比如 ?SELECT? 語(yǔ)句、?FROM? 語(yǔ)句和 ?WHERE? 語(yǔ)句等。下列為 SQL 語(yǔ)句中常見(jiàn)的查詢:

  • 簡(jiǎn)單查詢
  • 層次查詢
  • 集合
  • 連接
  • 子查詢

簡(jiǎn)單查詢(Simple Queries)

簡(jiǎn)單查詢指從 OceanBase 一個(gè)或多個(gè)選擇列表或視圖中檢索一個(gè)或多個(gè)列數(shù)據(jù)的操作,列的數(shù)量以及它們的數(shù)據(jù)類型和長(zhǎng)度由選擇列表的元素確定。而選擇列表指的是 ?SELECT? 關(guān)鍵字之后和 ?FROM? 子句之前的表達(dá)式列表。

層次查詢(Hierarchical Query)

層次查詢是一種具有特殊功能的查詢語(yǔ)句,通過(guò)它能夠?qū)⒎謱訑?shù)據(jù)按照層次關(guān)系展示出來(lái)。分層數(shù)據(jù)是指關(guān)系表中的數(shù)據(jù)之間具有層次關(guān)系。

集合

您可以使用集合運(yùn)算符 ?UNION?、?UNION ALL?、?INTERSECT? 和 ?MINUS? 來(lái)組合多個(gè)查詢。 所有集合運(yùn)算符都具有相同的優(yōu)先級(jí)。如果 ?SQL? 語(yǔ)句包含多個(gè)集合運(yùn)算符,則 OceanBase 從左到右對(duì)它們進(jìn)行判斷,除非括號(hào)中指定了順序。本節(jié)主要講了以下集合運(yùn)算符:

運(yùn)算符

說(shuō)明

UNION

返回兩個(gè)結(jié)果集的并集,并且不重復(fù)。

UNION ALL

返回兩個(gè)結(jié)果集的并集,并且可以重復(fù)。

INTERSECT

返回兩個(gè)結(jié)果集的交集。

MINUS

返回兩個(gè)結(jié)果集的差集。

連接 (Join)

連接(Join)是將來(lái)自兩個(gè)或多個(gè)表、視圖或?qū)嵗晥D的行組合在一起的查詢。 每當(dāng)查詢的 ?FROM? 子句中出現(xiàn)多個(gè)表時(shí),OceanBase 數(shù)據(jù)庫(kù)執(zhí)行連接。 查詢的選擇列表可以從其中任何表中選擇任何列。 如果這兩個(gè)表都有一個(gè)列名,那么您必須用表名限定查詢過(guò)程中對(duì)這些列的所有引用。本節(jié)主要講了以下連接:

連接類型

表示

說(shuō)明

等值連接

Equijoins

包含等式運(yùn)算符連接條件的連接。

自連接

SELF-JOIN

表與其自身的連接。

內(nèi)連接

INNER JOIN

內(nèi)連接,結(jié)果為兩個(gè)連接表中的匹配行的連接。

左(外)連接

LEFT [OUTER] JOIN

結(jié)果包括左表(出現(xiàn)在 JOIN 子句最左邊)中的所有行,不包括右表中的不匹配行。

右(外)連接

RIGHT [OUTER] JOIN

結(jié)果包括右表(出現(xiàn)在 JOIN 子句最右邊)中的所有行,不包括有左表中的不匹配的行。

全(外)連接

FULL [OUTER] JOIN

結(jié)果包括所有連接中的所有行,不論他們是否匹配。

SEMI 連接

SEMI-JOIN

SEMI-JOIN 只能通過(guò)子查詢展開(kāi)得到。

ANTI 連接

ANTI-JOIN

ANTI-JOIN 也只能通過(guò)子查詢展開(kāi)得到。

笛卡兒積

Cartesian Products

當(dāng)兩個(gè)表沒(méi)有連接操作時(shí),對(duì)這兩個(gè)表進(jìn)行查詢得到的數(shù)據(jù)是這兩個(gè)表的笛卡兒積。

子查詢

子查詢指的是 ?SELECT? 查詢語(yǔ)句中嵌套了另一個(gè)或者多個(gè) ?SELECT? 語(yǔ)句,可以返回單行結(jié)果、多行結(jié)果或不返回結(jié)果。?SELECT? 語(yǔ)句的 ?FROM? 子句中的子查詢也稱為內(nèi)聯(lián)視圖。您可以在嵌入式視圖中嵌套任意數(shù)量的子查詢。?SELECT? 語(yǔ)句的 ?WHERE? 子句中的子查詢也稱為嵌套子查詢。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)