国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL備忘之查詢篇

2024-07-24 13:00:01
字體:
來源:轉載
供稿:網友

最好的教材當然是官方文檔: https://dev.MySQL.com/doc/refman/5.7/en/ 作為一個至今依然被選修英文的英文盲覺得文檔寫得還是很通俗易懂,只要你夠耐心。 參考:《MySQL必知必會》

distinct

DISTINCT關鍵字應用于所有列而不僅僅是它的前置列。

SELECT DISTINCT vend_id,PRod_price from product.products# 返回vend_id,prod_price組合不同的值SELECT DISTINCT vend_id,DISTINCT prod_price from product.products# 錯誤的語法,也是不符合邏輯的,比如對于(‘aa’,1),(‘aa’,2),'('bb',1),(‘bb’,2)倘若該句得以執行的話,那么('aa',1),('bb',2)或(‘aa’,2),(‘bb’,1),那就具有二義性了

limit

限定返回的結果的數目 limit n 返回前n行 limit m,n 返回從行m開始的n行數據 limit n offset m 返回從行m開始的n行數據

desc

如果想在多個列上均進行降序排列,對每列都需要指定DESC。

SELECT * FROM products ORDER BY prod_price DESC,prod_name# 返回結果按照按prod_price降序排列,prod_price相同時按prod_name升序(默認是ASC)排列SELECT * FROM products ORDER BY prod_price DESC,prod_name DESC# 返回結果按照按prod_price降序排列,prod_price相同時按prod_name降序排列

where

where子句操作符

=, <>/!=, <, <=, >, >=, between……and……,IS NULL

組合where子句

AND, OR, IN, NOT

select * from products where vend_id != 1003;# select * from products where vend_id != '1003'; # 單引號用來限定字符串。如果將值與串類型的列進行比較,則需要限定引號。select * from products where vend_id != 1003 and prod_name='fuse';

in嵌套子查詢

select cust_name,cust_contact from customers where cust_id IN (select cust_id from orders where order_num IN (select order_num from orderitems where prod_id ='TNT2'));

tips 復雜性隨著嵌套程度的深入而增加,因此: 首先,建立和測試內層查詢 然后,用硬編碼數據建立和測試外層查詢 接著,確認正確后嵌入子查詢中仔測試這個嵌套子查詢正確性 最后,每增加一個子查詢都重復上述步驟直到構建完畢。

NULL

null查詢是 IS NULL,而不是=NULL或=’NULL’因為NULL具有特殊含義,數據庫不知道它們是否匹配(比如,where,通配符”%”),所以在匹配過濾或不匹配過濾時不返回它們。 因此,在過濾數據時,一定要驗證返回數據中確實給出了被過濾列具有NULL的行。如果分組(group by)列中具有NULL值,則將NULL值作為一個分組返回。如果表中具有多行NULL值,將它們分為一組。

like vs. regexp

products表 這里寫圖片描述

like匹配整個列,regexp在列值內匹配select * from products where prod_name like '1000';#沒有返回結果select * from products where prod_name REGEXP '1000';#返回結果見下圖

這里寫圖片描述

regexp可以匹配列值,使用^和$定位符即可select * from products where prod_name REGEXP '1000$';select * from products where prod_name LIKE '%1000';#返回結果同樣select * from products where prod_name REGEXP '^1000';select * from products where prod_name LIKE '1000%';#返回結果同樣不要過度使用like或者regexp 如果其他操作符能夠達到相同的目的,應該使用其他操作符不要將其置于搜索模式的開始處,會降低搜索速度

union 組合查詢

規則

union中每個查詢必須包含相同的列,表達式或聚集函數,各個列不需要以相同的順序出現列數據類型必須兼容,類型不必完全相同,但必須是DBMS能夠隱含地轉換的類型

select子句的順序

子句 說明 是否必須使用
select 返回的列或者表達式 Yes
from 檢索的表 僅從表選擇數據時使用
where 行級過濾 No
group by 分組 No
having 組級過濾 No
order by 排序順序 No
Limit 限制檢索的行數 No

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 公主岭市| 藁城市| 利川市| 出国| 嘉祥县| 绍兴县| 临夏县| 台江县| 扶沟县| 荔浦县| 治多县| 南召县| 镇原县| 宜黄县| 东阳市| 永宁县| 红安县| 芮城县| 宝兴县| 太保市| 闸北区| 郎溪县| 永川市| 浪卡子县| 龙口市| 拉孜县| 洪雅县| 六盘水市| 贵定县| 日照市| 信丰县| 琼结县| 枞阳县| 柏乡县| 济阳县| 吴川市| 屯昌县| 景洪市| 开江县| 东宁县|