iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SQL语句 - 多表查询使用详细介绍
  • 463
分享到

SQL语句 - 多表查询使用详细介绍

sql数据库java 2023-09-01 06:09:18 463人浏览 八月长安
摘要

文章目录 多表查询多表查询简介多表查询内连接多表查询外连接多表查询子查询 多表查询 多表查询简介 例如我们有一张员工表和部门表, 员工表有6条数据, 部门表表有4条数据: # 创建部门

文章目录

多表查询

多表查询简介

例如我们有一张员工表和部门表, 员工表有6条数据, 部门表表有4条数据:

# 创建部门表CREATE TABLE dept (did INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR (20));-- 添加部门数据INSERT INTO dept (dNAME)VALUES ('研发部'), ('市场部'), ('财务部'), ('销售部');# 创建员工表CREATE TABLE emp (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR (10),gender CHAR (1),-- 性别salary DOUBLE,-- 工资join_date DATE,-- 入职日期dep_id INT,FOREIGN KEY (dep_id) REFERENCES dept (did) -- 外键,关联部门表(部门表的主键));-- 添加员工数据INSERT INTO emp (name,gender,salary,join_date,dep_id)VALUES('孙悟空','男',7200,'2013-02-24',1), ('猪八戒','男',3600,'2010-12-02',2), ('唐僧','男',9000,'2008-08-08',2), ('白骨精','女',5000,'2015-10-07',3), ('蜘蛛精','女',4500,'2011-03-14',1), ('小白龙','男',2500,'2011-02-14',NULL);

使用多表查询, 查询员工表和部门表两张表:

SELECT * FROM emp, dept;

此时查询到的结果会有24条数据, 为什么会这样呢?

笛卡尔积:有A, B两个集合, 取A, B集合所有组合情况(4*6=24);

我们多表查询, 更多的是消除这些无效的数据

例如上面表中, 我们可以加上emp表中的dep_id和dept表中的did相等的条件, 筛选出有效的数据

SELECT * FROM emp, dept WHERE emp.dep_id = dept.did;

多表查询:从多张表查询数据, 有下面两种方式:

连接查询

内连接:相当于查询A B交集数据

外连接:

  • 左外连接:相当于查询A表所有数据和交集部分数据
  • 右外连接:相当于查询B表所有数据和交集部分数据

子查询

多表查询内连接

内连接相当于查询 A B 交集数据:

在这里插入图片描述

内连接查询语法:

-- 隐式内连接SELECT 字段列表 FROM1,2WHERE 条件;-- 显式内连接SELECT 字段列表 FROM1 [INNER] JOIN2 ON 条件;

隐式演示如下:

查询emp表中的name和gender, dept表中的did

SELECT emp.name, emp.gender, dept.did FROM emp, dept WHERE emp.dep_id = dept.did;

在多表查询的时候, 我们也是可以给表取别名的

SELECT t1.name, t1.gender, t2.did FROM emp t1, dept t2 WHERE t1.dep_id = t2.did;

显式内连接:

外连查询emp.dep_id = dept.did的所有员工信息

SELECT * FROM emp INNER JOIN dept ON emp.dep_id = dept.did;

INNER是可以省略的

SELECT * FROM emp JOIN dept ON emp.dep_id = dept.did;

查询emp表中的name和gender, dept表中的did, 同样显式内连接同样是可以取别名的

SELECT t1.name, t1.gender, t2.did FROM emp t1 JOIN dept t2 ON t1.dep_id = t2.did;

多表查询外连接

外连接查询语法:

左外连接:相当于查询A表所有数据和交集部分数据

右外连接:相当于查询B表所有数据和交集部分数据

-- 左外连接SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;-- 右外连接SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

演示如下:

-- 左外连接SELECT * FROM emp LEFT JOIN dept ON emp.dep_id = dept.did;-- 右外连接SELECT * FROM emp RIGHT JOIN dept ON emp.dep_id = dept.did;

多表查询子查询

子查询概念

查询中嵌套查询,称嵌套查询为子查询

子查询根据查询结果不同,作用不同

单行单列: 作为条件值,使用 = != > <等进行条件判断;

指的是子查询语句的查询结果是单行单列的, 例如查询猪八戒工资结果如下:

在这里插入图片描述

单行单列子查询语法如下:

SELECT 字段列表 FROMWHERE 字段名 = (子查询);

演示: 查询emp表中猪八戒的工资, 然后再查出工资高于猪八戒工资的员工信息;

SELECT * FROM emp WHERE salary > (SELECT salary FROM emp WHERE name = '猪八戒');

多行单列: 作为条件值,使用 in 等关键字进行条件判断;

指的是子查询的结果是多行单列的, 例如查询出dept表中财务部和市场部的did结果如下:

在这里插入图片描述

多行单列查询语法如下:

SELECT 字段列表 FROMWHERE 字段名 in (子查询);

演示: 查询财务部和市场部的所有员工信息

SELECT * FROM emp WHERE dep_id IN (SELECT did FROM dept WHERE dname = '财务部' OR dname = '市场部');

多行多列: 作为虚拟表;

子查询出来的结果是多行多列: 例如查询入职日期是’2011-11-11’之后的员工信息, 结果如下

在这里插入图片描述

多行多列语法如下:

SELECT 字段列表 FROM (子查询) WHERE 条件;

演示: 查询入职日期是’2011-11-11’之后的员工信息和部门信息

SELECT * FROM (SELECT * FROM emp WHERE join_date > '2011-11-11') t1, dept WHERE t1.dep_id = dept.did;

来源地址:https://blog.csdn.net/m0_71485750/article/details/127804723

--结束END--

本文标题: SQL语句 - 多表查询使用详细介绍

本文链接: https://www.lsjlt.com/news/387714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL语句 - 多表查询使用详细介绍
    文章目录 多表查询多表查询简介多表查询内连接多表查询外连接多表查询子查询 多表查询 多表查询简介 例如我们有一张员工表和部门表, 员工表有6条数据, 部门表表有4条数据: # 创建部门...
    99+
    2023-09-01
    sql 数据库 java
  • 详细介绍PHP中SQL查询语句的使用方法
    PHP是一种流行的服务器端编程语言,MySQL是一种广泛应用的关系型数据库管理系统,它们的结合能够为Web应用程序提供强大的查询和数据处理能力。在PHP开发过程中,SQL查询语句是必须掌握的知识之一。本文将详细介绍PHP中SQL查询语句的使...
    99+
    2023-05-14
    SQL php
  • MySQL实现多表查询语句介绍
    下面一起来了解下MySQL实现多表查询语句介绍,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL实现多表查询语句介绍这篇短内容是你想要的。        &...
    99+
    2022-10-18
  • SQL基础语句 - 数据操作DML和数据查询DQL语句详细介绍
    文章目录 数据操作DML数据查询DQL基础查询条件查询排序查询聚合函数分组查询分页查询 数据操作DML DML:是对表中的数据进行增删改的操作 创建下面这样一个学生表进行演示...
    99+
    2023-09-08
    sql 数据库 mysql
  • SQL Server中T-SQL查询语句的介绍和使用
    本文将为大家详细介绍SQL Server中T-SQL查询语句的介绍和使用,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,我们先来看看文章相关术语概念:一、SQL简介在进行数据管理时,使用SS...
    99+
    2022-10-18
  • 多表查询sql语句(5表)
    学生表student(id,name)老师表teacher(id,name)课程表lesson(id,name)老师和课程关联表(id,teacher_id,lesson_id)学生和课程关联表(id,st...
    99+
    2022-10-18
  • SQL语句实现多表查询
    目录基本sql语句多表查询例一:双表查询例二:多表查询基本sql语句 SELECT <目标字段> FROM <数据库表> WHERE <...
    99+
    2022-11-13
  • T-SQL查询语句 第二部分 (多表查询)
    T-SQL查询语句大总结 防伪码:有志者事竟成,破釜沉舟,百二秦关终属楚案例六:表如下图所示 在数据库中显示为:实验需求:1、两个表查询select 学生表.姓名,学生表1.电话,学生表...
    99+
    2022-10-18
  • 如何用SQL语句进行多表查询
    这篇文章主要介绍“如何用SQL语句进行多表查询”,在日常操作中,相信很多人在如何用SQL语句进行多表查询问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用SQL语句进行多表...
    99+
    2022-10-18
  • sql多表内连接查询使用的语句是什么
    这篇文章主要讲解了“sql多表内连接查询使用的语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql多表内连接查询使用的语句是什么”吧! ...
    99+
    2022-10-18
  • 如何使用SQL语句实现表的查询
    这篇文章主要介绍“如何使用SQL语句实现查询”,在日常操作中,相信很多人在如何使用SQL语句实现查询问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用SQL语句实现查询”...
    99+
    2022-10-18
  • Orancle的SQL语句之多表查询和组函数
    一、SQL的多表查询: 1、左连接和右连接(不重要一方加(+)) SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d ...
    99+
    2022-10-18
  • mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例
    目录前言1、自定义SQL2、多表查询3、多表分页查询4、多表分页条件查询总结前言 本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句 在...
    99+
    2022-11-13
  • SQL语句如何实现超简单的多表查询
    目录一、简单的多表联查(inner join,left join,right join)1、 两表联查2、三表联查二、触发器一、简单的多表联查(inner join,left joi...
    99+
    2022-11-13
  • sql查询语句的使用示例
    了解sql查询语句的使用示例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!sql查询语句:1、查看表结构【SQL>D...
    99+
    2022-10-18
  • 使用T-SQL语句操作数据表-查询数据
    查询(select)的基本格式:select <列名> from <表名> [where <查询限定条件>]解释:select...
    99+
    2022-10-18
  • 如何实现用sql语句查询交叉表
    本篇内容介绍了“如何实现用sql语句查询交叉表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • SQL Server中如何使用查询语句
    这期内容当中小编将会给大家带来有关SQL Server中如何使用查询语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一.查询第二个字母是t或者a的雇员的全部信息复制代码...
    99+
    2022-10-18
  • PHP中SQL查询语句如何使用
    今天小编给大家分享一下PHP中SQL查询语句如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、查询语句的基本语法在P...
    99+
    2023-07-05
  • C++移动语义详细介绍使用
    目录1.移动构造函数2.右值引用3.std::move()将左值强制转换为右值引用4.拷贝语义和移动语义1.移动构造函数 移动语义就是使用移动构造函数来构造对象。 我们知道在类中如果...
    99+
    2023-01-28
    C++移动语义 C++移动语义用法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作