SQL 中的隐式连接与显式连接
JOIN 子句用于根据它们之间的关系组合来自两个或多个表的行。执行 JOIN 操作有两种不同的语法形式:
- 显式连接
- 隐式连接
第 1 步:创建数据库
使用以下 SQL 语句创建一个名为 geeks 的数据库:
CREATE DATABASE geeks;
第 2 步:使用数据库
使用以下 SQL 语句将数据库上下文切换到极客:
USE geeks;
第 3 步:创建表格
使用以下 SQL 语句创建一个名为 student 的表:
CREATE TABLE student(
ROLL_NO INT PRIMARY KEY,
NAME VARCHAR(25),
AGE INT);
使用以下 SQL 语句创建一个名为 course 的表:
CREATE TABLE course(
COURSE_ID INT,
ROLL_NO INT);
第 4 步:将数据添加到表中
使用以下 SQL 语句将数据添加到学生表:
INSERT INTO student
VALUES
(1, 'Anjali', 20),
(2, 'Rachna', 18),
(3, 'Shubham', 21),
(4, 'Harsh', 25),
(5, 'Shivam', 18),
(6, 'Harshit', 20);
使用以下 SQL 语句将数据添加到课程表中:
INSERT INTO course
VALUES
(1, 1),
(2, 2),
(2, 3),
(5, 4),
(3, 5);
第 5 步:学生表
使用下面的 SQL 语句查看学生表的内容:
SELECT * FROM student;
课程表:
使用以下 SQL 语句查看课程表的内容:
SELECT * FROM course;
第 6 步:显式连接
此表示法使用 ON 关键字来指定 Join 的谓词,并使用 JOIN 关键字来指定要连接的表。连接可以是任何类型,即 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN。它更容易理解并且不易出错。
句法:
SELECT column_names
FROM table1
JOIN table2
ON table1.column_name = table2.column_name
以下查询将使用显式连接表示法显示注册不同课程的学生的课程 ID、姓名和年龄。
询问:
SELECT COURSE_ID, NAME, AGE
FROM student
JOIN course
ON student.ROLL_NO = course.ROLL_NO;
输出:
第 7 步:隐式连接
这种表示法只是列出了要连接的表(在 SELECT 语句的 FROM 子句中),使用逗号分隔它们,并使用 WHERE 子句应用于连接谓词。它执行交叉连接。它很难理解,更容易出错。
句法:
SELECT column_names
FROM table1, table2
WHERE table1.column_name = table2.column_name
以下查询将使用隐式连接表示法显示注册不同课程的学生的课程 ID、姓名和年龄。
询问:
SELECT COURSE_ID, NAME, AGE
FROM student, course
WHERE student.ROLL_NO = course.ROLL_NO;
输出: