oracle 两表关联查询

CreationTime--2018年7月4日17点27分

Author:Marydon

情景描述

  查询学生表student,sname,sex,age信息及所在班级clazz表

1.使用左连接

select sname, sex, age, cname
from student t1
left join clazz t2
on t1.cid = t2.cid;

2.使用(+),oracle独有

select sname, sex, age, cname
from student t1, clazz t2
where t1.cid = t2.cid(+);

3.from后面跟两张表

select sname, sex, age, cname
from student t1, clazz t2
where t1.cid = t2.cid;

4.作为主表的查询字段

select sname,
sex,
age,
(select cname from clazz t2 where t1.cid = t2.cid) cname
from student t1;

小结

  前2种方式,是左连接的方式实现,学生表作为主表,当学生表中的班级cid在班级表中找不到时,班级名称cname填充内容为空;

  后2种方式,只查询出2表均能够匹配到的数据,学生表的数据不一定能查出所有记录。

拓展

  只有Oracle数据库可以使用(+)来代替左连接和右连接;

  "(+)"在"="右侧,表示的是:左连接,如:t1.cid = t2.cid(+);左表(学生表)为主表;

  "(+)"在"="左侧,表示的是:右连接,如:t1.cid(+) = t2.cid;右表(班级表)为主表。

相关推荐:

 

oracle 两表关联查询的更多相关文章

  1. oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...

  2. MyBatis 中两表关联查询MYSQL (14)

    MyBatis 中两表关联查询MYSQL 1.创建数据库表语句 2.插入测试数据 3.pom文件内容 <?xml version="1.0" encoding="U ...

  3. Oracle两表关联,只取B表的第一条记录

    背景:  A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 首先想到了直接写个带排序的子查询去匹配外围的值,从这个结果集中只要第一条,但是经过验证发现, ...

  4. SQL 两表关联查询 where 条件中等号两端字段顺序对效率的影响

    现有两表A(大).B(小)作关联查询,SQL语句如下: SQL1:select * from A,B where A.id = B.id SQL2:select * from A,B where B. ...

  5. ORACLE 两表关联更新三种方式

    不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...

  6. sql语句 两表关联查询计算数量

    select sum(a1.`num`)   from `order_orderlistrow` as a1 INNER JOIN `order_orderlist` as a2 on a1.`ord ...

  7. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  8. Oracle中如何实现Mysql的两表关联update操作

    在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...

  9. ORACLE数据库多表关联查询效率问题解决方案

    最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字 ...

随机推荐

  1. [YC703]ゴミ拾い Easy

    [YC703]ゴミ拾い Easy 题目大意: 二维平面内有\(n(n\le3\times10^5)\)个人和\(n\)个物品,第\(i\)个人在\((a_i,0)\)上,第\(i\)个物品在\((x_ ...

  2. bzoj 3594

    题解见: http://blog.csdn.net/qpswwww/article/details/44407371 收获: 1.对于一个问题,看似不可做,但一定存在一定特点,我们要做的就是找出一些特 ...

  3. python开发_pickle

    pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别.要和其他语言交互,可以使用内置的json包使用pickle模块你可以把Python对象直接保存到 ...

  4. Acdream 1738 世风日下的哗啦啦族I 树套树

    世风日下的哗啦啦族I Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1738 Descri ...

  5. PHP 基础函数(二)数组的内部指针

    current($arr);  返回数组中的当前单元pos($arr);  返回数组中的当前单元key($arr);  返回数组中当前单元的键名prev($arr);  将数组中的内部指针倒回一位ne ...

  6. 如何理解Hibernate中的HibernateSessionFactory类

    package com.zz.util; import org.hibernate.HibernateException; import org.hibernate.Session; import o ...

  7. Android调用系统相机、自定义相机、处理大图片

    Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...

  8. DotNet和DotNet Core

    EF 1.0 ---EF6.0 都是code firstmodel ,model model first model,database first model, EF7 是DOTNET CORE重框版 ...

  9. ARMv7处理器各个模式之间是怎样切换的?模式切换时上下文的保存哪些是硬件在做?哪些是操作系统在做?

    1.ARM处理器各个模式之间是怎样切换的? 答:除用户模式外的其它6种模式称为特权模式,这些模式中,程序能够訪问全部系统资源,也能够随意进行处理器模式的切换.处理器模式能够通过软件控制进行切换(直接设 ...

  10. cocos2d-x v3.0新特性及使用

    八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用 总得来说,给开发者带来了很大的便利: 运行环境需求: Android 2.3 or newer iOS ...