資料庫基礎-MySql8.0(第三篇)--條件查詢
阿新 • • 發佈:2021-12-06
MySql基礎篇
條件查詢
-- select 結果 from 表名 where 條件 -- 條件 -- =在where語句中表示是否相等 != < > >= <= SELECT * FROM student WHERE score >= 70 SELECT * FROM student WHERE score = 98 SELECT * FROM student WHERE score != 70 SELECT * FROM student WHERE score > 70 -- 邏輯and or not -- and且 between and SELECT * FROM student WHERE score>=60 AND score<=80 SELECT * FROM student WHERE score BETWEEN 60 AND 80 -- or或者 SELECT * FROM student WHERE score>=60 OR score<=80 -- not非 SELECT * FROM student WHERE NOT score<=80 -- 模糊查詢 like -- like '張%' % 表示匹配多個字元 一個下劃線表示匹配一個字元 SELECT * FROM student WHERE NAME LIKE '%三%' SELECT * FROM student WHERE NAME LIKE '張__' SELECT * FROM student WHERE NAME LIKE '張%' -- IN(1,3) 篩選滿足1或者3的 SELECT * FROM student WHERE grade=1 OR grade=3 SELECT * FROM student WHERE grade IN(1,3) -- NOT IN(1,3)篩選不是1或者3的 SELECT * FROM student WHERE grade NOT IN(1,3) -- 查詢電話為空的 SELECT * FROM student WHERE phone IS NULL -- 查詢電話不為空的 SELECT * FROM student WHERE phone IS NOT NULL -- union all 的效率比union的效率高 -- union 將多個查詢結果合併,多個結果的列數必須相同,會去重 SELECT num,NAME,sex FROM student WHERE sex = '男' UNION SELECT num,NAME,sex FROM student WHERE score>60 -- union all 直接將查詢到的資料簡單的連線,不會去重排序 SELECT num,NAME,sex FROM student WHERE sex = '男' UNION ALL SELECT num,NAME,sex FROM student WHERE score>80
排序
-- order by 排序列 ASC/DESC -- asc代表的是升序,desc代表的是降序 SELECT * FROM student ORDER BY num DESC -- 首先按score進行降序排列,有重複項時按num降序排列 SELECT * FROM student ORDER BY score DESC , num DESC -- 男生成績按降序排列 SELECT * FROM student WHERE sex='男' ORDER BY score DESC -- limit 數量限制 -- 顯示3個查詢結果 SELECT * FROM student LIMIT 3; -- 查詢結果 開始位置,數量 SELECT * FROM student LIMIT 0,2; #分頁,第一頁 SELECT * FROM student LIMIT 2,2; #分頁,第二頁 SELECT * FROM student LIMIT 4,2; #分頁,第三頁 -- LIMIT 3 OFFSET 2 從第二個之後的三個查詢結果 SELECT * FROM student LIMIT 3 OFFSET 2; -- 分組查詢 GROUP BY -- 和分組函式一同查詢的欄位要求是group by 後的欄位 SELECT sex,COUNT(*) FROM student GROUP BY sex -- 查詢男生各年級人數 -- 分組前資料過濾 SELECT grade,COUNT(*) FROM student WHERE sex='男' GROUP BY grade -- 查詢那個性別人數大於2 -- 對分組後的資料進行條件過濾 SELECT * FROM (SELECT sex,COUNT(*) c FROM student GROUP BY sex)t WHERE t.c>2 -- having 對分組後結果進行篩選 SELECT sex,COUNT(*) c FROM student GROUP BY sex HAVING c>2