當(dāng)前位置:首頁 > IT技術(shù) > 數(shù)據(jù)庫 > 正文

mysql數(shù)據(jù)檢索和過濾
2021-10-07 11:17:13

SELECT操作符

# 獲取products表中最貴的商品價(jià)格
# DESC 表示降序,ASC表示升序(默認(rèn)值)
SELECT prod_name, prod_price
FROM products
ORDER BY prod_name 
DESC LIMIT 1;

WHERE操作符

#檢索價(jià)格小于等于10美元的所有產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE prod_price <= 10;

#如果將值與字符串類型的列進(jìn)行比較,則需要限定引號(hào)。用來與數(shù)值列進(jìn)行比較的值不用引號(hào).
#檢索名字為fuces的商品
SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'fuses';

# 檢索價(jià)格在5美元和10美元之間或日期在指 定的開始日期和結(jié)束日期之間的所有產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;

# 空值檢測(cè)。SELECT語句有一個(gè)特殊的WHERE子句,可用來檢查具有NULL值的列。 這個(gè)WHERE子句就是IS NULL子句。
# 返回沒有價(jià)格(空prod_price字段,不是價(jià)格為0)的所有產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;

OR AND IN操作符

# 檢索由1002或者1003供應(yīng)商制造的所有產(chǎn)品的產(chǎn)品名和價(jià)格
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;


# 選擇由供應(yīng)商1002或1003制造的且價(jià)格都在10美元(含)以上的任何產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;


# 檢索供應(yīng)商1002和1003制造的所有產(chǎn)品(IN取合法值的由逗號(hào)分隔的清單,全都括在圓括號(hào)中)
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
OEDER BY prod_name;

NOT操作符

WHERE子句中用來否定后跟條件的關(guān)鍵字

# 列出除1002和1003之外的所有供應(yīng) 商制造的產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
OEDER BY prod_name;

LIKE操作符

百分號(hào)通配符

匹配給定位置的0個(gè)、1個(gè)或多個(gè)字符

# 找出所有以詞jet起頭的產(chǎn)品
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE 'jet%';

# 匹配任何位置包含文本anvil的值,而不論它之前或之后出現(xiàn)什么字符
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '%anvil%';

注意:尾空格可能會(huì)干擾通配符匹配。例如,在保存詞anvil 時(shí) , 如果它后面有一個(gè)或多個(gè)空格 ,則子句 WHERE prod_name LIKE '%anvil'將不會(huì)匹配它們,因?yàn)樵谧詈蟮膌后有多余的字符。解決這個(gè)問題的一個(gè)簡(jiǎn)單的辦法是在搜索模式最后附加一個(gè)%。

注意:%不能匹配null值,即WHERE prod_name LIKE '%'不能匹配用值NULL作為產(chǎn)品名的行

下劃線通配符

下劃線的用途與%一樣,但下劃線只匹配單個(gè)字符而不是多個(gè)字符。

SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '_ ton anvil';

可以匹配 prod_name為 1 ton anvil,2 ton anvil的商品, 不能匹配為12 ton anvil的商品。

正則匹配

正則匹配模式?jīng)]有完全實(shí)現(xiàn)REGEXP的語法,他支持下面這幾種匹配方式

# 匹配連在一起的4位數(shù)字
SELECT prod_name, prod_price
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}';

# \表示轉(zhuǎn)義字符,mysql要用兩個(gè)斜杠,一個(gè)被用于mysql的解釋器,一個(gè)用于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)

計(jì)算字段

計(jì)算字段類似mongodb中的虛擬字段,后段把拼裝好的字段供前端消費(fèi)。mysql使用Concat函數(shù)拼接字段

# Concat中多個(gè)字符串之間用逗號(hào)分隔
SELECT Concat(vend_name, '(', vend_country, ')' AS vend_title
FROM vendors
ORDER BY vend_name;
#  結(jié)果:Jet Set(USA)

算術(shù)計(jì)算

SQL支持加減乘除運(yùn)算

# 輸出中顯示的 expanded_price 列為一個(gè)計(jì)算字段, 此計(jì)算為 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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >