コンテンツにスキップ

SQLite

AlmaLinuxへのSQLiteのインストール

AlmaLinuxにSQLiteをインストールするには、以下のコマンドを実行。

sudo yum install sqlite

基本的な使い方

コンソールに入る

コンソールに入るには、以下のコマンドを使用します。

sqlite3 [データベース名]

CREATE TABLE

-- SQLiteでusersテーブルを作成
CREATE TABLE users (
    ID       INTEGER PRIMARY KEY,
    name     TEXT,
    email    TEXT,
    birthday TEXT
);

INSERT

-- usersテーブルにデータを挿入
INSERT INTO users (ID, name, email, birthday) VALUES (1,  'Alice',   'alice@example.com',   '1990-01-01');
INSERT INTO users (ID, name, email, birthday) VALUES (2,  'Bob',     'bob@example.com',     '1985-02-15');
INSERT INTO users (ID, name, email, birthday) VALUES (3,  'Charlie', 'charlie@example.com', '1980-03-20');
INSERT INTO users (ID, name, email, birthday) VALUES (4,  'David',   'david@example.com',   '1992-04-10');
INSERT INTO users (ID, name, email, birthday) VALUES (5,  'Eva',     'eva@example.com',     '1993-05-05');
INSERT INTO users (ID, name, email, birthday) VALUES (6,  'Frank',   'frank@example.com',   '1988-06-15');
INSERT INTO users (ID, name, email, birthday) VALUES (7,  'Grace',   'grace@example.com',   '1995-07-20');
INSERT INTO users (ID, name, email, birthday) VALUES (8,  'Hannah',  'hannah@example.com',  '1983-08-25');
INSERT INTO users (ID, name, email, birthday) VALUES (9,  'Ivy',     'ivy@example.com',     '1991-09-10');
INSERT INTO users (ID, name, email, birthday) VALUES (10, 'Jack',    'jack@example.com',    '1987-10-30');

-- この操作に対して、SQLiteは明示的なCOMMITは不要

SQLiteはOracleDBのようなDATE型を持っていません。'YYYY-MM-DD'の形式で日付をTEXTで保存できます。
また、SQLiteのトランザクションはデフォルトで自動コミットされるため、明示的なCOMMITは不要です。

INSERT INTO users VALUES (1, 'Alice', 'alice@example.com', '1990-01-01');

SELECT

SELECT * FROM users WHERE name = 'Alice';

データ編集

ビューの作成

ビューは、以下のように作成できます。

CREATE VIEW user_emails AS
SELECT ID, name, email FROM users;

カラム追加/削除/リネーム

削除/リネーム には対応していないので、tableの作り直しが必要。

-- データタイプが INTEGER の 'new_column' という新しいカラムを追加
ALTER TABLE table_name ADD COLUMN new_column INTEGER;

値の加算

UPDATE example_table SET count = count + 1 WHERE id = 1;

その他SQL文

テーブルの複製

列名を編集したい場合など。

テーブル作成後にコピー

INSERT INTO destination_table (column1, column2, column3)
SELECT column1, column2, column3 FROM source_table;

テーブル作成時にコピー

CREATE TABLE destination_table AS SELECT * FROM source_table;

BashからSQLiteにアクセス

以下のコマンドでBashから直接SQLクエリを実行できます。

sqlite3 test.db "SELECT * FROM users WHERE name = 'Alice';"

結果の整列

sqlite3 コマンドに -column オプションと -header オプションを追加することで、結果を見やすく整列できます。
※ -column をつけると、長い文字が切れる

sqlite3 -column -header test.db "SELECT * FROM users;"
sqlite3 -header test.db "SELECT * FROM users;" | column -t -s'|'

sqliteコンソール内だと以下

.mode column
.mode list
.headers on
.width 10 20 30

既存のテーブルの確認

SQLiteデータベース内のすべてのテーブルを一覧表示するには、次のコマンドを使用します。

sqlite3 test.db "SELECT name FROM sqlite_master WHERE type='table';"

バックアップ

単純な.dbファイルのコピーによるバックアップも可能ですが、書き込みが同時に行われている場合は注意が必要です。.backup コマンドを使うことで、アトミックなバックアップが可能です。

sqlite3 existing_db.db ".backup backup_db.db"