データベース(.lnc)

動画を見るデータを分析する 00:23

接続

接続はワークスペース内の .lnc ファイル(LightNote Connection)で、 Git でバージョン管理でき、マシン間で持ち運べます。フォルダーの接続はサイドバーの 接続パネル(データベースのアイコン)に表示され、それぞれに状態を示す点(緑は接続中、 灰色は未接続、赤はエラー)と、その下に接続に属するスクリプトが並びます。 新規 → 新しいデータベース接続 またはパネルのボタンで作成します。ファイルツリーから .lnc を開いてもパネルに移動します。一覧の下には選択した接続のオブジェクト ツリーがあります。接続のコンテキストメニューには 接続/切断、 新しいスクリプト、SQL コンソール、接続を編集 があります。

接続のないフォルダー: 空の接続パネルには 新しい接続… と データベース ファイルを開く… があり、フォルダーにすでにある SQLite と DuckDB の データベース ファイルが、それぞれ 接続 付きで一覧表示されます。データベースは拡張子 ではなくファイルの内容で判別します (.db はどちらの場合もあります)。クリックすると ファイルの隣に接続 (.lnc) が作成され、ファイルを名前で参照し (二つは一緒に移動 します)、そのまま接続します。

スクリプト: スクリプトは通常の .sql ファイルで、他のファイルと 同じくコードのタブで開きます(履歴、変更バー、バージョンを保存 付き)。 タブのツールバーの先頭に接続の選択と実行ボタンがあり、結果は最初の実行で エディターの下に表示されます(横に表示するには 実行 → 結果を横に表示)。 スクリプトの接続元は .lnc に保存され、スクリプトを開き直すと すでにその接続を指しています。選択で別の接続を選んでも、そのタブにだけ適用されます。 接続元を変えるには このスクリプトには常に「…」を使う を使います。接続元のない スクリプトは、フォルダーに接続が 1 つしかなくても接続なしで開きます。自分で 選んでいないデータベースを指したまま開くスクリプトはありません。SQL コンソール はファイルのないタブで、すでに接続に結び付いています。結果の分析エリアは スクリプトの隣(query.sql.analysis.json)にクエリごとに保存されます。 ファイルに入るのはグラフ、ピボットテーブル、各クエリの SQL で、データは入りません。

タブごとに 1 セッション: スクリプトのタブごとにデータベースとの専用セッション を開きます。あるタブの長いクエリが他のタブやオブジェクトツリーを止めることはなく、 あるタブの Commit が別のタブの変更を確定することもありません。一時テーブルと SET コマンドは、実行したタブの中でだけ有効です。サーバーが接続数を制限して いる場合は、接続を編集 で タブごとに 1 セッション をオフにしてください。 SQLite と DuckDB のファイルは常に同じセッションを共有します(SQLite では書き込みが ファイル全体をロックします)。パネルには、接続ごとに開いているセッション数が 表示されます。

ドライバー: SQLite と DuckDB(ファイル)はネイティブ。PostgreSQL、MySQL/MariaDB、 SQL Server、汎用は ODBC 経由。ネイティブ Oracle(ODBC なし)。 SQL Server は Microsoft の msodbcsql ドライバーを使い(マシンにインストールしてください)、 Windows 認証またはユーザー/パスワードに加え、チャネルの暗号化オプション (Encrypt / 証明書を信頼)を提供します。Oracle では 設定 → データベースで Oracle Instant Client のフォルダーを設定してください — 実行時に読み込まれ、 インストールは不要です。Oracle 接続には 4 つのモードがあります: サービス名 (ホスト/ポート/サービス)、SID(ホスト/ポート/SID)、TNS 名 (クライアントフォルダーの tnsnames.ora のエイリアス)、完全な TNS 記述子 (テキスト欄に貼り付け)。

