我试图解释加入简单越好。假设我们必须存储一些关系信息:人员(姓名,姓氏)和少量分配给人的电子邮件。
首先 - 我们将人员信息保存在表格人员中。我们需要唯一的行标识符personId
,这将使我们能够将人确切地指向个人数据库。
table persons
personId, name, surname
1, John, Foo
2, Mike, Bar
当我们有这样的表格时,我们可以将其他人的电子邮件存储在其他表中。在这种情况下,创建唯一的行标识符不是必需的,但在所有表中存储这些行标识符是一种很好的做法。 PersonId字段告诉我们什么人拥有该电子邮件。
table emails
emailId, personId, address
1, 1, [email protected]
2, 1, [email protected]
3, 2, [email protected]
4, 2, [email protected]
现在我们可以选择连接数据。
SELECT persons.Name, persons.Surname, emails.address
FROM
persons
join
emails
ON
persons.personId = emails.personId
该查询将返回数据(地址分配给他们的人)。
John, Foo, [email protected]
John, Foo, [email protected]
Mike, Bar, [email protected]
Mike, Bar, [email protected]
这是明确的吗?
如果连接不清楚 - 也许访问phpcademy.org或newboston.org - 他们有很多关于很多语言和技术的教程,包括SQL。
后来补充:
您也可以加入多个表,就像这样:
SELECT primarykey, key1,key2, other, fields, detail_t_1.something
FROM
master_t
JOIN
detail_t_1 on detail_t_1
ON master_t.key1 = detail_t_1.key1,
detail_t_2 on detail_t_2
ON master_t.key2 = detail_t_2.key2
后来补充:
如果有多个 “细节” 行(就像我的例子中的2封电子邮件) - 返回的数据将包含多个人,每个电子邮件地址。
在SQL返回的数据总是以表格的形式,而不是树形。
对不起,迷惑 - 你说说提取数据,然后约联接。为什么不只是独立拉桌子? – 2013-02-27 15:23:26
只需使用:http://dev.mysql.com/doc/refman/5.1/en/mysqldump。html – 2013-02-27 15:23:33
除非你有一个特定的原因,否则你可以用mysqldump来做这件事,因为@BenjaminM已经提到过了。 – Raad 2013-02-27 15:24:55