SQL 是一種非常常見但功能強大的工具,它可以幫助從任何數據庫中提取、轉換和加載數據。
數據查詢的本質在于SQL。?
隨著公司和組織發現自己處理的數據量迅速增加,開發人員越來越需要有效地使用數據庫來處理這些數據。
所以想要暗戀數據領域,SQL是必須的!
要掌握這門語言,您需要知道如何使用一些命令,其中大部分命令都基于一些基本命令。
讓我們一起探索最重要和最基本的 SQL 命令!
*對于整篇文章,我使用的是一個包含 5 個不同年齡和眼睛顏色的不同人的自制表格。
01、SELECT and FROM
SQL 中的 SELECT 命令是最簡單但也是最重要的命令之一,每個查詢都以 SELECT 開頭,這就是您從數據庫中獲取數據的方式。
我們總是需要指出從哪里獲取數據,而這正是 FROM 命令發揮作用的地方,它指示我們查詢的表源是什么。
可以在 SQL 中執行的最簡單的命令如下:
SELECT
*
FROM table
這相當于將“Hello World”打印到 JAVA 或 Python/ target=_blank class=infotextkey>Python ;)
現在您可能想知道……那個星號是什么?
如果你是這樣,恭喜!這是一個重要的。它表示您希望從定義的表中選擇所有列。
星號是找出表中數據的好方法,但并不總是推薦用于生產代碼。
這就是為什么最好像下面這樣指定要檢索的每一列。
SELECT
name,
age,
eyes_color
FROM bbdd
結果表將是:
02、DISTINCT
DISTINCT 用于查看列中的唯一值,該命令使用如下:
SELECT DISTINCT
column_1
FROM table
例如,假設我們想看到所有可能的眼睛顏色。在這種情況下,我們將從表中包含的 eyes_colors 列中選擇所有不同的值。
SELECT DISTINCT
eyes_colors
FROM bbdd
結果輸出是:
03、WHERE
每當您想根據特定條件過濾結果時,WHERE 命令就會派上用場。使用此 SQL 命令可以將條件應用于 SELECT 語句。
SELECT
*
FROM table
WHERE column_1 = "Given Condition"
假設我們只想知道藍眼睛的人的名字。所需的查詢將是:
SELECT DISTINCT
*
FROM bbdd
WHERE eyes_color = "Blue"
此查詢現在僅限于藍眼睛的人,對應的輸出是:
我們可以將多個條件與 AND 或 OR 運算符結合起來。
- AND 的作用與它在英語中的作用完全相同:它將另一個條件應用到語句中。
SELECT
*
FROM bbdd
WHERE eyes_color = "Blue"
AND age < 20
相應的輸出包含所有藍眼睛且小于 20 歲的人。
- OR用作多條件測試儀,這意味著將保留滿足任何條件的任何行。
SELECT
*
FROM bbdd
WHERE eyes_color = "Blue"
OR eyes_color = "Green"
在這種情況下,相應的輸出包含所有藍眼睛或綠眼睛的人。
04、ORDER BY
ORDER BY 命令用于按特定順序對結果進行排序,您需要指定列和順序,可以是 ASC 表示升序或 DESC 表示降序。
SELECT
*
FROM table
ORDER BY column1 ASC/DESC
如果未定義 ASC 或 DESC,則排序順序默認為升序。
SELECT
*
FROM bbdd
ORDER BY age DESC
在這種情況下,我們的輸出將從老年人到年輕人排序。
您也可以按多列排序。
SELECT
*
FROM bbdd
ORDER BY eyes_color, age DESC
在第二種情況下,我們獲得了按 eye_colors 和 age 排序的表。順序層次結構將遵循 ORDER BY 命令后每一列出現的順序。
05、聚合函數(Aggregate Functions)
聚合函數對一系列值執行計算并返回單個值,聚合函數的一些例子是:
- COUNT() 返回總行數。通常與 DISTINCT 命令一起使用以計算唯一元素。
- SUM() 返回所有值的總和
- MAX() 返回最大值
- MIN() 返回最小值
- AVG() 返回平均值
假設我們想知道數據集中的人數。在這種情況下,我們只是計算所有人,而不使用任何 group by 命令。
SELECT
COUNT(*)
FROM bbdd
現在假設我們想知道所有可能的眼睛顏色。在這種情況下,我們重復前面的查詢,只計算 eyes_color 列并使用 DISTINCT 命令。
SELECT
COUNT(DISTINCT eyes_color)
FROM bbdd
相應的輸出將是以下一個。
06、GROUP BY
GROUP BY 將按相同的值對數據進行分組。它經常與聚合函數一起使用來匯總特定列或列組的屬性。
現在讓我們想象一下,我們想知道每種不同眼睛顏色有多少人。我們可以重復前面的邏輯查詢,但將結果按 eyes_color 列分組。
SELECT
eyes_color,
COUNT(*)
FROM bbdd
GROUP BY eyes_color
正如我們可以檢查的那樣,相應的輸出包含我們所期望的。
07、UNION
UNION 是一個很棒的命令,因為它允許您將行附加到彼此。與附加匹配列的聯接不同,UNION 可以附加不相關的行,前提是它們具有相同的列數和名稱。
您可以將 UNION 視為組合兩個查詢結果的一種方式。聯合只會返回兩個查詢之間存在唯一行的結果。
SELECT
*
FROM bbdd
WHERE eyes_color = "Blue"
UNION
SELECT
*
FROM bbdd
WHERE eyes_color = "Brown"
UNION
SELECT
*
FROM bbdd
WHERE eyes_color = "Green"
08、AS
AS 命令用于在查詢過程中重命名特定的列或特定的表。它是存在于您正在運行的查詢中的昵稱。
- 重命名列
這就像選擇列并在命令 AS 后寫入所需的新名稱一樣簡單。
SELECT
column_1 AS new_name
FROM bbdd
- 重命名表
在第二種情況下,命令 AS 用于在表聲明后立即為其分配別名。
SELECT
A.age
FROM bbdd as A
您可以使用任何您喜歡的有效名稱,但我強烈建議使用字母表中的字母。在每個列名稱之前,別名都帶有前綴。您可以鍵入一個簡單易記的字母,而不是鍵入一個長表名。
09、CASE WHEN、ELSE 和 THEN
如果您以前使用過任何其他編程語言,這與 if-else 語句非常相似。
實際上,用簡單的英語來說,該命令聽起來有點像這樣:
- CASE WHEN——如果滿足條件。
- THEN——做這個。
- ELSE — 否則做其他事情。
讓我們看一個例子來鞏固這個想法。假設我們要創建一個新列,告訴我們這個人是青少年、年輕人還是成年人。我們可以使用 CASE WHEN 命令從頭開始輕松創建此分段。
SELECT
*,
CASE WHEN age < 20 THEN "teen"
WHEN age >= 20 AND age < 30 THEN "youngster"
ELSE THEN "adult"
END AS type
FROM bbdd
如您所見,前面的查詢創建了三個不同的條件:
- 如果年齡小于 20 歲,則為 teen。
- 如果年齡在 20 到 30 之間,則為 youngster。
- 在任何其他情況下,它都是一個"adult"。
相應的輸出包含每個人及其相應的類型標簽。
10、JOIN
JOIN 命令是管理數據的關鍵命令。它允許我們從不同的源和表中獲取數據并將它們合并在一起。三種最常見的連接是:
- INNER JOIN— 語句僅返回那些具有匹配值的記錄或行,用于檢索出現在兩個表中的數據。
- LEFT JOIN — 按照左表的結構給出兩個表之間匹配行的輸出。如果左表中沒有記錄匹配,它會顯示那些具有空值的記錄。
- CROSS JOIN—返回每個表中行的所有組合。請注意,此連接不需要任何條件來連接兩個表。
讓我們想象一下,現在我們有一個包含每個人的性別的附加表。因此,使用左連接,我們可以將兩個表合并為一個由公共列連接的表,在本例中,按名稱連接。
SELECT
T1.name,
T1.age,
T1.eyes_color,
T2.gender
FROM bbdd AS T1
LEFT JOIN bbdd_gender AS T2
ON T1.name = T2.name
相應的輸出包含合并到單個表中的所有信息。
希望您會發現今天的內容對你理解 SQL 的基礎知識很有幫助,如果您發現有任何問題,請在留言區給我留言,我們進一步學習談論它。