【A5:SQL Mk-2】SQLの実行方法とSQL保存の基礎をマスターしよう

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の実行方法を大別すると以下のようになります。

  1. キャレット位置
  2. キャレット位置以降
  3. 先頭から全て
  4. プロシージャモード

下記の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を保存するか否かのメッセージが表示されます。ここで「はい」をクリックします。デフォルトではダウンロードフォルダに保存されます。

保存先を変更する

下記の方法で保存ダイアログを表示し、①で「保存先」②で「ファイル名」を指定して保存します。ワークスペースやプロジェクトフォルダに保存したい場合はここで指定します。

  1. ファイルメニューから保存する
    • 上部メニューから「ファイル」→「名前を付けて保存」を選択
  2. ショートカットキーを使う
    • Ctrl + S: 「名前を付けて保存」を直接実行

保存ダイアログ

保存したSQLの読み込み

保存したSQLを読み込む場合は下図のように「ドキュメントを開く」又は「ファイル」→「開く」で読み込むことができます。

タイトルとURLをコピーしました