1. 程式人生 > 其它 >資料庫基礎-MySql8.0(第三篇)--條件查詢

資料庫基礎-MySql8.0(第三篇)--條件查詢

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