溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中SELECT查詢的基本語法

發布時間:2021-09-16 10:24:02 來源:億速云 閱讀:201 作者:chen 欄目:大數據

這篇文章主要講解了“MySQL中SELECT查詢的基本語法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL中SELECT查詢的基本語法”吧!


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;

  • 查詢未刪除科目信息,按名稱升序

1select * 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頁的數據

1select * 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查詢的基本語法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女