SSブログ

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus) が発売されます [SQLポケリ]

SQLポケットリファレンスの記事を書いた効果があったか、なかったかよくわからないが、どうにかGoogle検索で上位にランクされるようになった模様。
でも、油断すると、すぐに落ちていってしまうので、地道に更新したいと思う。

ということで、本日もSQLポケットリファレンス関連の話題である。

第三版から、もう5年も経過している、という話は前回したと思う。

5年もあれば、世の中変わっている。システム業界はけっこうすぐに廃れたりする。
なので、けっこう変わっているか、というと…



うーん。あんまり変わってないかな。

もう、SQLって、C言語みたいに、「枯れた技術」になっているような気がする。

枯れた技術は、良い悪いは別にして、あまり変えてはいけない、というしがらみというか、しばりというか、なんというか、いろいろあって、大きく変更できないのである。

考えて見て下さい。開発用の言語が、頻繁に更新されていたら、どうなります。
めんどくさいでしょ?

例えて言うなら、C言語で、intじゃなくてintegerを使うようにしましょう。
ってなったら、困りますよね(多分そんなことは滅多にないと思うが…)。想像してみて下さい。めんどくさいでしょ?

ソースを全部変更しなければならない。int -> integerなら、テキストエディタの「リプレイス機能」で一発変換できるかも知れないが…
まぁ、それだけではどうも不安だし、ちゃんと試験しないとね。
変数名に、intXXXっていうのがあって、単にテキストの文字列置換だけでやったとすると、intXXXがintegerXXXに一律に置換されて、コンパイルすら通らない、っていう状況になってしまうかも。

ということで、一度「これって決めたら」、なかなか変更はされないものなのです。
基本的なものについては余計に。

使っているユーザが多ければ多いほど、インパクトは大きいので、余計に変更できなくなります。

SQLについては、もうそのくらいに良い意味で「レガシー」になったのであろう。

にしても、いろいろ新しい技術は登場する。
最近では、「no-sql」かな。

no-sql。SQLを真っ向から批判しているような、用語ではあるが、困ったことになんか、流行っているっぽい。

私が、SQLと出会ったのは、そう、MSのSQL Serverが最初かな。バージョンはというと4とかだったかも。当時、某総合研究所に派遣でプログラマとして働く日々であった。お世話になった方々は、どうしているであろうか。
SQL Serverは今や201x?
当時は、SQLのSの字も知らなかった。教科書的なものはあまり「多くなく」洋書を翻訳したものが、いくつかあったかも。しかし、一番の教科書は「マニュアル」であったと思う。
Informixの本があったかなぁ。Infomixって今ないよねぇ...

当時の私としては、C言語やVBはお馴染みの言語になっていたので、最初にSQLを見た時はビビった。何がなんやらわからん。大体、大文字で命令を書くなんて、なんかFORTRANくさくて実は「いや」だった。

C言語は、予約語がみな小文字。ifとかforとか。それに大文字使うとシフトキー使わないといけないので、操作がめんどうだし。C言語で大文字で書くとマクロの#defineなので。小文字が基本。こんな感じでしょ?

#define MAX_LINE 1024

char line[MAX_LINE];

for( i = 0; i < MAX_LINE; i++ ){
    line[i] = 0;
}


MAX_LINEは何かの配列の要素数になっていたりする。

それはさておき、SQLである。別に小文字でselectって書いてもいいのだけど、なんか大文字の方が主流な感じ。C言語のソースに、埋め込むなら、大文字の方がいいかも、でもなぁと違和感を感じつつも、コードを書いていたという遠い記憶がある。こんな感じか。

strcpy(sql_cmd, “SELECT * FROM name=‘%s’;”, name);
rc = SQLExecute(sql_cmd);
if ( rc == …


ううん。セミコロンで終わっているのは似ているといえば、そうだけど… SQLではセミコロンいらないんだっけか。
プログラミング言語のソースファイルの中に、他のプログラミング言語の命令があると、どう考えても「見ずらい」。まぁ、しょうがないことなんだけどね。

話はSQLに戻る、SQLをやり始めたら習得は速かったと思う。なにせ、基本的なコマンドは、4つしかない。SELECTとINSERT、UPDATE、DELETE。最近では、MERGEとか、なんやらと増えたみたいではあるが、基本はこの4つ。
CREATE TABLEは覚えなかったなぁ...あんまり。最初は、ALTER TABLEってコマンドはなかったと思うのだが、後になって登場してくる。
CREATE TABLE命令を覚えなかったのは、どうしてかというと、SQL Serverには、Access的なGUIツールが付いていたから、だったっけ。単に、クライアントのプログラムを作る分には、テーブル作ったり、削除したりする必要がなかったからかも。テーブルの設計とかは、初心者だったから、やってなかったからね。

SELECT命令でWHERE句が使えます。

というのは、簡単に理解できたと思う。条件式もC言語やっていれば、なんなくクリアでしょう。ANDとかORとかね。思わず&&って書いちゃいそうになっていたが。
値が等価である、っていう比較演算子は、C言語なら==とイコールがふたつだけど、SQLでは=(イコール)のみ。
比較演算の==か=か、という問題はC言語の方が変。なので、SQLの方が自然。C言語のときに一度はハマる問題なので、SQLでは関係ないか。

「句」っていうのも、SQLならではの用語かも。命令文でもなく、演算子でも変数でもない、句っていう「くくり」がある。まぁ、これは慣れればどうってことないかな。命令文がいくつかの句に細分されている、っていうだけ。

しかし、NULLの扱いが?だった。

NULLは、値ではありません(とかマニュアルに書いてあったかな)。

C言語でいえば、NULLは0なんだけど、SQLでNULLは、0でもなければ、9999でもないし、""(空の文字列)でもない。おまけに、NULLとNULLを比較しても結果がわかならいっていうこと。

「わからない」ってなんだよ。
まぁ、SQL的には、UNKNOWNっていう値が返ってくるということになっている。
どういうことかというと、

WHERE NULL = NULL


って書いたとする。NULLはNULLと等しいですか、とデータベースに聞く。するとデータベースは「UNKNOWN(わからない)」といった答えを出す。え〜、コンピュータなのに「わからない」って何。何。謎。何。謎。

もっと妙なのは、テーブルのある行のある列がNULLであるかどうかを調べるのにも「=NULLではだめ」ということ。

SELECT * FROM テーブル WHERE 列 = NULL


上記のようにして、列がNULL値であるものをSELECTで検索することはできない。
じゃあどうすればよいかというと、「IS NULL」を使う。

SELECT * FROM テーブル WHERE 列 IS NULL


オーマイガー。
ここが、SQLの一番の「変なところ」だったりするかも知れない。
C言語とか普通のプログラミング言語に比較演算っていうのは付きものである。しかし、その答えはyesかnoか、trueかfalseかのふたつ。yesでもnoでもなく、UNKNOWNっていう「第三の答え」があるのは珍しい。

実は、そんなSQLの変なところや、初心者がはまりやすい部分をまとめた「SQLの入門書」を書籍にしてみた。
もうそろそろ、発売になる、予定である。


[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)



みなさんどうぞよろしく。


サイト内を検索

nice!(0)  コメント(0) 
共通テーマ:携帯コンテンツ

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。



Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

イラストで理解 SQL はじめて入門

イラストで理解 SQL はじめて入門

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/05/16
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。