使用内连接连接多个表
要从单个表中检索数据,我们使用SELECT和PROJECTION 操作,但要从多个表中检索数据,我们在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_name 。 column_name当两个表中有相同的列名时,否则你会得到一个不明确的错误。
查询:
两个表学生和课程的内部连接:
SELECT *
FROM student
INNER JOIN
course
ON
student.course_id = course.course_id;
学生、课程和讲师的三个表的内部联接:
SELECT *
FROM student
INNER JOIN
course
ON
student.course_id = course.course_id
INNER JOIN
lecturer
ON
student.lecturer_id = lecturer.lecturer_id;
在学生、课程、讲师三个表上的内部连接,但通过选择特定表的特定列。
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;