mysql连接查询(两个表内和多个表内连接查询)
连接是关系数据模型的主要特点,连接查询是关系数据库中最主要的查询,包括内连接、外连接等。
当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行
连接查询,得到存放在多个表中的记录数据。
所谓表中相同意义的字段,是指在多个表中名字不一定相同,但取值的含义相同的字段,这是表之间实现连接查询的前提。
在实现表内连接的实验前需要对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连接查询(两个表内和多个表内连接查询)相关推荐
- mysql提取前两个数据_各种数据库提取表的前几条记录的方法
前一阵子去了个面试,其中有个道考题是写出取某张表前10条记录的sql语句.一头雾水,回来问了同学也没有结果,近来上网搜了一下,收获如下: 原来不同的DBMS对此操作的sql语句也不同. (取出TABL ...
- access如何查询两张表的内容_为什么可以的话,不要使用星号 *,而是相应的字段名来进行查询 MySQL内连接如何选择驱动表
参考: 掘金小册juejin.im 首先要了解单表查询方法,也就是explain中出来的,ref,index,const,all之类的. 然后了解index查询方法,也就是在联合索引中,条件不是第一 ...
- mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...
一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...
- MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接
文章目录 多表查询的分类 等值连接 vs 非等值连接 自连接 vs 非自连接 内连接 vs 外连接 SQL92和SQL99语法如何实现内外连接 多表查询的分类 这个分类是根据多表查询时的连接条件而划分 ...
- 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...
- mysql 左连接两张表_mysql左连接右连接(查询两张表不同的数据)
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连 ...
- mysql中如何把两个查询结果列数不同并成一张表_MySQL
引言 本文整理了MySQL相关的知识,方便以后查阅. 基础架构 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图 ...
- Mysql多表查询(两张独立表,一张关系表)
一.数据库设计 1.三个数据表长这样 其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系 2.具体数据如下 二.查询目标 查询出所有性别为"男&qu ...
- mysql两个查询结果差集_【Mysql】求两个表(查询结果)的差集
求两个查询结果的差集,Mysql直接提供了关键字not in,但是not in的效率极其低下,出现例如求一个上千查询结果在上万查询结果的差集,那么使用not in来查询的查询速度极其缓慢,这是必须使用 ...
最新文章
- c# 如何让tooltip显示文字换行
- 德国机器人公司库卡出售美国业务 为美的收购做准备
- JSP乱码解决(过虑器EncodingFilter)
- JavaScript-数据类型
- mysql中主键的用法_MySQL中的主键以及设置其自增的用法教程
- android 7相机拍照功能介绍,android7 相机拍照流程
- 一文读懂数据湖 | 凌云时刻
- Linux中光驱对应的设备文件,Linux硬盘对应的设备文件
- Java泛型入门篇: 泛型类、泛型接口以及泛型方法
- 嵌入式系统开发笔记17:CJ/T-188 冷热量表协议解析6
- 股票走势图php源码下载,flex实现股票行情走势图示例代码
- openGL中的抗锯齿实现
- R16之Access to Unlicensed Spectrum(3)
- 零知识证明 - bellman源码分析
- 宝塔提示PHP7.3等版本无zip扩展解决
- 如何禁用笔记本触摸板
- Java生成海报带二维码,原图或base64返回
- ORACLE 10g 64位下载地址
- python断网重联_Python实现WiFi断线自动重连的方法详解
- PING命令的工作原理
热门文章
- Python - SciPy - ECG信号的谱分析及数字滤波
- JAVA——File.renameTo方法,需要注意的坑
- ArcGIS 用渔网做数据偏移并切片缓存
- 中国姓氏的日语发音[补充部分]
- 2022华为中央媒体技术院AI算法工程师FindStar一面+二面+主管面
- 华硕品牌机驱动存储位置
- URAL 2099 Space Invader题解 (计算几何)
- 【MyBatis学习8】MyBatis中的二级缓存
- dedecms内链 arc.archives.class.php,dedecms文章关键字(自动内链)php5.5以上版本urf-8失效的解决方法...
- FL Studio21官方中文版本下载详细图文安装激活教程及FL21系统配置要求