mysql学习教程,从入门到精通,SQL INNER JOIN 语句(22)

news/2024/9/28 23:56:37/

1、SQL INNER JOIN 语句

SQL INNER JOIN 语句,首先需要明确你的数据库中有哪些表以及你想要通过哪些字段将它们关联起来。假设我们有两个表:employees(员工表)和departments(部门表)。employees 表包含员工的ID、姓名和所在部门的ID,而 departments 表包含部门的ID和部门的名称。
下面是一个使用 INNER JOIN 来连接这两个表并查询所有员工及其对应部门名称的SQL语句示例:

sql">SELECT employees.name AS EmployeeName, departments.name AS DepartmentName  
FROM employees  
INNER JOIN departments ON employees.department_id = departments.id;

在这个查询中:

  • SELECT 子句指定了我们想要从连接结果中检索的列,这里我们选择了员工的姓名(employees.name)和部门的名称(departments.name),并分别为它们指定了别名 EmployeeNameDepartmentName,以便在结果集中更清晰地显示。
  • FROM 子句指定了查询将要涉及的第一个表(employees)。
  • INNER JOIN 子句用于指定如何连接 employees 表和 departments 表。具体来说,我们通过 employees 表中的 department_id 字段和 departments 表中的 id 字段来关联这两个表。只有当两个表中相应的字段值相匹配时,这些行的组合才会出现在结果集中。
  • ON 子句详细说明了连接条件,即 employees.department_id = departments.id。这告诉数据库系统如何确定哪些 employees 行的 department_id 与哪些 departments 行的 id 相匹配。

请注意,具体的字段名(如 namedepartment_idid)和表名(如 employeesdepartments)将取决于你的数据库架构。你可能需要根据你的实际数据库结构调整这些名称。

当然可以给出一些SQL INNER JOIN 的实际案例。以下是一些基于不同场景和需求的实际案例,它们展示了如何使用 INNER JOIN 来连接两个或多个表,并查询所需的信息。

1.1、 案例一:查询员工及其部门信息

场景:假设有一个员工表(employees)和一个部门表(departments),想要查询所有员工及其所属的部门名称。

SQL语句

sql">SELECT e.name AS EmployeeName, e.job_title AS JobTitle, d.name AS DepartmentName  
FROM employees e  
INNER JOIN departments d ON e.department_id = d.id;

说明:此查询连接了employees表和departments表,通过department_id字段进行匹配,并选择了员工姓名(EmployeeName)、职位(JobTitle)和部门名称(DepartmentName)作为结果集的列。

1.2、案例二:查询有订单的客户信息

场景:假设有一个客户表(Customers)和一个订单表(Orders),想要查询所有下过订单的客户及其订单信息。

SQL语句

sql">SELECT c.customer_name AS CustomerName, o.order_id AS OrderID, o.order_date AS OrderDate, o.total_amount AS TotalAmount  
FROM Customers c  
INNER JOIN Orders o ON c.customer_id = o.customer_id;

说明:此查询连接了Customers表和Orders表,通过customer_id字段进行匹配,并选择了客户姓名(CustomerName)、订单ID(OrderID)、订单日期(OrderDate)和订单总金额(TotalAmount)作为结果集的列。

1.3、案例三:查询学生成绩及其对应的课程信息

场景:假设有一个学生表(students)、一个成绩表(grades)和一个课程表(courses),想要查询所有学生的成绩及其对应的课程名称。
SQL语句

sql">SELECT s.name AS StudentName, c.name AS CourseName, g.grade AS Grade  
FROM students s  
INNER JOIN grades g ON s.student_id = g.student_id  
INNER JOIN courses c ON g.course_id = c.id;

说明:此查询连接了三个表:studentsgradescourses。首先,通过student_id字段连接students表和grades表,然后通过course_id字段连接grades表和courses表。最终选择了学生姓名(StudentName)、课程名称(CourseName)和成绩(Grade)作为结果集的列。

1.4、案例四:查询库存量低于特定值的商品及其供应商信息

场景:假设有一个商品表(products)、一个库存表(inventories)和一个供应商表(suppliers),想要查询库存量低于100的商品及其供应商信息。

