📜  SQL 中的隐式连接与显式连接

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

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;

输出: