2.1 SQL簡介

如果您有一個數據庫 (DB),並且其中有一個包含一些數據的表,那麼最常見的任務就是在該表中查找某些數據。這就是 40 年前發明 SQL 的目的。

SQL 代表結構化查詢語言

最簡單的 SQL 查詢如下所示:

SELECT column1, column2, … columnN FROM table

假設您有一個員工表,其中包含您的初創公司員工的列表:

ID 姓名 職業 薪水 年齡 加入日期
1個 伊万諾夫伊万 程序員 100,000 25 2012-06-30
2個 彼得羅夫彼得 程序員 80,000 23 2013-08-12
3個 伊万諾夫謝爾蓋 測試儀 40,000 三十 2014-01-01
4個 拉比諾維奇·莫伊沙 導演 200,000 35 2015-05-12
5個 基連科阿納斯塔西婭 辦公室主管 40,000 25 2015-10-10
6個 瓦斯卡 1,000 3個 2018-01-01

你想寫一個查詢來顯示employee names它們salaries,那麼你需要寫一個查詢:

SELECT name, salary FROM employee

你會得到查詢結果:

姓名 薪水
伊万諾夫伊万 100,000
彼得羅夫彼得 80,000
伊万諾夫謝爾蓋 40,000
拉比諾維奇·莫伊沙 200,000
基連科阿納斯塔西婭 40,000
瓦斯卡 1,000

如果你想顯示你的表的所有列,那麼你可以簡單地寫一個星號而不是列出所有列的名稱。例子:

SELECT * FROM employee

你會得到查詢結果:

ID 姓名 職業 薪水 年齡 加入日期
1個 伊万諾夫伊万 程序員 100,000 25 2012-06-30
2個 彼得羅夫彼得 程序員 80,000 23 2013-08-12
3個 伊万諾夫謝爾蓋 測試儀 40,000 三十 2014-01-01
4個 拉比諾維奇·莫伊沙 導演 200,000 35 2015-05-12
5個 基連科阿納斯塔西婭 辦公室主管 40,000 25 2015-10-10
6個 瓦斯卡 1,000 3個 2018-01-01

2.2 SQL查詢高級視圖

SQL 語言被設計為盡可能對用戶友好。

首先,請求文本的大小寫無關緊要。您可以編寫 SELECT、Select 或 select,一切都會起作用。其次,不以任何方式考慮換行符。DBMS 仍會將查詢變成一個長字符串,因此您可以隨意編寫它。

正如您可能已經猜到的那樣,SELECT 和 FROM 關鍵字不受限制。否則就不會圍繞 SQL 進行如此多的討論。SQL 查詢的擴展視圖如下所示:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting

借助關鍵字,WHERE您可以為所選行設置條件/過濾器。

示例 1。讓我們編寫一個查詢,選擇職業為“程序員”的員工:

SELECT * FROM employee WHERE occupation = 'Programmer'

我們得到以下查詢結果:

ID 姓名 職業 薪水 年齡 加入日期
1個 伊万諾夫伊万 程序員 100,000 25 2012-06-30
2個 彼得羅夫彼得 程序員 80,000 23 2013-08-12

正如您所看到的,作為查詢執行的結果,只顯示員工的職業稱為“Programmer”的行。

關鍵字GROUP BYORDER BY我們HAVING將在下一節課中介紹。在本文中,我們將分析更多包含 WHERE 一詞的示例。

示例 2。現在讓我們編寫一個查詢,向我們顯示所有薪水大於 100K 的員工。這是它的樣子:

SELECT * FROM employee WHERE salary > 100000

我們得到如下查詢結果:

ID 姓名 職業 薪水 年齡 加入日期
4個 拉比諾維奇·莫伊沙 導演 200,000 35 2015-05-12

示例 3。現在讓我們嘗試一些更困難的事情。如何顯示2015年錄用的所有員工?像這樣:

SELECT * FROM employee WHERE YEAR(join_date) = 2015

我們得到如下查詢結果:

ID 姓名 職業 薪水 年齡 加入日期
4個 拉比諾維奇·莫伊沙 導演 200,000 35 2015-05-12
5個 基連科阿納斯塔西婭 辦公室主管 40,000 25 2015-10-10

在此查詢中,我們使用了一個特殊函數YEAR(),該函數允許我們從日期中獲取年份,然後將日期的年份與數字 2015 進行比較。

2.3 SQL查詢中的註釋

更重要的一點是 SQL 查詢中的註釋。評論是一個非常有用的東西。首先,您可以在其中寫下解釋和/或您的想法。其次,借助註釋,您可以禁用損壞的代碼。或者註釋掉舊版本的代碼。

SQL 和 Java 一樣,也有單行和多行註釋。此外,多行註釋看起來就像在 Java 中一樣。它的外觀:


/*
 	comment text
 	comment text
 	comment text
*/
        

當然也可以單行使用。例子:


/*comment text*/
        

還有一種註釋是“從行首到行尾”,類似Java的“//”。只有在 SQL 中你需要寫兩個減號和一個空格。對這樣一條評論的普遍看法:

-- comment text

例子:


        SELECT * FROM employee -- WHERE YEAR(join_date) = 2015 
        

在上面的例子中,我們註釋掉了查詢條件,所以MySQL只會執行查詢:

SELECT * FROM employee

2.4 SQL發音

如果你和國外客戶交流或者通過美國公司的在線面試,那麼你可能會被問及你對續集語言的體驗。你會誠實地說你沒有和他一起工作,並立即不及格面試。

問題是,SQL 語言最初稱為 SEQUEL,發音像續集(ˈsēkwəl),因此在美國和其他英語語言來源中,您經常聽到的不是“escuel”,而是“sequel”。SQL寫好了,續集看了。這就是這樣一個歷史悖論。