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行。
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行。