パスワード: パスワードを保存をオンにすると、.lnc 自体の中で 暗号化します(移植可能な暗号で、別のマシンでも開けます)。オフの場合、パスワードは保存されず、 接続のたびに尋ねられます。暗号化にはワークスペースごとのセキュアフレーズを使い、 ヘルプ → セキュアフレーズの設定で設定します。大切に保管してください — それがないと、 他のどこでもパスワードを開けません。セキュアフレーズはローカルマシンにのみキャッシュされます (Git には決して送られません)。

開いたときに接続 をオンにすると、その接続のスクリプトを開いた ときに自動で接続します。自動接続はサイレントです。パスワードの入力が必要な場合 (毎回確認するモード、またはマシンにセキュアフレーズがキャッシュされていない暗号化)は、 スクリプトは作業を妨げずに未接続のまま開きます。

本番環境を安心して扱う: 接続を編集の環境欄で、このデータベースが開発・ ステージング・本番のどれかを指定します。その色は .sql タブの接続セレクター、タブ上部の帯、 接続パネルのバッジに表示されます。本番の接続では、データベースを変更するもの (INSERT、 UPDATE、DELETE、CREATE、DROP、プロシージャなど) は実行前に内容を 示して確認を求め、WHERE のない UPDATE/DELETE は強調されます。既定のボタンは キャンセルで、グリッドの変更を保存するときも同じように確認します。読み取り専用をオンにすると、 スクリプト、グリッド、テーブルのデータのどこからでも、データベースを変更するものは LightNote から出る前に 拒否されます。グリッドは編集を提供しなくなり、SQLite ではファイルが読み取り専用で開きます。読み取りだけか 判断できないもの (BEGIN … END ブロック、DECLARE) は書き込みとして扱います。

SSH トンネル: SSH サーバー (踏み台) の向こうにあるデータベースには、SSH トンネルで ワークスペースの SSH 接続 (.lns) を選びます。リモートターミナルと同じもので、ユーザー、鍵または 暗号化したパスワードを使います。ホストとポートは、SSH サーバーから見たデータベースのもの (たいていは localhost) になります。接続すると LightNote がトンネルを開き、それを通してデータベースに つなぎます。切断するとトンネルも閉じます。トンネルは接続したときだけ開き (ファイルを開いただけでは開きません)、 .lns はワークスペース内にある必要があります。コマンドを実行する ssh のオプション (ProxyCommand、LocalCommand、-F) は拒否されます (-J は使えます)。許可リストにあるオプションだけが通ります(-J、-i、-4/-6、-C、接続・暗号・認証のキーを指定した -o)。-A、-R、-I、-E も拒否されます。 トンネル経由の接続は、直接つないでしまう AI (MCP)、lnote、ブロックからは開きません。

サーバー情報: 接続時に、アプリはデータベースが自身について報告する内容を問い合わせます — バージョン、現在のデータベースとスキーマ、ユーザー、サイズ、エンコーディング、照合順序、タイムゾーン、 そしてサーバーが書き込みを受け付けるか (レプリカは受け付けません)。バージョンは接続のツールチップに表示され、 残りは接続のコンテキストメニューの サーバー情報… にコピー用のボタンと一緒に表示されます。サーバーが報告しない項目 (古いバージョン、権限なし) は、 エラーにならずに省かれます。エラーの説明やプランの分析を AI に頼むときはバージョンも送られます。AI が提案できる 構文はバージョンによって変わるためです。

SQLite の外部キー: SQLite は、接続が要求したときだけ宣言された外部キー (と ON DELETE CASCADE) を適用します。アプリの接続は要求するので、他の行が参照している行の削除や、 存在しないレコードへの参照の挿入は拒否され、CASCADE はスキーマのとおりに子の行を削除します。 接続を編集… の 外部キーを検証する チェックボックスでこれをオフにできます (順序どおりでない一括読み込みのときだけ)。オンにしても、ファイルにすでにあるデータは検証されません。 サーバー情報… は、検証しないツールで書き込まれた既存の 壊れた参照 (存在しないレコードを指す行) をテーブルごとに数えます。

実行と結果の表示

実行: Ctrl+Enter はカーソル位置の文を、Alt+X はスクリプト全体を実行します。 結果はページングされて表示され、それぞれ結果タブに下部のアクションバーが付きます: 次のブロックを取得、結果を固定、総件数、行の上限の変更、 更新(再実行)、SQL を表示/コピー、エクスポート...、選択した行から SQL を生成。何が 1 つの文かはテキスト自体で決まります。BEGIN … END ブロックと $$ … $$ の本体は分割されず、/(Oracle)や GO(SQL Server)だけの行も区切りになります。

補完付きで SQL を書く: Ctrl+Space は文脈に応じて補完します。 FROM、JOIN、UPDATE、INTO の後には データベースのテーブルが出ます (スペースを入力すると一覧が自動で開きます)。 別名. の後にはそのテーブルの列が出ます (ピリオドを入力すると自動で開きます)。 FROM をまだ書いていなくても、ツリーで何も展開しなくても使えます。LightNote はデータベースのカタログをバックグラウンドで読み、列はテキストがそこに達したときだけ 読み込みます。複数の命令があるスクリプトでは、Ctrl+Enter で実行される命令が強調表示 されます。命令が失敗すると、その命令がエディターでマークされ、データベースが指摘した名前 (存在しないテーブルや列、構文エラーの位置) に波線が付き、カーソルがそこへ移動し、マウスを 重ねるとメッセージが表示されます。テーブル名の上で Ctrl+クリック または F12 を押すとそのデータが、F4 を押すとプロパティが開きます。整形 (Shift+Alt+F) はツールをインストールしなくても SQL を整えます。句ごとに 1 行、 SELECT の項目が複数あれば 1 行に 1 つ、AND/OR とサブクエリはインデントします。変わるのは空白とキーワードの大文字小文字だけで、名前、 文字列、コメントは決して変わりません。クエリではない命令 (CREATE、 BEGIN … END ブロック) はそのままです。

結果を固定: 結果全体をデータベースから一度に読み込み、ローカルのテーブルに保存します (メモリに収まらない場合はディスクに保存されます)。以降、グリッドはデータベースに問い合わせずに スクロールし、行数は正確になり(総数を数えるは不要)、見出しをクリックすると並べ替えができ(もう一度クリックすると降順、3 回目でデータベースが返した順に戻ります)、 エクスポートもローカルのコピーから行われます。見出しによる並べ替えが使えるのは 10 万行までです。それを超えると拒否され、理由は見出しのツールチップに出ます。ページごとにコピー全体を並べ替え直すことになり、グリッドを見て回るのにまた数分かかるためです。 最初のページで結果全体が届いている場合は、固定しなくても並べ替えられます。行がすでにメモリにあるからです。並べ替えられないのは、まだページ送りの途中である結果の最初の一部です。見出しが、画面にある分だけに当てはまる順序を主張することになるためです。

グラフとピボットテーブルは結果 全体を対象にします — グラフが使えなかったデータベースでも同じです。途中で止まった場合 (停止を押した、または上限に達した場合)、行はローカルのままですが、グラフとピボットテーブル はサーバー側に残ります。結果の一部を集計すると誤った数値になるためです。また、この状態でグリッドを並べ替えても、対象は取得済みの行だけで、結果全体ではありません。

更新すると固定が 解除され、クエリが再実行されます。 固定するかどうかに関係なく、いったんグリッドを通ったページはローカルに保持されます。そこへ戻ってスクロールしても、データベースには問い合わせません。 固定処理は同時に一つだけです。結果が二つ開いているとき、もう一方で結果を固定を押すと理由とともに拒否され、進行中の処理は中断されません。止めるには、その処理のタブで停止を使ってください。

