什么是 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 相关的知识。