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);
输出: