前言

最近面试实习生,发现一般来说,公司喜欢通过一些 SQL 语句来考察你对数据库的使用熟不熟悉。所以我来总结一下我在面试中遇到多表联查是怎么联查的。

三表联查

首先来说多表联查的一些知识点。

多表是指等于或者多余三个表以上的数据库查询。多表联查的类型有:

  • 内连接:join,inner join
  • 外连接:left join,left outer join,right join,right outer join,union
  • 交叉连接:cross join

解释一下,外连接是指将两个表进行合并,如果有不相同的列,那么另外一个表将显示 null。而内连接是指内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。也就是说,运算符可以是 =,也可以是 >、>=、<=、<、!>、!<和<>。

内连接

假如我们有两个表

student.table

id name clsId

1  tjc    1

2  zhangsan    2

3 李四    3

4  刘五    4

5  黄六    5

class.table

clsId clsName

1        软件1班

2        软件2班

3        软件3班

4        软件4班

为了查询上面两个表,我们可以使用两种查询语句:

  • select * from student as s,class as as c where s.clsId = class.clsId
  • select * from student as s inner join class as c on s.clsId = class.clsId

两种结果都是:

id name clsId clsId clsName

1  tjc    1        1        软件1班

2  zhangsan    2        2        软件2班

3 李四    3        3        软件3班

4  刘五    4        4        软件4班

外连接

外连接跟内连接不同之处,如果查询的表中,如果通过关联标示符中,一个表的数据而另外一个表没有响应的数据项,那么就显示 null。

左连接

查询 SQL 语句为:

select * from student as s left join class as c on s.clsId = c.clsId 

以左表为基准,如果右表没有相应的数据项,那么右表显示为 null。

右连接

select * from student as s right join class as c on s.clsId = c.clsId 

以右表为基准,如果左表没有相应的数据项,那么左表显示为 null。

全连接

select * from student as s full outer join class c on s.clsId = c.clsId 

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉连接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

select * from student as s cross join class as c order by s.id


SQL 语句多表联查相关推荐

  1. SQL语句---多表联查、改、删

    SQL语句-多表联查.改.删 1.多表联查 select* from Student t1 inner join Teacher t2 on t1.no=t2.no where t2.Tname='M ...

  2. sql语句———多表联查

    连接查询 内连接: 相当于查询集合A与集合B的交集部分 外连接 左外连接:查询左表所有数据,以及两张表交集部分数据 右外连接:查询右表所有数据,以及两张表交集部分数据 自连接:当前表与自身的连接查询, ...

  3. sql语句 四表联查

    header("Content-Type: text/html;charset=utf-8"); $mysql_server="xxxxx"; $mysql_u ...

  4. sql序列(2) sql语句功能表

    这里提供一份 sql语句功能表,大家可以根据关键字去梳理自己的知识点 https://files.cnblogs.com/files/namedL/sql%E8%AF%AD%E5%8F%A5%E5%8 ...

  5. 用一条sql语句删除表中所相同记录

    用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...

  6. 用MS SQL 语句修改表中字段类型

    [问题]用SQL 语句判断表中是否存在password字段,不存在则新增字段,若存在password字段,把字段的类型由int 类型改为text类型. [实现方法] if exists( select ...

  7. 【SQL】SQL语句多表联合查询

    SQL语句多表联合查询 CREATE TABLE orders( id int not null primary key identity(1,1), customerName varchar(100 ...

  8. 轩小陌的Python笔记-day26 必备SQL语句、表关系及授权

    day26 必备SQL和表关系及授权 课程目标:掌握开发中最常见的SQL语句和表关系及授权相关知识点. 课程概要: 必备SQL(8个必备) 表关系 授权 1. 必备SQL语句 上一节讲解了最基础SQL ...

  9. SQL语句多表查询:【多表连查】和【子查询】

    SQL语句多表查询:[多表连查]和[子查询] 说明:insert.update.delete只针对[一张表]执行操作. 说明:select可以查询一张表.也可以查询多张表. 说明:多表查询分为:[多表 ...

最新文章

  1. 100法拉电容生猛无线充电背后原因
  2. 搭建Modelsim SE仿真环境-使用do文件仿真
  3. OpenStack Heat 如何来实现和支持编排
  4. jquery validate 插件:(2)简单示例
  5. 玩转Mixly – 8、Arduino AVR编程 之 变量
  6. 链表表示八进制加法c语言,用单链表实现八进制加法操作,恳请大家看看Add( )函数的问题...
  7. Thymeleaf与Spring集成(第2部分)
  8. ceph 数据库_Facebook打开了动画库,Ceph在Red Hat找到了新家,等等
  9. mysql日志输出到syslog_在chroot环境下将MySQL日志输出到syslog
  10. fullPage.js给网站加上全屏幻灯片的展示效果
  11. osip和mysql_Windows下编译eXosip、osip,以及UAC和UAS的例子
  12. RS232和RS485区别
  13. mongodb mongod 参数解释
  14. Python 疾病诊断归一化
  15. php影院影城源码,99影院源码 影视网站程序源码/附教程
  16. Java 二叉树完整代码(递归迭代)
  17. STC宏晶单片机初始开发教程
  18. 计算机电源复位,关于Apple本本的电池复位(重置电源管理、电池重置)方法
  19. 程序员延寿指南-活着才能输出
  20. 【Matlab代码】斐波拉契数列

热门文章

  1. 【STC单片机学习】第五课:动手写代码之前必须的准备工作
  2. vim的文件比较功能
  3. 基于《狂神说Java》ElasticSearch--学习笔记
  4. 【数值分析】Doolittle分解和Cholesky分解的Python实现
  5. jack编译突然无法编译的问题
  6. Mysql Oracle Sql server 三种数据库默认端口
  7. 艾诗菲尔墙布|新品:摩登现代系列《M06-飞马》
  8. 高通平台开发系列讲解(USB篇)Linux Android USB软件架构
  9. 把开发板挂载到Ubuntu
  10. OpenCV图像色温