Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

[書評&勝手に補足] SQLポケットリファレンス(改訂第4版) (1)

$
0
0
評価:
朝井 淳
技術評論社
¥ 2,138
(2017-02-18)
コメント:細部は甘いが、手元に置いて便利。ですが「脇の甘さ」が広がった分☆ひとつ減

7年ぶりの改訂ということで期待して購入しましたが、以下のレビューのように少しがっかりしました。

★★★☆☆ 細部は甘いが、手元に置いて便利。ですが「脇の甘さ」が広がった分★ひとつ減(Amazon)

Amazonのレビューではリンクとか張れないので(多分)ここでいくつか補足を。。。。

1.MySQL 5.6でサポートされたでマイクロ秒表記がない(TIME, DATETIME, TIMESTAMP)

MySQL 5.6.4 以降では、マイクロ秒 (6 桁) までの精度を持つ TIME、DATETIME、および TIMESTAMP 値の小数秒に対応できるようになりました。

2.MySQl 5.6で非推奨、5.7で取り除かれたyear(2)の記述が三版のまま残っている

11.3.4 YEAR(2) の制限と YEAR(4) への移行

3.PostgreSQL 9.2/MySQL 5.7でサポートされたjson型の記述なし。関連する関数も当然記載なし。。。。
 利用頻度とこれからの新規開発を考えるとXML関連の記述をばっさりなくして、JSON型の記述にしてもいいのではないかと思います。

PostgreSQL JSON型についての使い勝手とパフォーマンス、時々ハマりどころの調査(Qiita)
MySQL 5.7のJSON機能を試してみる(MySQL Server Blogより)

4.ビューの説明(小ネタ)
 「ビューはそれだけで完結しているオブジェクトなので、パラメータ値によって制御するといったことはできません。
このような場合には、ストア゛ードプロシージャを作成することをお勧めします。」とのことですが、
Accessだと、パラメータクエリをすすめる必要があるのでは?

5.「1.7 ストアードプロシジャ」
 Access 2010から利用可能になった、の記述があってもいいんじゃないかと。。。

6.「1.8 トリガー」

× Accessを除くデータベースで、トリガーを利用できます。
○ 古いAccess(2010より前のバージョン)を除くデータベースで、トリガーを利用できます。

7.COLUMN ROWNUMによる行制限

「12c以前のOracleでは、SELECTにTOPやLIMITを指定することはできませんが、」

12c以前というよりは、12cより前は行制限(Oracle 12cでOFFSET句とFETCH句がサポート)を簡単に実現する機能がなかったことを
いいたい用ですが、TOPはMS SQL Serverですし、LIMITはMySQLのことなので、なんかピンボケな印象です。
なのでよりよい表記はいかになると思います。

「12cより前のOracleでは、SELECTに行制限の記述(OFFSET句やFETCH句)を指定することはできませんが、」

8. WITH句
 SQLiteは3.8.3からサポートしているのに未サポート扱い。。。。
9. WITH再帰クエリー
 SQLiteは3.8.3からさポートしているのに未サポート扱い。。。。

basic recursive query on sqlite3?(stack overflow)

10. WITH再帰クエリーでRECURSIVE指定できるはPostgreSQLだけ(?!)
 んなわけない。
×「PostgreSQLの場合、再帰クエリーを実行する際には、WITHの後にRECURSIVEキーワードを指定する必要があります。他のデータベースではRECURSIVEを指定するとエラーになります。」

 そもそもSQL標準で定めた表記WITH RECURSIVEでRECURSIVEを指定するとエラーになるわけがない。
これは、PostgreSQLではRECURSIVEを表記しないとエラーになるが、他のデータベースでは省略してもエラーにならないことの記述があり、それを読み間違えたと類推します。

Hierarchical and recursive queries in SQL(wikipedia)

○「PostgreSQLの場合、再帰クエリーを実行する際には、WITHの後のRECURSIVEキーワードは省略できません。他のデータベースではRECURSIVEを省略できます。」

11. LIMIT句
 IBM DB2 9.7 Fix Pack 2から、対応しています。(DB2_COMPATIBILITY_VECTORに定数"MYS"を設定する必要があり)

DB2にMySQL/PostgreSQL互換のLIMIT/OFFSET句が追加(Unofficial DB2 BLOG)

とりあえず、ここまで。Access関連は後日補足するかも(なんといっても離れてから久しい。。。)

JUGEMテーマ:コンピュータ




Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>