SQL左连接

SQL左连接

SQL左连接

在SQL中,LEFT JOIN(左连接)用于从两个或多个表中获取匹配行以及指定左表中的所有行。左连接将返回左表中的所有行,即使没有匹配的行在右表中。

语法

LEFT JOIN关键字用于从第一个(左侧)表获取所有行,即使没有匹配的行在第二个(右侧)表中。

其基本语法如下:

SELECT 列名
FROM 表1
LEFT JOIN 表2 ON 表1.列名 = 表2.列名;

在这里,表1是左表,表2是右表,ON 关键字用于指定连接的条件。

示例

创建表

首先,让我们创建两个表来演示左连接的用法。假设我们有一个“学生”表和一个“成绩”表,学生表包含学生的ID和姓名,成绩表包含学生的ID和各科成绩。

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    student_name VARCHAR(50)
);

CREATE TABLE scores (
    student_id INT,
    subject VARCHAR(50),
    score INT,
    FOREIGN KEY (student_id) REFERENCES students(student_id)
);

INSERT INTO students VALUES (1, 'Alice');
INSERT INTO students VALUES (2, 'Bob');
INSERT INTO students VALUES (3, 'Charlie');

INSERT INTO scores VALUES (1, 'Math', 90);
INSERT INTO scores VALUES (1, 'English', 85);
INSERT INTO scores VALUES (2, 'Math', 88);
INSERT INTO scores VALUES (3, 'English', 92);

查询结果

现在我们可以使用左连接来获取学生及其成绩信息。以下是查询语句和结果:

SELECT s.student_id, s.student_name, sc.subject, sc.score
FROM students s
LEFT JOIN scores sc ON s.student_id = sc.student_id;

查询结果如下:

student_id | student_name | subject  | score
-----------|--------------|----------|------
1          | Alice        | Math     | 90
1          | Alice        | English  | 85
2          | Bob          | Math     | 88
3          | Charlie      | English  | 92

在这个示例中,我们可以看到即使Bob没有英语成绩,他仍然显示在结果中,并用NULL表示他的英语成绩。

总结

通过左连接,我们可以从两个表中获取匹配的行,并且左表中的所有行都会显示在结果中,即使在右表中没有匹配的行也不会被过滤掉。这使得查询结果更加完整和具有可读性。左连接在处理两个表之间的关系时非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程