當前位置:首頁 > IT技術 > 數據庫 > 正文

mysql數據檢索和過濾
2021-10-07 11:17:13

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/

開通會員,享受整站包年服務立即開通 >