SQL99之内连接查询

server/2025/1/31 15:18:05/

SQL99是SQL语言的一个标准,于1999年发布。内连接查询是SQL中非常常用的一种查询方式,用于根据指定的条件从两个或多个表中获取相关联的数据。下面将详细介绍SQL99中的内连接查询,并以通熟易懂的语言进行讲解,同时给出代码例子、注释及运行结果。

一、内连接查询概述

内连接(INNER JOIN)是一种基于两个或多个表共有列的等值条件的连接。它返回满足连接条件的记录,如果两个表中的记录在指定列上没有匹配的值,则不会出现在结果集中。 内连接查询的语法如下:

SELECT 列名1, 列名2, ...
FROM 表1
INNER JOIN 表2 ON 表1.列名 = 表2.列名;

二、代码例子及注释

假设有两个表:员工表(employee)和部门表(department),表结构及数据如下: 员工表(employee):

+----+------+--------+--------+
| id | name | dept_id | salary |
+----+------+--------+--------+
| 1  | 张三 | 1      | 8000   |
| 2  | 李四 | 2      | 9000   |
| 3  | 王五 | 1      | 10000  |
| 4  | 赵六 | 3      | 7000   |
+----+------+--------+--------+

部门表(department):

+----+----------+
| id | dept_name |
+----+----------+
| 1  | 研发部   |
| 2  | 市场部   |
| 3  | 财务部   |
+----+----------+
  1. 查询员工姓名、部门名称及薪资

SELECT e.name, d.dept_name, e.salary
FROM employee e
INNER JOIN department d ON e.dept_id = d.id;

注释:这里使用了表别名(e和d),方便在查询中引用表。通过INNER JOIN关键字将员工表和部门表进行内连接,连接条件为员工表的dept_id等于部门表的id。 运行结果:

+------+----------+--------+
| name | dept_name | salary |
+------+----------+--------+
| 张三 | 研发部   | 8000   |
| 李四 | 市场部   | 9000   |
| 王五 | 研发部   | 10000  |
| 赵六 | 财务部   | 7000   |
+------+----------+--------+
  1. 查询薪资大于8000的员工姓名、部门名称及薪资

SELECT e.name, d.dept_name, e.salary
FROM employee e
INNER JOIN department d ON e.dept_id = d.id
WHERE e.salary > 8000;

注释:在上一例子的基础上,添加了WHERE子句,用于筛选薪资大于8000的员工。 运行结果:

+------+----------+--------+
| name | dept_name | salary |
+------+----------+--------+
| 李四 | 市场部   | 9000   |
| 王五 | 研发部   | 10000  |
+------+----------+--------+
  1. 查询各部门员工数量、平均薪资及部门名称

SELECT d.dept_name, COUNT(e.id) AS employee_count, AVG(e.salary) AS avg_salary
FROM department d
INNER JOIN employee e ON d.id = e.dept_id
GROUP BY d.dept_name;

注释:这里使用了聚合函数COUNT和AVG,分别计算各部门的员工数量和平均薪资。通过GROUP BY子句按部门名称进行分组。 运行结果:

+----------+---------------+------------+
| dept_name | employee_count | avg_salary |
+----------+---------------+------------+
| 研发部   | 2             | 9000       |
| 市场部   | 1             | 9000       |
| 财务部   | 1             | 7000       |
+----------+---------------+------------+

三、总结

通过以上例子,我们可以看到内连接查询在SQL99中的使用方法。内连接查询能够有效地从多个表中获取相关联的数据,为数据分析提供便利。在实际应用中,我们可以根据需求灵活运用内连接查询,结合聚合函数、WHERE子句等,实现复杂的查询功能。需要注意的是,内连接查询只返回满足连接条件的记录,如果两个表中的记录在指定列上没有匹配的值,则不会出现在结果集中。在实际操作中,我们要根据业务需求选择合适的连接类型。


http://www.ppmy.cn/server/163821.html

相关文章

OpenAI 宕机 | 如何让 k8s 集群更稳定

注:本文为 2024 年 12 月 “ OpenAI 宕机分析” 相关文章合辑。 未整理去重。 ChatGPT 的故障,官方这样解释… 明说 YYM 2024 年 12 月 14 日 18:50 广东 2024 12 11 (PST) OpenAI 经历了一次服务故障,OpenAI 给出了详细的解释和预防方案。…

Vue - pinia

Pinia 是 Vue 3 的官方状态管理库,旨在替代 Vuex,提供更简单的 API 和更好的 TypeScript 支持。Pinia 的设计遵循了组合式 API 的理念,能够很好地与 Vue 3 的功能结合使用。 Pinia 的基本概念 Store: Pinia 中的核心概念,类似于…

vue相关的页面和js编写

vue和后端调用 1 前端vue的查询接口(在src下的api中的对应目录编写调用后端的请求方法) dispord.js文件 import request from /utils/request //封装了ajaxconst api_name /pms/dispord //对应后端controller上面的公共的请求路径 -- 到nginx中了…

【长期更新】RN+expo 错误解决方案

Warning: Internal React error: Expected static flag was missing. Please notify the React team 复现的代码 import { useEffect, useRef } from react import React from react;const ModalShop ({ isVisible, onClose }) > {if (!isVisible) return null;const han…

使用 Intersection Observer 实现高效懒加载和滚动监听

在前端开发中,性能优化是提升用户体验的核心之一。随着网页内容的日益增多,如何高效地加载图片、视频等资源,以及如何监听用户的滚动行为,成为了前端开发者需要解决的难题。传统的滚动事件监听往往会带来性能瓶颈,尤其…

未来无线技术的发展方向

未来无线技术的发展趋势呈现出多样化、融合化的特点,涵盖速度、覆盖范围、应用领域、频段利用、安全性等多个方面。这些趋势将深刻改变人们的生活和社会的运行方式。 传输速度提升:Wi-Fi 技术迭代加快,如 Wi-Fi7 理论峰值速率达 46Gbps&#…

Python新春烟花

系列专栏 《Python趣味编程》《C/C趣味编程》《HTML趣味编程》《Java趣味编程》 系列文章 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代…

qt内部的特殊技巧【QT】

下面的代码实现一个进度条的功能&#xff1a; 代码一&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTimer> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJ…