データベース初心者の基礎知識ブログ -3ページ目

午前の問題3

問題

次のSQL文は、和、差、直積、射影、選択の関係演算子のうち、どの関係演算の組わせで表現されるでしょうか。

ここで下線は主キーを表します。

SELECT 納品.顧客番号, 顧客名
FROM 納品, 顧客
WHERE 納品.顧客番号 = 顧客.顧客番号

20100831_09.jpg

ア) 差、選択、射影

イ) 差、直積、選択

ウ) 直積、選択、射影

エ) 和、直積、射影

解答

ウ) 

納品テーブル、顧客テーブルを並べて「直積」

2つのテーブルを繋げて「選択」

列を指定して「射影」

ですね。

 

なにもないものとは IS NULL を使って

以前、なにもないことを示す ナル値 の話をしましたが、これを WHERE 句で比較する場合は、

IS NULL

ってのを使います。

20100828_07.jpg

なおと君には電話がありません、、、というか、電話番号を教えてもらっていません。

なので、この電話を教えてもらっていない人を調べるには、

SELECT * FROM 手帳

WHERE 電話 IS NULL

となります。

20100828_09.jpg

逆に、電話がある場合を検索するには NOT を使って、

SELECT * FROM 手帳

WHERE 電話 NOT IS NULL

となりますよ。

 

あいまい検索は LIKE で

名前を検索するときに、

よく覚えていないけど、ええと「し」で終わるような人だった覚えが、

というのがありますね、

そういう時は、LIKE 演算子を使います。

20100828_02.jpg

この手帳から、「し」で終わる人を見つけるには、

SELECT * FROM 手帳

WHERE 名前 LIKE '%し'

となります。

20100828_06.jpg

「か」で始まる場合は、

SELECT * FROM 手帳

WHERE 名前 LIKE 'か%'

真ん中に「お」が入っている場合は、

SELECT * FROM 手帳

WHERE 名前 LIKE '%お%'

な感じで書きますね。

当然、「かつや」にマッチこともできて、

SELECT * FROM 手帳

WHERE 名前 LIKE 'かつや'

で書けます。これは

SELECT * FROM 手帳

WHERE 名前 = 'かつや'

と同じことですね。

難しい言葉で云えば、

「○○%」・・・前方一致

「%○○」・・・後方一致

「%○○%」・・・部分一致

「○○」・・・完全一致

となります。まあ、このあたりは頭の片隅にでも。