超级苦工
阅读 131
MYSQL-多表查询

首先创建数据表tb_departments

create table tb_departments (dept_id INT PRIMARY KEY, dept_name VARCHAR(25), dept_call INT, dept_type VARCHAR(10));

DESC tb_departments;

INSERT INTO tb_departments VALUES (1, 'Computer', 11111, 'A'), (2, 'Math', 22222, 'A'), (3, 'Chinese', 33333, 'B'), (4, 'Economy', 44444, 'B'), (5, 'History', 55555, 'B');
复制代码

学生表信息如下

  • 内连接查询

内连接是通过在查询中设置连接条件的方式,来移除查询结果集中某些数据行后的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行,在FROM子句中使用关键字INNER JOIN连接两张表,并使用ON子句来设置连接条件。如果没有任何条件,INNER JOIN和CROSS JOIN在语法上是等同的,两者可以互换。

内连接是系统默认的表连接,所以在FROM子句后可以省略INNER关键字,只用关键字JOIN。使用内连接后,FROM子句中的ON子句可用来设置连接表的条件。

SELECT <列名1,列名2 …> 
FROM <表名1> INNER JOIN <表名2> [ ON子句]
复制代码
SELECT id, name, age, dept_name FROM tb_students_info, tb_departments WHERE tb_students_info.dept_id=tb_departments.dept_id;
复制代码

使用INNER JOIN语法进行内连接查询

SELECT id, name, age, dept_name FROM tb_students_info INNER JOIN tb_departments ON tb_students_info.dept_id=tb_departments.dept_id;
复制代码

  • 外连接查询

内连接是在交叉连接的结果集上返回满足条件的记录;而外连接先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。

外连接更加注重两张表之间的关系。按照连接表的顺序,可以分为左外连接和右外连接。

SELECT name, dept_name FROM tb_students_info s LEFT OUTER JOIN tb_departments d ON s.dept_id=d.dept_id;
复制代码

SELECT name, dept_name FROM tb_students_info s RIGHT OUTER JOIN tb_departments d ON s.dept_id=d.dept_id;
复制代码

  • 自连接查询

自连接是将一个表和它自身进行连接,也是内连接的一种,同样使用INNER JOIN或者JOIN关键字来进行连接。

如果需要在一个表中查找具有相同列值的行,就可以考虑用自连接。注意,在使用自连接的时候,需要为表指定两个不同的别名,且对所有查询列的引用必须使用表别名的限定,否则SELECT操作会失败。

查询id为1的学生所在学院的其他学生的信息,输入的SQL语句和执行结果如下所示。

SELECT s1.id, s1.name FROM tb_students_info s1, tb_students_info s2 WHERE s1.dept_id=s2.dept_id AND s2.id=1;
复制代码

关注下面的标签,发现更多相似文章
评论
相关推荐
mark

sdsdsdsd...

1231213213112313

123123...

优秀的Node.js第三方库推荐

axiosAxios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中 cheeriocheerio是一个nodejs实现的类似jquery核心功能的一个模块,用它可...

测试呀

广泛大使馆管道施工幅度顺丰大概岁的法国当时法国对```` 范德萨手动阀是的 范德萨士大夫是的****...

1234123412

我靠,怎么删除鸭?...

test

我们的共和国##...

test

i...

BookStack v2.6 发布,功能类似 GitBook 和看云的在线文档管理系统

程序介绍BookStack,分享知识,共享智慧!知识,因分享,传承久远! BookStack,基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有...

联合索引在B+树上的存储结构及数据查找方式

来源: 掘金 原文: 联合索引在B+树上的存储结构及数据查找方式 能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 引言 上一篇文章《MySQL...

这是标题

正文在这里...

从0到1实现Promise

来源: SegmentFault 原文: 从0到1实现Promise 前言 Promise大家一定都不陌生了,JavaScript异步流程从最初的Callback,到Promise,到Generato...

测试标题

测试标题测试标题测试标题...

111

222大啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊...

好看

...

生产环境怎么部署呀

另外,貌似界面不支持移动端...

基于Redis的推荐系统开发

原文: 基于Redis的推荐系统开发 介绍推荐系统并不总是需要用到复杂的机器学习技术.只要手头上有足够的数据,你就可以花很少的功夫开发一个推荐系统.一个最简单的推荐系统可以只是从用户感兴趣的表中查找所...

MongoDB性能优化之准备测试数据

很多时候,我们本地的代码运行的好好的,上线后,刚开始没问题,运行一段时间后就有性能问题了,这是为什么呢? 出现这种情况,往往是本地测试数据量不够,上线后,刚开始,数据量很少,也不会有问题,运行一段时间...

MySQL性能优化之准备测试数据

很多时候,我们本地的代码运行的好好的,上线后,刚开始没问题,运行一段时间后就有性能问题了,这是为什么呢? 出现这种情况,往往是本地测试数据量不够,上线后,刚开始,数据量很少,也不会有问题,运行一段时间...

Android 使用 HTTPS

来源: 简书 原文: Android 使用 HTTPS 如果你的项目的网络框架是okhttp,那么使用https还是挺简单的,因为okhttp默认支持HTTPS。传送门 Android 使用 HTTP...

Android 适配一篇就够 - 编译版本?support?API 兼容?图片适配?

来源: 简书 原文: Android 适配一篇就够 - 编译版本?support?API 兼容?图片适配? 本文介绍 Android 不同系统及图片资源的常见适配问题。 compileSdkVersi...