SQL対策ページ

用語をつかんでおく

使い方→ここで意味を調べるというより、ここで意味が自分の理解と違ったり知らないものがあったら調べなおすという使い方を推奨します。
(で、wikiが間違っていたらご指摘ください)
あくまでざっくりとした説明です。ざっくりすぎて微妙に間違っているので修正を繰り返しています。見つけたら指摘or修正をお願いします。

覚える文字関数
関数名 読み方例と引数 意味 問題に出る個所
lower ろーわー(文字列) 小文字化
upper あっぱー 大文字化
INITCAP いにっときやっぷ イニシャルをキャプスロック押したみたいにする→先頭だけ大文字あと小文字
CONCAT こんきゃっと コネクトキャットだから文字をつなげる
(本当はconcatinateから来てるがこう覚える) 
SUBSTR さぶすとりんぐ(何文字目,何文字分) ストリング(文字列)のサブ(一部)をとる SBSTR(2,3)で、a文字目からb文字分とる
length れんぐす(文字列) 長さ 戻るのは数値!!
INSTR インストリング 指定した文字が何文字目か INSTR(文字列,'探す文字') 何文字目かという数値が返る!

SQL
用語 意味 補足
リテラル = 変数の反対の意味 逆に表名、列名は変数であるという意識をもつこと。(参照すると値がでる。リテラルはそのまま)

頻出問題対策

それぞれの句で列別名、集約関数があるとエラーになるかの問題に対応する表
×=エラーになる ○=エラーにならない
列別名 集約関数
WHERE × ×
HAVING ×
GROUP BY × ×
ODER BY
覚え方
ORDERはなんでもOKあとは全部ダメ。(havingはむしろ集約関数に使うので感覚的にわかる。それ以外で考える)

考え方
列別名は、ODER BYはどの列か列名を参照してるので列別名OK 逆にその他の句は列の中の値を参照してる
集約関数はまとめる関数だけど、WHEREは一行づつ比べてく句だからダメ、GOURPは集約でまとめたのをさらにまとめるとかできないからダメ。

科目 問題 答え
副問い合わせ select文内の副問い合わせのselect文を囲む()は必要? 必ず必要 ()がないとエラー
副問い合わせ CreateのAsのあとの副問い合わせに()は必要? 絶対に不要 ()があるとエラー
列別名 列別名に小文字をいれたいときはどうする? ""で囲む デフォルトはすべて大文字
NULLの演算 NULL+5 = NULL
NULLの連結 '文字列'||NULL = '文字列'
DISTINCTとUNIQUEの違いは 完全に全く同じ
結合文 表修飾しないとエラーになる列は共通列だけである? そう。共通列だけ(同じ名前の列)
例:emp.deptNo = dept.empNo
結合文 結合文で表別名を使わなかった。OK? べつに使わなくてもOK
自己結合のときはいる(上司と部下の関係とか)
結合文 表別名を定義しているとき、表修飾は表別名でなく表名で修飾した。どうなる? エラー。もし使うなら表別名に統一 例↓ 
select *
FROM emp e JOIN dept d
ON e.deptNo = d.deptNo
★emp.deptNo = dept.deptNoはエラー
結合文 USING句で指定した共通列を表修飾した。OK? これもだめ。エラー
ちなみにUSINGで指定しなかった共通列は表修飾が必要
結合文 ではNATURAL JOINで共通列に表修飾した。OK? だめ。エラー
集合演算子 UNION,UNION ALL,INTERSECT,MINUSのうち結果がソートされるものを全て言うと? UNION ALL以外全部

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年06月09日 19:39
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。