SQLは大文字と小文字を区別しない。
だから、次のSQLはどれも同じ結果になる。
SELECT * FROM TBL WHERE COL = 'ABC'; -- 全部大文字
SELECT * FROM tbl WHERE col = 'ABC'; -- キーワードが大文字
select * from TBL where COL = 'ABC'; -- キーワードが小文字
select * from tbl where col = 'ABC'; -- 全部小文字
SQL Server の場合は、文字列のリテラルもデフォルトでは大文字小文字を区別しない。 設定で区別することもできるが、区別しないのがデフォルト。 なのでデフォルトのままなら、上に加えて次のSQLも同じ結果になる。
select * from tbl where col = 'Abc'; -- 文字列リテラルの一部が小文字
select * from tbl where col = 'abc'; -- 文字列リテラルの全てが小文字
他はどうか知らないが Oracle の場合、SQLもPL/SQLも文字列のリテラル以外は全て内部では大文字に変換している。 このことを根拠に、まだハードが貧弱だった遠い昔を引きずって、性能的に有利だから全部大文字にしろなんて言う人もいるが、今の世の中、余程のことが無い限り大文字変換はボトルネックにはなり得ないよな。
ということで、読み易さを優先して大文字小文字を使い分けるのだが。
まあ読み易さなんて主観的なもの。 何に馴染んでいるか。 どれが好きか。 そんな程度の話でしかないので、コーディング規約があれば勿論それに従うし、もう出来上がっているものの改修であれば雰囲気に従う。
で、そんな縛りが無くて好きにしていい場合、俺はテーブル名や列名が大文字でキーワードを小文字にしている。
上の例なら3番目。
select * from TBL where COL = 'ABC';
でもこれ少数派らしい。 世の中はどうやら逆で、キーワードが大文字でテーブル名や列名は小文字ってのが多数派らしい。
上の例なら2番目。
SELECT * FROM tbl WHERE col = 'ABC';
先日、新人に大文字と小文字は使い分けた方がいいよって話をしていたのだが、当然ながらどう使い分けるべきかを問い返されて、それに答えるのに結構な葛藤があった。
「たいていの場合はコーディング規約があるだろうから、まずはそれを確認」
「今回無いですよね」
「無い場合は、世の中の主流派に合わせればいいんじゃない?」
「主流派ってどんな感じですか?」
「俺の逆」
「…え?」
なんてことに。
近所の桜がちらほらと咲き始めている。 これは浅川のふれあい橋近くの桜並木の西の端。 この桜並木は、毎年、この辺りから花が開くのだ。
ベランダの鉢植えたちも、なんかちょっと勢いが出てきた気がする。 まあ、ゼラニウムはいつだって花の盛りだが。 こいつら、種を蒔いてから最初に咲くまではそれなりに時間がかかったが、咲き始めたらもう隙間無く次々に咲いている。
フリージア。 既に満開の白に続いて黄色が咲き始めた。
このフリージアだが、色が違うとしぶとさも違う。 白はちょっと萎れてくると風に吹かれてポロリと落ちたりするが、黄色は萎び切ったのを手で引っ張ってもなかなか取れない。