; で区切って複数の文をまとめて入力できます(SQL Serverの GO、Oracleの単独 / 行も文の区切りとして認識します)。データベースの種類によって、検証の厳密さが異なります。
| 種類 | 検証方法 | 精度 |
|---|---|---|
| PostgreSQL | 本物のPostgreSQLパーサ(libpg-query / WebAssembly) | 厳密 |
| SQLite | 本物のSQLiteエンジン(sql.js / WebAssembly) | 厳密 |
| MySQL | 汎用SQLパーサ(node-sql-parser)による簡易解析 | 簡易 |
| SQL Server | 汎用SQLパーサ(node-sql-parser / T-SQL方言)による簡易解析 | 簡易 |
| Oracle | 汎用SQLパーサ(専用方言が無いため近い方言で代用) | 簡易(要注意) |
簡易チェック(MySQL / SQL Server / Oracle)は、実際のDBエンジンとは文法解釈が異なる場合があり、
正しいSQLをエラーと判定(偽陽性)したり、誤ったSQLを見逃す(偽陰性)ことがあります。
特にOracleは専用パーサが無く近い方言で代用しているため、VARCHAR2 / NUMBER / DUAL /
シーケンス / PL/SQLブロックなどOracle固有の構文で誤判定しやすいです。
本番環境で利用する前に、必ず実機で確認してください。
各パーサは「構文解析」を行うものなので、INSERT INTO t (a, b) VALUES (1, 2, 3) のような
列数と値の数の不一致は、構文としては正しいため素通りしてしまいます(実際のDBでは実行時にエラーになります)。
そこで本ツールでは、エンジンが「構文OK」と判定した文に限り、独自に列数と値の数を突き合わせて報告します。
INSERT INTO t (a, b) VALUES (…))… 列数と各タプルの値の数を比較します。INSERT INTO t VALUES (…), (…))… タプル同士で値の個数が揃っているかを比較します。INSERT ... SELECT 形式は、値の数が実行するまで決まらないためチェック対象外です。このチェックは誤検出を避けるため安全側に倒しており、構造を確実に解釈できない書き方の場合は何も報告しません。 また、エンジンが検出した本来の構文エラーを上書きすることはありません。
SQLiteは、入力された文をメモリ上の一時DBで上から順に実行することで検証します。 この一時DBはメモリ上だけのもので、実際のデータベースには一切影響しません。
SQLiteは「①構文解析 → ②名前解決(テーブル・カラムの存在確認)」の順に処理するため、 名前解決のエラーが返った時点で構文自体は正しいことが分かります。本ツールはこれを利用し、 名前解決のエラーを次の2つに切り分けています。
| SQLiteのエラー | 意味 | 本ツールの判定 |
|---|---|---|
no such table / view / index / function |
その定義が入力に無く、確認しようがない | ✅ 構文OK(存在チェックなし) 何が未確認かを注記で表示 |
no such column / table … has no column named … |
テーブルは定義済みなのにカラムが無い=入力内で完結した本当の誤り (SQLiteはテーブルを先に解決するため、これが出る時点でテーブルは必ず定義済み) |
❌ エラー |
これにより、CREATE TABLE を含まない SELECT / INSERT / UPDATE 単体でも構文チェックができます。
もちろん、この場合でも near "FRM": syntax error のような本来の構文エラーは通常どおり検出されます。
テーブル定義(CREATE TABLE)も含めてまとめて貼り付けると、テーブル・カラムの存在や
「3 values for 2 columns」のような不整合まで検証できるため、より正確です。
検証はすべてお使いのブラウザ内で完結します。入力したSQLが外部サーバーへ送信されることはありません。 入力内容は、このブラウザの localStorage に自動保存され、次回このページを開いたときに復元されます。
任意のSQLが文法的に正しいかを、ブラウザ単体で判定するツールです。 PostgreSQL・SQLiteは本物のエンジン(WebAssembly)で厳密に、MySQL・SQL Server・Oracleは汎用SQLパーサで簡易的に検証します。 入力したSQLが外部サーバーへ送信されることはありません。
wasm/libpg-query.js と
wasm/libpg-query.wasm のみを利用しています。
The MIT License (MIT) Copyright (c) 2021 Dan Lynch <pyramation@gmail.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This software embeds portions of the PostgreSQL database server, which is released under the PostgreSQL License (a liberal Open Source license similar to the BSD/MIT licenses).
MIT license Copyright (c) 2017 sql.js authors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
assets/vendor/node-sql-parser.LICENSE.txt をご覧ください。
サイト全体で使用しているオープンソースソフトウェアの一覧は ライセンス表示ページ にまとめています。
OS標準搭載のフォント(Segoe UI / Yu Gothic UI / Meiryo など)を使用しており、外部のフォント配信サービスへの通信は行っていません。