電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

JavaScriptでSQL実行できるローカルDBライブラリ LocalDB.js

昔初めて購入した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
`);

github.com


JavaScript 第7版

JavaScript 第7版

Amazon