多表查询

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. vuex实践之路——笔记本应用(二)

    上一篇我们简单介绍了vuex在此项目中的作用. 这次来理一下项目的整体思路. main.js上次看过了,首先看App.vue文件 我们引入了Toolbar.vue,NodeList.vue,Edito ...

  2. Win7 64位操作系统连接HP 1010打印机完美解决方案

    工作的第一天就遇到问题,新电脑无法连接老式的HP1010打印机,64位Windows7系统无法连接32位XP网络共享打印机,而32位WIN7就可以. 这里分享个简单的解决方法:        先去下载 ...

  3. RPG游戏开发基础教程

    RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...

  4. 部署jar项目常用命令

      netstat -tunlp | grep  ××   查询出端口为××在运行应用的线程ip   kill -9  ××     关闭线程ip 为 ××的应用   rm  -f  ××.jar  ...

  5. 微软职位内部推荐-Senior SW Engineer for Application Ecosystem

    微软近期Open的职位: Job posting title: Senior Development Engineer Location: China, Beijing Division: Opera ...

  6. nginx反向代理tomcat应用,struts2网站程序redirect时导致请求地址错误的解决方法

    一个使用struts2的网站在登录页面需要进行redirect跳转,大致如下: <package name="admin" extends="httl-defaul ...

  7. babel的使用(关于使用async报错的问题)

    一.配置文件.babelrc .babelrc 文件存放在项目的根目录下. { "presets": [], "plugins": [] } presets 字 ...

  8. 《Linux内核分析》课程第二周学习总结

    姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  9. Linux内核分析第三周总结

    构造一个简单的Linux系统MenuOS 操作系统的"两把宝剑":中断上下文的切换(保存现场和恢复现场).进程上下文的切换 Linux内核源代码简介 --------------- ...

  10. VC2013一些感受

    这是一个我很早就在用的编译器,因为是微软官方的,极其高大上,安装包,界面错误的提示处理都相当简洁明了,不像VC6.0以及Codeblock太low了 但其实,我想说,我并不怎么用这玩意~就像Siri做 ...