连接是一个非常强大的工具。还记得数据库介绍模块中的关系代数吗?
连接应用于关系代数。
假设你有两张表,人和车:
CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL PRIMARY KEY
);
CREATE TABLE cars (
brand CHAR(20) NOT NULL,
model CHAR(20) NOT NULL,
owner CHAR(20) NOT NULL PRIMARY KEY
);
我们添加一些数据:
INSERT INTO people VALUES (37, 'Flavio');
INSERT INTO people VALUES (8, 'Roger');
INSERT INTO cars VALUES ('Ford', 'Fiesta', 'Flavio');
INSERT INTO cars VALUES ('Ford', 'Mustang', 'Roger');
现在假设我们想要把这两个表联系起来,因为警察阻止了罗杰开车,看起来很年轻,想要从他们的数据库中知道他的年龄。
罗杰是我的狗,但让我们假设狗会开车。
我们可以使用以下语法创建连接:
SELECT age FROM people JOIN cars ON people.name = cars.owner WHERE cars.model='Mustang';
我们会得到这个结果:
age
-----
8
发生了什么?我们将两个表cars连接到两个特定列上:people表中的name和cars表中的owner。
连接是一个可以增加复杂性的主题,因为有许多不同类型的连接,您可以使用它们对多个表执行更高级的操作,但这里是最基本的示例。