📜  使用内连接连接多个表

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

使用内连接连接多个表

要从单个表中检索数据,我们使用SELECTPROJECTION 操作,但要从多个表中检索数据,我们在SQL 中使用 JOINS 。有不同类型的JOINS 查询语句。在本文中,仅讨论 MSSQL中的内连接操作。

内连接是根据需要的条件从多个表中检索数据的方法,必要条件是数据库的两个表之间必须有共同的列或匹配的列,并且列的数据类型必须相同。

让我们一步一步地看看如何在MSSQL 中使用 Inner Join连接两个表和三个表。

创建数据库:

使用以下 SQL 查询创建数据库 GeeksForGeeks,如下所示。

CREATE DATABASE GeeksForGeeks;



使用数据库:

使用数据库 student 使用以下 SQL 查询如下。

USE GeeksForGeeks;

使用 SQL 查询创建三个表学生、课程和讲师,如下所示:

CREATE TABLE student
( stu_id varchar(10),
 stu_name varchar(20),
 course_id varchar(10),
 branch varchar(20),
 lecturer_id varchar(10)
);

CREATE TABLE course
(
  course_id varchar(10),
  course_name varchar(20)
);

CREATE TABLE lecturer
(
  lecturer_id varchar(10),
  lecturer_name varchar(20)
);

验证数据库:

使用如下SQL查询查看数据库GeeksForGeeks中三个表的描述。

EXEC sp_columns student;
EXEC sp_columns course;
EXEC sp_columns lecturer;



将数据插入到三个表中:

使用以下 SQL 查询将行插入学生表,如下所示:

INSERT INTO student VALUES
('1901401','DEVA','CS1003','C.S', 'P4002'),
('1901402','HARSH','CS1001','C.S', 'P4001'),
('1901403','ABHISHEK','CS1001','C.S', 'P4001'),
('1901404','GARVIT','CS1002','C.S', 'P4003'),
('1901405','SAMPATH','CS1003','C.S', 'P4002'),
('1901406','SATWIK','CS1002','C.S', 'P4003'),
('1901407','GUPTA','CS1001','C.S', 'P4001'),
('1901408','DAS','CS1003','C.S', 'P4002');

使用以下 SQL 查询将行插入课程表,如下所示:

INSERT INTO course VALUES
('CS1001', 'DBMS'),
('CS1002', 'O.S'),
('CS1003', 'C.N'),
('CS1004', 'M.L'),
('CS1005', 'A.I');

使用以下 SQL 查询将行插入到讲师表中,如下所示:

INSERT INTO lecturer VALUES
('P4001', 'RAMESH'),
('P4002', 'RAVINDER'),
('P4003', 'RAHUL SHARMA'),
('P4004', 'PRADEEP KUMAR'),
('P4005', 'SRINIVASA RAO');

验证插入的数据:

插入行后使用以下SQL查询查看三个表,如下所示。

SELECT* FROM student;
SELECT* FROM course;
SELECT* FROM lecturer;

应用内连接:

多个连接的语法:

SELECT column_name1,column_name2,..
FROM table_name1
INNER JOIN 
table_name2
ON condition_1
INNER JOIN 
table_name3
ON condition_2
INNER JOIN 
table_name4
ON condition_3
.
.
.

注意:仅选择特定列时,请使用table_namecolumn_name当两个表中有相同的列名时,否则你会得到一个不明确的错误。

查询:

两个表学生和课程的内部连接:

SELECT *
FROM student  
INNER JOIN  
course  
ON  
student.course_id = course.course_id;

出现2个表的所有列满足等式条件

学生、课程和讲师的三个表的内部联接:

SELECT *
FROM student  
INNER JOIN  
course  
ON  
student.course_id = course.course_id
INNER JOIN  
lecturer  
ON  
student.lecturer_id = lecturer.lecturer_id;

出现3个表的所有列满足等式条件

在学生、课程、讲师三个表上的内部连接,但通过选择特定表的特定列。

SELECT stu_id, stu_name,course.course_id,course.course_name,
lecturer.lecturer_name
FROM student  
INNER JOIN  
course  
ON  
student.course_id = course.course_id
INNER JOIN  
lecturer  
ON  
student.lecturer_id = lecturer.lecturer_id;