一蝴悉、數據篩選條件
- 使用where子句對表中的數據篩選辫红,結果為true的行會出現在結果集中
- 語法如下:
select * from 表名 where 條件;
1.比較運算符
- 等于=
- 大于>
- 大于等于>=
- 小于<
- 小于等于<=
- 不等于!=或<>
例如:
- 查詢編號大于3的學生
select * from students where id>3;
- 查詢編號不大于4的科目
select * from subjects where id<=4;
- 查詢姓名不是“黃蓉”的學生
select * from students where sname!='黃蓉';
- 查詢沒被刪除的學生
select * from students where isdelete=0;
2.邏輯運算符
- and
- or
- not
例如:
- 查詢編號大于3的女同學
select * from students where id>3 and gender=0;
- 查詢編號小于4或沒被刪除的學生
select * from students where id<4 or isdelete=0;
3.模糊查詢
- like
- %表示任意多個任意字符
- _表示一個任意字符
例如:
- 查詢姓黃的學生
select * from students where sname like '黃%';
- 查詢姓黃并且名字是一個字的學生
select * from students where sname like '黃_';
- 查詢姓黃或叫靖的學生
select * from students where sname like '黃%' or sname like '%靖%';
4.范圍查詢
-
in表示在一個非連續(xù)的范圍內
例如:
- 查詢編號是1或3或8的學生
select * from students where id in(1,3,8);
-
between ... and ...表示在一個連續(xù)的范圍內
例如:
- 查詢學生是3至8的學生
select * from students where id between 3 and 8;
- 查詢學生是3至8的男生
select * from students where id between 3 and 8 and gender=1;
5.空判斷
- 注意:null與''是不同的
- 判空is null
例如:
- 查詢沒有填寫地址的學生
select * from students where hometown is null;
-
判非空is not null
例如:
- 查詢填寫了地址的學生
select * from students where hometown is not null;
- 查詢填寫了地址的女生
select * from students where hometown is not null and gender=0;
6.優(yōu)先級
- 小括號,not被济,比較運算符救赐,邏輯運算符
- and比or先運算,如果同時出現并希望先算or只磷,需要結合()使用
二经磅、排序
- 為了方便查看數據,可以對數據進行排序
- 語法:
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
- 將行數據按照列1進行排序钮追,如果某些行列1的值相同時预厌,則按照列2排序,以此類推
- 默認按照列值從小到大排列
- asc從小到大排列元媚,即升序
- desc從大到小排序轧叽,即降序
例如:
- 查詢未刪除男生學生信息,按學號降序
select * from students
where gender=1 and isdelete=0
order by id desc;
- 查詢未刪除科目信息惠毁,按名稱升序
select * from subject
where isdelete=0
order by stitle;
三犹芹、聚合
- 為了快速得到統(tǒng)計數據,提供了5個聚合函數
- count(*)表示計算總行數鞠绰,括號中寫星與列名腰埂,結果是相同的
例如:
- 查詢學生總數
select count(*) from students;
- max(列)表示求此列的最大值
- 查詢女生的編號最大值
select max(id) from students where gender=0;
- min(列)表示求此列的最小值
- 查詢未刪除的學生最小編號
select min(id) from students where isdelete=0;
- sum(列)表示求此列的和
- 查詢男生的編號之后
select sum(id) from students where gender=1;
- avg(列)表示求此列的平均值
- 查詢未刪除女生的編號平均值
select avg(id) from students where isdelete=0 and gender=0;
四、分組
- 按照字段分組蜈膨,表示此字段相同的數據會被放到一個組中
- 分組后屿笼,只能查詢出相同的數據列,對于有差異的數據列無法出現在結果集中
- 可以對分組后的數據進行統(tǒng)計翁巍,做聚合運算
- 語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
例如:
- 查詢男女生總數
select gender as 性別,count(*)
from students
group by gender;
- 查詢各城市人數
select hometown as 家鄉(xiāng),count(*)
from students
group by hometown;
分組后的數據篩選
- 語法:
select 列1,列2,聚合... from 表名
group by 列1,列2,列3...
having 列1,...聚合...
- having后面的條件運算符與where的相同
- 查詢男生總人數
方案一
select count(*)
from students
where gender=1;
-----------------------------------
方案二:
select gender as 性別,count(*)
from students
group by gender
having gender=1;
對比where與having
- where是對from后面指定的表進行數據篩選驴一,屬于對原始數據的篩選
- having是對group by的結果進行篩選
五、獲取部分行
- 當數據量過大時灶壶,在一頁中查看數據是一件非常麻煩的事情
- 語法
select * from 表名
limit start,count
- 從start開始肝断,獲取count條數據
- start索引從0開始
示例:分頁
已知:每頁顯示m條數據,當前顯示第n頁
-
求總頁數:此段邏輯后面會在python中實現
- 查詢總條數p1
- 使用p1除以m得到p2
- 如果整除則p2為總數頁
- 如果不整除則p2+1為總頁數
求第n頁的數據
select * from students
where isdelete=0
limit (n-1)*m,m
時間過得真快,不知不覺就學習到第十二天了胸懈,加油吧担扑!
日期:2021/11/24
學習參考視頻:*https://www.bilibili.com/video/BV1i7411G7kW?p=33&t=1.1
學習參考文檔參考部分相關視頻文案和課件,僅供個人學習和記錄