SQL 内连接
概述 :
结构化查询语言或 SQL 是一种标准数据库语言,用于从 MySQL、Oracle 等关系数据库中创建、维护和检索数据。连接是笛卡尔积和选择过程的组合。当且仅当满足给定的连接条件时,连接操作才将来自不同关系的两个元组配对。内连接是只包含满足某些条件的那些元组的连接。在本文中,我们将使用 MySQL 来演示 SQL Inner Join 的工作。
实现 SQL Inner Join 的步骤:
在这里,我们将讨论 SQL Inner Join 的实现如下。
步骤 1:创建数据库:
在这里,我们将使用以下 SQL 查询创建数据库,如下所示。
CREATE DATABASE geeks;
步骤 2:使用数据库:
在这里,我们将使用 geeks 数据库。
USE geeks;
第 3 步:添加表格:
我们将向数据库添加 2 个表,如下所示。
- 第一个表将是教授,其中包含 ID、教授的姓名和薪水。
- 将教授第二个表,其中包含课程 ID、教授 ID 和课程名称。
添加表教授 -
CREATE TABLE professor(
ID int,
Name varchar(20),
Salary int
);
添加表教 -
CREATE TABLE teaches(
course_id int,
prof_id int,
course_name varchar(20)
);
第 4 步:表格说明:
我们可以使用以下 SQL 命令获取这 2 个表的描述,如下所示。
DESCRIBE professor
输出 : Field Type Null Key Default Extra ID int YES NULL Name varchar(20) YES NULL Salary int YES NULL
DESCRIBE teaches
输出 :Field Type Null Key Default Extra course_id int YES NULL prof_id int YES NULL course_name varchar(20) YES NULL
步骤 5:插入行:
在这里,我们将如下将两个表中的行一一插入。
在教授表中插入行 –
INSERT INTO professor VALUES (1, 'Rohan', 57000);
INSERT INTO professor VALUES (2, 'Aryan', 45000);
INSERT INTO professor VALUES (3, 'Arpit', 60000);
INSERT INTO professor VALUES (4, 'Harsh', 50000);
INSERT INTO professor VALUES (5, 'Tara', 55000);
输出 :
在教表中插入行 –
INSERT INTO teaches VALUES (1, 1, 'English');
INSERT INTO teaches VALUES (1, 3, 'Physics');
INSERT INTO teaches VALUES (2, 4, 'Chemistry');
INSERT INTO teaches VALUES (2, 5, 'Mathematics');
输出 :
步骤 6:表的当前状态:
验证两个表中的数据如下。
教授表——
SELECT * FROM professor;
输出 :ID Name Salary 1 Rohan 57000 2 Aryan 45000 3 Arpit 60000 4 Harsh 50000 5 Tara 55000
教表——
SELECT * FROM teaches;
输出 :course_id prof_id course_name 1 1 English 1 3 Physics 2 4 Chemistry 2 5 Mathematics
步骤 7:内部连接查询:
句法 :
SELECT comma_separated_column_names
FROM table1 INNER JOIN table2 ON condition
例子 -
SELECT teaches.course_id, teaches.prof_id, professor.Name, professor.Salary
FROM professor INNER JOIN teaches ON professor.ID = teaches.prof_id;
输出 :
使用内部联接,我们能够根据条件组合两个表中的信息,并且两个表的笛卡尔积中不满足所需条件的元组不包含在结果表中。course_id prof_id Name Salary 1 1 Rohan 57000 1 3 Arpit 60000 2 4 Harsh 50000 2 5 Tara 55000