データベースのコマンド比較(MySQL、PostgreSQL、SQLite、mongoDB)

業務でいろいろな種類のデータベースを触る機会があったんですが、
データベースって意外にコマンドが違ってて通らなかったりするんですよね。

そこで、触ったことのあるデータベースのコマンドについて大まかな部分だけ調べてみました。
今回調べたのは以下の4種です。

  • MySQL
  • PostgreSQL
  • SQLite
  • MongoDB

コンソールに入る

  • MySQL
    • mysql -u user名 -p
  • PostgreSQL
    • psql -U user名 DB名
      (DB名がなかった場合user名と同じDBに入る。)
  • SQLite
    • SQLiteはDBに直接アクセスするため省略。
  • MongoDB
    • mongo

データベース関連

データベース一覧

  • MySQL
    • show databases;
  • PostgreSQL
    • \l
  • SQLite
    • SQLiteはDBファイルがDBの役割を持つため省略。
  • MongoDB
    • show dbs

データベース選択

  • MySQL
    • use db名;
  • PostgreSQL
    • \c db名
  • SQLite
    • sqlite3 db名.db
      (DBファイルを指定する。)
  • MongoDB
    • use db名

データベース作成

  • MySQL
    • create database db名;
  • PostgreSQL
    • create database db名
  • SQLite
    • sqlite3 db名.db
      (テーブルを作成した際に同時にDBファイルが作成されます。)
  • MongoDB
    • use db名

データベース削除

  • MySQL
    • drop database db名;
  • PostgreSQL
    • drop database db名
  • SQLite
    • db名.dbを削除
  • MongoDB
    • use db名
      db.dropDatabase()

テーブル関連

※MongoDBにおいてテーブルに対応するものはコレクションと呼びます。
 また、カラムはフィールドと呼びます。

テーブル一覧

  • MySQL
    • show tables;
  • PostgreSQL
    • \dt
  • SQLite
    • .table
  • MongoDB
    • show collections

テーブル作成

  • MySQL,PostgreSQL,SQLite
    • create table table名(カラム情報);
  • MongoDB
    • db.createCollection(collection名, {フィールド情報})

テーブル削除

  • MySQL,PostgreSQL,SQLite
    • drop table table名;
  • MongoDB
    • db.collection名.drop()

テーブルカラム一覧

  • MySQL
    • desc table名;
  • PostgreSQL
    • \d table名
  • SQLite
    • prigma table_info(table名);
  • MongoDB
    • キーが決まっていないため特定のコマンドで抽出できません。
      (逆に考えると好きな構造でデータを入れることができるということです。)

レコード関連

※MonngoDBではレコードはドキュメントと呼びます。

レコード取得

  • MySQL,PostgreSQL,SQLite
    • select column名 from table名 where 条件式;
  • MongoDB
    • db.collection名.find({条件式})

レコード挿入

  • MySQL,PostgreSQL,SQLite
    • insert * into テーブル名 (column名) value (値);
  • MongoDB
    • db.collection名.insert({フィールド名: 値})

レコード更新

  • MySQL,PostgreSQL,SQLite
    • update table名 set column名 = 値;
  • MongoDB
    • db.collection名.update({フィールド名: 値})

レコード削除

  • MySQL,PostgreSQL,SQLite
    • delete from テーブル名 where 条件式;
  • MongoDB
    • db.collection名.remove({条件式})

終了

  • MySQL
    • exit or quit
  • PostgreSQL
    • exit or \q
  • SQLite
    • .quit
  • MongoDB
    • exit

まとめ

MySQLとPostgreSQLはそこそこ似ているので一度覚えれば使いやすいですね。
SQLiteも大きくは違わないですね。DBをファイルで管理するのが個人的に好きです。(システム運用には向いてないですけど)
MySQLを基準とすればPostgreSQLは\から始まるコマンドを覚える、SQLiteは.から始まるコマンドを覚えるだけです。

厄介なのがMongoDBです!
コレクション、フィールド、ドキュメント…他DBと別物ですね。
スキーマレスだったり、条件式の使い方が違ったりと場合によっては他DBより勝るところがありそうです。
今度機会があったらガッツリ触ってみたいと思います。

参考ページ

成田哲洋

最近親知らずを抜きました。

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。