如課本中所述,若將表格視為有序對所成的集合, 則兩個表格的接合,就是兩個集合的直積。 我們假設讀者已經按照 輸入資料、查閱表格 這一節的指示,做好了 ADDR 表格, 也按照 在表格中增加欄位 和 改變表格的名字 的指示,做好了 LIST 表格, 而且這兩個表格如課本所示。 那麼,將 LIST 和 ADDR 接合的指令就是
LIST join ADDR用以下指令看看接合之後的結果:
select * from LIST join ADDR;觀察
如果不想看到這麼多欄位,可以選擇列印某些接合後的表格欄位。 如果某個欄位名稱是兩個表格中獨有的,就直接說名稱; 如果某個欄位名稱是兩個表格中共有的,就要以 table.field 的形式來指明。 例如
select LIST.id, name, gender, ADDR.id, zip, streetno from LIST join ADDR;看到以下 12 筆資料
這個結果雖然符合接合的數學定義,但是實在很難想像,究竟有什麼意義。+----+--------+--------+----+------+--------------------------------+ | id | name | gender | id | zip | streetno | +----+--------+--------+----+------+--------------------------------+ | 1 | 郭靖 | M | 1 | 5 | 忠孝東路四段 18 巷 5-1 號 9 樓 | | 2 | 黃蓉 | F | 1 | 5 | 忠孝東路四段 18 巷 5-1 號 9 樓 | | 3 | 周伯通 | M | 1 | 5 | 忠孝東路四段 18 巷 5-1 號 9 樓 | | 4 | 歐陽鋒 | M | 1 | 5 | 忠孝東路四段 18 巷 5-1 號 9 樓 | | 1 | 郭靖 | M | 2 | 339 | 府前路 218 號 | | 2 | 黃蓉 | F | 2 | 339 | 府前路 218 號 | | 3 | 周伯通 | M | 2 | 339 | 府前路 218 號 | | 4 | 歐陽鋒 | M | 2 | 339 | 府前路 218 號 | | 1 | 郭靖 | M | 3 | 75 | 月眉里 9 鄰 103 號 | | 2 | 黃蓉 | F | 3 | 75 | 月眉里 9 鄰 103 號 | | 3 | 周伯通 | M | 3 | 75 | 月眉里 9 鄰 103 號 | | 4 | 歐陽鋒 | M | 3 | 75 | 月眉里 9 鄰 103 號 | +----+--------+--------+----+------+--------------------------------+
MySQL 其實接受一個逗點代表 join。所以,上述指令等同於
select LIST.id, name, gender, ADDR.id, zip, streetno from LIST, ADDR;三張以上的表格也可以接合,語法就是 A join B join C。 按照數學的結合律,其效果也就類似 (A join B) join C。
習題