結果グリッド: 行を返すクエリごとに、テーブル名のタブができます (SQL 全体はタブのヒントに表示)。 再実行するとこれらのタブは置き換わりますが、ピン留めしたタブ (タブを右クリック → 結果をピン留め) は比較用に残ります。× で結果を閉じます。タブの横の実行の要約には、返った行数とかかった時間、 またはエラーが赤で表示され、クリックするとメッセージが開きます。フッターにも行数と時間が表示され、 結果がまだ途中のときは次のブロックを取得と総数を数えるが現れます。グリッドの上のバーに 更新、固定、上限、分析メニュー、値、列、エクスポート (SQL をコピー、SQL を表示、SQL を生成) がまとまっています。ウィンドウが狭いと、 ボタンは消える前に文字を省きます。見出しには各列の型 (テキスト、数値、日付…) が表示され、 テーブルのキーの列には鍵が付きます。マウスを置くと型の名前が出ます。見出しをドラッグすると列を 並べ替えられ、列 (または見出しの右クリック) で列の表示・非表示と幅の調整ができます。この設定は 更新、上限の変更、並べ替えの後も残ります。

セル: NULL は淡い斜体で表示され、空の文字列と区別されます。数値は右揃えです。 複数のセルを選択すると、フッターに選択数と、数値ならその合計と平均が表示されます。値 (またはコンテキストメニューのパネルで値を表示) で、選択したセルの値全体を省略なしで横に表示し、 整形で JSON/XML を表示上だけ整えます。パネルのレコードボタンで値を行全体の転置表示 (1 行に 1 列、名前と値を並べて表示) に切り替えると、カーソルに追従します (セルのメニューの レコード全体を表示でも同じです)。セルのメニューのこの値で絞り込む / この値を除外は そのセルで WHERE を付けてクエリを再実行し、参照先レコードへ移動は列の外部キーをたどって 親テーブルをその値で照会します。

グリッドの検索と絞り込み: グリッドにフォーカスがあるときの Ctrl+F はグリッドを検索欄へ移り、 いずれかの列にその文字列を含む行だけを表示します。エディターにフォーカスがあるときの Ctrl+F は、これまでどおり SQL の検索です。隣のじょうごで詳細フィルター (列ごとの条件、AND/OR) が開き、絞り込んだ列の見出しには じょうごが付きます。グラフの棒、ピボットテーブルのセル、品質の頻出値をクリックすると選択になり、グリッドの上に タグとして表示されます (× で外せます)。フッターには、何行中何行が残ったかが表示されます。検索と絞り込みはローカルの コピー上で結果全体に適用されます。結果が全体で届いていればすぐに反映されます。最初の一部しかないときは、欄が 灰色になり理由が表示されます (画面上だけを絞り込むと、次の部分にある行が隠れてしまうため)。固定すると使えるように なります。検索や絞り込みが有効な間は、グラフ、ピボットテーブル、品質もグリッドと同じ範囲を対象にします。 これらはクエリを変えません。データベース側で絞るにはこの値で絞り込むを使うか、WHERE を書いてください。

グラフとピボットテーブル: 計算の場所。 分析メニューにはグラフ、 ピボットテーブル、品質、分析エリアがあり、分析の対象でローカルデータと テーブル全体(サーバー上)のどちらを使うかを選びます (有効な方にチェックが付きます)。結果が最初のページに 全部収まったときの既定はローカルです。LightNote は画面にある結果をそのまま集計し、軸や集計方法、 区間を変えるたびにデータベースへ問い合わせることはありません。ローカルのエンジンは DuckDB なので、サーバーでは その SQL が動かない Oracle、SQL Server、PostgreSQL、MySQL でもグラフが使えます。結果が途中で切れて 届いたときは、ローカルは理由付きで選べません。一部だけを集計すると誤った数値になり、切れたことを知らせても 防げません (グラフで読むのは棒の高さだからです)。サーバーを選ぶとクエリ全体を集計し、調整ごとに 1 回 クエリを実行します。グリッドで検索や絞り込みをしている間は選べません (絞り込んだ範囲はここにしかないため)。 データベースがテキストで返す数値列 (Oracle の NUMBER など) は数値として扱い、01310 の ような先頭ゼロの識別子はテキストのままです。Oracle、SQL Server、PostgreSQL、MySQL で結果がまだ途中のときは、 グラフは理由付きで灰色になり、結果を固定すると使えるようになります。

結果のデータ品質。 分析メニューの品質で、ファイルのテーブルと同じ列ごとの プロファイルがグリッドの横に開きます。計算は DuckDB が行います。結果が全体で届いた (または固定した) ときは ローカルのコピー上で、データベースが DuckDB のときはデータベース自体で計算します。Oracle、SQL Server、 PostgreSQL などで結果がまだ途中のときは、パネルが説明できない理由を示し、その場で結果を固定を 提案します。固定が上限で止まった場合は、クエリを絞り込むよう勧めます (一部のプロファイルは別のテーブルを 説明することになるため)。頻出値をクリックするとグリッドが絞り込まれます (検索と同じく選択になります)。 データベース側で絞るには、セルのメニューのこの値で絞り込むを使ってください。

分析に使われたデータの範囲。グラフ、ピボットテーブル、品質、分析エリアの上に、計算がすべてのデータを使ったか(ローカルのコピーでは行数が自動で数えられます)、それともデータベース側でクエリ全体に対して計算されたかを示す行が表示されます。データベース側では、数えるとクエリがもう一度実行されるため、行数は行数をカウントリンクで数えます。固定が途中で止まり、グリッドに検索やフィルターがあるときは、取得した分だけしか分析できないため、行は警告の色でデータの一部と表示します。同じ文は分析エリアのレポートの凡例にも入ります。

データのスナップショット: 保存したスクリプトの分析は、データではなくカードを スクリプトの横に保存します。もう一度見るにはデータベースが必要です。分析エリアの データのスナップショット ボタンは、結果全体をカードと一緒にスクリプトの横の Parquet ファイルに保存します。このファイルを開くと、接続なしで、その時点のデータに対する同じ分析が 表示されます。明示的な操作で、ウィンドウは事前に知らせます。ファイルはデータベースの データのコピーであり、フォルダーを Git に入れたり共有したりすると一緒に渡ります。結果全体が ここにあるときだけ使えます。最初の部分しかない場合は、先に固定してください (ボタンのヒントに 表示されます)。

実行計画: 実行のメニューにある 実行計画 は、カーソル位置の文の 計画を取得し (SQLite、DuckDB、PostgreSQL、MySQL)、計画 タブに表示します。ステップの ツリーを示し、最も重いステップを強調して、その意味を一文で説明します。PostgreSQL と MySQL では 自身のコスト (そのステップのコストから内側のステップのコストを引いたもの) が最も高い ステップと全体に占める割合、DuckDB では最も多くの行を生成するステップ、コストを示さない SQLite ではテーブル全体の読み取りです。インデックスを持つデータベースでステップがテーブル全体を読む ときは、絞り込む列のインデックスでそれを避けられることが多いと添えます (列指向の DuckDB では テーブル全体の読み取りは普通なので、この助言は出ません)。クエリの別名 (FROM orders o) はテーブル名に置き換えます。テキストで表示 は同じツリーをインデント付きで示し、 計画をコピー でコピーできます。数値はプランナーの見積もりで、クエリは実行されません。 入力した EXPLAIN も、LightNote が結果を認識できれば計画タブで開き、認識できない ものはグリッドに表示されます。1 つの文で実行計画を返さないデータベース (SQL Server、Oracle) では この項目は無効になり、理由がツールチップに表示されます。

AI で分析: 強調表示はどのステップが重いかを示します。計画タブの AI で分析 ボタンは、プランナーがなぜそれを選んだのか、何を変えるべきかを AI に 尋ねます。クエリ、計画、読み込むテーブルのスキーマが送信されます。既にあるインデックスも含むので、 AI が既存のインデックスの作成を提案することはありません。値は送信前に取り除かれ (引用符で 囲まれたテキストと数値は ? になり、コメントは削除されます)、送信内容を表示で 送られる内容を正確に確認できます。提案は新しいスクリプトとしてエディターで開き、何も実行されません。

スキーマ

