常用sql彙總

ABS(X):返回X的絕對值

具體用法:select ABS(-32);


IFNULL(expr1,expr2):如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字符串值

具體用法:

現有學生表(tbl_student)和分數表(score),查詢學生表的所有字段和學生相對於的英語成績(english_score)sql如下:

select stu.*,IFNULL(score.english_score,0) from tbl_student stu,tbl_score score where 1=1 and stu.stu_id=score.stu_id

以上sql中,如果score表中的english_score有值,則IFNULL(score.english_score,0)就顯示english_score,否則,顯示0


coalesce()解釋:返回參數中的第一個非空表達式(從左向右依次類推)

具體用法:

select coalesce(null,2,3); // Return 2

select coalesce(null,null,3); // Return 3

select coalesce(1,2,3); // Return 1

字符串截取函數:left(), right(), substring(), substring_index()。還有 mid(), substr()。其中,mid(), substr() 等價於 substring() 函數,substring() 的功能非常強大和靈活。

具體用法:

substring(str, pos); substring(str, pos, len)

3.1 從字符串的第 4 個字符位置開始取,直到結束。

mysql> select substring(‘example.com’, 4);
±-----------------------------+
| substring(‘example.com’, 4) |
±-----------------------------+
| mple.com |
±-----------------------------+
3.2 從字符串的第 4 個字符位置開始取,只取 2 個字符。

mysql> select substring(‘example.com’, 4, 2);
±--------------------------------+
| substring(‘example.com’, 4, 2) |
±--------------------------------+
| mp |
±--------------------------------+


distinct:關鍵詞 DISTINCT 用於返回唯一不同的值

具體用法:

SELECT DISTINCT Company FROM Orders
結果:
IBM
W3School
Apple
現在,在結果集中,“W3School” 僅被列出了一次。


INNER JOIN 關鍵字

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
註釋:INNER JOIN 與 JOIN 是相同的。


FULL JOIN 關鍵字:只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。
FULL JOIN 關鍵字語法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
註釋:在某些數據庫中, FULL JOIN 稱爲 FULL OUTER JOIN。

原始的表 (用在例子中的):
“Persons” 表:

1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
“Orders” 表:

1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
全連接(FULL JOIN)實例
現在,我們希望列出所有的人,以及他們的定單,以及所有的定單,以及定購它們的人。

您可以使用下面的 SELECT 語句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
結果集:

Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George
34764
FULL JOIN 關鍵字會從左表 (Persons) 和右表 (Orders) 那裏返回所有的行。如果 “Persons” 中的行在表 “Orders” 中沒有匹配,或者如果 “Orders” 中的行在表 “Persons” 中沒有匹配,這些行同樣會列出。


UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。

SQL UNION 語法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
註釋:默認地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。

SQL UNION ALL 語法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

下面的例子中使用的原始表:
Employees_China:
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming
Employees_USA:
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill

使用 UNION 命令
實例
列出所有在中國和美國的不同的僱員名:

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
結果
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill
註釋:這個命令無法列出在中國和美國的所有僱員。在上面的例子中,我們有兩個名字相同的僱員,他們當中只有一個人被列出來了。UNION 命令只會選取不同的值。


FIRST() /LAST() 函數函數返回指定的字段中第一個/最後一個記錄的值。

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders

HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。

SQL HAVING 實例
我們擁有下面這個 “Orders” 表:

1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
現在,我們希望查找訂單總金額少於 2000 的客戶。

我們使用如下 SQL 語句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

MID 函數用於從文本字段中提取字符。

SQL MID() 語法
SELECT MID(column_name,start[,length]) FROM table_name
column_name 必需。要提取字符的字段。
start 必需。規定開始位置(起始值是 1)。
length 可選。要返回的字符數。如果省略,則 MID() 函數返回剩餘文本。
SQL MID() 實例
我們擁有下面這個 “Persons” 表:

1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
現在,我們希望從 “City” 列中提取前 3 個字符。

我們使用如下 SQL 語句:

SELECT MID(City,1,3) as SmallCity FROM Persons
結果集類似這樣:

Lon
New
Bei

ROUND 函數用於把數值字段舍入爲指定的小數位數。

SQL ROUND() 語法
SELECT ROUND(column_name,decimals) FROM table_name
column_name 必需。要舍入的字段。
decimals 必需。規定要返回的小數位數。
SQL ROUND() 實例
我們擁有下面這個 “Products” 表:

1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
現在,我們希望把名稱和價格舍入爲最接近的整數。

我們使用如下 SQL 語句:

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
結果集類似這樣:

gold 32
silver 12
copper 7

FORMAT 函數用於對字段的顯示進行格式化

SQL FORMAT() 語法
SELECT FORMAT(column_name,format) FROM table_name
column_name 必需。要格式化的字段。
format 必需。規定格式。
SQL FORMAT() 實例
我們擁有下面這個 “Products” 表:

1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
現在,我們希望顯示每天日期所對應的名稱和價格(日期的顯示格式是 “YYYY-MM-DD”)。

我們使用如下 SQL 語句:

SELECT ProductName, UnitPrice, FORMAT(Now(),‘YYYY-MM-DD’) as PerDate
FROM Products
結果集類似這樣:

gold 32.35 12/29/2008
silver 11.56 12/29/2008
copper 6.85 12/29/2008

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