/*题外话

--更改foreign key约束定义引用行(delete cascade/delete set null/delete no action),默认delete on action
--引用行(当主表条记录被删除时确定何处理字表外部码字段):
--delete cascade : 删除子表所有相关记录
--delete set null : 所有相关记录外部码字段值设置NULL
--delete no action: 做任何操作
--left 以左表为主,左表中的数据都查询出来
--约束唯一 unique
--多对多

*/
drop table stud;
drop table course;
select * from USER_TABLES;
--创建学生表
create table stud(
id int primary key,
name varchar(30)
);
--课程表
create table course(
id int primary key,
name varchar(30),
hours int
);
--
create table sc (
sid int ,
cid int,
constraint sc_pk primary key(sid,cid),
constraint sc_fk1 FOREIGN key(sid) references stud(id),
constraint sc_fk2 FOREIGN key(cid) references course(id)
);
select * from sc;

--先写入几个学生
insert into stud values(1,'Jack');
insert into stud values(2,'张三');
insert into stud values(3,'李四');
insert into stud values(4,'Rose');
--再写入几个课程
insert into course values(101,'Java',120);
insert into course values(102,'C#',60);
insert into course values(103,'Oracle',75);
insert into course values(104,'.NET',60);
commit;
--开始选课
insert into sc values (1,101);
insert into sc values (1,102);
insert into sc values (2,101);
insert into sc values (3,104);
commit;
-----------------------------------------------
-------------------开始查询---------------------
-----------------------------------------------
--查学生选了什么课
select s.name as 学生,c.name as 成绩
from stud s,course c,sc
where s.id=sc.SID and c.id=sc.CID;
-----inner join
select s.name ,c.name from stud s
inner join sc on s.id=sc.sid
inner join course c on c.id=sc.cid;
--查询没有选课的
select s.name,c.name from stud s
LEFT join sc on s.id=sc.SID
LEFT join COURSE c on c.ID=sc.cid
where c.name is null;

select s.name from course c
right join sc on c.id=sc.cid
right join stud s on s.id=sc.sid
where c.name is null;

--查询那些课没人选

select s.name,c.name as cname
from stud s
right join sc on s.id=sc.sid
right join course c on sc.cid=c.id
where s.name is null;

select s.name,c.name as cname
from course c
left join sc on c.id=sc.cid
left join stud s on sc.sid=s.id
where s.name is null;

Oracle关联查询关于left/right join的那点事的更多相关文章

  1. Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

    一.存在表A和表B,都包含字段user_no,但数据类型不一致,如下: create table A ( user_id varchar2(20), user_no number(12,0), xxx ...

  2. Yii2中多表关联查询(with、join、joinwith)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order         (id  order_name   custome ...

  3. 【database】oracle关联查询主表对应的特定一行从表结果集

    主表: 从表: 结果集: 查询从表中年龄最大的一行数据,如果存在年龄相等的则为了保证唯一取id(主键)最大的一行. 一.利用sql子查询嵌套 -- -------------------------- ...

  4. 关联查询总结,left join 和 inner join 区别和优化

    left join 是做左外关联,主表内容都会显示:符合关联条件的附表内容才会显示出来. inner join 是内关联,没有主表附表的概念:两个表中,同时符合关联条件的数据才会显示出来. left ...

  5. Oracle 关联查询

    select count(1),a.policy_id from gp_pol_prod a where a.product_id=8401 group by a.policy_id having c ...

  6. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  7. SQL-Server多表关联查询并分页

    一.多表关联查询 1,left join RelaTimeLog表 和 ValidFlight表关联查询 order by t.FlightId desc 2,与group by连用 group by ...

  8. CI 多表关联查询

    方法一:$this->db->query("sql  语句");     直接写sql语句 方法二: #多表关联查询 $data=$this->db->fr ...

  9. EF Core 的关联查询

    0 前言 本文会列举出 EF Core 关联查询的方法: 在第一.二.三节中,介绍的是 EF Core 的基本能力,在实体中配置好关系,即可使用,且其使用方式,与编程思维吻合,是本文推荐的方式. 第四 ...

随机推荐

  1. 常用webservice网址

    http://www.gpsso.com/Main/ServiceList.aspx http://developer.51cto.com/art/200908/147125.htm 这里记录了几个常 ...

  2. oracle开机自启动-超简单

    1. 在/etc/oratab中作如下修改$ORACLE_SID:$ORACLE_HOME:Y例如vi /etc/orataborcl:/u01/app/oracle/product/10.2.0/d ...

  3. windows下配置lamp环境(4)---安装MySQL数据库5.6

    图解安装MySQL数据库 1.获取软件就多不说了 2.双击开始安装 3.点击点击NEXT进行下一步 4.同意协议,点击NEXT进入下一步 5.选择指定安装位置安装方法,进入安装位值选择页面: 6.分别 ...

  4. Javascript中的对象和原型

    一 原型对象 原型对象实际上就是构造函数的一个实例对象,和普通的实例对象没有本质上的区别.可以包含特定类型的所有实例的共享属性或者方法.这样,如果我们需要修改所有实例中的属性或者方法,就只需要修改一处 ...

  5. Regular expression cheat sheet

    \s white-space characters \S Non-white-space characters \d digital numbers \D non-digital numbers \w ...

  6. UI控件自定义tableView的分割线的样式

    - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFi ...

  7. cf C. Jeff and Rounding

    http://codeforces.com/contest/352/problem/C 题意:给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 对每一个浮 ...

  8. cf B. Maximum Absurdity

    http://codeforces.com/contest/332/problem/B #include <cstdio> #include <cstring> #includ ...

  9. CONTEST36 小Z的模拟赛(2)

    A.小Z的可恶路障 题目:http://www.luogu.org/problem/show?pid=U126 题解:暴力也可以过吧.我为了保险先求了一次最短路,然后枚举这条最短路上的所有边... 代 ...

  10. dos判断系统版本

    可以通过VER命令的输出结果判断2K/XP/NT,楼主应该对比以下各版本的VER命令输出结果,参考MrPotter(HarryPotter) 的脚本即可, ver|find "XP" ...