SQLite Mode
SQLiteモードで
独自の方言を体験しよう
Miria SQL Learningの裏側でも動いている、世界で最も使われている軽量データベースの仕様を体験できます。
INTEGER PRIMARY KEYと自動採番、Type Affinityによる柔軟な型の扱いなど、SQLiteならではの特徴を確認します。
01
こんな特徴に挑戦できます
サーバーを必要とせずファイルとして動作するSQLiteは、型の扱いや自動採番の仕組みが他のRDBMSと少し異なります。
INTEGER PRIMARY KEY で自動採番
SQLiteでは、カラムを INTEGER PRIMARY KEY に設定するだけで、内部的なRowIDと紐づき自動的に連番が振られるようになります。
CREATE TABLE items (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
SQLiteには AUTOINCREMENT キーワードも存在しますが、IDの再利用を防ぐ厳密な用途以外では、単に INTEGER PRIMARY KEY を指定する書き方が推奨されています。
型の制約がとても「ゆるい」
PostgreSQLやMySQLが厳格なデータ型を持つのに対し、SQLiteは「Type Affinity(型の親和性)」という柔軟な仕組みを採用しています。
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も比較してみる
DATABASE GUIDE
PostgreSQLモード
型の厳格なPostgreSQLでの違いを確認します。
PostgreSQLを見るDATABASE GUIDE
MySQLモード
Web系でシェアの高いMySQLの書き方を確認します。
MySQLを見るCOMPARISON
PostgreSQL vs MySQL
代表的な2つのRDBMSの違いを並べて比較します。
比較ページへ