top recent

SQL

関連ページ

MySQL

目次

  1. SMART SQL講座...
  2. 「プログラマのためのSQL 第2版」...
  3. SQLは手続き指向ではない...
  4. 取りうる論理値は3種類...
  5. SQLってそんなに簡単だったり直感的だったりするだろうか?...

SMART SQL講座

http://www.rfs.co.jp/sitebuilder/sql/index.html

signature: URL

[[id:142]] 2002-02-03 22:10:02


「プログラマのためのSQL 第2版」

まだ半分しか読み終わっていないが、この本は本当に面白い。

言語仕様に関する深い議論と薀蓄話が満載。

「エキスパートCプログラミング」を読んで以来のヒット。

signature: Cake

[[id:374]] 2002-02-17 16:07:33


SQLは手続き指向ではない

のだそうな。データの集まりを集合として扱うんだって。

たとえば、テーブル中全ての行について、カラムaとカラムbの値を入れ替えるには‥‥‥。

UPDATE MyTable
SET a = b, b = a;

aへの代入とbへの代入が同時に行われ、しかもすべての行に対する操作がアトミックに実行される。

[[id:375]] 2002-02-17 16:20:36


取りうる論理値は3種類

true, false のほかに unknown があるそうだ。
スカラー値とNullを比較したりすると発生するらしい。

[[id:376]] 2002-02-17 16:26:59


SQLってそんなに簡単だったり直感的だったりするだろうか?

http://www.computerworld.jp/resource/keyword/back/20000623.html
>手続き型言語では(中略)プログラマが実行順序を指定する必要があります。
>それに対しSQLでは、自分がなにを望んでいるかだけをシステムに教えれば大丈夫です。

というが、それによってどれだけ人間の理解はしやすくなるといえるんだろうか?

そりゃ手続きが主眼だというならば、それを隠蔽できれば楽になるかも知れない。

でもプログラムって手続きだけじゃないだろう?
データ構造もある。
RDB自体が表現するデータ構造(それのViewであるところSQL)が判りやすいかどうか?という問題を、まず考えないとなるまい。
(これはRDBというものに対する皮肉だとも思える。効率的かつ論理的に正しくデータを保存できるといっても、その論理がユーザーが今注目したい論理と無関係な論理なら、なんにもならないのだ。)

それにそもそも、手続きが無いといっても手順は(SQLの仕様の中?に)存在するわけで、
その手順を「十分知って」いてはじめて、SQLの手続き隠蔽を有難く感じられる、のではないか?

DBマガジンにはSQLの最適化の手法が毎回毎回載っているが、
あんなに色々なことを考えないとならないなら、本当に楽になったとは、とても思えないのだが…

----
結局、俺が望んだことがSQLで表現できない、ということが頻発するんだよね。
だから [[PL/SQL]] やCやDelphiやRubyやPerlの中から呼ぶことでしか、事実上使えない、という感じ。

有名なところでは、SQL(というか多分Relational理論専用言語ならどれも)は、再帰手繰りすら記述できない罠。

同じ(?)非手続き型言語といっても、Lispの世界とかとは、えらく違うと想う。

[[id:710]] 2002-06-15 16:13:23


top recent

HashedWiki version 3 beta
SHIMADA Keiki