📜  SQL 内连接

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

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 个表,如下所示。



  1. 第一个表将是教授,其中包含 ID、教授的姓名和薪水。
  2. 将教授第二个表,其中包含课程 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

输出 :

FieldTypeNullKeyDefaultExtra
IDintYES NULL 
Namevarchar(20)YES NULL 
SalaryintYES NULL 

DESCRIBE teaches

输出 :

FieldTypeNullKeyDefaultExtra
course_idintYES NULL 
prof_idintYES NULL 
course_namevarchar(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;

输出 :

IDNameSalary
1Rohan57000
2Aryan45000
3Arpit60000
4Harsh50000
5Tara55000

教表——

SELECT * FROM teaches;

输出 :

course_idprof_idcourse_name
11English
13Physics
24Chemistry
25Mathematics

步骤 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_idprof_idNameSalary
11Rohan57000
13Arpit60000
24Harsh50000
25Tara55000