« 【情報処理@DB】(22/39) | トップページ | 【情報処理@DB】(24/39) »

【情報処理@DB】(23/39)

(この日記は2007/3/19のmixi日記から転載したものです)

【情報処理】残27日

SQL文法の勉強ということでうろ覚えの箇所を覚え直し。以下覚え書きです。

1.表明(ASSERTION)
→複数表の整合条件設定。通常、NOT EXISTSか集合関数を使う。

(書式)
CREATE ASSERTION 表明名 CHECK (探索条件)

2.NULL関係の関数
COALESCE (引数1 [,引数2, ...引数n])
→NULLでない最初の引数(nが最小)の値を返す。引数全てがNULLならNULLを返す。

NULLIF (引数1, 引数2)
→引数1=引数2ならNULLを返す。引数1<>引数2なら引数1を返す。

3.JOIN関連
3-1.JOINの種類

INNER JOIN
→2つの表に共通する行だけ表示。INNERは省略可能。JOINだけ書いたらINNER JOIN扱いというべきか。

LEFT OUTER JOIN
→左(先に名前が出る)表を全表示。OUTERは省略可能。

RIGHT OUTER JOIN
→右(後に名前が出る)表を全表示。OUTERは省略可能。

FULL OUTER JOIN
→左右の表を全行表示。OUTERは省略可能。

CROSS JOIN
→2つの表の直積を表示。

UNION JOIN
→2つの表を列だけ結合。右表に左表の列を全てNULLでつけた表と、左表に右表の列を全てNULLでつけた表をUNIONしたものに等しい。

3-2.結合条件の指定
結合条件は、INNER JOINおよびOUTER JOINのみ指定可能。NATURAL, USING, ON のどれかを使う。NATURALは左表の後、USINGとONは右表の後に記述する。

NATURAL
→列名を指定せず、自動的に同名の列を条件に結合する。 列の重複は削除される。 NATURAL JOINという結合があるように誤解されがちだが、 実際はNATURAL INNER JOINの省略形。

(書式)
表A NATURAL LEFT OUTER JOIN 表B(INNERは省略可能)

USING
→結合に使う列名を指定する。当然だが、表Aと表Bで列名が違うと結合できない。NATURAL同様、列の重複は削除される。

(書式)
表A INNER JOIN 表B USING (列1[, 列2...])

ON
→表Aと表Bの列名が違っても結合でき、自由度が高い。その代わり列の重複は削除されない。SQLServerなどでは、これしかサポートされていない。

(書式)
表A INNER JOIN 表B ON 表A.列1=表B.列1 [AND 表A.列2=表B.列2 ...]

|

« 【情報処理@DB】(22/39) | トップページ | 【情報処理@DB】(24/39) »

データベース(試験)」カテゴリの記事

学問・資格」カテゴリの記事

情報処理技術者試験」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/516130/47688080

この記事へのトラックバック一覧です: 【情報処理@DB】(23/39):

« 【情報処理@DB】(22/39) | トップページ | 【情報処理@DB】(24/39) »