【DB】DBの種類による共通点と違い

DBの共通点

RDBMSとしての各種機能

 * データ管理
 * ユーザ管理
 * バックアップ
 * レプリケーション
  => データベース全体のコピーを作ったり、そのコピーのこと(Replication:複製する、cf.レプリカ)

SQLANSI/ISOで標準化してある文)

 => ただし、文法上の微妙な違いがあるので、注意すること

DBの違い

商用 or 無償

 * 商用:Oracle, SQL Server etc
 * 無償:MySQL, Postgre SQL(ぽすとぐれすきゅーえる) etc
  => MySQL      : GPLと商用のデュアルライセンス
  => PostgreSQL : BSDに基づくライセンス

各機能の使い方

 * コマンドの違い など

SQLの方言

データ型

 => サポートされている型や独自の型など違いが大きい
 => SQL Serverの文字列型については以下を参照のこと
http://blogs.yahoo.co.jp/dk521123/29837546.html
 => Oracleのデータ型については以下を参照のこと
http://blogs.yahoo.co.jp/dk521123/11973163.html

関数

 => 対応・未対応のメソッドが各DBによって、異なる

空文字とDBNullの考え方の違い

 => 「SELECT 1 WHERE '' = ''」「SELECT 1 WHERE '' IS NULL」を試してみるといい
 => PostgreSQL : '' と DBNullは異なる
 => Oracle     : '' と DBNullは同じ扱い
 => 詳細は以下を参照のこと
http://blogs.yahoo.co.jp/dk521123/18349448.html

デフォルト

 * 大文字と小文字
   => MySQL      : 区別しない
   => PostgreSQL : 区別される
  => SQL Server : 区別しない(詳細は以下を参照のこと)
http://blogs.yahoo.co.jp/dk521123/30286038.html
 * トランザクション
   => Oracle     : トランザクションは自動的に始まり、COMMITあるいはROLLBACKなどで処理終了
          (つまり、明示的にコミットやロールバックをしなければトランザクションは終了しない)
  => SQL Server : SQL文が実行されるたびにトランザクションがコミット(COMMIT)される
http://www.atmarkit.co.jp/fdotnet/vblab/oracledbentry_02/oracledbentry_02_01.html

歴史(サポートした年)

レプリケーション

  => Oracle     : Since 1992
  => MySQL      : Since 2003
  => PostgreSQL : Since 2010

ストアド

 => Oracle     : Since 1988
 => MySQL      : Since 2005
 => PostgreSQL : Since 1998

参考文献

今後役立ちそうなサイト

http://www.atmarkit.co.jp/fdb/rensai/rdbmsarc03/rdbmsarc03_3.html