LoginSignup
89
102

More than 5 years have passed since last update.

【SQLite3】コマンド例と他データベースとの比較から始める SQLite 入門

Last updated at Posted at 2016-01-28

コマンド例

基本
$ sqlite3 -version   # バージョンを表示
$ sqlite3 database.sqlite3   # データベースに接続する(同名ファイルがなければ作成して接続する)

sqlite> .help   -- ヘルプを表示する
sqlite> .show   -- 設定情報を表示する
sqlite> .exit   -- 終了する
ファイル操作
-- CSVを取り込む
sqlite> .separator ,   -- 区切り文字を変更する
sqlite> .import file table   -- 指定したファイルのデータをテーブルに挿入する

-- バックアップを取る
sqlite> .output backup.dump   -- 出力先を任意のファイルに指定する
sqlite> .dump [table]  -- テーブルのデータを出力する

-- 復元する
sqlite> .read backup.dump   -- バックアップを元に復元する(同じ名前のテーブルが存在する場合はエラーが発生する)
テーブル操作
sqlite> .tables   -- テーブルの一覧を表示する
sqlite> .schema [table]   -- テーブルのスキーマを表示する

-- CREATE
sqlite> CREATE TABLE table (column_a [type], column_b [type]);  -- テーブルを作成する。型の指定は任意。
sqlite> CREATE INDEX index on table (column);   -- インデックスを追加する

-- ALTER
sqlite> ALTER TABLE table_old RENAME TO table_new;   -- テーブル名を変更する
sqlite> ALTER TABLE table ADD COLUMN column;   -- カラムを追加する

-- Drop
sqlite> DROP TABLE table   -- テーブルを削除する
レコード操作
-- INSERT
sqlite> INSERT INTO table (column_a, column_b) VALUES (value_a, value_b);   -- レコードを挿入する

-- UPDATE
sqlite> UPDATE table SET column_a = value_a WHERE column_b = value_b;   -- レコードを更新する

-- DELETE
sqlite> DELETE FROM table WHERE column = value;   -- レコードを削除する

-- SELECT
sqlite> .header on   -- カラム名も出力するよう設定する
sqlite> SELECT * FROM table;   -- 全てのレコードを取得する
sqlite> SELECT (TYPEOF)column FROM table;   -- 全てのレコードから特定のカラムのみ(型情報を含めて)取得する

-- 特殊な変数
sqlite> SELECT current_time;   -- 12:57:55
sqlite> SELECT current_date;   -- 2016-01-28
sqlite> SELECT current_timestamp;   -- 2016-01-28 13:00:47
sqlite> SELECT ROWID, * FROM table   -- ROWIDは内部的にレコードに付与される連番

押さえておくべきポイント

概要

  • データベースは通常のファイルである
  • ファイルの拡張子は慣例として .sqlite3 にする
  • データベースを削除するにはファイルを削除する
  • データベースのバックアップを取るにはファイルをコピーする
  • SQL 以外に . で始まる命令がある

他のデータベースとの比較

  • 同じ点
    • 標準 SQL をおおよそサポートしている
    • 命令の区切りは ;. で始まる命令には不要)
  • 異なる点
    • クライアント・サーバー構成ではなく、実行プロセスが直接ディスクを読み書きする
    • データ型は指定できるが、必須ではない
    • 挿入されたデータが、指定されたデータ型にキャスト可能であればキャストするが、不可能ならそのまま格納する(1つのカラムに異なるデータ型が混在しうる)
    • テーブルの外部結合は LEFT OUTER JOIN のみ
    • ALTER TABLE の命令は RENAME TO, ADD COLUMN のみ

データ型

説明
NULL NULL(値がないことを表す)
INTEGER マイナスを含まない 8byte の整数
REAL 8byte の浮動小数点数
TEXT 文字列(文字コードはデータベースの設定による)
BLOB バイナリデータ(Binary Large OBject)

※厳密にはこれらはストレージクラスと呼ばれ、データ型よりも広い概念である

リファレンス

89
102
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
89
102