多表查询

1. 笛卡尔乘积

  • 简单格式

    SELECT * 或字段列表

    FROM 数据表列表

  • 实例

--1. 笛卡尔乘积 (五条件的连接--很多条件无意义)
Select *
from Student, SC

2. 等值连接

-- 查询选课的学生全部信息
SELECT *
From Student, SC
where Student.Sno = SC.Sno

3. 不等值连接

select numb, cnumb, score, grade
from score, grade
where score.score between grade.gstart and grade.gend

4. 使用INNER JOIN (内连接, 匹配项)

Select * 或字段列表

From 表1

INNER JOIN 表2 ON 连接规则1

INNER JOIN 表3 ON 连接规则2

...

[WHERE 条件]

[ORGER BY]

--7. 使用INNER JOIN
-- (1)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb -- (2)
select *
from score, stu1, course
where score.numb = stu1.numb
and score.cnumb = course.cnumb
and stu1.name = '王宁'
order by course.cname, score.score -- 用 INNER 改写(2)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb
INNER JOIN course ON score.cnumb = course.cnumb
where stu1.name = '王宁' --将where里面条件放到了INNER里面
ORDER BY course.cname, score.score

5. 外连接OUTER JOIN (能够查到不匹配项)

  • 按连接条件得到结果

  • 内连接

左外连接 LEFT OUTER JOIN

  • 查找左边表的不匹配项

    SELECT * | 字段列表

    FROM 表1

    LEFT OUTER JOIN 表2 ON 条件

    左表与表2没有对应项的话,左边表的记录显示出来

右外连接RIGHT OUTER JOIN

  • 查找右边表的不匹配项

    SELECT * | 字段列表

    FROM 表1

    RIGHT OUTER JOIN 表2 ON 条件

    左表与表2没有对应项的话,表2 的记录显示出来

--8. 外连接OUTER JOIN
-- 查询所有同学的学生信息 和 选课信息(选课的列出课程编号和成绩,
-- 没有选课的这两项为NULL)
select *
from stu1
--左外连接,左边表里的,也就是stu1这个表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb --或者是
select *
from score
--右外连接,右边表里的,也就是这个score表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb

多表连接查询

  • 笛卡尔乘积

  • 等值连接

  • 不等值连接

  • 内连接、外连接

    SELECT *

    FROM 表1

    [INNER JOIN 表2 ON 条件 ] |

    [LEFT | RIGHT OUTER JOIN 表2 ON 条件 ]

    [WHERE 条件]

    [GROUP BY 字段列表]

    [HAVING 条件]

    [ORDER BY 条件]

SQL语句(十三)多表查询的更多相关文章

  1. 2.1 Oracle之DML的SQL语句之单表查询以及函数

    1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...

  2. 2.2 Oracle之DML的SQL语句之多表查询以及组函数

    一.SQL的多表查询: 1.左连接和右连接(不重要一方加(+)) SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHE ...

  3. SQL语句 自连表查询。inner join用法,partition by ,列转行查询

    use mydb1 go -- 表T_Employee2 -- Id Name Position Dept -- 1 张三 员工 市场部 -- 2 李四 经理 销售部 -- 3 王五 经理 市场部 - ...

  4. 惊世骇俗的sql语句之连表查询

    select `product_skus`.id as skuId, `wname` as sku名称, if(`sku_attributes`.`status`=1,'上架','下架') as 状态 ...

  5. hibernate中使用sql语句进行表链接查询,对结果集的遍历方法

    今天做了一个在hibernate中使用sql语句进行表链接查询的功能,得到的属性是来自两个表中的字段.下面对结果集遍历的方法进行记录. sql语句不写了.部分代码如下: List<Course_ ...

  6. SQL语句之 多表管理

    SQL语句之 多表管理 一个数据库内通常会有不止一张表,有时候我们要把多张表联系起来,这就需要用到多表管理的语句. 1.外键约束 一个表中的非主键字段,如果在另外一张表中是主键,那么这个字段我们叫它做 ...

  7. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

  8. 通过带参数的Sql语句来实现模糊查询(多条件查询)

    #region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...

  9. (转载)用SQL语句创建Access表

    <来源网址:http://www.delphifans.com/infoview/Article_220.html>用SQL语句创建Access表 很久以前弄的,用了一天的时间,没有什么技 ...

  10. 使用sql语句获取数据库表的信息

    下面的sql语句可以查看表的信息.其中modify_date和create_date可以根据表的修改时间来查看.如果不需要删除后,就能看到所有表的字段信息 ) PERCENT d.name AS 表名 ...

随机推荐

  1. CodeFirst从零搭建ASP.NETCore2.0

    没时间介绍了,废话不说先上车 以下所有扯淡都是建立在.NETCore2.0环境已经搭建好 右键解决方案>新建项目> 选择Web>ASP.NETCoreWeb应用程序(.NET Cor ...

  2. nginx反向代理设置自定义错误页面

    为nginx反向代理设置自定义错误页面 转:https://blog.csdn.net/u014433030/article/details/77507839 如果我们的nginx配置了反向代理,如下 ...

  3. java Script复习总结

    一:基础知识 1.JavaScript语言的历史 l  早期名称:livescript l  开发公司:网景公司(netscape) 2.JavaScript语言的基本特点 l  基于对象 l  事件 ...

  4. Apache Ignite 学习笔记(二): Ignite Java Thin Client

    前一篇文章,我们介绍了如何安装部署Ignite集群,并且尝试了用REST和SQL客户端连接集群进行了缓存和数据库的操作.现在我们就来写点代码,用Ignite的Java thin client来连接集群 ...

  5. Git多人协作工作流程

    前言 之前一直把Git当做个人版本控制的工具使用,现在由于工作需要,需要多人协作维护文档,所以去简单了解了下Git多人协作的工作流程,发现还真的很多讲解的,而且大神也已经讲解得很清楚了,这里就做一个简 ...

  6. PAT甲题题解-1042. Shuffling Machine (20)-模拟

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789205.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  7. Java的三大特性:封装、继承、多态

    一.类的概念: 类一般包括两个部分:属性(成员变量)和方法(成员方法)方法组成部分:修饰符(可选) 返回值类型(必须) 方法名(必须)参数列表(可选) package com.classTest.pr ...

  8. Arduino与Air800开发板使用UART通信:传输DHT22传感器数据

    硬件介绍 Arduino Leonardo在数字引脚0(RX)和1(TX)进行串口通信时是使用“Serial1”,USB的串口通信使用的是“Serial”.在数字引脚0(RX)和1(TX)与USB是相 ...

  9. vue 将值存储到vuex 报错问题

    报错 :Vuex - Computed property “name” was assigned to but it has no setter 如何解决: computed: { addModal: ...

  10. Java之utf8中文编码转换

    import org.apache.commons.codec.binary.Hex; import org.junit.Test; /** * HBASE中文转换 */ public class C ...