连接关系数据模型的主要特点,连接查询是关系数据库中最主要的查询,包括内连接、外连接等。
当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行
连接查询,得到存放在多个表中的记录数据。
所谓表中相同意义的字段,是指在多个表中名字不一定相同,但取值的含义相同的字段,这是表之间实现连接查询的前提。
在实现表内连接的实验前需要对mysql的语法进行扎实的掌握,以下有mysql的基础知识可以查看
mysql的增删改查
mysql修改表结构
mysql的约束
select语句详解
mysql表的修改和删除

内连接查询(INNER JOIN)

内连接查询(INNER JOIN):
INNER JOIN使用比较运算符(=)根据每个表共有列的列值匹配两个表中的行,
其查询结果仅包含符合查询条件和连接条件的行。即查询结果为两个表的交集。
注意:多表查询时,为避免混淆,在查询字段前应添加表名称作为前缀!

如何分析连接查询

  • 查询结果包含哪些字段
  • 这些字段来源于哪些表
  • 表之间的连接字段是哪个

SELECT table1.column, table2.column
FROM table1, table2 WHERE table1.column1 = table2.column2;
– 在 WHERE子句中书写连接条件。
– 如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀。
– N个表相连时,至少需要N-1个连接条件。


如以上两个表,teacher和department表
我们要查询的字段是
teacher.Teacher_id
teacher.Teacher_name
department.Department_name
我们从表结构可以看出两个表的连接字段是teacher_id和department_id
下面我们看sql查询代码

SELECT
teacher.teacher_id,
teacher.teacher_name,
department.department_name
FROM teacher INNER JOIN department
ON teacher.department_id=department.department_id;

其中inner join是内连接关键字,on的后面是连接的条件

teacher.department_id=department.department_id;

这条语句的含义是将教师的部门id和部门的id对应上,在进行输出。
比如刘老师是计算机学院的,计算机学院编号是0012,刘老师的部门编号也是0012,所以将教师表和学院表进行相连,来输出我们想要的结果。

那么我们发现,这些表的名称较长,我们也可以通过给表名起一个简略的名称来减少代码的长度,我们把teacher表命名为A,department为B,代码如下

SELECT
A.teacher_id,
A.teacher_name,
A.department_id,
B.department_name
FROM teacher A INNER JOIN department B
ON A.department_id=B.department_id;

这样的代码简单明了,看的清晰

下面我们来看多个表内连接查询

多个表内连接查询比两个表内连接查询的复杂一点点,不过原理和用法是相同的,下面看图

如图我们要查询学生所在班级、年纪和学院,由图可以看到我们需要的连接结构
代码如下

SELECT student.student_id,
student.student_name,
classes.class_name,
classes.year,
department.department_name
FROM student
INNER JOIN classes on student.class_id=classes.class_id
INNER JOIN department on classes.department_id=department.department_id;

通过学生的班级号和class的id相连,classes的id和学院的id相联系,就可以进行查询,比较简单,查询结果后若有重复或者需要筛选的可以用where进行修改。

mysql连接查询(两个表内和多个表内连接查询)相关推荐

  1. mysql提取前两个数据_各种数据库提取表的前几条记录的方法

    前一阵子去了个面试,其中有个道考题是写出取某张表前10条记录的sql语句.一头雾水,回来问了同学也没有结果,近来上网搜了一下,收获如下: 原来不同的DBMS对此操作的sql语句也不同. (取出TABL ...

  2. access如何查询两张表的内容_为什么可以的话,不要使用星号 *,而是相应的字段名来进行查询 MySQL内连接如何选择驱动表

    参考: 掘金小册​juejin.im 首先要了解单表查询方法,也就是explain中出来的,ref,index,const,all之类的. 然后了解index查询方法,也就是在联合索引中,条件不是第一 ...

  3. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...

    一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...

  4. MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接

    文章目录 多表查询的分类 等值连接 vs 非等值连接 自连接 vs 非自连接 内连接 vs 外连接 SQL92和SQL99语法如何实现内外连接 多表查询的分类 这个分类是根据多表查询时的连接条件而划分 ...

  5. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...

    我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...

  6. mysql 左连接两张表_mysql左连接右连接(查询两张表不同的数据)

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连 ...

  7. mysql中如何把两个查询结果列数不同并成一张表_MySQL

    引言 本文整理了MySQL相关的知识,方便以后查阅. 基础架构 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图 ...

  8. Mysql多表查询(两张独立表,一张关系表)

    一.数据库设计 1.三个数据表长这样 其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系 2.具体数据如下 二.查询目标 查询出所有性别为"男&qu ...

  9. mysql两个查询结果差集_【Mysql】求两个表(查询结果)的差集

    求两个查询结果的差集,Mysql直接提供了关键字not in,但是not in的效率极其低下,出现例如求一个上千查询结果在上万查询结果的差集,那么使用not in来查询的查询速度极其缓慢,这是必须使用 ...

最新文章

  1. c# 如何让tooltip显示文字换行
  2. 德国机器人公司库卡出售美国业务 为美的收购做准备
  3. JSP乱码解决(过虑器EncodingFilter)
  4. JavaScript-数据类型
  5. mysql中主键的用法_MySQL中的主键以及设置其自增的用法教程
  6. android 7相机拍照功能介绍,android7 相机拍照流程
  7. 一文读懂数据湖 | 凌云时刻
  8. Linux中光驱对应的设备文件,Linux硬盘对应的设备文件
  9. Java泛型入门篇: 泛型类、泛型接口以及泛型方法
  10. 嵌入式系统开发笔记17:CJ/T-188 冷热量表协议解析6
  11. 股票走势图php源码下载,flex实现股票行情走势图示例代码
  12. openGL中的抗锯齿实现
  13. R16之Access to Unlicensed Spectrum(3)
  14. 零知识证明 - bellman源码分析
  15. 宝塔提示PHP7.3等版本无zip扩展解决
  16. 如何禁用笔记本触摸板
  17. Java生成海报带二维码,原图或base64返回
  18. ORACLE 10g 64位下载地址
  19. python断网重联_Python实现WiFi断线自动重连的方法详解
  20. PING命令的工作原理

热门文章

  1. Python - SciPy - ECG信号的谱分析及数字滤波
  2. JAVA——File.renameTo方法,需要注意的坑
  3. ArcGIS 用渔网做数据偏移并切片缓存
  4. 中国姓氏的日语发音[补充部分]
  5. 2022华为中央媒体技术院AI算法工程师FindStar一面+二面+主管面
  6. 华硕品牌机驱动存储位置
  7. URAL 2099 Space Invader题解 (计算几何)
  8. 【MyBatis学习8】MyBatis中的二级缓存
  9. dedecms内链 arc.archives.class.php,dedecms文章关键字(自动内链)php5.5以上版本urf-8失效的解决方法...
  10. FL Studio21官方中文版本下载详细图文安装激活教程及FL21系统配置要求