美文网首页@IT·互联网
MySQL - 连接详解

MySQL - 连接详解

作者: 单刀恐惧者 | 来源:发表于2017-06-20 17:00 被阅读0次

student 表

id name
1 小明
2 小花
3 小黄

score 表

id student_id score
1 2 10
2 3 20
3 4 30

交叉连接
cross join
交叉连接可不带 on 子句
把表 student 和表 score 的数据进行一个N*M的组合,即笛卡尔积
如本例会产生3*3=9条记录

//用法1
select * from student,score; 
//用法2;
select * from student cross join score;

查询结果:

id name id student_id score
1 小明 1 2 10
2 小花 1 2 10
3 小黄 1 2 10
1 小明 2 3 20
2 小花 2 3 20
3 小黄 2 3 20
1 小明 3 4 30
2 小花 3 4 30
3 小黄 3 4 30

内连接
inner join
产生student表和score表的交集
内连接可不带 on 子句,当不带 on子句时相当于 交叉连接产生的结果是 student 和 score 的交集

select * from student as a inner join score as b on a.id=b.student_id;

查询结果:

id name id student_id score
2 小花 1 2 10
3 小黄 2 3 20

外连接
外连接必须带 on 子句

  • 左连接
    left join
    产生student表的完全集,而 score表中匹配的则有值,没有匹配的则以null值取代
select * from student as a left join score as b on a.id=b.student_id;

查询结果:

id name id student_id score
2 小花 1 2 10
3 小黄 2 3 20
1 小明 NULL NULL NULL
  • 右连接
    right join
    产生score表的完全集,而 student表中匹配的则有值,没有匹配的则以null值取代
select * from student as a right join score as b on a.id=b.student_id;

查询结果:

id name id student_id score
2 小花 1 2 10
3 小黄 2 3 20
NULL NULL 3 4 30

USING

USING是连接中on 子句的简写形式
当on子句中关联表的字段相同时可以使用USING
on t1.a = t2.a and t1.b = t2.b 等效于 using(a,b)
使用 * 查询两个表的所有字段时 using中的字段只显示一次

select * from student as a left join score as b using(id);

查询结果:

id name student_id score
1 小明 2 10
2 小花 3 20
3 小黄 4 30
select * from student as a left join score as b on a.id=b.id;

查询结果:

id name id student_id score
1 小明 1 2 10
2 小花 2 3 20
3 小黄 3 4 30

当查询两个表的共同字段,并且该字段在using子句中时,不会报错,但在on会引起歧义报错

select id,name from student as a left join score as b using(id);

查询结果:

id name
1 小明
2 小花
3 小黄
select id,name from student as a left join score as b on a.id=b.id;

查询结果:
[Err] 1052 - Column 'id' in field list is ambiguous

相关文章

  • MySQL索引背后的数据结构及算法原理

    参考来源 mysql索引分析 MySQL索引背后的数据结构及算法原理 MySQL中EXPLAIN命令详解 索引连接...

  • MySQL - 连接详解

    student 表 score 表 交叉连接cross join交叉连接可不带 on 子句把表 student 和...

  • MySQL基础架构-架构详解

    mysql基础架构图 架构详解 连接器部分 整体功能 建立连接 维持管理连接 校验用户名密码,查询权限 最佳实践 ...

  • idea连接mysql详解

    相信很多小伙伴在用idea连接数据库的时候遇到过很多下列这种情况吧? 连接不成功!!!!接下来我分享一下我的教程!...

  • DB

    DRUID连接池的实用 配置详解几个主流的Java连接池整理 MYSQL InnoDB并发插入,居然使用意向锁?I...

  • MySQL 多表连接查询详解

    连接:就是将多个表连城一个表输出的过程叫连接(关联)。 连接类型:交叉连接、内连接、外连接(左外连接、右外连接)、...

  • Mysql Join语法解析与性能分析

    Mysql Join语法解析与性能分析Mysql - JOIN详解

  • MySql

    //连接mysql mysql -u root -h 47.101.205.200 -p //连接mysql ex...

  • Node 连接 MySQL

    安装驱动 Node 连接 MySQL 首先需要安装 MySQL 驱动 mysqljs/mysql 连接数据库 连接...

  • Mysql源码:自定义存储引擎

    参考 MySQL 插件详解MySQL Plugin Development(Sergei &Andrew).pdf...

网友评论

    本文标题:MySQL - 连接详解

    本文链接:https://www.haomeiwen.com/subject/nlcaqxtx.html