テーブルのデータ: スキーマツリーでテーブルをダブルクリックすると、 そのタブがデータサブタブで開きます。グリッドの上には WHERE と ORDER BY の 2 つの欄があり、Enter で適用されます。どちらも データベースに送られるので、画面に表示されている行だけでなくテーブル全体が 対象です。列の見出しをクリックしてもデータベース側で並べ替え(昇順、降順、並べ替え なし)、ORDER BY に入力されます。セルのメニューのこの値で絞り込むは 条件を WHERE に追加し、見える形で編集できます。このタブはスクリプトの タブと同様に、データベースとの専用セッションを持ちます。プロパティから テーブルを開いた場合はデータを照会しません。クエリが実行されるのはデータ サブタブが表示されたときだけです。ORDER BY が空のときは、行は主キーの順に並びます(どのキーかは欄に表示されます)。順序がまったくないと、データベースはページ間で同じ並びを保証せず、スクロールで行が重複したり抜けたりすることがありました。見出しで並べ替えたときは、同じ値の行をキーで並べます。

データの編集: 主キー(または NOT NULL 列の一意キー)のあるテーブルの グリッドで、セルをダブルクリックするか、F2 を押すか、そのまま入力を始めます。 エディターは列の型に合わせたものになります。日付はカレンダー、真偽値はリスト、 数値は数値しか受け付けない入力欄、JSON は確定時に検証されます。消した文字列は 空の文字列になり、NULL にはなりません。NULL は専用の操作です(セルのメニューの NULL に設定、または長い文字列の編集にも使える値パネルの NULL ボタン)。 Insert で新しい行を追加します(既定値のままの列にはデータベースの既定値が 入ります)。行を複製は選択中の行をキー以外コピーし、Del で行を削除対象に します(もう一度で解除)。これらはすぐにはデータベースへ送られません。変更は 保留としてグリッドに色分けされ(変更は琥珀色、新規は緑、削除は取り消し線付きの赤)、 上の帯に件数が表示されます。確認…は実行される SQL を表示し、スクリプトとして コピーします。保存はすべてを1 つのトランザクションで書き込み、各 UPDATE と DELETE がちょうど 1 行に及ぶことを確かめます。読み込み後に別のセッションが行を変更・ 削除していた場合や、どれかの命令が失敗した場合は何も書き込まれず、変更は グリッドに残ります。破棄ですべて元に戻します。保留中の変更がある状態でグリッドを 再読み込みしたり、フィルターを変えたり、タブを閉じたりすると、先に確認されます。

グリッドが編集できないときは、理由を示します(ボタンのヒントと、編集しようと したときの帯)。主キーも NOT NULL 列の一意キーもないテーブルは読み取り専用です。キーが なければ、各編集がどの行を変えるか判断できません。スクリプトタブでも、クエリが 1 つのテーブルからの SELECT で、その列を列挙し(または SELECT * を使い)キーを含んでいれば、結果を編集できます。結合、サブクエリ、 計算列や改名した列、DISTINCT、GROUP BY、UNION があると結果は読み取り専用です。バイナリ列はグリッドでは編集できません。また、タブで トランザクションが開いていて(自動コミットがオフ)保留中の命令がある場合は、保存の前に 確定か取り消しをしてください。グリッドを保存すると、それらも一緒に確定されてしまいます。

オブジェクトのプロパティ: スキーマツリーのテーブルで F4 を押す(またはコンテキストメニューのプロパティ)と、そのタブが構造の側で開きます。データの隣に 4 つのサブタブがあります: 列(番号・名前・型・NULL 可否・既定値、主キー列にはキーアイコン)、 キー(主キー・外部キー・一意・チェック制約。外部キーをダブルクリックすると参照先テーブル が開きます)、インデックス、DDL — オブジェクトの CREATE TABLE で、 コピー・.sql として保存・編集可能なタブで開くことができます。データベースが DDL を直接提供しない場合(PostgreSQL と SQL Server にはそのコマンドがありません)、LightNote は メタデータから再構築します(DDL コマンドが権限不足で拒否された場合も同じです)。その旨は タブに明示されます。列のカタログさえ読み取れない場合(権限がない、カタログが利用できない)は 再構築の材料がありません。タブは黙って空になるのではなく、その理由を表示します。テーブルのコンテキストメニューにはタブを 開かずに DDL をコピーする項目もあります。

