SQL 中的隐式连接与显式连接
原文:https://www . geesforgeks . org/implicit-join-vs-explicit-join-in-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 语句创建一个名为“课程:
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);
第五步:学生表
使用下面的 SQL 语句查看学生表的内容:
SELECT * FROM student;
课程表:
使用下面的 SQL 语句查看课程表的内容:
SELECT * FROM course;
步骤 6: 显式连接
这种表示法使用 on 关键字指定连接的谓词,使用 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;
输出:
版权属于:月萌API www.moonapi.com,转载请注明出处