考試系統的基礎維護--基本表的串連操作

來源:互聯網
上載者:User

標籤:資料庫   基本表的串連操作   內串連   外串連   

        這次有幸幫師姐進行考試系統的基礎維護,說直接點就是對考試人員的管理,增刪改查,最主要的還是查詢學生,用來和老師所給的資訊進行核對,最後再確定考試的人員,在查詢的過程中就遇到了這樣的一種情況:

  在對English考試的人員進行核對的時候,為了方便查詢,而建立的一個相關的視圖,該視圖所涉及到的表有:TB_Student(學生基本資料),TB_ExecutiveClass(涉及到所在的班級),TB_DepartmentName(所屬專業),TB_CollegeName(所屬學院),TB_English主要就是把學生基本資料以及所屬的學院專業以及英語考試的相關資訊來建立一個整體的資訊表。對於資訊的檢查第一部分就是看看視圖中的資訊有沒有和老師所給的英語資訊表一一對應。

   胡亂忙碌的半天,最後按照師姐的想法,先對錶進行了右外串連,以學生英語分級資訊為主,來進行了查詢:

相關語句如下:

SELECT DISTINCT
                      dbo.TB_Student.StudentName, dbo.TB_Student.StudentCode, dbo.TB_Student.Sex, dbo.TB_ExecutiveClass.ExecutiveClassName, dbo.TB_Department.DepartmentName,
                      dbo.TB_College.CollegeName, dbo.TB_Grade.GradeName, dbo.TB_english.englisfenji, dbo.TB_english.englishclass
FROM         dbo.TBR_DepCollegeLink INNER JOIN
                      dbo.TB_Department ON dbo.TBR_DepCollegeLink.DepartmentID = dbo.TB_Department.DepartmentID INNER JOIN
                      dbo.TB_College ON dbo.TBR_DepCollegeLink.CollegeID = dbo.TB_College.CollegeID INNER JOIN
                      dbo.TBR_ExecutiveClassDepLink ON dbo.TB_Department.DepartmentID = dbo.TBR_ExecutiveClassDepLink.DepartmentID INNER JOIN
                      dbo.TBR_StuExecutiveClassLink INNER JOIN
                      dbo.TB_ExecutiveClass ON dbo.TBR_StuExecutiveClassLink.ExecutiveClassID = dbo.TB_ExecutiveClass.ExecutiveClassID INNER JOIN
                      dbo.TB_Student ON dbo.TBR_StuExecutiveClassLink.StudentID = dbo.TB_Student.StudentID ON
                      dbo.TBR_ExecutiveClassDepLink.ExecutiveClassID = dbo.TB_ExecutiveClass.ExecutiveClassID INNER JOIN
                      dbo.TBR_ExecutiveClassGradeLink ON dbo.TB_ExecutiveClass.ExecutiveClassID = dbo.TBR_ExecutiveClassGradeLink.ExecutiveClassID INNER JOIN
                      dbo.TB_Grade ON dbo.TBR_ExecutiveClassGradeLink.GradeID = dbo.TB_Grade.GradeID RIGHT OUTER JOIN
                      dbo.TB_english ON dbo.TB_Student.StudentCode = dbo.TB_english.studentCode

所出現的效果如下:

        為什麼會出現這種狀況呢?其原因當然很簡單,由於T_English表中的資料是自己按照老師所給的Excel表格直接匯入進去的,所以如果採用又外串連會出現其等同量的資料,可是由於某種原因,當初添加基本資料的時候忘記了此學生,又或者轉專業只刪除了而忘記把其添加進去了等等,從而導致基礎學生表為空白,所以才出現的的現象。

  通過基本表的串連操作進行了簡單的查詢,然後再一對照,發現真的是這五條資料搗的鬼。哎!這次真的是幫了自己的大忙了

其實右外串連只是基本表中的一種連線類型,除此之外,資料表的連線類型分成:

1)內串連:是等值串連

2)外串連:看以什麼資訊為主,是表格A還是表格B,如果以表A資訊為依據,那就使用左外串連,相反則使用右外串連。全外串連則是兩個表都不加限制。

3)自然串連:串連發生在一張表內

下邊通過舉例來詳細說明:

表TB_student和表TB_English


對於自然串連,一般使用在有公用屬性的情況中,如果兩個關係沒有公用屬性,那麼自然串連則就轉換成笛卡兒積來進行操作。

迪卡兒積:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentNameFROM         dbo.TB_English CROSS JOIN                      dbo.TB_Student
顯示效果:

內串連:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentNameFROM         dbo.TB_English <span style="color:#ff0000;">INNER JOIN</span>                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

左外串連:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentNameFROM         dbo.TB_English<span style="color:#ff0000;"> LEFT OUTER JOIN</span>                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes


右外串連:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentNameFROM         dbo.TB_English <span style="color:#ff0000;">RIGHT OUTER JOIN</span>                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

全外串連:

SELECT     dbo.TB_English.studentCode, dbo.TB_English.englisfenji, dbo.TB_Student.StudentCodes, dbo.TB_Student.StudentNameFROM         dbo.TB_English <span style="color:#ff0000;">FULL OUTER JOIN</span>                      dbo.TB_Student ON dbo.TB_English.studentCode = dbo.TB_Student.StudentCodes

總結:

   這次對於基礎資訊的操作讓自己對於SQL查詢等等熟悉了許多,對於實踐檢驗知識的熟練程度,真的是一點都不假啊!雖然只是一些小小的知識點,但是通過這次基礎資訊維護,讓自己更加明白了這些基礎性的學習一定要紮實啊!這些知識看似簡單,但是如果不瞭解,真的會使自己的查詢效率大大降低啊!




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.