SQL多表查詢分析

首先,建立三張表,按照《數據庫系統概論》(高教版)例題建立。
代碼如下:
 
-- 1.Student
 CREATE TABLE Student
   (Sno CHAR(9) PRIMARY KEY,  -- Sno
    Sname CHAR(20) UNIQUE,    -- Sname
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20)
    );
-- 2. Course
CREATE TABLE Course
   (Cno CHAR(4) PRIMARY KEY,   -- Cno
    Cname CHAR(40),
    Cpno CHAR(4),           -- Cpno 
    Ccredit SMALLINT,
    FOREIGN KEY (Cpno) REFERENCES Course(Cno)   
    -- CpnoCourse Cno 
    );
    
-- 3.SC
CREATE TABLE SC
  ( Sno CHAR(9),
    Cno CHAR(4),
    Grade SMALLINT,
    PRIMARY KEY (SnoCno),
        -- 
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
        -- SnoStudent
    FOREIGN KEY (Cno) REFERENCES Course(Cno)
        --  CnoCourse
   );
 
先來解釋下外鍵如果表A的主關鍵字是表B中的字段,則該字段稱爲表B的外鍵,表A稱爲主表,表B稱爲從表。外鍵是用來實現參照完整性的,不同的外鍵約束方式將可以使兩張表緊密的結合起來,特別是修改或者刪除的級聯操作將使得日常的維護工作更加輕鬆。(參考:http://www.cnblogs.com/dirichlet/archive/2011/01/02/1924298.html 
解釋一下三張:Student和Course這兩張表是獨立的相互不關聯,而SC這張表是前兩張表的從表。使用Sno和Cno外鍵連接前兩張表。所以要查找Student表中所對應Course中的數據,就要用SC表將這兩張表連接起來。

實例:查詢姓名爲“李勇”的學生選課名稱和成績。
分析:姓名在Student表中,選課名在Course表中,而成績在SC表中,顯然是要把三張表連接起來。當然,你可以用WHERE來實現,只不過太麻煩。那麼如何連接三張表呢?
    很簡單,只要把從表對應主表的外鍵聯繫起來就可。
要說的一點是AND可以多次使用,
代碼如下
 
SELECT Sname,CnameGrade
  FROM student,SCcourse
 WHERE Student.Sname = '' AND course.Cno = SC.Cno AND Student.sno = SC.Sno;
 
 其實,多表查詢的本質我覺得是將三張表組成一張大表,然後其他的方法和單表查詢一致。比如上面先使用 
 course.Cno = SC.Cno AND Student.sno = SC.Sno
將三張表連接在一起,再使用 
 
SELECT Sname,CnameGrade
  FROM student,SCcourse
 WHERE Student.Sname = '' 
 
在大表中找到姓名爲“李勇”的學生名,課程名以及成績。 
好了,這是今天的演示題目,原諒我是一隻菜鳥,當時沒第一時間做出來,現在總結一下。
多表查詢的步驟:
1.使用外鍵連接所要查詢的表
2.按照單表查詢的方法操作

到此結束。 
發佈了47 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章