オブジェクトツリー: 接続パネルの一覧の下にある、選択した 接続のツリーはテーブルとビューを分けて(それぞれ専用のアイコン)表示し、 主キーに含まれる列には鍵のアイコンを付けます。ツリーにはプロシージャと関数、トリガー、シーケンスも表示されます(データベースにある場合)。プロシージャ・関数・トリガーをダブルクリックすると、そのソースコードが接続の SQL コンソールで開きます。各テーブルの横にはおおよその行数が、ツールチップにはコメントが表示されます。これはデータベースが保持する推定値で、COUNT(*) ではありません。システムスキーマ(SYS、pg_catalog など)は非表示で、一覧の末尾の項目で表示できます。フィルター欄は読み込み済みのものをすぐに絞り込み、2 文字以上でデータベースも検索します。誰も展開していないものは上部のデータベース内フォルダーに表示されます。スクリプト内では Ctrl+Alt+O(接続セレクターのテーブルへ移動…)でキーボードから検索でき、テーブル名の上で F12 を押すとそのタブが開きます。

メタデータを更新。スクリプトで CREATE、ALTER、DROP、RENAME を実行すると、ツリー、補完、テーブルのプロパティが数秒後に自動でテーブル・列・型を読み直します。ツリーで開いていたものは閉じません。自動コミットがオフのときは、Commit(または Rollback)まで読み直しを待ちます。それまでは変更が他のセッションには存在しないためです。構造が外部で変わったとき(別のプログラム、マイグレーション)は、スクリプトのツールバー、接続メニュー、ツリーのフィルターの横にあるメタデータを更新ボタン、またはテーブルのプロパティの更新を使ってください。

スキーマの探索: テーブルを右クリックすると SELECT をエディターに挿入、データを表示、行数を数える、 修飾名をコピー、または SQL を生成サブメニュー → INSERT/UPDATE/MERGE を開けます。画面にテーブルの列が一覧表示され、含めると キーをチェックでき、ライブプレビューを表示してコマンドをエディターに挿入します (MERGE は ANSI で出力され、ドライバーが対応していない場合は警告が表示されます)。 結果グリッド上では、下部バーの SQL を生成ボタンが選択した行の値で INSERT/UPDATE/DELETE を生成します(クエリが単一テーブルの SELECT の 場合に利用可能)。ツリーで参照したテーブル名と列名は、接続の .sql エディターの 自動補完(Ctrl+Space)にも表示され始めます(追加のデータベースクエリは 行いません)。

ER 図: テーブル フォルダーのコンテキスト メニューの テーブルの ER 図 はすべてのテーブルを描きます。テーブルのメニューの ER 図 (このテーブルと 参照先のテーブル) は、そのテーブルと外部キーが指すテーブルを描きます。結果は データ辞書 内のノートで、mermaid erDiagram ブロックを含みます。 列と型、PK/FK、そして各外部キーをリレーションとして表示します (列が NULL を 許すときは省略可能、キーが主キーそのものなら 1 対 1)。ノートのテキストなので、Git で版管理でき、 他の図と同じように編集できます。40 個を超えるテーブルは除外され、その数がノートに書かれます。

