国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北票市| 威远县| 西吉县| 莲花县| 乐陵市| 高阳县| 邢台市| 双鸭山市| 泸水县| 长子县| 鹤岗市| 新河县| 富蕴县| 龙江县| 渭南市| 临桂县| 大丰市| 安国市| 宜丰县| 通道| 遂溪县| 山东| 枣阳市| 德令哈市| 常山县| 叙永县| 巫山县| 资阳市| 乌什县| 宁陕县| 健康| 丰都县| 临桂县| 石狮市| 房产| 水城县| 江达县| 桐庐县| 濉溪县| 美姑县| 武川县|