OracleBronze11gSQL基礎〜意外と知らないWHERE、ORDERBY〜
じゃまずWHEREを覚えてていきます。
例のごとく基本はネットとか入門書で・・・。
WHEREに対する条件は下記参照
・文字と日付は単一引用符
・日付はデフォルト書式(よくDD-MON-RRになってる事が多い)
・大文字小文字が区別される。
・NOT AND ORの順に優先される。
じゃSQLかきます。
--これと SELECT * FROM EMP WHERE ENAME = 'A'; --これは別物の扱いになる SELECT * FROM EMP WHERE ename = 'A'; --NOが10か20のやつで、JOBが'社長'を検索するとき --これじゃ欲しい情報と違うのがとれる(ってかOR二回使った時点でたぶん現場でしばかれる) SELECT * FROM EMP WHERE NO = 10 OR NO = 20 AND JOB = '社長'; --NOが10か20のやつで、JOBが'社長'がとれる SELECT * FROM EMP WHERE (NO = 10 OR NO = 20) AND JOB = '社長'; --ってかもっと正確にいくならこう SELECT * FROM EMP WHERE (NO IN(10, 20)) AND JOB = '社長';
ついでなんで闇情報。
BETWEENの否定って列名とNOTいれかわっても問題ないの(だからみんな知ってるってば・・・)
・WHERE 列名 NOT BETWEEN
・WHERE NOT 列名 BETWEEN
ちなみにBETWEENって文字にも使えるよ。
SELECT * FROM EMP WHERE ENAME BETWWEN 'C' AND 'D';
じゃ次はORDER BYいきます。
例のごとく基本操作は入門書で・・・。
参ります。
--デフォルトは昇順(小さい方から大きいほう)になる SELECT * FROM EMP ORDER BY ENAME; --逆順にしたかったらDESCをつける SELECT * FROM EMP ORDER BY ENAME DESC; --複数はカンマで区切る SELECT * FROM EMP ORDER BY ENAME,JOB; --名前は降順、職種は昇順とかばらばらにもできる(ASCは明示的に昇順をあらわす。現場ではdamePGはいれてました) SELECT * FROM EMP ORDER BY ENAME DESC,JOB ASC; --数値で指定もできて便利 --(ENAME ASC , JOB ASCと同じ意味) SELECT ENAME,JOB FROM EMP ORDER BY 1,2; --NULLは明示的に指定もできる(デフォルトでは一番大きい値と思われる) --NULLを最初に表示 SELECT ENAME,JOB FROM EMP ORDER BY 1 NULLS FIRST,2NULLS FIRST; --NULLを最後に表示 SELECT ENAME,JOB FROM EMP ORDER BY 1 NULLS LAST,2NULLS LAST;
前はこれを知らんかったから、こういう問題おとしてるわ。
上の見てもらったらわかるんやけど、
SELECTで列指定しなくてもORDER BYで使用可能なんだ。
絶対これで2問は落した。
ってか初歩なんやから、はじめから覚えていけって!!