📜  SQL 查询以使用联接和何处从表中选择数据

📅  最后修改于: 2022-05-13 01:55:34.536000             🧑  作者: Mango

SQL 查询以使用联接和何处从表中选择数据

本文的目的是使用 MySQL 编写一个使用 Join 和 Where 子句连接两个表的简单程序。以下是使用 MySQL 执行相同操作的方法。本文的先决条件是您的计算机上安装了 MySQL 和 Apache Server。

SQL 中的查询是什么?

SQL 查询是从数据库表中传递的数据/信息请求。此数据可用于各种目的,例如训练模型、查找数据中的模式等。

SQL 中的联接是什么?

JOIN 查询用于组合来自两个或多个表的行,基于可用于存储来自两个表的相同数据的单个列。所以我们在那个点上加入并加入行。

SQL 中的 Where 子句是什么?

SQL 中的 WHERE 关键字用于在某个查询下检索结果中的数据。它还可以用于通过匹配模式来检索数据,例如选择所有分数大于 90 的学生或从员工工资大于 60 万和小于 120 万的表中选择所有数据。

所以我们将从创建一个数据库开始——



步骤 1:创建数据库

CREATE DATABASE geeksforgeeks;

第 2 步:输入此数据库以使用它 –

USE geeksforgeeks;

第 3 步:在数据库中创建一个 table1 作为员工,我们将在其中执行我们的操作——

CREATE TABLE employee ( ID int(10),
            Name varchar(55),
            Email varchar(100),
            Department int(10)
            );

第 4 步:创建另一个 table2 作为dept ,我们将在其中存储第二家公司的员工数据-

CREATE TABLE dept     ( ID int(10),
            Name varchar(55),
            hodId int(10),
            profit int(20)
            );

第五步:查看表的schema,确保表正确——

> DESC employee;
> DESC dept;

第六步:将数据插入到employee表中——

INSERT INTO employee VALUES(1, "Devesh", "geeks@geeks.com", 1);
INSERT INTO employee VALUES(2, "Mayank", "for@geeks.com", 1);
INSERT INTO employee VALUES(3, "Aditya", "geeks@geeks.com", 2);
INSERT INTO employee VALUES(4, "Divyanshi", "portal@geeks.com", 2);
INSERT INTO employee VALUES(5, "Megha", "is@geeks.com", 3);
INSERT INTO employee VALUES(6, "Himanshi", "a@geeks.com", 3);
INSERT INTO employee VALUES(7, "Tanishka", "computer@geeks.com", 4);
INSERT INTO employee VALUES(8, "Jatin", "science@geeks.com", 4);

第 7 步:将数据插入到 dept 表中——



INSERT INTO dept VALUES(1, "Computer Science", 1, 100000);
INSERT INTO dept VALUES(2, "Electrical", 2, 45000);
INSERT INTO dept VALUES(3, "Biotechnology", 3, 30000);
INSERT INTO dept VALUES(4, "Architecture", 4, 15000);

第 8 步:使用 where 和 Join 查询数据 –

例1:选择所有部门HOD的员工数据——

SELECT employee.ID, employee.Name, employee.Email
FROM employee 
JOIN dept
WHERE
employee.ID = dept.hodId;

输出:

例2:选择部门利润大于45000的所有数据——

SELECT * 
FROM employee
LEFT JOIN dept
ON
employee.Department = dept.ID
WHERE 
employee.Name IN
(SELECT Name FROM employee WHERE dept.profit > 45000);

输出:

示例 3:使用 JOIN(交叉连接)从两个表中选择所有数据 –

SELECT *
FROM employee 
FULL JOIN dept
WHERE
dept.id > 0;

示例 4:选择总利润大于 5000 的部门的所有员工

SELECT DISTINCT dept.ID, dept.Name, dept.hodId
FROM dept
JOIN employee
ON
dept.ID = employee.Department
WHERE
hodId IN
(SELECT hodId FROM dept WHERE hodId > 0);

输出: