📜  SQL 外连接

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

SQL 外连接

在关系型 DBMS 中,我们遵循规范化原则,允许我们将大表最小化为小表。通过在 Joins 中使用 select 语句,我们可以检索大表。外连接有以下三种类型。

  1. 左外连接
  2. 右外连接
  3. 全外连接

创建数据库:运行以下命令创建数据库。

Create database testdb;

使用数据库:运行以下命令以使用数据库。

use testdb;

向数据库添加表:运行以下命令向数据库添加表。

CREATE TABLE Students (
   StudentID int,
   LastName varchar(255),
   FirstName varchar(255),
   Address varchar(255),
   City varchar(255)
);

将行插入数据库:



INSERT INTO students (
StudentID,
LastName,
FirstName,
Address,
City
)
VALUES
(
111, 
'James',
 'Johnson',
 'USA',
 california
);

数据库输出:

键入以下命令以获取输出。

SELECT  * FROM students;

外连接的类型:

1.左外连接:左连接操作返回左表中的所有记录和右表中匹配的记录。在右表中未找到匹配元素上,在这种情况下表示 NULL。

句法 :

SELECT column_name(s)
FROM table1
LEFT JOIN Table2 
ON Table1.Column_Name=table2.column_name;

2.右外连接:右连接操作返回右表中的所有记录和左表中匹配的记录。在左表中未找到的匹配元素上,在这种情况下表示 NULL。



句法 :

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

3. 全外连接:全外连接关键字在左表或右表记录匹配时返回所有记录。

Syntax:
SELECT column_name
FROM table1
FULL OUTER JOIN table2
ON table1.columnName = table2.columnName
WHERE condition;

例子 :

创建第一个示例表学生。

CREATE TABLE students (
 id INTEGER,
 name TEXT NOT NULL,
 gender TEXT NOT NULL
);
-- insert some values
INSERT INTO students VALUES (1, 'Ryan', 'M');
INSERT INTO students VALUES (2, 'Joanna', 'F');
INSERT INTO students Values (3, 'Moana', 'F');

创建第二个示例表学院。

CREATE TABLE college (
 id INTEGER,
 classTeacher TEXT NOT NULL,
 Strength TEXT NOT NULL
);
-- insert some values
INSERT INTO college VALUES (1, 'Alpha', '50');
INSERT INTO college VALUES (2, 'Romeo', '60');
INSERT INTO college Values (3, 'Charlie', '55');

对以上两个表执行外连接。

选择 College.classTeacher,student.id

来自大学

完全外部加入 College ON College.id=students.id

ORDER BY College.classTeacher;

上面的代码将对表students 和college 执行完全外连接,并返回匹配大学id 和student id 的输出。输出将是来自大学表的班级教师和来自学生表的 id。该表将由大学表中的班主任订购。

Class TeacherId
Alpha1
Romeo2
Charlie3