连接查询

首先来认识一个叫笛卡尔积 (cartesian product) 的东东,也可以叫直积。

假设我们有一个集合 A = {a, b}, 还有一个集合B = {0, 1, 2} ,那么这两个两集合的笛卡积为:{{a, 0}, {a, 1}, {a, 2}, {b, 0}, {b, 1}, {b,2}}。

就是两个集合中的元素可能存在的所有组合方式而形成的新的集合!

我是这么理解的,太具体的解释,欢迎伙伴们去百度哈!

现在我们用代码来测试演示一下:

create table one(

one_id int,

one_date char(1),

public_field int

);

insert into one values(1, 'a', 10),(2, 'b', 20),(3, 'c', 30);

create table two(

two_id int,

two_date char(1) not null default 't',

public_field int

);

insert into two values(2, 'B', 20),(3, 'C', 30),(4, 'D', 40);

select one.*, two.* from one, two;

这个就是表one 和 表 two 的所有元素可能出现的组合就是笛卡尔积!

内连接查询

三种语法:

select * from tableA , tableB where tabA.column=tabB.column;

select * from tableA inner join tableB on tabA.column=tabB.column;

select * from tableA cross join tableB on tabA.column=tabB.column;

内连接

只有在连接的表内数据都存在的情况下,才会做连接。内连接是把二个表连接成一个结果集,在这个结果集中仅包含那些满足条件的记录行。

select one.*,two.* from one , two where one.one_id=two.two_id;

select one.*,two.* from one inner join two on one.one_id=two.two_id;

select one.*,two.* from one cross join two on one.one_id=two.two_id;

这三种语法都可以实现内连接查询

外连接查询

如果存在不能匹配的数据,也会进行连接,不过此时 mysql 会帮我们虚拟一条不存在的记录,字段值都是为 null,帮我们完成整个连接记录。

分为:

左外连接 : left join on, left outer join on;

右外连接 :right join on, right outer join on;

语法:

select * from tableA left join tableB on tabA.column=tabB.column;

select * from tableA right join tableB on tabA.column=tabB.column;

区别在于:

左外连接 :

返回左表的所有数据,并且在右表中不能匹配的列值,其字段用空值null表示。

select one.*,two.* from one left join two on one.one_id=two.two_id;

left join – where null

返回和右表不匹配的所有数据行。

select one.*,two.* from one left join two on one.one_id=two.two_id where two.two_id is null;

right join :

右外连接 : 返回右表的所有数据,并且在左表中不能匹配的列值,其字段用空值表示。

select one.*,two.* from one right join two on one.one_id=two.two_id;

right join – where null

返回和右表不匹配的所有数据行。

select one.*,two.* from one right join two on one.one_id=two.two_id where one.one_id is null;

我们来看一下这个外链接在实际项目中的是如何使用的

select a.name,a.province,a.city,a.phone,b.employee_name,b.job_title from office a inner join employee b on a.office_id=b.office_id;

select count(b.employee_id),a.name from office a inner join employee b on a.office_id=b.office_id group by a.name;

select count(employee_id),office_id from employee group by office_id;

这样一对比是不是就看出我们的连接查询的用处了呢?

好的今天就分享到这里了

宝宝们回去要记得练习一下呦!

爱你们么么哒

mysql与java连接查询_【java】MySQL数据库之连接查询相关推荐

  1. mysql左连接含义_学习笔记-数据库左连接,右连接意义及区别

    1.左连接,右连接等的意义及区别: 1)笛卡尔积:CROSS JOIN 要理解各种JOIN首先要理解笛卡尔积.笛卡尔积就是将A表的每一条记录与B表的每一条记录强行拼在一起. 所以,如果A表有n条记录, ...

  2. MySql实验嵌套查询_实验五 数据库的嵌套查询实验

    实验五数据库的嵌套查询实验 本实验需要2学时. 一.实验目的 使学生进一步掌握SQL Server或oracle的企业管理器的使用方法,加深SQL 语言的嵌套查询语句的理解. 二.实验内容 在SQL ...

  3. mysql教程详解之多表联合查询_详解数据库多表连接查询的实现方法

    详解数据库多表连接查询的实现方法 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必 ...

  4. mysql的join语句使用_在MySQL中使用JOIN语句进行连接操作的详细教程

    到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行 ...

  5. B+树 范围查询_为什么 MySQL 使用 B+ 树,而不是 B 树或者 Hash?

    Java技术栈 www.javastack.cn 关注优质文章 为什么 MySQL 使用 B+ 树是面试中经常会出现的问题,很多人对于这个问题可能都有一些自己的理解,但是多数的回答都不够完整和准确.大 ...

  6. mysql怎么子查询_在mysql中如何进行子查询?

    在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT.UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为"WHERE (另 ...

  7. mysql pt工具 加索引_[转]MySQL中如何为连接添加索引

    SELECT * FROM tblA, tblB, tblC WHERE tblA.col1 = tblB.col1 AND tblA.col2 = tblC.col1; explain的结果如下: ...

  8. java es 如何查询_使用elasticsearch的java-api进行查询

    1.前言 elsaticsearch版本是6.8.3,使用的java-api是基于Java High Level REST Client.java 2.数据 3.  InitClient 用来初始化客 ...

  9. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

  10. C MySql封装类 高性能连接池_在vc中通过连接池操作mysql(api方式),附c++访问mysql的封装类...

    在有大量节点访问的数据库设计中,经常要使用到连接池来管理所有的连接. 一般方法是:建立两个连接句柄队列,空闲的等待使用的队列和正在使用的队列. 当要查询时先从空闲队列中获取一个句柄,插入到正在使用的队 ...

最新文章

  1. 秦刚:积累财富最简单的一种模式:打造一项高收入技能
  2. 口语学习Day6:今天聊聊国内安全还是国外安全?
  3. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法
  4. 【数据结构-查找】2.字符串(逐步演绎过程,超级详解KMP算法)
  5. 神策数据加入中国大数据产业生态联盟,神策营销云及融媒解决方案获联盟认证
  6. 【l转】VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func
  7. docsify——一个神奇的文档站点生成器
  8. 在eclipse中,怎么改变字体大小?
  9. 再见Postman,这款API神器更好用!
  10. 太原师范学院计算机科学与技术宿舍,太原师范学院宿舍条件,宿舍环境图片(10篇)...
  11. 分治-寻找第k小的数
  12. Null + Anything = null, 好奇怪的设定啊
  13. 5v 3.3v电平转换电路_3.3V与5V系统电平兼容的方法探究
  14. Android 如何反编译apk查看源码
  15. python语法基础汇总
  16. main函数写法总结
  17. python 读取zip包中的数据
  18. uniapp - APP云打包、蒲公英平台发布APP的步骤
  19. Google GMS认证测试几个名词
  20. office打不开文件,显示需要修复文件,点击修复也没用的解决办法

热门文章

  1. 小甲鱼-010-012列表
  2. yii2 basic版 MVC 部分
  3. 项目中和时间相关的要注意的地方
  4. ASP.NET MVC3 上传头像图片并截图
  5. ASP.NET缓存全解析4:应用程序数据缓存(转)
  6. 高并发服务端分布式系统设计概要(上)
  7. 01-sql优化及索引
  8. Array.from()
  9. 2017年值得回首的那些事(文末有新春好礼相送)
  10. [转]Android 代码自动提示功能