資料庫---實驗二 數據查詢

来源:http://www.cnblogs.com/chen9510/archive/2016/11/03/6028286.html
-Advertisement-
Play Games

實驗分析與討論: 在本次資料庫試驗中,我完成了實驗要求。本次實驗內容是關於多表的連接查詢及投影、選擇條件。在課堂上,老師講授了多表連接查詢的相關知識,我也用筆練習寫了sql語句,但是感覺印象還不是很深刻,有些不太理解。在實驗課中我練習了sql語句,對課堂上所學的知識有了更深的理解,收穫很多。實驗中, ...


 

(一)多表連接查詢
i.    查詢每個選課學生的學生姓名、課程號和分數。(2表連接)
SQL> select student.sname,sc.cno,sc.grade from student,sc where student.sno=sc.sno;
ii.    求學生的學號、姓名、選修課程的課程名及成績。(3表連接)
SQL> select student.sno,student.sname,course.cname,sc.grade from student,course,sc where student.sno=sc.sno and sc.cno=course.cno;
iii.    求選修課程號為1或課程號為2的學生姓名和學號。
SQL> select distinct student.sname,student.sno from student,sc where student.sno=sc.sno and (sc.cno=1 or sc.cno=2);
iv.    查詢每一門課程的間接先行課的課程號。
SQL> select first.cno,second.cpno from course first,course second where first.cpno=second.cno;
v.    查詢與’劉晨’在同一個系學習的學生。
SQL> select * from student where sdept=(select sdept from student where sname='李佳');
vi.    查詢選修了課程名為’C語言’的學生學號和姓名。
SQL> select student.sno,student.sname from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and course.cname='PASCAL語言';
vii.    查詢平均成績在80分以上的學生學號和平均成績。
SQL> select sno,avg(grade) avg_grade from sc group by sno having avg(grade)>=80;
viii.    查詢選修了1門且平均分在85分以下課程的學生的學號。
SQL> select distinct sc.sno from student,sc where student.sno=sc.sno and cno in (select cno from sc group by cno having avg(grade)<85);
ix.    以學生為主體顯示學生的信息及其選課的信息。
        SQL> select * from student,sc where student.sno=sc.sno(+);
x.    對學生表和選課表做自然連接,並輸出結果。
SQL> select student.sno,student.sname,student.ssex,student.sage,student.sdept,sc.cno,sc.grade from student,sc where student.sno=sc.sno;
xi.    輸出學號大於’ 劉晨’的學生的姓名和學號。
SQL> select sname,sno from student where sno>(select sno from student where sname='劉明');
xii.    查詢數學系的學生每個人所選課程的平均成績。
SQL> select sc.sno,avg(sc.grade) from (select sno from student where sdept='MA')S,sc where S.sno=sc.sno group by sc.sno;
xiii.    查詢選修2號課程且成績高於“20070001”號學生成績(2號課程的成績)的所有學生記錄。
      SQL> select student.* from student,sc where student.sno=sc.sno and sc.cno=2 and sc.grade>(select grade from sc where cno=2 and sno='20070001');

(二)選做(使用from子句,通過inner join,left join,right join,cross join完成多表連接查詢)
1.    以學生為主體顯示學生的信息及其選課的信息。
SQL> select * from student left join sc on student.sno=sc.sno;
2.    查詢選修了2號課程的學生姓名。
SQL> select student.sname from student inner join sc on student.sno=sc.sno and sc.cno=2;
3.    學生表和課程表做笛卡爾積。
       SQL> select * from student cross join course;

(三)思考題:
1.Where子句中能否用聚集函數作為條件表達式。
答:不能。
2.多表連接查詢中如果顯示的某一屬性不止一個表中出現,應如何處理。
        答:應該用表名加上點,再加上屬性名錶示。

 

實驗分析與討論:

      在本次資料庫試驗中,我完成了實驗要求。本次實驗內容是關於多表的連接查詢及投影、選擇條件。在課堂上,老師講授了多表連接查詢的相關知識,我也用筆練習寫了sql語句,但是感覺印象還不是很深刻,有些不太理解。在實驗課中我練習了sql語句,對課堂上所學的知識有了更深的理解,收穫很多。實驗中,我遇到了一些問題,通過查詢資料和老師同學幫助最終解決了。遇到的問題如下:

      1、在多表查詢時,我不太清楚怎麼為表取別名,在實驗中,我查詢資料明白了在一個查詢得到的表後可以直接加上別名。

      2、在做第二題時,我對外連接不太清楚,通過一個個測試,瞭解了inner join,

left join, right join和cross join的用法。

 


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

-Advertisement-
Play Games
更多相關文章
  • 今天在將CSV導入到oracle時,報了下麵的異常: SQL*Loader-522: lfiopn failed for file 後來從MSDN找到了原因,文件夾的許可權不夠。 環境描述:我的導入文件放在WIN7系統桌面上的,該導入文件是從桌面上另外一個成功導入的例子 複製的 。 處理方案:複製到的 ...
  • 使用ES的基本都會使用過head,但是版本升級到5.0後,head插件就不好使了。下麵就看看如何在5.0中啟動Head插件吧! "官方粗略教程" Running with built in server enable cors by adding http.cors.enabled: true in ...
  • 介紹 COLUMN分區是5.5開始引入的分區功能,只有RANGE COLUMN和LIST COLUMN這兩種分區;支持整形、日期、字元串;RANGE和LIST的分區方式非常的相似。 COLUMNS和RANGE和LIST分區的區別 1.針對日期欄位的分區就不需要再使用函數進行轉換了,例如針對date字 ...
  • 說到隊列的話,大家一定不會陌生,但是扯到優先順序隊列的話,還是有一部分同學是不清楚的,可能是不知道怎麼去實現吧,其實呢,,,這東西已 經爛大街了。。。很簡單,用“堆”去實現的,在我們系統中有一個訂單催付的場景,我們客戶的客戶在tmall,taobao下的訂單,taobao會及時將訂單推送給 我們,如果 ...
  • 今天把應用部署到AWS上發現後臺修改內容提交後程式報錯,經過排查發現是更新數據的時候,有張數據表中的一個timestamp類型的欄位預設值變成了"0000-00-00 00:00:00.000000"格式,導致解析失敗造成的。 在mysql該欄位的創建語句如下 因為在本地開發環境測試過,沒有該問題, ...
  • JDBC ___ 補充:Jabc相關類介紹 1.Connection類 a.用於代表資料庫的鏈接,客戶端與資料庫所有交互都是通過connection對象完成的。 b.主要方法: createStatement():創建向資料庫發送sql的statement對象。 prepareStatement(s ...
  • 文章翻譯自:http://www.tomsitpro.com/articles/database-certifications,2-664.html 我們總是需求一些懂行的,有天賦的,知識淵博的資料庫專業人員。下麵是一些最好的資料庫認證,給DBA,Database developers及相關人員參考 ...
  • 設教學資料庫中有三個基本表: 學生表 S(S#,SNAME,AGE,SEX),其屬性表示學生的學號、姓名、年齡和性別;選課表 SC(S#,C#,GRADE),其屬性表示學生的學號、所學課程的課程號和成績;課程表 C(C#,CNAME,TEACHER),其屬性表示課程號、課程名稱和任課教師姓名。 下麵 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...