连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加。

连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表。

连接查询为join,使用方式为:左表join右表。

左表:join左边的表;

右表:join右边的表。

连接查询分类:在 SQL 中将连接查询分为四类,分别为内连接、外链接、自然连接和交叉连接。

交叉连接交叉连接:cross join,从一张表中循环取出每一条记录,每条记录都去另外一张表进行匹配,匹配的结果都保留(没有条件匹配),而连接本身的字段会增加,最终形成的结果为笛卡尔积形式。

基本语法:左表 cross join 右边;

其结果与多表查询相同。

执行如下 SQL 语句,进行测试:

-- 将表 student 与 class 进行交叉连接

select * from student cross join class;

-- 将表 student 与 class 进行多表查询

select * from student,class;

实际上,笛卡尔积形式(交叉连接和多表查询)的结果并没有什么实际意义,应该尽量避免,其存在的价值就是保证连接这种结构的完整性。

内连接内连接:inner join,从左表中取出每一条记录,和右表中的所有记录进行匹配,并且仅当某个条件在左表和右表中的值相同时,结果才会保留,否则不保留。

基本语法:左表 + [inner] + join + 右表 + on + 左表.字段 = 右表.字段;

其中,关键字on表示连接条件,两表中的条件字段有着相同的业务含义。

执行如下 SQL 语句,进行测试:

-- 将表 student 与 class 进行内连接

select * from student inner join class on student.grade = class.grade;

select * from student join class on student.grade = class.grade;

在这里,值得注意的是:如果两表中有某个表的条件字段名唯一,那么在书写连接条件的时候,可以省略表名,直接书写字段名,MySQL 会自动识别唯一字段名,但不建议这么做。此外,咱们会发现,在上面的结果中有同名字段,这会给咱们理解数据的意义造成一定的困扰,这时就需要使用字段别名和表别名做区别啦!

执行如下 SQL 语句,进行测试:

-- 将表 student 与 class 进行内连接,起别名

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c on s.grade = c.grade;

最后,内连接可以没有连接条件,即可以没有on及之后的内容,这时内连接的结果全部保留,与交叉连接的结果完全相同。而且在内连接的时候可以使用where关键字代替on,但不建议这么做,因为where没有on的效率高。

执行如下 SQL 语句,进行测试:

-- 将表 student 与 class 进行内连接,不加连接条件

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c;

-- 将表 student 与 class 进行交叉连接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s cross join class as c;

-- 使用 on 关键字进行内连接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c on s.grade = c.grade;

-- 使用 where 关键字进行内连接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c where s.grade = c.grade;

温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。

———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程

mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」相关推荐

  1. Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程

    本文主要为大家详细介绍了史上最简单的MySQL数据备份与还原教程第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 数据备份与还原第一篇分享给大家,具体内容如下 基础概念: ...

  2. 史上最简单的 MySQL 教程

    史上最简单的 MySQL 教程 数据库是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变 ...

  3. 史上最简单的 MySQL 教程(二)「关系型数据库」

    关系型数据库 1 定义 关系型数据库,是一种建立在关系模型(数学模型)上的数据库. 至于关系模型,则是一种所谓建立在关系上的模型,其包含三个方面,分别为: 数据结构:数据存储的形式,二维表(行和列): ...

  4. 史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」

    史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」 唯一键 唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具 ...

  5. 史上最简单的spark教程第十三章-SparkSQL编程Java案例实践(终章)

    Spark-SQL的Java实践案例(五) 本章核心:JDBC 连接外部数据库,sparkSQL优化,故障监测 史上最简单的spark教程 所有代码示例地址:https://github.com/My ...

  6. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    最新Finchley版本请访问: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/ 或者 http://blog.csd ...

  7. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

    转载请标明出处: http://blog.csdn.net/forezp/article/details/81040925 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...

  8. 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心

    转自:https://blog.csdn.net/forezp/article/details/81041101 文章 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eu ...

  9. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...

最新文章

  1. 浅谈Angular如何自定义创建指令@Directive
  2. 端口基础常识大全+常用端口对照
  3. html实现以秒为单位倒数,跳转新的页面
  4. vue商品列表滚动效果_如何处理前端超长列表
  5. 冰刃初步使用图解(Win7 64位)
  6. 细说伟哥那些你不知道的神奇用途
  7. 在整个数据库中查找包含某关键字的所有存储过程
  8. php mysql保存unicode_使用PHP和MySQL存储和显示unicode字符串(हिन्दी)
  9. ABP入门系列(1)——通过模板创建MAP版本项目
  10. 非期望产出的sbm模型_投入产出模型在评价中应用的局限性
  11. oracle9i 是否安全,指纹识别与Oracle 9i安全特性解析
  12. SCCM 2012 简体中文正式版 部署文档 01 环境说明
  13. (转载)C#中如何获取当前路径的几种方法
  14. 有了中文版MSDN2,何必又东奔西走去找资料
  15. 捕捉异常_Python通过try....except...else捕捉和处理异常
  16. Ubuntu下多个gcc版本之间的切换
  17. 路由器交换机防火墙无线AP基础理论知识总结
  18. 点云配准(三) 传统点云配准算法概述
  19. Simulink Resolver 旋转变压器解码仿真
  20. 软件测试学习笔记——APP测试专项知识

热门文章

  1. 倾听用户呼吁Skype决定开源
  2. Windows平台下的多线程编程
  3. sqlserver两个日期之间的年数_SQL语句计算两个日期之间有多少个工作日的方法
  4. pascal和python的区别_Python如何与其他编程语言不同
  5. STAR直接就可以输出readsCount,为什么还需要featurecounts?
  6. 这个保守的 RNA motif是病毒侵染的关键
  7. Mac用户装机必备——让 Mac 也能右键新建/剪切文件,多达 10 余项实用功能
  8. mongo java mapreduce_MongoDB中的MapReduce简介
  9. sql查看视图字段信息_高级(视图 索引)
  10. java 32位_Java知识点:创建节约内存的JavaBean