mysql如何进行表连接

文 / @WordPress主题

和右连接是外连接的两种形式。左连接选择左侧的表作为主要表,右侧的表则为次要的表。这意味着左侧表中的全部数据都会被显示出来,而右侧表中只会显示与左侧表匹配的数据,其他数据则会显示为NULL。右连接则与左连接相反,选择右侧表作为主要表,左侧表作为次要的表。

MySQL是一种关系型数据库管理系统,经常需要对多张表进行操作。而表连接是一种常用的操作方法,可以将多张表中的关联数据进行联合输出。在进行表连接之前,需要先确保每张表之间有关联的数据存在,即需要在表中建立关联关系。这里我们以employee和employee_record两张表为例进行操作。

首先,我们需要创建这两张表并插入数据:

CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`salary` int(11) NOT NULL,
`department` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `employee_record` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`employee_id` int(11) NOT NULL,
`start_date` date NOT NULL,
`end_date` date NOT NULL,
`company` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);

INSERT INTO `employee` (`name`, `salary`, `department`) VALUES ('Tom', 5000, 'Sales');
INSERT INTO `employee` (`name`, `salary`, `department`) VALUES ('John', 6000, 'Marketing');
INSERT INTO `employee` (`name`, `salary`, `department`) VALUES ('Mary', 7000, 'HR');

INSERT INTO `employee_record` (`employee_id`, `start_date`, `end_date`, `company`) VALUES (1, '2020-01-01', '2021-01-01', 'ABC Company');
INSERT INTO `employee_record` (`employee_id`, `start_date`, `end_date`, `company`) VALUES (2, '2019-01-01', '2021-01-01', 'XYZ Company');
INSERT INTO `employee_record` (`employee_id`, `start_date`, `end_date`, `company`) VALUES (3, '2018-01-01', '2019-01-01', 'AAA Company');

接下来,我们可以使用内连接语句将两张表中的关联数据进行联合输出:

SELECT e.id, e.name, e.salary, e.department, r.start_date, r.end_date, r.company
FROM employee e
INNER JOIN employee_record r ON e.id = r.employee_id;

上述代码中,我们先以employee表为主表,使用INNER JOIN连接employee_record表,两张表连接的条件是employee.id = employee_record.employee_id。经过联合输出后,我们可以得到如下的结果:

+----+-------+--------+------------+------------+------------+--------------+
| id | name | salary | department | start_date | end_date | company |
+----+-------+--------+------------+------------+------------+--------------+
| 1 | Tom | 5000 | Sales | 2020-01-01 | 2021-01-01 | ABC Company |
| 2 | John | 6000 | Marketing | 2019-01-01 | 2021-01-01 | XYZ Company |
| 3 | Mary | 7000 | HR | 2018-01-01 | 2019-01-01 | AAA Company |
+----+-------+--------+------------+------------+------------+--------------+

可以看到,我们成功地将employee和employee_record两张表进行了内连接,将关联数据进行了联合输出。

接下来,我们可以再使用左连接和右连接语句尝试进行操作。其中,左连接会显示employee表中的全部数据,而右连接则会显示employee_record表中的全部数据,两张表之间的匹配数据为交集。

左连接示例代码:

SELECT e.id, e.name, e.salary, e.department, r.start_date, r.end_date, r.company
FROM employee e
LEFT JOIN employee_record r ON e.id = r.employee_id;

右连接示例代码:

SELECT e.id, e.name, e.salary, e.department, r.start_date, r.end_date, r.company
FROM employee e
RIGHT JOIN employee_record r ON e.id = r.employee_id;

通过以上代码,我们可以熟练掌握MySQL进行表连接的操作方式。在实际应用中,我们可以根据具体场景选择不同的表连接方式,以达到最优的数据输出结果。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。