數據庫SQL語言實戰(八)

目錄

練習題?

題目一

題目二?

題目三?

題目四?

題目五?

題目六?

題目七?

題目八?

題目九

題目十


練習題?

題目一

找出年齡小于20歲且是“物理學院”的學生的學號、姓名、院系名稱,按學號排序

create or replace view test6_01 as
select S.sid,S.name,S.dname
from pub.student S
where S.age<20 and
S.dname='物理學院'
order by S.sid

關鍵點:

1、create or replace:可以創建或者替代table和view,方便調試錯誤

題目二?

查詢統計2009級、軟件學院所有學生的學號、姓名、總成績(列名sum_score)(如果有學生沒有選一門課,則總成績為空值)

create or replace view test6_02 as
select S.sid,S.name,sum(SC.score) sum_score
from pub.student S left outer join pub.student_course SC
on S.sid=SC.sid
where S.dname='軟件學院' andS.class=2009
group by S.sid,S.name

關鍵點:

1、left outer join 需要利用on來確定連接的原則

2、select結果集、view和table三者都是不同的。select結果集是一次性顯示的在數據庫中不占有任何內存;view在數據庫中占有非常小的內存,因為它并不存儲數據而是動態從table中獲取;table是真實存儲數據的,是占有內存的

題目三?

查詢所有課的最高成績、最高成績人數,test6_06有四個列:課程號cid、課程名稱name、最高成績max_score、最高成績人數max_score_count(一個學生同一門課成績都是第一,只計一次,需要考慮刷成績情況,一個同學選了一個課程多次,兩次都是最高分。如果結果錯一行,可能就是沒有考慮這種情況,這里是為了考核“去重復計數”知識點的)。如果沒有學生選課,則最高成績為空值,最高成績人數為零

提示:參考講義關于標量子查詢(只返回包含單個屬性的單個元組)

