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問は落した。
ってか初歩なんやから、はじめから覚えていけって!!