午前の問題3
問題
次のSQL文は、和、差、直積、射影、選択の関係演算子のうち、どの関係演算の組わせで表現されるでしょうか。
ここで下線は主キーを表します。
SELECT 納品.顧客番号, 顧客名
FROM 納品, 顧客
WHERE 納品.顧客番号 = 顧客.顧客番号
ア) 差、選択、射影
イ) 差、直積、選択
ウ) 直積、選択、射影
エ) 和、直積、射影
解
答
は
こ
ち
ら
解答
ウ)
納品テーブル、顧客テーブルを並べて「直積」
2つのテーブルを繋げて「選択」
列を指定して「射影」
ですね。
なにもないものとは IS NULL を使って
以前、なにもないことを示す ナル値 の話をしましたが、これを WHERE 句で比較する場合は、
IS NULL
ってのを使います。
なおと君には電話がありません、、、というか、電話番号を教えてもらっていません。
なので、この電話を教えてもらっていない人を調べるには、
SELECT * FROM 手帳
WHERE 電話 IS NULL
となります。
逆に、電話がある場合を検索するには NOT を使って、
SELECT * FROM 手帳
WHERE 電話 NOT IS NULL
となりますよ。
あいまい検索は LIKE で
名前を検索するときに、
よく覚えていないけど、ええと「し」で終わるような人だった覚えが、
というのがありますね、
そういう時は、LIKE 演算子を使います。
この手帳から、「し」で終わる人を見つけるには、
SELECT * FROM 手帳
WHERE 名前 LIKE '%し'
となります。
「か」で始まる場合は、
SELECT * FROM 手帳
WHERE 名前 LIKE 'か%'
真ん中に「お」が入っている場合は、
SELECT * FROM 手帳
WHERE 名前 LIKE '%お%'
な感じで書きますね。
当然、「かつや」にマッチこともできて、
SELECT * FROM 手帳
WHERE 名前 LIKE 'かつや'
で書けます。これは
SELECT * FROM 手帳
WHERE 名前 = 'かつや'
と同じことですね。
難しい言葉で云えば、
「○○%」・・・前方一致
「%○○」・・・後方一致
「%○○%」・・・部分一致
「○○」・・・完全一致
となります。まあ、このあたりは頭の片隅にでも。