ファイルをテーブルにインポート: ファイルをテーブルにインポート… (接続のメニューと テーブル フォルダーのメニュー) と ファイルをこのテーブルにインポート… (テーブルのメニュー) は、CSV、TSV、Excel スプレッドシートをデータベースに取り込みます。 結果をエクスポート の逆方向です。ウィンドウには各列で読み取った型付きのプレビューが表示されます。 型はすべてのセルが一致する場合にだけ採用されます (先頭にゼロのない整数 — 01310 はコードとしてテキストのまま —、ピリオドまたはカンマの小数、ISO 日付、真偽値)。 dd/mm/yyyy の日付は月が先の場合もあるのでテキストのままです。空のセルは NULL になります。 区切り文字はテーブル ビューと同じように判定されます。テーブルを作成 はファイル名を使い、 テーブルに追加 はファイルの列がテーブルにあるかを先に確認します。すべて1 つの トランザクションで行われ、1 行でも失敗すると何も残らず、このインポートで作成したテーブルは 削除されます。ここでもロックが適用され、読み取り専用の接続は拒否し、本番の接続は事前に確認します。 DuckDB 接続では CSV をデータベースが直接読み込み、行数の上限はありません。その他の接続では上限は 100,000 行です。

エクスポート・変数・トランザクション

結果のエクスポート: 結果グリッドを右クリックして結果をエクスポート...を選ぶと、 CSV(区切り文字・引用符文字・常に引用符で囲む・見出し行・NULL の表記)、 JSON Lines、SQL(テーブル名付きの INSERT 文)を、任意の行数上限付きで 書き出せます。エクスポートは画面に見えている分だけでなく、クエリ全体をストリーミング (ページングして再取得)で走査します。

本日のノートに結果を追加: グリッドの エクスポート メニューの 本日のノートに追加 は、画面に表示されているとおりの表 (表示中の列をグリッドの順序で、 検索とフィルターを適用したもの) を追加し、そのすぐ下に クエリ を sql ブロックで 追加します。数値がどこから来たかをノートに残せます。NULL は NULL と表示され、数値は 右揃えになり、表が結果全体でない場合 (最初の 200 行、または読み込み済みの行のみ) は斜体の行で 示されます。

スクリプト変数: スクリプトの行に @set 名前 = 値 と書くと 変数を定義できます。接頭辞 @ によりデータベースには送られません (Postgres/DuckDB/SQL Server の本来の SET とは衝突しません)。 :name の参照は実行前に置き換えられます(文字列とコメントの外側のみ。 キャスト ::type や :1 のようなバインドはそのままです)。 値のない :name があると、実行前に入力を求めます。実行のメニューの 変数… で、定義済みの変数の画面(編集/追加/削除)を開きます。

パラメーター: :名前 を含む命令を実行すると (PostgreSQL 以外では ?、?1、?2 も。PostgreSQL では ? は JSON の演算子です)、クエリのパラメーター ウィンドウに命令と、 前回使った値が入ったすべてのパラメーターが表示され、各パラメーターの一覧には以前の値が 残ります。別の値でやり直すには、欄を 1 つ変えるだけです。値はそのまま SQL に入るので、 文字列は単一引用符で囲みます ('abc')。スクリプトが @set で定義 したものは確認されません。実行のたびに確認する をオフにすると、そのタブは確認せず に前回の値を使います。後で変えるには 変数… を使います。

クエリの履歴: 実行のメニューの 履歴… で、この接続で 成功した最近の文を SQL / 日時 / 所要時間 / 行数 の列で一覧するウィンドウが開き ます。1 つ選んで 再実行、エディターに挿入、コピー(ダブルクリックで 挿入)するか、履歴をクリア を使います。履歴はローカルのマシンにだけ保存 されます(Git にも .lnc にも入りません)。

すべての接続の履歴: 履歴ウィンドウですべての接続をオンにすると、すべてのデータベースの クエリが新しい順に接続の列付きで表示され、フィルター欄でまとめて検索できます。再実行はこの接続のクエリ だけに使えます。ほかの接続のクエリはエディターに挿入されるので、正しいデータベースで実行してください。

トランザクション: 自動コミット(既定でオン)は実行の メニューにあります。オフにすると、変更は確定(Commit)するか取り消す (Rollback)まで保留され、タブのツールバーに両方のコマンド付きで トランザクション · 未確定 N が表示されます。トランザクションが開いたまま タブを閉じる、接続を切り替える、切断するときは、どうするかを確認します。

目次

編集

ツール

自動化(AI / スクリプト)

リファレンス