创建一个学生表和一个课程表。先放出实验的表结构:

create table student(
id int,
name varchar(15),
gender varchar(15),
cid int
);
create table class(
cid int,
cname varchar(15)
);

插入数据:

insert into student values(1,"lilei","male",1),(2,"hanmeimei","male",2),(3,"jack","male",1),(4,"alice","female",4),(5,"lili","female",NULL);
--这里特意创建了一个class中没有的4,以及一条cid为NULL值的记录。insert into class values(1,"linux"),(2,"python"),(3,"java"),(5,"html5");
--这里特意创建了一个student中没有的5

查看数据:

1.交叉连接 cross join

不需要连接条件的连接。

交叉连接产生的结果就是笛卡儿积,左表的每一条记录都会与右表的所有记录连接并保留。

产生记录数 = A表记录数 × B表记录数

例如:

           select * from student cross join class;
或者:      select * from student,class;

产生20条记录。(截图不完整

总结:交叉连接没有实际数据价值,应尽量避免。

2.内连接 [inner] join

将两张表根据指定的条件连接起来,严格连接

内连接是将一张表中的每一条记录去另外一张表中根据条件匹配:匹配成功,保留连接数据;匹配失败,都不保留。

语法:左表 join 右表 on 连接条件

(不用on条件的时间,结果与交叉连接相同。)

例如:

SELECT * FROM student JOIN class ON student.cid = class.cid;

3.外连接 outer join

是一种不严格的连接方式

分为两种:左外连接(左连接)left join,右外连接(右连接)right join

外连接有主表和从表之分。左外连接左表为主表;右外连接右表为主表。

外连接是将主表的记录去匹配从表的记录:匹配成功,记录保留;匹配失败,也保留,只是从表字段置空。

例如:

select * from student left join class on student.cid = class.cid;
select * from student right join class on student.cid = class.cid;

总结:外连接与内连接区别在于数据匹配失败的时候,外连接会保留一条记录(主表数据保留,从表数据置空)

4.自然连接 natural join

是一种自动寻找连接条件的连接查询。

  • 自然内连接:类似内连接,但不提供连接条件。
  • 自然外连接:类似外连接,但不提供连接条件。

例如:

select * from student natural join class;

select * from student natural left join class;

总结:自然连接根据相同的列名来匹配连接条件,并且会将两个表中列名相同的列合并为一个列。

连接查询(交叉连接,内连接,外连接,自然连接)相关推荐

  1. oracle 连接查询(内、外连接、自连接、子查询)

    内连接: 一般使用inner join来实现.其中inner关键字可以省略 同时必须在from子句之后定义一个on子句,用来指定连接条件 外连接 1 左外连接:关键字为left outer join或 ...

  2. MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)

    本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...

  3. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  4. 二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类:1)sql ...

  5. mysql外连接的含义_MySQL连接查询,内连接,外连接,全连接,交叉连接_cly_32的博客-CSDN博客...

    原文作者:起个花名好难 原文标题:MySQL连接查询,内连接,外连接,全连接,交叉连接 发布时间:2021-01-27 13:46:33 1.含义 当查询中涉及到多个表的字段,需要使用多表查询 sel ...

  6. 交叉连接(笛卡尔积)、连接查询、内连接、外连接都有哪些,以及书写语法【详细】【有例子】【有代码】【基础】【重点】

    连接查询: 连接查询是指多表联合查询: 连接查询的分类: 根据表的连接方式分类: 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接(左连接) 右外连接(右连接) 全连接(这个不讲,很少用,并 ...

  7. MySQL连接查询(内连接,外连接,全连接)

    对比分析MySQL连接查询(内连接,外连接,全连接) 内连接 等值连接 非等值连接 ==自连接== 外连接 左外连接 右外连接 全外连接 交叉连接 首先建三个数据表 sql文件下载 https://w ...

  8. mysql数据库(排序,聚合函数,分组,分页查询,union,连接查询,主键外键)

    1.排序(order by) select * from stu order by age; -- 默认升序 升序 ASC 降序DESC -- DESC 具有查看表的结构的功能 desc stu; 不 ...

  9. SQL Server 连接查询(内连接查询)

    内连接查询 1.内连接基于连接谓词on,它将两张表的列组合在一起,产生新的结果表 两个表的每一行连接列进行比较,如果满足连接谓词则会组合成一行数据 2.要想进行内连接查询,就必须有连接列,这样才能建立 ...

  10. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

最新文章

  1. 注意!Apache下这些与Hadoop相关的开源项目要退休了!
  2. Laravel - Artisan 个人常用总结
  3. nx set 怎么实现的原子性_【redis进阶(1)】redis的Lua脚本控制(原子性)
  4. 交叉驰豫的影响因素_交叉滚子轴承系列吉林薄壁交叉滚子轴承用途博盈
  5. “双十一”即将来临,先来看看快递物流企业的大数据
  6. esp32找不到com端口_玩转GPIO之ESP32点灯大法(MicroPython版)
  7. 初探语音识别ASR算法
  8. jsp taglib指令_JSP指令–页面,包含和taglib示例
  9. Oracle跨数据库操作
  10. linux定时任务的配置详解
  11. DBCC CHECKIDENT 和SET IDENTITY_INSERT table OFF
  12. 异常来自 HRESULT:0x80070057 (E_INVALIDARG))
  13. 大量监控视频如何存储?
  14. houdini flowmap
  15. 小摩尔来了!3分钟带你做个魔性小摩尔!
  16. Cuteftp9.0安装说明书
  17. hdu 1864 最大报销额
  18. vue 移动端歌词实时滚动及优化
  19. 电脑老是出现无法登陆的界面,怎么解决
  20. Win10、Win7定时开关机

热门文章

  1. pku 2387 Til the Cows Come Home
  2. Javascript中的单例和模块模式
  3. UTF-8与GB2312之间的互换
  4. 复杂多目录的Makefile模板及示例-转
  5. SQLite指南(2) -- 帮助及编译SQLite
  6. Linux下发生段错误时如何产生core文件-转
  7. [Java] 蓝桥杯BASIC-27 基础练习 2n皇后问题
  8. mysql将一个表的字段更新到另一个表中
  9. oracle聚合函数rank()的用法和一些体会
  10. mysql 数据库中根据当前系统时间,取前后几秒 几分钟 几小时 几天