SQL 外连接
在关系型 DBMS 中,我们遵循规范化原则,允许我们将大表最小化为小表。通过在 Joins 中使用 select 语句,我们可以检索大表。外连接有以下三种类型。
- 左外连接
- 右外连接
- 全外连接
创建数据库:运行以下命令创建数据库。
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 Teacher Id Alpha 1 Romeo 2 Charlie 3