SELECT操作符
# 獲取products表中最貴的商品價格
# DESC 表示降序,ASC表示升序(默認值)
SELECT prod_name, prod_price
FROM products
ORDER BY prod_name
DESC LIMIT 1;
WHERE操作符
#檢索價格小于等于10美元的所有產品
SELECT prod_name, prod_price
FROM products
WHERE prod_price <= 10;
#如果將值與字符串類型的列進行比較,則需要限定引號。用來與數值列進行比較的值不用引號.
#檢索名字為fuces的商品
SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'fuses';
# 檢索價格在5美元和10美元之間或日期在指 定的開始日期和結束日期之間的所有產品
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
# 空值檢測。SELECT語句有一個特殊的WHERE子句,可用來檢查具有NULL值的列。 這個WHERE子句就是IS NULL子句。
# 返回沒有價格(空prod_price字段,不是價格為0)的所有產品
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;
OR AND IN操作符
# 檢索由1002或者1003供應商制造的所有產品的產品名和價格
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
# 選擇由供應商1002或1003制造的且價格都在10美元(含)以上的任何產品
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
# 檢索供應商1002和1003制造的所有產品(IN取合法值的由逗號分隔的清單,全都括在圓括號中)
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
OEDER BY prod_name;
NOT操作符
WHERE子句中用來否定后跟條件的關鍵字
# 列出除1002和1003之外的所有供應 商制造的產品
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
OEDER BY prod_name;
LIKE操作符
百分號通配符
匹配給定位置的0個、1個或多個字符
# 找出所有以詞jet起頭的產品
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE 'jet%';
# 匹配任何位置包含文本anvil的值,而不論它之前或之后出現什么字符
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '%anvil%';
注意:尾空格可能會干擾通配符匹配。例如,在保存詞anvil 時 , 如果它后面有一個或多個空格 ,則子句 WHERE prod_name LIKE '%anvil'將不會匹配它們,因為在最后的l后有多余的字符。解決這個問題的一個簡單的辦法是在搜索模式最后附加一個%。
注意:%不能匹配null值,即WHERE prod_name LIKE '%'不能匹配用值NULL作為產品名的行
下劃線通配符
下劃線的用途與%一樣,但下劃線只匹配單個字符而不是多個字符。
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '_ ton anvil';
可以匹配 prod_name為 1 ton anvil
,2 ton anvil
的商品, 不能匹配為12 ton anvil
的商品。
正則匹配
正則匹配模式沒有完全實現REGEXP的語法,他支持下面這幾種匹配方式
# 匹配連在一起的4位數字
SELECT prod_name, prod_price
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}';
# \表示轉義字符,mysql要用兩個斜杠,一個被用于mysql的解釋器,一個用于REGEXP的解釋器
SELECT prod_name, prod_price
FROM products
WHERE prod_name REGEXP '\([0-9] sticks?\)'
ORDER BY prod_name;
# TNT (1 stick)
# TNT (2 sticks)
計算字段
計算字段類似mongodb中的虛擬字段,后段把拼裝好的字段供前端消費。mysql使用Concat函數拼接字段
# Concat中多個字符串之間用逗號分隔
SELECT Concat(vend_name, '(', vend_country, ')' AS vend_title
FROM vendors
ORDER BY vend_name;
# 結果:Jet Set(USA)
算術計算
SQL支持加減乘除運算
# 輸出中顯示的 expanded_price 列為一個計算字段, 此計算為 quantity*item_price
SELECT prod_id, item_price, quantity, quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;
本文摘自 :https://www.cnblogs.com/