MYSQL-连接查询:

# 连接查询:把多张表进行记录的连接(按照某个条件进行数据的拼接)

# 分类

1,内链接

2,外连接

# 左外

# 右外

3,自然连接

4,交叉连接

MYSQL-内链接 :

# inner join (inner关键字可以省略) [inner join比left join快]

# 从左表中取出每一条记录,与右表中的所有记录进行匹配

# 匹配必须是某个条件,在左表和右表中相同【公共部分】,才会保留结果.否则,不保留

# 基本语法

SELECT * FROM [左表] innder join [右表] on [左表].[字段]=[右表].[字段];

# 内连接,可以没有on,那么系统会保留所有的结果,没错.又是传说中的笛卡尔积

# '还可以使用where代替on,但是效率没有on高'

例子:

排他性: A,B表中至少有1个匹配时,才返回行。两表的【交集】

SQL语句如下:

select A.name,B.address from A

inner join B

on A.id = B.A_id

查询结果为:

name address

张 北京

王 上海

inner join 内连接等价于下面的sql:

SELECT A.name, B.address

FROM A, B

WHERE A.id = B.A_id

MYSQL-外连接:

1, 左外

左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。

【通俗:就是2张表,查左表满足条件的所有以及右表中含有左表条件的数据,where (右表条件)..is not null显示不为null的数】

# 以某张表为主,取出里面的所有记录.每条与另外一张表.不管能不能匹配上条件.最终都会保留.如果不能匹配,那么其他表的字段都置空

    # left join (left join 是left outer join的简写)
# 基本语法
SELECT
...
FROM
[左表]
LEFT JOIN
[右表]
ON
[条件]
# 会把左边所有的数据都显示出来,如果右表没有匹配的数据.以null显示
例:SELECT * from a_table a LEFT JOIN b_table b on a.a_id = b.b_id (where b_id is not NULL); 2,右外
右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行

【通俗:就是2张表,查右表满足条件的所有以及左表中含有右表条件的数据,where (左表条件)..is not null显示不为null的数】

    # right join
# 基本语法
SELECT
...
FROM
[左表]
RIGHT JOIN
[右表]
ON
[条件]
# 会把右表所有的数据都显示出来,如果左表没有匹配的数据.以null显示
例:SELECT * from a_table a RIGHT JOIN b_table b on a.a_id = b.b_id (where a_id is not NULL);

MYSQL-自然连接:

# natural join

# MYSQL方言,其他数据库不一定有

# '自动的匹配连接条件',但是.不怎么建议使用.是以'字段名称作为匹配模式'

# 基本语法

SELECT ...FROM [表1] natural join [表2]; //内连接

* 自动使用同名字段作为连接条件,结果中会合并该字段

SELECT ...FROM [表1] left natural join [表2]; //左外自然连接

SELECT ...FROM [表1] right natural join [表2]; //右外自然连接

MYSQL-交叉连接:

# cross join

# 从一张表中循环取出每一条记录,每条记录都去另外一张表进行匹配.而且匹配一定保留(没有条件匹配不带条件where...)

# 而连接本身字段就会增加(保留) -- 笛卡尔积(笛卡尔是没有意义的,【尽量要避免】)

# 存在的价值:保证连接这种结构的完整性而已.

# 基本语法

SELECT * from [左表] cross join [右表]; == select * from [左表],[右表];

select * from emp cross join dept;

    # 也可以加上条件
select *
from emp e
cross join
dept d
on e.deptno=d.deptno ;
【两表连接如果要避免返回笛卡尔积,必须确保至少一方表是唯一的,否则在能查到记录的情况下,不论哪一种连接方式一定会返回笛卡尔积记录集的。】

MYSQL-全外:

# 全外(MYSQL不支持,但是我们可以通过其他方式实现)

# 这个就是,左右两表都是相同的,两个表的所有内容都必须全部出来,如果没有对应记录的,就用null填充

select * from 表1 left outer join 表2 on 表1.字段=表2.字段
union
select * from 表1 right outer join 表2 on 表1.字段=表2.字段;
-联合查询 ,把他们的结果集合并一下就出来了 例: SELECT * from a_table a LEFT JOIN b_table b on a.a_id = b.b_id (where b_id is not NULL) UNION SELECT * from a_table a

LEFT JOIN b_table b on a.a_id = b.b_id (where b_id is not NULL);

本文由博客一文多发平台 OpenWrite 发布!

