キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
<< bashの脆弱性確認 on CentOS 5.10(x86_64) | main | 第6刷sqlap >>
[勝手に補足]SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!
0
    結構人気(?) のこの記事、ざっとよもうと思ったら最初に誤植(?) があったので、通読してまとめておきます。。。。

    [2014-10-09 12:00 追記] 現時点までに更新があり、下記指摘はほとんど修正・更新されているようですが、とりあえず記録のために本エントリは残しておきます。「誤植や誤記ねえじゃん」といわないでください。指摘の後更新されたので。。。。

    SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!(DBonline)

    なお、以下二ページ目の閲覧は会員登録(無料)が必要です。

    表2:主なデータ型の比較

    [誤]
    Oracle、PPEE(※) PostgreSQL MySQL
    NUMBER NUMERIC VARCHAR

    [正]
    Oracle、PPEE(※) PostgreSQL MySQL
    NUMBER NUMERIC NUMERIC

    まぁVARCHARに入らんこともないですが。。。。タイポでしょう。。。

    表3:表名・列名の命名規則の比較

    [誤]
    アンダースコア(_)以外の記号の利用($、#、- など) ○ ○ ×

    [正]
    アンダースコア(_)以外の記号の利用($、#、- など) ○ ○

    ``でかこってください。$は囲わなくても可能でしたが。。。。

    mysql> create table $meiji(i1 int);
    Query OK, 0 rows affected (0.56 sec)

    mysql> create table mei$ji(i1 int);
    Query OK, 0 rows affected (0.41 sec)

    mysql> create table `mei#ji`(i1 int);
    Query OK, 0 rows affected (0.41 sec)

    mysql> create table `-mei#ji`(i1 int);
    Query OK, 0 rows affected (0.43 sec)

    mysql> show tables;
    +-----------------+
    | Tables_in_01mon |
    +-----------------+
    | $meiji |
    | -mei#ji |
    | mei#ji |
    | mei$ji |
    +-----------------+
    4 rows in set (0.00 sec)

    5.2. スキーマオブジェクト名


    表5:連続値の生成機能の比較

    [誤]
    CREATE TABLE test
    (testno NUMERIC(2) AUTO_INCREMENT
                 PRIMARY KEY);

    [正]
    CREATE TABLE test
    (testno INT AUTO_INCREMENT
                 PRIMARY KEY);

    AUTO_INCREMENTに指定できるのは整数と浮動小数点(float, double)だけで、固定小数点のものはエラーがでます。

    mysql> CREATE TABLE test(testno NUMERIC(2) AUTO_INCREMENT PRIMARY KEY);
    ERROR 1063 (42000): Incorrect column specifier for column 'testno'
    mysql> CREATE TABLE test(testno INT AUTO_INCREMENT PRIMARY KEY);
    Query OK, 0 rows affected (0.31 sec)

    8.1.17. CREATE TABLE 構文

    [現在の記述]
     PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。

    [改善案]
     PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。MySQLでもデータ型にSERIAL型を指定でき、SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名です。

    6.1.1. 数値型の概要

    mysql> CREATE TABLE test
    -> (testno SERIAL);
    Query OK, 0 rows affected (0.48 sec)

    mysql> show create table test¥G
    *************************** 1. row ***************************
    Table: test
    Create Table: CREATE TABLE `test` (
    `testno` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    UNIQUE KEY `testno` (`testno`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)

    ありゃ、結構時間がかかったので、今日はここまで。三ページ以降はまた次の機会に。。。。

    しかし、土曜日早朝になにやってんだ >> おれ

    [2014-10-04 09:48 追記]

    三ページ以降はそれほど間違いなさそうなので、追記としてここに記述します。

    三ページ目: 特に問題なし
    四ページ目: Oracle 12cのOFFSET, FETCH句の実例がほしい。たとえば以下。

    SELECT ename,sal FROM emp
    ORDER BY sal DESC
    OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY;

    そしてこの記法がIBM DB2でもともと使われていて、OFFSETを拡張されてSQL標準になったことも
    記述しているとよいと思います。(この原稿末になるべく標準つかえ、と書いてあるので)

    SQL標準、ということでPostgreSQLでも8.4からOFFSET ... FETCHが使えます。(MySQLはこの書式使えません)

    Oracle Database 12cについて:パート1(Ask Tom)
    SELECT (PostgreSQL 8.3)
    SELECT (PostgreSQL 8.4)

    表12:引数の指定が異なる関数の比較
    Oracle SELECT TO_CHAR(sal) FROM emp;
    PostgreSQL SELECT TO_CHAR(sal,'9999') FROM emp;
    MySQL SELECT FORMAT(sal,0) FROM emp;

    「引数の指定が異なる」ということで、引数が違うだけで結果が同じことを期待しますが、
    Oracleの場合は第二引数の書式指定を省略しておりTM9がデフォルトとして使われます。

    数値用の書式モデル (SHIFT the Oracle)

    PostgreSQLでは第二引数が省略できないので、'9999'を指定していますが、元の本のように「9が1つの数値を表し、たとえば4桁の数値の場合、9999と表記します」の説明がないとわかんないですね。。。。さらにOracleにより近づけるなら単に'9999'とするより'FM9999'としたほうがいいんじゃないですかね? (すみません、すぐに動かせる環境がないので、確認はできていません)

    9.8. データ型書式設定関数(PostgreSQL9.3)

    MySQLの場合はFORMATで第二引数をゼロにすると三桁区切りがデフォルトになり、出力文字列が違ってきます。(下の本の検索結果のようにはなりません)。

    mysql> select format(1200000,0);
    +-------------------+
    | format(1200000,0) |
    +-------------------+
    | 1,200,000 |
    +-------------------+
    1 row in set (0.00 sec)

    このように単純に数値を文字列に変換する目的ならばFORMATのかわりにCASTを使います。

    mysql> select cast(01200000 as char);
    +------------------------+
    | cast(01200000 as char) |
    +------------------------+
    | 1200000 |
    +------------------------+
    1 row in set (0.00 sec)

    五ページ目: 特に間違いはないけれどもMySQL用に若干補足。

    MySQL(InnoDB)の場合、autocommit=offで自動コミットをオフにすると、Oracle/PPEEと同様の動作をします。

    13.5.10.2. InnoDB と AUTOCOMMIT
    オートコミットをデフォルトオフにする(MySQL 5.5の場合)

    六ページ目は特にありませんでした。

    以上です。 

    JUGEMテーマ:コンピュータ


    | meijik | クロスデータベース | 02:23 | comments(0) | trackbacks(0) | - | - |









    トラックバック機能は終了しました。
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
    << July 2020 >>
    + RECOMMEND
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

    100人のうちの一人としてミックさんの本を推薦しています。
    + RECOMMEND
    MySQL 5.1 Plugin Development
    MySQL 5.1 Plugin Development (JUGEMレビュー »)
    Andrew Hutchings,Sergei Golubchik
    MySQL 5.1 のプラグインを作るならこれ!
    + RECOMMEND
    AWKを256倍使うための本 (Ascii 256倍)
    AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
    志村 拓,鷲北 賢,西村 克信
    ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
    + RECOMMEND
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
    松信 嘉範
    Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
    + RECOMMEND
    + RECOMMEND
    超・極める!MySQL
    超・極める!MySQL (JUGEMレビュー »)
    坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
    内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
    + RECOMMEND
    The Root of .NET Framework
    The Root of .NET Framework (JUGEMレビュー »)
    荒井 省三
    .NETの根っこをつかむ、か?
    + RECOMMEND
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
    奥野 幹也
    これまでにない構築、そして構築後のMySQLのための本。
    + RECOMMEND
    Database Management Systems
    Database Management Systems (JUGEMレビュー »)
    Raghu Ramakrishnan,Johannes Gehrke
    ミックさん連載の参考書籍です。
    + RECOMMEND
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
    W. Richard Stevens,Stephen A. Rago
    必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
    + RECOMMEND
    + RECOMMEND
    + RECOMMEND
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

    DELL SX260の換装用に購入。今はコチラのほうが安いですね。
    + RECOMMEND
    情熱プログラマー ソフトウェア開発者の幸せな生き方
    情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
    Chad Fowler
    OSC2010神戸に出展されたジュンク堂で買いました。
    + RECOMMEND
    Software Design 総集編 【2000~2009】(DVD付)
    Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

    メガトン級の過去記事。売り切れる前にお店に急げ!
    + RECOMMEND
    + RECOMMEND
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

    Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
    + RECOMMEND
    + RECOMMEND
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

    色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
    + RECOMMEND
    Firebird 徹底入門
    Firebird 徹底入門 (JUGEMレビュー »)
    木村 明治,はやし つとむ,坂井 恵
    Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • たまたま「プリントヘッドの種類が違います」エラーから復活@MG6230
      meijik (11/20)
    • [ミュージシャンに聴かせたい・弾かせたい!] (4) 山田元気様
      meijik (07/27)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (03/03)
    • 2019年の木村明治
      田中尚 (01/08)
    • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
      noname (12/10)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 2015年版 InterBaseの歩み
      nakagami (12/06)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (11/22)
    • 分散DB本読書会第46回メモ「STOP AFTER 10」
      masudahidehiko (09/01)
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + MOBILE
    qrcode
    + LINKS
    + PROFILE