什么是 MySQL LEFT JOIN 以及如何为其编写 MySQL 查询?

什么是 MySQL LEFT JOIN?

MySQL LEFT JOIN 是 SQL 语言中的一种查询方式,它可以将左表中的所有行都显示出来,并将右表中匹配到的行显示出来。如果右表中没有匹配到任何行,则在结果集中使用 NULL 值填充相关列。

LEFT JOIN 的语法

LEFT JOIN 的语法如下:

SELECT columns

FROM table1

LEFT JOIN table2

ON table1.column = table2.column;

其中 columns 代表需要显示的列。table1 和 table2 分别代表左表和右表。ON 子句是连接条件。

如何为其编写 MySQL 查询?

为左表和右表分别创建数据表

在本次教程中,我们需要使用两个数据表进行 LEFT JOIN 操作。因此,需要为左表和右表分别创建数据表,并分别插入一些数据。

首先,创建左表数据表,命名为 employees,结构如下:

CREATE TABLE employees (

id INT(11) NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NOT NULL,

department VARCHAR(50) NOT NULL,

PRIMARY KEY (id)

);

接下来,往 employees 表中插入一些数据:

INSERT INTO employees (name, department)

VALUES

('张三', '销售部门'),

('李四', '人力资源部门'),

('王五', '技术部门'),

('赵六', '销售部门'),

('钱七', '人力资源部门'),

('孙八', '技术部门');

然后,我们再创建右表数据表,命名为 salaries,结构如下:

CREATE TABLE salaries (

id INT(11) NOT NULL AUTO_INCREMENT,

employee_id INT(11) NOT NULL,

salary DECIMAL(10,2) NOT NULL,

PRIMARY KEY (id),

FOREIGN KEY (employee_id) REFERENCES employees(id)

);

在右表的定义中,我们通过 FOREIGN KEY 设置了 employee_id 为外部键,它参照了 employees 表中的 id 字段。

接下来,往 salaries 表中插入一些数据:

INSERT INTO salaries (employee_id, salary)

VALUES

(1, 5000),

(2, 8000),

(3, 12000),

(4, 4500),

(5, 7000);

使用 LEFT JOIN 查询数据

现在我们已经成功创建了左表和右表,并往里面分别插入了一些数据。接下来,我们需要使用 LEFT JOIN 查询数据。

假设我们要查询所有员工的名字和工资,并且我们需要显示所有员工,即使当前没有对应的工资记录。这种情况下,我们可以使用如下 SQL 语句:

SELECT employees.name, salaries.salary

FROM employees

LEFT JOIN salaries

ON employees.id = salaries.employee_id;

在这个示例中,我们使用了 employees 表作为左表,salaries 表作为右表。在 ON 语句中,我们根据 employees.id 和 salaries.employee_id 进行连接操作。最终,查询结果如下:

+------+--------+

| name | salary |

+------+--------+

| 张三 | 5000.00|

| 李四 | 8000.00|

| 王五 |12000.00|

| 赵六 | 4500.00|

| 钱七 | 7000.00|

| 孙八 | NULL |

+------+--------+

注意,最后一行结果中的 salary 列为 NULL,因为我们在 salaries 数据表中没有对应于孙八的工资记录。

总结

MySQL LEFT JOIN 是一种非常常见的 SQL 查询方式,它可以实现并集查询操作,并且可以将左表中的所有数据都显示出来。LEFT JOIN 使用起来比较简单,只需要理解好其语法格式,在实践中就可以轻松使用了。

除此之外,我们还可以使用 RIGHT JOIN、INNER JOIN 等方式对数据进行不同的查询操作。如果您希望深入了解这些查询方式,可以继续学习 MySQL 或 SQL 相关的知识。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签