MySQL 连接查询汇总的更多相关文章

  1. mysql连接查询经典小例题

    mysql连接查询: Mysql连接查询支持多表连接 对同一张表可以重复连接多次(别名在多次连接同一张表时很重要) 例题1: 下面有2张表 teams表 比赛结果表:result 问题: 得出一张表: ...

  2. MySQL连接查询、联合查询、子查询

    参考地址:http://blog.csdn.net/u011277123/article/details/54863371 1.MySQL连接查询 连接查询:将多张表(>=2)进行记录的连接(按 ...

  3. 掌握MySQL连接查询到底什么是驱动表

    准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...

  4. MySQL连接查询驱动表被驱动表以及性能优化

    准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...

  5. 细说MySQL连接查询:内连、左连和右连

    转: 细说MySQL连接查询:内连.左连和右连 简介: MySQL 的连接查询,通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接.首先,要确定一个主表作为结果集,然后将 ...

  6. mysql连接查询,封装mysql函数

    连接查询 交叉连接语法: select  * | 字段列表 from 表1  cross join 表2 内连接: select *|字段列表 from 左表 inner join 右表 on 左表. ...

  7. Mysql 连接查询 Mysql支持的连接查询有哪些

    CREATE TABLE `chx` (   `id` VARCHAR(20) NOT NULL,   `name` VARCHAR(50) DEFAULT NULL,   `name2` CHAR( ...

  8. Mysql连接查询、子查询、联合查询 整理

    连接查询 连接语法的基本形式 from 表1  [连接方式]  join 表2  [on 连接条件]: 交叉连接 语法: from  表1  [cross]  join  表2  ;      //可 ...

  9. mysql 连接查询 join

    本文用到的表 CREATE TABLE `cls` ( `cls_id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMARY KEY (`cls ...

随机推荐

  1. ffmpeg播放器实现详解 - 框架搭建

    ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...

  2. js中实现继承的方法

    目录 借用构造函数 组合继承 原型式继承 寄生式继承 寄生组合式继承 借用构造函数 这种技术的基本思想很简单,就是在子类型构造函数的内部调用超类型的构造函数.另外,函数只不过是在特定环境中执行代码的对 ...

  3. vue : 使用stylus less (包括sublime插件支持)

    版本: vue 2.5.2 webpack 3.6.0 先说stylus. 用npm装个包. npm install stylus stylus-loader --save-dev 然后在.vue文件 ...

  4. 题解 洛谷 P3298 【[SDOI2013]泉】

    考虑到年份数很小,只有 \(6\),所以可以 \(2^6\) 来枚举子集,确定流量指数对应相同的位置,然后通过哈希和排序来计算相同的方案数. 但是这样计算出的是大于等于子集元素个数的方案数,所以还需要 ...

  5. 支持向量机SMO算法实现(注释详细)

    一:SVM算法 (一)见西瓜书及笔记 (二)统计学习方法及笔记 (三)推文https://zhuanlan.zhihu.com/p/34924821 (四)推文 支持向量机原理(一) 线性支持向量机 ...

  6. liunx安装和部署nacos配置中心

    1.下载https://github.com/alibaba/nacos/releases  nacos-server-1.3.1.tar.gz  源码包2.上传到liunx服务器   /usr/lo ...

  7. 图表可视化seaborn风格和调色盘

    seaborn是基于matplotlib的python数据可视化库,提供更高层次的API封装,包括一些高级图表可视化等工具. 使用seaborn需要先安装改模块pip3 install seaborn ...

  8. 本地建立mysql服务器

    这里可以学到 : 搭建一个mysql的后台服务器,构建自己的本地数据库表,可以满足一些自己学习增删改查的简单需求   1.打开mysql官网 https://www.mysql.com/downloa ...

  9. 恕我直言,我也是才知道ElasticSearch条件更新是这么玩的

    背景 ElasticSearch 的使用度越来越普及了,很多公司都在使用.有做日志搜索的,有做商品搜索的,有做订单搜索的. 大部分使用场景都是通过程序定期去导入数据到 ElasticSearch 中, ...

  10. 时间序列ARIMA模型

    时间序列ARIMA模型 1.数据的平稳性与差分法 让均值和方差不发生明显的变化(让数据变平稳),用差分法 2.ARIMA模型-----差分自回归平均移动模型 求解回归的经典算法:最大似然估计.最小二乘 ...