昔初めて購入したMacのG3 Mac B&W(Mac OS 8.6)で何か作りたいと思い、VisualBasicのような感覚でプログラミングできるMac用のBASIC開発環境を購入しました。確かREALbasicとかそんな名前でした。
この環境で便利なのが、組込みDBがあり、外部プログラム無しで実行ファイルにDBの機能も組込むことができ、SQLでデータ操作をすることができました。
これが便利だった思い出があり、のちにJavaScriptでSQL実行できるローカルDBライブラリを作り、個人で制作したもので使用してました。
この度、AIの力を借りて体裁を整えたので「LocalDB.js」として公開します。
元が10年以上前のものなのでClaude Codeで最近のトレンドに合わせた書き方にしたり、副問い合わせ等の元にはなかった機能の追加もしてます。
また、公開のためのコメントやドキュメント作成もClaude Codeで生成しました。
github.com
LocalDB.jsは、JavaScriptアプリケーション内で標準的なSQL構文を使用してデータを操作できるシンプルなライブラリです。すべてのデータはlocalStorageに自動的に保存されるため、ページをリロードしてもデータが失われません。
主な機能
1. SQL操作
- CREATE TABLE - テーブルの作成
- INSERT - データの挿入
- SELECT - データの取得
- UPDATE - データの更新
- DELETE - データの削除
2. WHERE句と演算子
- 比較演算子:=, !=, <>, >, <, >=, <=
- LIKE - パターンマッチング
- IN / NOT IN - リスト内の値チェック
- BETWEEN - 範囲チェック
- IS NULL / IS NOT NULL - NULL値チェック
3. SELECT句の機能
- ORDER BY - 結果のソート(昇順・降順)
- GROUP BY + HAVING - グループ化と集計
- LIMIT + OFFSET - ページネーション
- DISTINCT - 重複排除
4. 高度なSQL機能
JOIN機能:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- CROSS JOIN
5.サブクエリ対応:
- IN / NOT IN サブクエリ
- スカラーサブクエリ(比較演算子と組み合わせ)
- 派生テーブル(FROM句内のサブクエリ)
- EXISTS / NOT EXISTS(相関サブクエリ)
6. 集約関数
COUNT - 件数カウント
SUM - 合計
AVG - 平均
MAX - 最大値
MIN - 最小値
7. スカラー関数
UPPER / LOWER - 大文字・小文字変換
LENGTH - 文字列長
CONCAT - 文字列結合
使用方法
簡単ですが、実装例です。
// データベースインスタンスの作成 const db = new LocalDB('myapp'); // テーブルの作成 db.execute(` CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER ) `); // データの挿入 db.execute(` INSERT INTO users (id, name, age) VALUES (1, 'Taro', 30) `); // データの取得 const result = db.execute(` SELECT * FROM users WHERE age > 25 ORDER BY age DESC `); console.log(result); // データの更新 db.execute(` UPDATE users SET age = 31 WHERE id = 1 `); // データの削除 db.execute(` DELETE FROM users WHERE id = 1 `);

![[改訂第5版]SQLポケットリファレンス (Pocket reference) [改訂第5版]SQLポケットリファレンス (Pocket reference)](https://m.media-amazon.com/images/I/41x2MwttjoL._SL500_.jpg)
