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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...