SQL學習筆記2:運算符、函數與子查詢

作者:xxw9485
時間:2018/1/23
來源:W3Cschool的SQL微課


WHERE 語句

WHERE 語句

WHERE 子句用於提取那些滿足指定標準的記錄。語法如下:

SELECT column_list 
FROM table_name
WHERE condition;

下面的 SQL 語句從 “customers” 表中選擇 ID 等於 “6” 的記錄:

SELECT * FROM customers 
WHERE ID = 6;

SQL 運算符

比較運算符和邏輯運算符在 WHERE 子句中用於篩選要選擇的數據。
WHERE 子句中可以使用以下運算符:

運算符 描述
= 等於
<> 不等於,等價於!=
> 大於
< 小於
=
大於等於
<= 小於等於
between 在某個範圍內
like 搜索某種模式的值
in 指定針對某個列的多個可能值

例:下面的 SQL 語句列出了 ID 不等於 “8” 的所有記錄。

SELECT * FROM customers
WHERE ID <> 8;

BETWEEN 運算符

BETWEEN 操作符選取介於兩個值之間的數據範圍內的值。這些值可以是數值、文本或者日期。語法如下:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

例:下面的 SQL 語句選擇 ID 介於 2 和 6 之間的所有記錄:

SELECT * FROM customers 
WHERE ID BETWEEN 2 AND 6;

文本值

SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。
例:下面的 SQL 語句選擇城市等於 “New York” 的所有記錄。

SELECT ID, FirstName, LastName, City 
FROM customers
WHERE City = 'New York';

AND,OR 運算符

邏輯運算符

邏輯運算符可用於組合兩個布爾值,並返回 true,false 或 null 的結果。
包括以下運算符:

運算符 描述
and 如果兩個表達式結果都爲 true,則爲 true
or 如果任一表達式結果爲 true,則爲 true
in 如果操作數等於表達式列表之一,則爲 true
not 如果表達式結果爲 true,則返回 false;否則如果表達式的結果爲 false,則返回 true。

- 如果要選擇滿足所有給定條件的行,請使用邏輯運算符 AND。
例:下面的 SQL 語句從 “customers” 表中選擇年齡大於等於 “20” 且小於等於 “30” 的所有記錄:

SELECT ID, FirstName, LastName, Age
FROM customers
WHERE Age >= 20 AND Age <= 30;

OR 運算符

  • 如果要選擇滿足至少一個給定條件的行,則可以使用邏輯 “OR” 運算符。
    例:下面的 SQL 語句從 “customers” 表中選擇城市爲 “New York” 或者 “Los Angeles” 的所有客戶:
SELECT * FROM customers 
WHERE City = 'New York' OR City = 'Los Angeles';

結合 AND & OR

  • 如果結合這些條件,則使用圓括號來組成複雜的表達式。
    例:下面的 SQL 語句從 “customers” 表中選擇城市爲 “Chicago” 且年齡爲 “25” 或 “28” 的所有客戶:
SELECT * FROM customers
WHERE City = 'Chicago'
AND (Age=25 OR Age=28);

IN,NOT IN 運算符

IN 運算符

  • 如果你需要比較具有多個值的列時,可以使用 IN 運算符。
    例:需要選擇來自紐約,洛杉磯和芝加哥的所有客戶。
SELECT * FROM customers 
WHERE City IN ('New York', 'Los Angeles', 'Chicago');
#上面等價於下面
SELECT * FROM customers 
WHERE City = 'New York'
OR City = 'Los Angeles'
OR City = 'Chicago';

NOT IN 運算符

NOT IN 運算符允許你從結果集中排除特定值的列表。
- 如果我們在之前的查詢中的 IN 之前添加 NOT 關鍵字,那麼居住在這些城市的客戶將被排除在外:

SELECT * FROM customers 
WHERE City NOT IN ('New York', 'Los Angeles', 'Chicago');

自定義列

CONCAT() 函數

CONCAT() 函數用於連接兩個或多個文本值,並返回連接字符串。
例:我們將 FirstName 與 City 連接起來,用逗號分隔:

SELECT CONCAT(FirstName, ', ' , City) FROM customers;

輸出結果爲:

CONCAT(FirstName, ‘, ’ , City)
John, New York
David, Los Angeles

AS 關鍵字

使用 AS 關鍵字可以自定義列的名稱。例:

SELECT CONCAT(FirstName,', ', City) AS new_column 
FROM customers;

輸出結果爲:

new_column
John, New York
David, Los Angeles

算術運算符

算術運算符對數值操作數執行算術運算。算術運算符包括加法(+),減法(-),乘法(*)和除法(/)。
例:爲每位員工的工資增加 500,並選取結果。

SELECT ID, FirstName, LastName, Salary+500 AS Salary
FROM employees;

函數

UPPER() 函數

UPPER() 函數將指定字符串中的所有字母轉換爲大寫。
LOWER() 函數將字符串轉換爲小寫。
例:下面的 SQL 語句將所有 “LastName” 轉換爲大寫:

SELECT FirstName, UPPER(LastName) AS LastName 
FROM employees;

注:如果字符串中的字符不是字母,則此函數對它們沒有影響。

SQRT() 和 AVG() 函數

SQRT() 函數返回參數中給定值的平方根。
例:下面的 SQL 語句顯示計算每個員工工資的平方根:

SELECT Salary, SQRT(Salary) 
FROM employees;

類似地,AVG() 函數返回數值列的平均值:

SELECT AVG(Salary) FROM employees;

SUM() 函數

SUM() 函數返回數值列的總數。
例:我們要獲取 employees 表中所有工資的總和:

SELECT SUM(Salary) FROM employees;

子查詢

子查詢

當一個查詢是另一個查詢的條件時,稱之爲子查詢。
例:我們想要知道所有工資大於平均值的員工名單。
- 首先,我們計算出所有工資的平均值:

SELECT AVG(Salary) FROM employees;
  • 然後再使用 WHERE 來列出大於該平均值的工資。
SELECT FirstName, Salary FROM employees 
WHERE  Salary > 3450
ORDER BY Salary DESC;

寫成子查詢形式爲:

SELECT FirstName, Salary FROM employees 
WHERE  Salary > (SELECT AVG(Salary) FROM employees) 
ORDER BY Salary DESC;

注:
1. DESC 關鍵字按降序排列結果,ASC 關鍵字按升序排列結果。
1. 將子查詢括在括號中,且子查詢結尾處沒有分號“;”。

LIKE 和 MIN

LIKE 操作符

LIKE 操作符用於在 WHERE 子句中搜索列中的指定模式。語法爲:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

SQL 的模式匹配允許你使用 “_” 匹配任何單個字符,而使用 “%” 匹配任意數目字符(包括零個字符)。
- 例:下面的 SQL 語句選擇 FirstName 以字母 “D” 開頭的所有員工:

SELECT * FROM employees 
WHERE FirstName LIKE 'D%';
  • 例:下面的 SQL 語句選擇 LastName 以 “s” 爲結尾的所有員工:
SELECT * FROM employees 
WHERE LastName LIKE '%s';

MIN() 函數

MIN() 函數返回指定列的最小值。
例如,我們想要知道員工的最低工資時,可以通過下面語句查詢:

SELECT MIN(Salary) AS Salary FROM employees;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章