SQL语句

sql">SELECT p.name AS ProductName, s.name AS SupplierName, i.stock_quantity AS StockQuantity  
FROM products p  
INNER JOIN inventories i ON p.product_id = i.product_id  
INNER JOIN suppliers s ON p.supplier_id = s.id  
WHERE i.stock_quantity < 100;

说明:此查询连接了三个表:productsinventoriessuppliers。首先,通过product_id字段连接products表和inventories表,然后通过supplier_id字段连接products表和suppliers表。最后,通过WHERE子句过滤出库存量低于100的商品,并选择了商品名称(ProductName)、供应商名称(SupplierName)和库存量(StockQuantity)作为结果集的列。
这些案例展示了INNER JOIN在查询数据库时的多样性和灵活性,可以根据不同的需求和数据表结构来构造相应的SQL语句。


http://www.ppmy.cn/news/1530824.html

相关文章

【网络】高级IO——epoll版本TCP服务器初阶

目录 前言 一&#xff0c;epoll的三个系统调用接口 1.1.epoll_create函数 1.1.1.epoll_create函数干了什么 1.2. epoll_ctl函数 1.2.1.epoll_ctl函数函数干了什么 1.3.epoll_wait函数 1.3.1.epoll_wait到底干了什么 1.4.epoll的工作过程中内核在干什么 二&#xff0c;…

中台架构下的数据仓库与非结构化数据整合

在当今数字化转型的大潮中&#xff0c;企业面临着数据爆炸性增长的挑战&#xff0c;特别是非结构化数据的急剧增加&#xff0c;如何高效整合与管理这些数据成为了企业发展的关键议题。中台架构作为一种高效、灵活的企业级架构模式&#xff0c;为数据仓库与非结构化数据的整合提…

OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐

2022年OceanBase推出云数据库产品OB Cloud,正式启动云数据库战略。两年来OB Cloud发展情况如何&#xff0c;9月26日&#xff0c;OceanBase公有云事业部总经理尹博学向记者作了介绍。 尹博学表示&#xff0c;OB Cloud推出两年以来&#xff0c;已服务超过700家客户&#xff0c;客…

VSCode好用的插件推荐

1. Chinese 将vscode翻译成简体中文 如果安装了依然是英文&#xff0c;请参考如下方法&#xff1a; ctrlshfitp 2. ESLint 自动检查规范 3. Prettier - Code formatter 可以自动调整代码的缩进、换行和空格&#xff0c;确保代码风格统一。通过配置&#xff0c;Prettier可…

如何在Excel中快速找出前 N 名,后 N 名

有如下销售额统计表&#xff1a; 找出销售额排前 10 名的产品及其销售额&#xff0c;和销售额排倒数 10 名以内的产品及其销售额&#xff0c;结果如下所示&#xff1a; 前 10 名&#xff1a; spl("E(?1).sort(ProductSales:-1).to(10)",A1:C78)后 10 名&#xff1…

视频怎么提取音频?一键音频提取,视频内容轻松听!

视频怎么提取音频&#xff1f;一键解锁音频世界&#xff0c;让视频精彩不再静默&#xff01;无论您是忙碌于日常工作的上班族&#xff0c;还是热衷于学习的求知者&#xff0c;亦或是享受闲暇时光的聆听者&#xff0c;一键提取音频功能让视频内容瞬间转化为耳畔的温柔低语&#…

【机器学习】——线性回归(自我监督学习)

文章目录 1. 线性回归的定义2. 线性回归的模型3. 线性回归的核心思想4. 线性回归的求解5. 线性回归的假设6. 模型评估7. 线性回归的优缺点8. 线性回归的扩展9. 线性回归的实际应用10. 示例代码&#xff08;Python实现&#xff09; 线性回归详细介绍 1. 线性回归的定义 线性回归…

Ubuntu24.04中安装Electron

1. 安装Nodejs 使用代理服务从github下载并执行Nodejs安装脚本(假设代理服务器为192.168.2.150:10792) curl -x 192.168.2.150:10792 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash #注意&#xff0c;Nodejs官网的安装命令少了下面这一行: …