SQL查詢語法30例

来源:https://www.cnblogs.com/dayu2019/archive/2019/09/30/11611474.html
-Advertisement-
Play Games

學好SQL查詢:無他,概手熟耳。 1. 基礎表: 學生表: 老師表: 課程表: 成績表: 2. 題目: 1、查詢名字中含有"華"字的學生信息 select from 學生 where sname like '%華%' 2、查詢並統計同齡學生人數 select sage,count(sid) from ...


學好SQL查詢:無他,概手熟耳。

1. 基礎表:

學生表:

老師表:

課程表:

成績表:

2. 題目:

1、查詢名字中含有"華"字的學生信息

select * from 學生 where sname like '%華%'

2、查詢並統計同齡學生人數

select sage,count(sid) from 學生 group by sage

3、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列

select cid,avg(Cscore) from 成績 group by cid order by avg(Cscore),cid desc 

4、按平均成績從高到低顯示所有學生的平均成績

select sid,avg(Cscore) from 成績 group by sid order by avg(Cscore) desc

5、查詢各科成績最高分、最低分和平均分:以如下形式顯示:課程ID,課程name,最高分,最低分,平均分

select sc.cid 課程ID, c.cname 課程名, max(sc.Cscore) 最高分,min(sc.Cscore) 最低分,avg(sc.Cscore) 平均分 from 成績 sc left join 課程 c on sc.cid=c.cid
group by sc.cid

6、按各科平均成績從低到高順序排序

select cid, avg(Cscore) from 成績 group by cid order by avg(Cscore) desc

7、查詢學生的總成績併進行排名

select sid 學號,sum(Cscore) 總分 from 成績 group by sid order by sum(Cscore) desc

8、檢索至少選修兩門課程的學生學號

select sid from 成績 group by sid having count(cid) > 1

9、查詢每門課程被選修的學生數

select cid,count(cid) from 成績 group by cid 

10、查詢不及格的課程,並按課程號從大到小排列

select * from 成績 group by cid having cscore < 60 order by cid desc

11、查詢出只選修了一門課程的全部學生的學號和姓名

select sid,sname from 學生 where sid in(
    select sid from 成績 group by sid having count(sid) = 1
)

12、查詢課程編號為"01"且課程成績在60分以上的學生的學號和姓名;

select sid,sname from 學生 where sid in(
    select sid from 成績 where 
    cid = 'c01'
    and Cscore>=60
)

13、查詢“01”課程比“02”課程成績高的所有學生的學號;

select sc1.sid from 成績 sc1, 成績 sc2 where
sc1.sid = sc2.sid
and sc1.cid = 'c01'
and sc2.cid = 'c02'
and sc1.cscore > sc2.Cscore 

14、查詢平均成績大於60分的同學的學號和平均成績;

select sid, avg(Cscore) from 成績 group by sid having avg(Cscore) > 60

15、查詢姓“李”的老師的個數;

select count(1) from 教師 where Tname like '李%'

16、查詢沒學過“何倩文”老師課的同學的學號、姓名;

select sid, sname from 學生 where sid not in(
    select sid from 成績 where cid =(
    select cid from 課程 where Cteacher = '何倩文'
    )
)

17、查詢學過編號“01”並且也學過編號“02”課程的同學的學號、姓名;

select sid, sname from 學生 where sid in(
    select sc1.sid from 成績 sc1 where sid in(
        select sc2.sid from 成績 sc2 where cid = 'c01'
    )
    and cid = 'c02'
)

select sid,sname from 學生 where sid in(
    select sc1.sid from 成績 sc1,成績 sc2 where
    sc1.sid=sc2.sid
    and sc1.cid = 'c01'
    and sc2.cid = 'c02'
)

18、查詢沒學過"李徵輝"老師講授的任一門課程的學生姓名

select sid,sname from 學生 where sid not in(
    select distinct(sid) from 成績 where cid in (
        select cid from 課程 where Cteacher = '李徵輝'
    )
)

19、查詢所有同學的學號、姓名、選課數、總成績

select sc.sid, s.sname, count(sc.cid), sum(Cscore) from 成績 sc 
left join 學生 s on sc.sid = s.sid 
group by sc.sid

20、查詢學過“張三”老師所教的課的同學的學號、姓名;

select sid, sname from 學生 where sid in(
    select distinct(sc.sid) from 成績 sc 
    left join 課程 c on sc.cid=c.cid where c.Cteacher = '李徵輝'
) order by sid

21、查詢課程編號“01”的成績比課程編號“02”課程低的所有同學的學號、姓名;

select sid, sname from 學生 where sid in(
    select sc1.sid from 成績 sc1, 成績 sc2 where
    sc1.sid = sc2.sid
    and sc1.cid = 'c01'
    and sc2.cid = 'c02'
    and sc1.Cscore < sc2.Cscore
)

22、查詢所有課程成績小於60分的同學的學號、姓名;

select sid, sname from 學生 where sid not in(
    select distinct(sid) from 成績 where cscore >= 60
) and sid in(
    select sid from 成績 group by sid having count(sid) != 0
)

select sid, sname from 學生 where sid not in(
    select s.sid from 學生 s 
    left join 成績 sc on s.sid=sc.sid where Cscore > 60 or Cscore is null
)

select sid, sname from 學生 where sid in(
    select sc.sid from 成績 sc group by sid having max(sc.Cscore)<60
) 

23、查詢沒有學全所有課的同學的學號、姓名;

select s.sid, s.sname from 學生 s 
left join 成績 sc on s.sid=sc.sid 
group by s.sid having count(s.sid) != (
    select count(1) from 課程
)

24、查詢至少有一門課與學號為“01”的同學所學相同的同學的學號和姓名;

select sid, sname from 學生 where sid in(
    select distinct(sid) from 成績 where cid in (
        select cid from 成績 where sid = 's01'
    ) and sid != 's01'
)

select distinct(s.sid),sname from 學生 s 
left join 成績 sc on s.sid = sc.sid where sc.cid in(
    select cid from 成績 where sid = 's01'
)and s.sid != 's01'

25、查詢和"01"號的同學學習的課程完全相同的其他同學的學號和姓名

select s.sid from 學生 s left join 成績 sc on s.sid = sc.sid where sc.cid in(
    select cid from 成績 where sid = 's01'
) group by s.sid 
having count(s.sid) = 
(select count(cid) from 成績 where sid='s01') 
and s.sid != 's01'

26、把“成績”表中“高磊”老師教的課的成績都更改為此課程的平均成績;

update 成績 set Cscore = (
    select avg(sc.Cscore) from 課程 c 
    left join 成績 sc on c.cid = sc.cid where Cteacher = '高磊'
) where cid in (
    select cid from 課程 where Cteacher = '高磊'
)

27、查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績

select s.sid, s.sname, avg(sc.Cscore) from 學生 s 
left join 成績 sc on s.sid = sc.sid where s.sid in(
    select sid from 成績 sc where Cscore < 60 group by sid having count(sid) > 2
)

28、檢索"01"課程分數小於60,按分數降序排列的學生信息

select * from 學生 s left join 成績 sc on s.sid=sc.sid where
sc.Cscore < 60 
and sc.cid = 'c01'
order by sc.Cscore desc

29、查詢不同老師所教不同課程平均分從高到低顯示

select c.Cteacher,c.Cname, avg(sc.Cscore) from 成績 sc 
left join 課程 c on sc.cid=c.cid 
group by sc.cid 
order by avg(sc.Cscore) desc

30、查詢選修“李徵輝”老師所授課程的學生中,成績最高的學生姓名及其成績

select s.sname, max(sc.Cscore) from 學生 s 
left join 成績 sc on s.sid=sc.sid where sc.cid in (
    select cid from 課程 where Cteacher = '李徵輝'
)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博主做過比較多項目的archive腳本編寫,對於這種刪除數據的腳本開發,肯定是一開始的話用最簡單的一個delete語句,然後由於部分表數據量比較大啊,索引比較多啊,會發現刪除數據很慢而且影響系統的正常使用。然後就對delete語句進行按均勻數據量分批delete的改寫,這樣的話,原來的刪除一個表用一 ...
  • 所謂事務是用戶定義的一個數據操作序列,這些操作可作為一個完整的工 作單元,要麼全部執行,要麼全部不執行,是一個不可分割的工作單位。 事務中的操作一般是對數據的更新操作,包括增、刪、改。 ...
  • [TOC] # 1. 前言 在資料庫安全的生命周期中, 包括: 保護、檢測、響應和補救。檢測的核心就是審計(Audit)。有些情況下,審計不僅僅用於檢測不好的行為,也作為對整個資料庫的行為進行監控而存在。審計能夠告訴我們誰訪問了什麼、在什麼地方、什麼時間、採用了何種方式。 有效的審計不僅僅意味著安全 ...
  • 背景 昨天,關於價格詳情介面又來了一個小需求,而且有點特別。價格顯示:改為保留兩位小數,沒錯,就是保留兩位小數。大家是不是想說這沒啥特別的。。。資料庫都有函數搞定了。例如四捨五入的ROUND(x,d),直接截取的TRUNCATE(x,d),還可以利用類型轉換CONVERT(value,type)等等 ...
  • -- mysql安裝 -- https://www.mysql.com/downloads/ 終端執行命令 (可參考本筆記MySQL環境搭建-mysql 8.0.13 解壓版安裝配置方法圖文教程) mysql 教學demo --命令行輸指令創建表 http://www.forta.com/books ...
  • Aborted_clients和 Aborted_connects狀態變數詳解 By:授客 QQ:1033553122 狀態變數定義 Aborted_clients 因客戶端消亡時未恰當的關閉連接而引起的被中斷連接數 The number of connections that were abort ...
  • 今天我們來看一下淘寶、美團和滴滴的大數據平臺,一方面進一步學習大廠大數據平臺的架構,另一方面也學習大廠的工程師如何畫架構圖。通過大廠的這些架構圖,你就會發現,不但這些知名大廠的大數據平臺設計方案大同小異,架構圖的畫法也有套路可以尋覓。 淘寶大數據平臺 淘寶可能是中國互聯網業界較早搭建了自己大數據平臺 ...
  • /* 授權命令 grant 許可權 to 用戶 授權可以授予多個許可權 grant connect,resource to baidu 收回許可權 revoke 許可權 from 用戶 revoke dba from baidu 創建用戶 分配表空間--指定用戶的預設表空間... ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...