create or replace view test6_03 as
select*
from
(select C.cid,C.name,max(SC.max_score) max_scorefrom pub.course C left outer join (select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCon C.cid=SC.cidgroup by C.cid,C.name
) 
natural full outer join
(select SC.cid,count(sid) max_score_countfrom (select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCgroup by SC.cid,SC.max_scorehaving (SC.max_score=(select max(score) from pub.student_course tempwhere SC.cid=temp.cid))
)

關鍵點:

1、多個select結果處理:每一個sql程序只能有一個最終的select,而不能重復顯示select多次的結果(結果會覆蓋從而報錯);如果select結果要按行合并則用union(刪除重復行)/union all(不刪除重復行);如果select結果要按列合并,則可以用join、natural full outer join

2、select結果是臨時的不是表也不是視圖,所以要將select結果合并需要把select語句放在from中當成一個臨時關系來處理

3、當select提取較為復雜時,可以考慮分開兩個select語句處理,再將select結果合并處理

4、沒有學生考試的課程也要呈現出課程的cid和name,就是后面的max_score以及count用NULL來處理。用left outer join/full outer join來完成這一功能

題目四?

找出選修了“操作系統”并取得學分或者選修“數據結構”并且取得學分,但是沒有選修“程序設計語言”或者沒有取得這門課的學分的男學生的學號、姓名

create or replace view test6_04 as
select SC.sid,S.name
from pub.student_course SC,pub.student S,pub.course C
where SC.sid=S.sid and SC.cid=C.cid
and SC.score>=60 and (C.name='操作系統' or C.name='數據結構')
and S.sex='男' and (SC.sid not in(select SC.sidfrom pub.student_course SC,pub.course Cwhere SC.cid=C.cid andC.name='程序設計語言' andSC.score>=60))

關鍵點:

1、對于或的關系可以直接在where 的條件中利用or來表達,但是對于與的關系不能在where中利用and來寫,而是要select后將結果取交集(intersect)

2、沒有 或 沒有 =有 與 有?取一個否定?。所以在實現上直接在where上利用not in 來實現

題目五?

查詢20歲的所有有選課的學生的學號、姓名、平均成績(avg_score,此為列名,下同)(平均成績四舍五入到個位)、總成績(sum_score)

Test6_05有四個列,并且列名必須是:sid、name、avg_score、sum_score。通過下面方式實現列名定義:

create or replace view test6_05 as select sid,name,(表達式) avg_score,(表達式) sum_score? from ……

create or replace view test6_05 as
select S.sid sid,S.name name,round(avg(score),0) avg_score,round(sum(score),0) sum_score
from pub.student S,pub.student_course SC
where S.sid=SC.sid and S.age=20
group by S.sid,S.name

關鍵點:

1、四舍五入處理round函數:round(number,digit)

digit>0:四舍五入到第digit位小數

digit=0:四舍五入到整數

digit<0:在整數位置四舍五入(-1:四舍五入到十位;-2:四舍五入到百位)

題目六?

找出同一個同學同一門課程有兩次或以上不及格的所有學生的學號、姓名(即一門課程需要補考兩次或以上的學生的學號、姓名)

create or replace view test6_06 as
select S.sid,S.name
from pub.student S,pub.student_course SC
where S.sid=SC.sid and
SC.score<60
group by S.sid,S.name,SC.cid
having (count(*)>=2)

關鍵點:

1、這里查找的對象是一個學生一門課上所有考試記錄?

題目七?

找出選修了所有課程并且每門課程每次考試成績均及格的學生的學號、姓名。(題6的延伸和鞏固)

create or replace view test6_07 as
select distinct S.sid,S.name
from pub.student S,pub.student_course SC
where S.sid=SC.sid and S.sid in(select sidfrom pub.student_course SCwhere not exists(select cidfrom pub.course Cminusselect cidfrom pub.student_course Tempwhere Temp.sid=SC.sid)
) and S.sid not in(select sidfrom pub.student_course SCwhere SC.score<60
)

關鍵點:

1、選修了所有課程就是除法的應用

2、所有成績都及格查找對象是一個學生一門課上所有考試記錄?

題目八?

找出選修了所有課程并且得到所有課程的學分(即每門課程最少一次考試及格)的學生的學號、姓名。(題6的 延伸和鞏固)

create or replace view test6_08 as
with T as(select sid, cid, MAX(score) AS max_scorefrom pub.student_coursegroup by sid, cid
) 
select distinct S.sid,S.name
from pub.student S,T SC
where S.sid=SC.sid and S.sid in(select sidfrom T SCwhere not exists(select cidfrom pub.course Cminusselect cidfrom T Tempwhere Temp.sid=SC.sid)
) and S.sid not in(select sidfrom T SCwhere SC.max_score<60
)

關鍵點:

1、本題和上一題不同點在于:查找的對象轉變為:一個學生一門課上最高成績

題目九

查詢統計2010級、化學與化工學院的學生總學分表,內容有學號、姓名、總學分sum_credit。(不統計沒有選課的學生)

create or replace view test6_09 as
select S.sid,S.name,sum(C.credit) sum_credit
from pub.student_course SC,pub.student S,pub.course C
where SC.cid=C.cid and SC.sid=S.sid
and S.dname='化學與化工學院'
and S.class=2010 and SC.score>=60
group by S.sid,S.name

題目十

查詢學生表中每一個姓氏及其人數(不考慮復姓,用到取子串函數substr(string,postion,length))),test6_10有兩個列:second_name、p_count

create or replace view test6_10 as
select substr(S.name,1,1) second_name,count(*) p_count
from pub.student S
group by substr(S.name,1,1)

關鍵點:

1、group by后面可以跟表達式(例如:to_char(trunc(sc.score, -1), 'fm000') || '-' || to_char(trunc(sc.score, -1) + 9, 'fm000') as score)、字段(substr)

?總結?

本文的所有題目均來自《數據庫系統概念》(黑寶書)、山東大學數據庫實驗六。不可用于商業用途轉發。

如果能幫助到大家,大家可以點點贊、收收藏呀~?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12501.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Myql 數據庫采用RAID存儲帶來電池充放電問題原因以及處理方式

一. 背景 Mysql作為數據庫, 在某些特定情況下會采用RAID&#xff08;冗余磁盤陣列&#xff09;進行存儲. 以保證數據庫的性能以及可靠性. 1.1. RAID種類 RAID&#xff08;冗余磁盤陣列&#xff0c;Redundant Array of Independent Disks&#xff09;是一種用于數據存儲的技術…

淺析Free RTOS中Queue的應用

目錄 概述 1 認識Queue 1.1 Queue定義 1.2 FreeRTOS中的Queue 1.3 Queue狀態 1.4 Queue內容 1.5 發送和接收Message 1.5.1 發送message 1.5.2 接收Message 2 Queue的特性 2.1 數據存儲 2.2 可被多任務存取 2.3 讀Queue時阻塞 2.4 寫Queue時阻塞 3 使用Queue 3.1…

怎么把圖片上的字去掉

將圖片上的字去掉通常需要使用圖像編輯軟件或在線工具。以下是一些常用的方法和步驟&#xff1a; 使用Adobe Photoshop&#xff1a; 打開Photoshop&#xff0c;導入需要編輯的圖片。 選擇“橡皮擦工具”或“克隆圖章工具”。 如果使用“橡皮擦工具”&#xff0c;調整橡皮擦的…

YOLOv9改進策略 | 低照度圖像篇 | 2024最新改進CPA-Enhancer鏈式思考網絡(適用低照度、圖像去霧、雨天、雪天)

一、本文介紹 本文給大家帶來的2024.3月份最新改進機制&#xff0c;由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations論文提出的CPA-Enhancer鏈式思考網絡&#xff0c;CPA-Enhancer通過引入鏈式思考提示機制&am…

【提示學習論文】TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model

TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model&#xff08;CVPR2024&#xff09; 基于文本的類感知提示調優的VLMKgCoOp為baseline&#xff0c;進行改進&#xff0c;把 w c l i p w_{clip} wclip?進行投影&#xff0c;然后與Learnable prompts進行…

樹莓派|角速度和加速度傳感器

角速度傳感器和加速度傳感器是常見的慣性傳感器&#xff0c;常用于測量物體的旋轉和線性運動。 角速度傳感器&#xff08;Gyroscope&#xff09;用于測量物體繞三個軸&#xff08;X、Y、Z&#xff09;的旋轉速度或角速度。它可以提供關于物體在空間中的旋轉方向和角度變化的信…

時光知識付費系統,如何制定適合自己的課程?該如何做?

在線教育平臺的網課非常多&#xff0c;而且課程之間的相似度非常高&#xff0c;不同是教的老師不同。很多人在制定課程的時候&#xff0c;通常都是被廣告吸引的&#xff0c;之后發現課程不是自己想要的&#xff0c;并不適合自己。 想要制定適合自己的課程&#xff0c;首先要清楚…

計算機視覺與深度學習實戰:以Python為工具,基于特征匹配的英文印刷字符識別

注意:本文的下載教程,與以下文章的思路有相同點,也有不同點,最終目標只是讓讀者從多維度去熟練掌握本知識點。 下載教程:計算機視覺與深度學習實戰-以MATLAB和Python為工具_基于特征匹配的英文印刷字符識別_項目開發案例教程.pdf 一、引言 隨著人工智能技術的飛速發展,計…

用爬蟲解決問題

使用爬蟲解決問題是一個常見的技術手段&#xff0c;特別是在需要自動化獲取和處理大量網頁數據的情況下。以下是一個詳細的步驟說明&#xff0c;包括如何使用 Python 和常用的爬蟲庫&#xff08;如 requests 和 BeautifulSoup&#xff09;來構建一個簡單的爬蟲&#xff0c;解決…

matlab二次插值函數 interp2

在MATLAB中&#xff0c;interp2函數用于執行二維插值操作。該函數可以接受多種不同的插值方法&#xff0c;其中包括linear&#xff08;線性插值&#xff09;和nearest&#xff08;最臨近插值&#xff09;。這兩種插值方法的插值結果存在明顯的差異。 linear&#xff08;線性插值…

引用存儲復制屬性

當執行 this.tableDataSim.push(this.simForm) 時&#xff0c;將 this.simForm 對象添加到 this.tableDataSim 數組中。如果 this.simForm 是一個對象&#xff0c;并且 this.tableDataSim 數組中之前的對象是通過引用方式存儲的&#xff0c;那么之前的對象會被改變&#xff0c;…

使用 Python 和機器學習預測股票漲跌幅

使用 Tushare API 獲取深圳股市歷史數據 引言 這篇文章將會演示如何使用 Tushare Pro API 獲取深圳股市的歷史交易數據&#xff0c;并將數據保存到CSV文件中。Tushare 是一款提供實時和歷史金融市場的數據服務&#xff0c;支持多種語言&#xff0c;具有豐富的數據源和強大的功…

PXI/PXIe規格1553B總線測試模塊

面向GJB5186測試專門開發的1553B總線適配卡&#xff0c;支持4Mbps和1Mbps總線速率。該產品提供2個雙冗余1553B通道、1個測試專用通道、2個線纜測試通道。新一代的TM53x板卡除了支持耦合方式可編程、總線信號幅值可編程、共模電壓注入、總線信號波形采集等功能外&#xff0c;又新…

Python專題:十三、日期和時間(2)

datetime 模塊 today()函數 date類型 year month day

二分法的時間復雜度是logN

對數函數&#xff1a; &#xff08;a>0, a≠1&#xff0c; x>0&#xff09; 當αe時&#xff0c;記為yln x 當α10時&#xff0c;記為ylg x 當α2時&#xff0c;記為ylog x 其中x是自變量&#xff0c;函數的定義域是&#xff08;0&#xff0c;∞&#xff09;&#xff0c;…

【Flask框架】

6.Flask輕量型框架 6.1Flask簡介 python提供的框架中已經寫好了一個內置的服務器&#xff0c;服務器中的回應response行和頭已經寫好&#xff0c;我們只需要自己寫顯示在客戶端&#xff0c;的主體body部分。 ---------------------------------------------------------- Fla…

Blob數據類型

Blob&#xff08;Binary Large Object&#xff09;是一種二進制大對象的數據類型&#xff0c;用于存儲大量的二進制數據&#xff0c;比如圖片、視頻、音頻等。Blob對象通常用于處理從網絡上獲取的數據或者在瀏覽器中生成的數據&#xff0c;例如通過用戶上傳的文件、從服務器下載…

Android Studio無法使用Google翻譯問題記錄

背景 其實關于Google翻譯不能用的問題已經出現很久了&#xff0c;之前Google關掉了很多國內的一些Google服務&#xff0c;但是Google翻譯還是能用的&#xff0c;直到不知什么時候起&#xff0c;Google翻譯也不能用呢。 每次換電腦安裝完AS后第一件事就是下載插件 Settings-Pl…

探索智慧生活:百度Comate引領人工智能助手新潮流

文章目錄 百度Comate介紹1. 什么是百度Comate&#xff1f;主要特點 2. Comate的核心功能智能問答功能語音識別功能語音助手功能個性化服務 3. Comate 支持哪些語言&#xff1f; 使用教程(以vscode為例)1. 下載和安裝Comate3. 常用操作快捷鍵(windows) 使用體驗自然語言生成代碼…

Gitlab、Redis、Nacos、Apache Shiro、Gitlab、weblogic相關漏洞

文章目錄 一、Gitlab遠程代碼執行&#xff08;CVE-2021-22205&#xff09;二、Redis主從復制遠程命令執行三、Nacos認證繞過漏洞&#xff08;CVE-2021-29441&#xff09;四、Apache Shiro認證繞過漏洞&#xff08;CVE-2020-1957&#xff09;五、Gitlab任意文件讀取漏洞&#xf…