`
wyyl00
  • 浏览: 107789 次
  • 性别: Icon_minigender_1
  • 来自: 山旮瘩
社区版块
存档分类
最新评论

连接查询

    博客分类:
  • SQL
阅读更多
SQL> select * from student;

       SNO SNAME          SCLASS
---------- ---------- ----------
      1001 Tom                 1
      1002 Lucy
      1003 Lily                3

SQL> select * from class;

       CNO CNAME
---------- ----------
         1 计算机1班
         2 化学1班
         3 物理1班

内连接:
SQL> select s.sno,s.sname,c.cname from student s,class c where s.sclass = c.cno;

       SNO SNAME      CNAME
---------- ---------- ----------
      1001 Tom        计算机1班
      1003 Lily       物理1班

SQL> select s.sno,s.sname,c.cname from student s join class c on s.sclass = c.cno;

       SNO SNAME      CNAME
---------- ---------- ----------
      1001 Tom        计算机1班
      1003 Lily       物理1班

SQL> select s.sno,s.sname,c.cname from student s inner join class c on s.sclass = c.cno;

       SNO SNAME      CNAME
---------- ---------- ----------
      1001 Tom        计算机1班
      1003 Lily       物理1班

查出每个学生分别属于哪个班级,用到左连接
左连接:LEFT JOIN 或 LEFT OUTER JOIN。
SQL> select s.sno,s.sname,c.cname from student s , class c where s.sclass = c.cno(+);

       SNO SNAME      CNAME
---------- ---------- ----------
      1001 Tom        计算机1班
      1002 Lucy       物理1班
      1003 Lily
      1004 Jerry      物理1班

SQL> select s.sno,s.sname,c.cname from student s left join class c on s.sclass = c.cno;

       SNO SNAME      CNAME
---------- ---------- ----------
      1001 Tom        计算机1班
      1002 Lucy       物理1班
      1003 Lily
      1004 Jerry      物理1班

     
查出每个班有哪些学生
右连接:RIGHT JOIN 或 RIGHT OUTER JOIN。
SQL> select c.cname,s.sno,s.sname from student s right join class c on s.sclass = c.cno;

CNAME             SNO SNAME
---------- ---------- ----------
计算机1班        1001 Tom
物理1班          1002 Lucy
物理1班          1004 Jerry
化学1班

SQL> select c.cname,s.sno,s.sname from student s , class c where s.sclass(+) = c.cno;

CNAME             SNO SNAME
---------- ---------- ----------
计算机1班        1001 Tom
物理1班          1002 Lucy
物理1班          1004 Jerry
化学1班


全连接:FULL JOIN 或 FULL OUTER JOIN。
SQL> select c.cname,s.sno,s.sname from class c full outer join student s on s.sclass = c.cno;

CNAME             SNO SNAME
---------- ---------- ----------
计算机1班        1001 Tom
物理1班          1002 Lucy
物理1班          1004 Jerry
化学1班
                 1003 Lily

交叉连接:
SQL> select * from student cross join class order by sno;

       SNO SNAME          SCLASS        CNO CNAME
---------- ---------- ---------- ---------- ----------
      1001 Tom                 1          2 化学1班
      1001 Tom                 1          1 计算机1班
      1001 Tom                 1          3 物理1班
      1002 Lucy                3          1 计算机1班
      1002 Lucy                3          2 化学1班
      1002 Lucy                3          3 物理1班
      1003 Lily                           2 化学1班
      1003 Lily                           1 计算机1班
      1003 Lily                           3 物理1班
      1004 Jerry               3          2 化学1班
      1004 Jerry               3          3 物理1班=
      1004 Jerry               3          1 计算机1班

已选择12行。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics