我試圖解釋加入簡單越好。假設我們必須存儲一些關係信息:人員(姓名,姓氏)和少量分配給人的電子郵件。
首先 - 我們將人員信息保存在表格人員中。我們需要唯一的行標識符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