SQLite Mode

SQLiteモードで
独自の方言を体験しよう

Miria SQL Learningの裏側でも動いている、世界で最も使われている軽量データベースの仕様を体験できます。

INTEGER PRIMARY KEYと自動採番、Type Affinityによる柔軟な型の扱いなど、SQLiteならではの特徴を確認します。

ミリア

01

こんな特徴に挑戦できます

サーバーを必要とせずファイルとして動作するSQLiteは、型の扱いや自動採番の仕組みが他のRDBMSと少し異なります。

AUTOINCREMENT

INTEGER PRIMARY KEY で自動採番

SQLiteでは、カラムを INTEGER PRIMARY KEY に設定するだけで、内部的なRowIDと紐づき自動的に連番が振られるようになります。

SQLite
CREATE TABLE items (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
AUTOINCREMENTキーワードとの違い

SQLiteには AUTOINCREMENT キーワードも存在しますが、IDの再利用を防ぐ厳密な用途以外では、単に INTEGER PRIMARY KEY を指定する書き方が推奨されています。

Type Affinity

型の制約がとても「ゆるい」

PostgreSQLやMySQLが厳格なデータ型を持つのに対し、SQLiteは「Type Affinity(型の親和性)」という柔軟な仕組みを採用しています。

SQLite
CREATE TABLE users (
    id INTEGER,
    name VARCHAR(10)
);

-- SQLiteでは、VARCHAR(10)のカラムに10文字以上の文字列や数値を入れても
-- エラーにならず、そのまま保存されてしまいます。
INSERT INTO users (id, name) VALUES (1, 'とても長い名前のユーザーです');
他のモードに切り替えると?

この「ゆるさ」はSQLite特有のものです。Miria SQL LearningでPostgreSQLモードやMySQLモードに切り替えて同じINSERTを実行すると、アプリのバリデーションが働き、文字数オーバーの制約エラーがしっかり発生するのを体験できます。

Comparison

他のRDBMSと比べると?

やりたいこと SQLite PostgreSQL MySQL
自動採番 INTEGER PRIMARY KEY SERIAL AUTO_INCREMENT
型の厳密さ 動的 (Type Affinity) 非常に厳格 厳格
文字列結合 a || b a || b CONCAT(a, b)

Learning Point

SQLiteの「ゆるさ」を知っておく。

スマホアプリのローカルDBや、手軽なテスト環境としてSQLiteは世界中で使われています。しかし、型のゆるさ(Type Affinity)を知らないまま開発を進めると、本番環境のPostgreSQLに移行した途端にエラーが多発することがあります。

アプリ内でモードを切り替えて、「SQLiteなら通るけど、他では通らない」という違いを今のうちに体感しておきましょう。

Try SQLite

読んだら、次は
SQLを動かして
みよう!

Miria SQL Learningの基盤でもあるSQLiteの挙動を、ブラウザ上で実際に確認してみてください。

ミリア

Next Guide

他のRDBMSも比較してみる

Miria SQL Learning

SQLiteの手軽さを、
ブラウザ上で体験しよう。

インストール不要・ブラウザから開始