這篇文章主要講解了“MySQL中SELECT查詢的基本語法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL中SELECT查詢的基本語法”吧!
select * from 表名;
from關鍵字后面寫表名,表示數據來源于是這張表
select后面寫表中的列名,如果是*表示在結果中顯示表中所有列
在select后面的列名部分,可以使用as為列起別名,這個別名出現在結果集中
如果要查詢多個列,之間使用逗號分隔
在select后面列前使用distinct可以消除重復的行
select distinct gender from students;
使用where子句對表中的數據篩選,結果為true的行會出現在結果集中
語法如下:
select * from 表名 where 條件;
比較運算符
等于=
大于>
大于等于>=
小于<
小于等于<=
不等于!=或<>
查詢編號大于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;
邏輯運算符
and
or
not
查詢編號大于3的**學
select * from students where id>3 and gender=0;
查詢編號小于4或沒被刪除的學生
select * from students where id<4 or isdelete=0;
模糊查詢
like%表示任意多個任意字符
_表示一個任意字符
查詢姓黃的學生
注意:可能出現兩個_代表一個漢字的情況;
select * from students where sname like '黃%';
查詢姓黃并且名字是一個字的學生
select * from students where sname like '黃_';
查詢姓黃或叫靖的學生
select * from students where sname like '黃%' or sname like '%靖%';
范圍查詢
in表示在一個非連續的范圍內
查詢編號是1或3或8的學生
select * from students where id in(1,3,8); //括號內的值可以實際不存在,但是沒意義
between ... and ...表示在一個連續的范圍內
查詢學生是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;
空判斷
注意: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;
優先級
小括號,not,比較運算符,邏輯運算符
and比or先運算,如果同時出現并希望先算or,需要結合()使用
能看到統計的結果看不到原始數據
為了快速得到統計數據,提供了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;
group by分組的目的還是聚合
按照字段分組,表示此字段相同的數據會被放到一個組中 //篩選
分組后,只能查詢出相同的數據列,對于有差異的數據列無法出現在一個結果集中
可以對分組后的數據進行統計,做聚合運算
語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... //將列123都一樣放到一組
查詢男女生總數
select gender as 性別,count(*)from studentsgroup by gender;
查詢各城市人數
select hometown as 家鄉,count(*)from studentsgroup by hometown;
分組后的數據篩選
語法:
select 列1,列2,聚合... from 表名group by 列1,列2,列3...having 列1,...聚合...
having后面的條件運算符與where的相同
查詢男生總人數
方案一select count(*)from studentswhere gender=1;
方案二//優點 可以更為直觀的查看篩選結果
select gender as 性別,count(*)from studentsgroup by genderhaving gender=1;
對比where與having
where是對from后面指定的表進行數據篩選,屬于對原始數據的篩選
having是對group by的結果進行篩選
為了方便查看數據,可以對數據進行排序
語法:
select * from 表名order by 列1 asc|desc,列2 asc|desc,...
將行數據按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
默認按照列值從小到大排列
asc從小到大排列,即升序 //ascend
desc從大到小排序,即降序 //descend
查詢未刪除男生學生信息,按學號降序
select * from studentswhere gender=1 and isdelete=0order by id desc;
查詢未刪除科目信息,按名稱升序
1 | select * from subjectwhere isdelete=0order by stitle; |
當數據量過大時,在一頁中查看數據是一件非常麻煩的事情
語法
select * from 表名limit start,count
從start開始,獲取count條數據
start索引從0開始 //從哪兒開始數幾個
示例:分頁
已知:每頁顯示m條數據,當前顯示第n頁
求總頁數:此段邏輯后面會在python中實現
查詢總條數p1
使用p1除以m得到p2
如果整除則p2為總數頁
如果不整除則p2+1為總頁數
求第n頁的數據
1 | select * from studentswhere isdelete=0limit (n-1)*m,m |
完整的select語句
select distinct *from 表名where ....group by ... having ...order by ...limit star,count
執行順序為:
from 表名
where ....
group by ...
select distinct *
having ...
order by ...
limit star,count
實際使用中,只是語句中某些部分的組合,而不是全部
感謝各位的閱讀,以上就是“MySQL中SELECT查詢的基本語法”的內容了,經過本文的學習后,相信大家對MySQL中SELECT查詢的基本語法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。