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.按照单表查询的方法操作

到此结束。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值