SQLエディタの基本的な機能で、このブログを読めば「初心者」の方も不便なくSQLエディタを使用できるようになるでしょう。
紹介する内容は、目次を参照ください。
本ブログでは以下の環境を使用します。実際に試される方は下記のブログを参照ください。
PostgreSQL(Ver 16.4) :PostgreSQLのインストール
A5M2(A5:SQL Mk-2)(Ver 2.19.2):A5M2(A5:SQL Mk-2)のインストール(Zip版)
外部データベースへの接続方法:【PostgreSQL】 「pgAdmin4」外部データベースサーバーの接続方法
A5M2(A5:SQL Mk-2) SQLエディタの使用方法
SQLエディタの表示
以下の手順でSQLエディタを起動します。但し、データベース「sales_db」をあらかじめ作成して接続しておいてください。
- 「ファイル」メニュー ⇀ 「新規」を選択
「SQL」ボタンをクリック。
「SQLエディタ」が表示されます。
SQLエディタでのSQL実行方法
SQLの実行方法を大別すると以下のようになります。
- キャレット位置
- キャレット位置以降
- 先頭から全て
- プロシージャモード
下記のSQLは「書籍売上管理システム」に必要な3個のテーブルを作成するSQLです。このSQLを参考に「キャレット位置」「キャレット位置以降」の実行を紹介します。
-- 顧客情報テーブル
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY, -- 顧客ID(自動生成)
customer_name VARCHAR(100) NOT NULL, -- 顧客名
email VARCHAR(150), -- メールアドレス
phone VARCHAR(20), -- 電話番号
created_at TIMESTAMP DEFAULT NOW() -- 登録日時
);
-- 書籍情報テーブル
CREATE TABLE books (
book_id SERIAL PRIMARY KEY, -- 書籍ID(自動生成)
title VARCHAR(150) NOT NULL, -- 書籍名
author VARCHAR(100), -- 著者名
price NUMERIC(10, 2) NOT NULL, -- 価格
stock INT DEFAULT 0, -- 在庫数
created_at TIMESTAMP DEFAULT NOW() -- 作成日時
);
-- 売上テーブル
CREATE TABLE sales (
sale_id SERIAL PRIMARY KEY, -- 売上ID
sale_date DATE NOT NULL, -- 売上日
customer_id INT REFERENCES customers(customer_id), -- 顧客ID
book_id INT REFERENCES books(book_id), -- 書籍ID
quantity INT NOT NULL, -- 購入数量
total_amount NUMERIC(10, 2) NOT NULL, -- 売上合計額
created_at TIMESTAMP DEFAULT NOW() -- 作成日時
);
「キャレット位置」の実行
キャレットとは「SQLエディタ」内でのカーソルの位置を表します。つまり、カーソール位置からのSQL文を「SQL区切り文字(;)」の位置まで実行します。
- 実行方法
- 「書籍売上管理システム」のテーブルを作成するSQLをエディタにコピーします。
- 上から2行目の「CREATE TABLE customers (」 にカーソルを置いて、「キャレット位置」を選択し、①のSQL実行ボタンをクリックします。
- 実行結果
「テーブル」を右クリックし「全てのデータベース情報の再読み込み」実行すると、SQL区切り文字「;」までが実行されcustomersテーブルが作成されているのが確認できます。
「キャレット位置以降」からの実行
書籍情報テーブル作成SQLの「CREATE TABLE books (」にカーソルを置いて、「キャレット位置以降」を選択しSQL実行ボタンをクリックします。
- 実行結果
SQL区切り文字「;」を超えてsalesテーブルの作成まで実行しているのが分かります。
「先頭から全て」の実行
作成された3個のテーブルを削除する下記のSQLコードを「先頭から全て」を選択して実行します。
※カーソルはSQLの最終行に置いています。
※3個のテーブルを削除する場合「外部キー制約」の関係で、salesテーブルから削除します。
- 実行結果
「テーブル」を右クリックし「全てのデータベース情報の再読み込み」実行すると3個のテーブルが全て削除されています。
-- 売上テーブルの削除
DROP TABLE IF EXISTS sales;
-- 書籍情報テーブルの削除
DROP TABLE IF EXISTS books;
-- 顧客情報テーブルの削除
DROP TABLE IF EXISTS customers;
「プロシージャモード」での実行
プロシージャは複数のSQL操作をまとめて実行するためのものです。例として書籍の在庫数を増減させるプロシージャを以下に示します。
update_stock プロシージャを作成するSQLをプロシージャモードで実行します。
update_stock プロシージャを作成するSQL。
CREATE OR REPLACE PROCEDURE update_stock(pk_book_id INT, quantity INT)
LANGUAGE plpgsql AS $$
BEGIN
-- 在庫を更新
UPDATE books
SET stock = stock + quantity
WHERE pk_book_id = book_id;
-- 在庫がマイナスにならないようにチェック
IF (SELECT stock FROM books WHERE pk_book_id = book_id) < 0 THEN
RAISE EXCEPTION '在庫がマイナスです。操作を確認してください。';
END IF;
END;
$$;
update_stock プロシージャが作成されました。
プロシージャを使用してみる
現在の在庫は下図のようになっています。
「A5:SQL Mk-2の基礎」が5冊売れたので在庫から5冊減らす下記のSQLを実行します。
-- 在庫を更新
CALL update_stock(3, -5); -- 書籍ID 3 の在庫を-5する
在庫数が8冊から3冊になりました。
SQLの保存と再利用
SQLエディタの内容保存
①のクローズボタンをクリックするとSQLを保存するか否かのメッセージが表示されます。ここで「はい」をクリックします。デフォルトではダウンロードフォルダに保存されます。
保存先を変更する
下記の方法で保存ダイアログを表示し、①で「保存先」②で「ファイル名」を指定して保存します。ワークスペースやプロジェクトフォルダに保存したい場合はここで指定します。
- ファイルメニューから保存する
- 上部メニューから「ファイル」→「名前を付けて保存」を選択
- ショートカットキーを使う
- Ctrl + S: 「名前を付けて保存」を直接実行
保存ダイアログ
保存したSQLの読み込み
保存したSQLを読み込む場合は下図のように「ドキュメントを開く」又は「ファイル」→「開く」で読み込むことができます。