様々な連結(jié)テーブルが作成できるが、良く使うものはビュー(create view) に しておくと効率が良い。各種各樣的連接表中,有的對(duì)視圖也起作用。
結(jié)合は、テーブルとテーブル、ビューとビュー、テーブ ルとビューなど複雑にできる。(テーブル連結(jié))連接可以在數(shù)據(jù)表和數(shù)據(jù)表之間,視圖和視圖之間,數(shù)據(jù)表和視圖之間復(fù)雜的進(jìn)行。
■単純結(jié)合 簡(jiǎn)單連接 ?現(xiàn)実的に単純結(jié)合を使う機(jī)會(huì)はないだろう。實(shí)際上簡(jiǎn)單結(jié)合沒(méi)有什么使用的機(jī)會(huì)。It is known to all that ours is an age of information characterized by innumberable inventions beyond our wildest imagination even decades age. Eletronic dictionaries have found their way into numerous students's backpacks; digital cameras have gained increasing popularity among common households. Now surprisingly, some even claim that e-books will take the place of traditonal ones.
次の例では、受注m の各レコードに 品番m の全レコードが結(jié)合される。
在下面的例子中,在受注m的各種記錄里,品番m的所有記錄都被結(jié)合了。
受注m のレコード數(shù) x 品番m のレコード數(shù)の結(jié)果が問(wèn)い合わされる。
受注m的記錄數(shù)*品番m的記錄數(shù)的結(jié)果被查詢(xún)出來(lái)。 select * from sak.受注m, sak.品番m; ■等価結(jié)合 等價(jià)連接 ?等価結(jié)合は、特定のキーで表を結(jié)合します。等價(jià)連接是用特定的鍵來(lái)進(jìn)行表的結(jié)合的。
條件のどちらかのデータが存在しない場(chǎng)合、結(jié)果セットには含まれません。
如果有條件在數(shù)據(jù)表里不存在,在結(jié)果集里就沒(méi)有這一條記錄。
現(xiàn)実的には外部結(jié)合が一番使いやすいと思います。在實(shí)際上,外部結(jié)合是最容易使用的。
select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 ; ?列の別名定義は、as を指定してもよい。列的別名指定,也可以用as來(lái)實(shí)現(xiàn)。
結(jié)合テーブルに同じ項(xiàng)目名が存在する場(chǎng)合は、どちらのテーブル項(xiàng)目か指定するため、テーブル名で修飾する。(受注m.品番)
在連接表中如果有相同的項(xiàng)目名存在,為了讓每一個(gè)項(xiàng)目都被指定,就用項(xiàng)目名來(lái)修飾。
select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番; ?inner join を使用して、等価結(jié)合することもできます。(インナージョイン)
使用inner join,也可以進(jìn)行等價(jià)連接。
select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番; ?3 つ以上の結(jié)合を inner join で指定するには、次のようにする。
如果有三個(gè)以上要指定inner join 來(lái)進(jìn)行連接的時(shí)候,可以像下面這樣做。
select * from (sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番) inner join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ■非等価結(jié)合 非等價(jià)連接 ?非常に時(shí)間のかかる結(jié)合ですが、必要な場(chǎng)面があるかもしれない。雖然很花時(shí)間,但有時(shí)候也要進(jìn)行下面的檢索。
なにがしかの範(fàn)囲條件で結(jié)合する場(chǎng)合に使います。和檢索條件的一部分進(jìn)行連接。
select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.機(jī)種 like substr(品番m.機(jī)種, 1, 2);
■外部結(jié)合 外結(jié)合、行結(jié)合、行連結(jié)、テーブル結(jié)合、外部接合
外部連接 外連接,行連接,表連接,外部連接
?外部結(jié)合は、一番よく使用します。外部連接是最經(jīng)常使用的。
一方の條件に対するデータが存在しなかった場(chǎng)合でも片方のデータを結(jié)果セ ットに含める指定ができます。
對(duì)于一方的條件即使不存在,也可以使結(jié)果集包含一邊的數(shù)據(jù)。
次の例では、品番m にない品番の受注m レコードも結(jié)果に含まれます。
在下面的例子中,在品番m中沒(méi)有的品番受注m記錄的結(jié)果也包含了進(jìn)來(lái)。
この場(chǎng)合、入庫(kù)數(shù)などの 品番m 項(xiàng)目には NULL がセットされて問(wèn)い合わさ れます。Oracle では、left join、right join を (+) で指定できます。
這時(shí)候,入庫(kù)數(shù)等的品番m項(xiàng)目里被設(shè)定了NULL值。在oracle里,left join,right join 可以用(+)來(lái)指定。
(左結(jié)合、右結(jié)合、複數(shù)テーブル問(wèn)い合わせ、複數(shù)テーブル?yún)⒄? (複數(shù)問(wèn)い合わせ、複合テーブル?yún)⒄铡ⅴ欹榨去弗绁ぅ蟆ⅴ楗ぅ去弗绁ぅ?
(左連接,右連接,多個(gè)表查詢(xún),多個(gè)表參照,左連接,右連接)
select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番; ?逆に受注m にない品番の品番m レコードを結(jié)果に含ませることもできます。 現(xiàn)実的には、こういう結(jié)合に意味はありませんが、逆の和もできると言うこ とです。
?相反不在受注m里的品番m記錄也可以在結(jié)果里包含。在實(shí)際中,雖然沒(méi)有這么用的,但是(+)也可以放在=之前。
select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 (+) = 品番m.品番; select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m right join sak.品番m on 受注m.品番 = 品番m.品番; ?三つ以上の表を結(jié)合することもできます。(3 テーブル結(jié)合)
?也可以進(jìn)行三個(gè)表以上的表連接。(三表連接)
次の例では、品番に対する品番m.入庫(kù)數(shù)、得意先CD に対する得意先m.得意 先名を結(jié)合しています。(left join を使用しても良い。)
在下面的例子中,對(duì)于品番的品番m.入庫(kù)數(shù),對(duì)于得意先CD的得意先m.得意先名來(lái)進(jìn)行連接。(也可以使用左連接)
select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from sak.受注m, sak.品番m, sak.得意先m where 受注m.品番 = 品番m.品番 (+) and 受注m.得意先CD = 得意先m.得意先CD (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from (sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番) left join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ?複數(shù)の表を結(jié)合すると修飾が難解になりがちなので、テーブル別名を使うと 良いです。
如果多個(gè)表進(jìn)行連接,修飾會(huì)變得很復(fù)雜,也可以使用表別名。
select 受注番號(hào), a.品番 品番, b.入庫(kù)數(shù) 入庫(kù)數(shù), a.得意先CD 得意先CD, c.得意先名 得意先 from sak.受注m a, sak.品番m b, sak.得意先m c where a.品番 = b.品番 (+) and a.得意先CD = c.得意先CD (+); ** 外部結(jié)合を明示するために left join を left outer join、right join を right outer join と書(shū)くこともできる。
** 為了明確外部連接,也可以把left join 寫(xiě)成 left outer join, right join寫(xiě)成right outer join。
(アウタージョイン、レフトアウタージョイン、ライトアウタージョイン)
(outer join, left outer join, right outer join)
■再帰結(jié)合(內(nèi)部結(jié)合) 回歸連接(內(nèi)部結(jié)合) ?再帰結(jié)合は、同じテーブルをテーブル別名を使用して結(jié)合します。
?回歸連接是相同的表來(lái)用別名來(lái)進(jìn)行連接的。
次の例では、得意先m に親得意先CD があるとして、その得意先名を自分自 身と結(jié)合しています。(自己結(jié)合)
在下面的例子中,以得意先作為父得意先,然后用這個(gè)名字來(lái)進(jìn)行自身連接。
select a.得意先CD 得意先CD, a.得意先名 得意先, a.親得意先CD 親得意先CD, b.得意先名 得意先 from sak.得意先m a, sak.得意先m b where a.得意先CD = b.親得意先CD (+);
站在一個(gè)光輝的焦點(diǎn),看到周?chē)蜁?huì)是一片漆黑。如果在光線(xiàn)的邊緣放一塊玻璃,它將會(huì)成為一面貨真價(jià)實(shí)的鏡子。比如說(shuō)古代的皇帝,就會(huì)感嘆自己是周?chē)諢o(wú)一人的孤家寡人。
在焦點(diǎn)以外的人,看焦點(diǎn)中的人會(huì)分外清晰,他會(huì)不明白自己為什么不被焦點(diǎn)中的人看到。比如說(shuō)古代的才子,就會(huì)感嘆自己的郁郁不得志。
站在焦點(diǎn)中和焦點(diǎn)外感嘆的人,両方も可哀そうに。靜兒,他人の立場(chǎng)から見(jiàn)てね。