Saturday 19 November 2011

SQL

あんまり好きじゃないかも。あんまり使わないし。最初に習ったのは ingress だったので、equal だし。いや、関係ないですね。構文的には Prolog に近い Datalog が好きです。

授業のために30題ぐらい問題を考えました。

 http://www.ie.u-ryukyu.ac.jp/~kono/lecture/database/ex/ex013.html

なんだが、5 番で「えぇ〜? これは、もしかして sub query? 」とか。何、いきなり難しいもの出してるの? 学生には「他のを先にやってね」とごまかしておいて… うちの学生に解かせる。自分で解かないの?

でも、練習用のデータベースいじりながら解いてみると、普通に join して、group by すれば良いわけね。ふんふん。group by の後には、カンマで複数の column を書けると。はいはい。で、

 count(*) と group by の組合せ

という定番で解けるらしいです。sub query は必要ないらしい。もちろん、order by と limit も使うんだけど。結構、すごい。SQL 馬鹿にできないです〜

distinct を例題に入れるのを忘れたな。

日付関数は嫌い。そんなもの使うなら、Unix time 入れておけと思う。32 bit にすると 2038年問題で死ねますが、それを見るのは僕は難しいだろうな。見るだけなら、VM で時刻を進めれば良いだけだけど。

来週が終ったら来月からは並行制御やるつもりです。これは定番 :-p でも、SQL でやるのは初めてかも。あ、でも、mySQL では dead lock させるのは難しいのか?

そういえば、Y2K を試したくて、Solaris の時刻を一度2000年に進めて、また、戻したら、

未来にできたデーモンの子供が不死となり、ずーっと消えずに残り、OSを壊す

というのにぶち当たったのを思い出した。怖いですね〜

No comments: