業務でいろいろな種類のデータベースを触る機会があったんですが、
データベースって意外にコマンドが違ってて通らなかったりするんですよね。
そこで、触ったことのあるデータベースのコマンドについて大まかな部分だけ調べてみました。
今回調べたのは以下の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
orquit
- PostgreSQL
exit
or\q
- SQLite
.quit
- MongoDB
exit
まとめ
MySQLとPostgreSQLはそこそこ似ているので一度覚えれば使いやすいですね。
SQLiteも大きくは違わないですね。DBをファイルで管理するのが個人的に好きです。(システム運用には向いてないですけど)
MySQLを基準とすればPostgreSQLは\
から始まるコマンドを覚える、SQLiteは.
から始まるコマンドを覚えるだけです。
厄介なのがMongoDBです!
コレクション、フィールド、ドキュメント…他DBと別物ですね。
スキーマレスだったり、条件式の使い方が違ったりと場合によっては他DBより勝るところがありそうです。
今度機会があったらガッツリ触ってみたいと思います。