MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLストアドプロシージャでテーブルを作成する方法

MySQLでは、ストアドプロシージャの中にCREATE TABLE文を組み込むことで、テーブル作成処理を自動化できます。本記事では、Id・UserFirstName・UserLastNameの3つのカラムを持つテーブル「DemoTable」を作成するストアドプロシージャの作成から実行までの手順を解説します。

1. ストアドプロシージャの作成

まずDELIMITERコマンドで区切り文字を「//」に変更します。これは、プロシージャ内のセミコロン(;)が通常のSQL文の終端として誤認識されるのを防ぐためです。続いて、BEGIN〜ENDブロック内にCREATE TABLE文を記述します。

mysql> DELIMITER //
   mysql> CREATE PROCEDURE Stored_Procedure_CreatingTable()
   BEGIN
      create table DemoTable
      (
      Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
      UserFirstName varchar(20),
      UserLastName varchar(20)
      );
   END;
   //
   Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

この例では、IdカラムにAUTO_INCREMENTPRIMARY KEYを設定しているため、レコードを挿入するたびに一意の番号が自動的に採番されます。最後にDELIMITERを元の「;」に戻すことを忘れないようにしましょう。

2. ストアドプロシージャの実行

作成したストアドプロシージャは、CALLコマンドを使って呼び出します。これにより、プロシージャ内のCREATE TABLE文が実行され、テーブルが生成されます。

mysql> call Stored_Procedure_CreatingTable();
Query OK, 0 rows affected (0.18 sec)

3. テーブル構造の確認

DESCコマンドを実行して、テーブルが正しく作成されているか確認します。

mysql> desc DemoTable;

実行すると、以下のような出力が得られます。

+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| Id            | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserFirstName | varchar(20) | YES  |     | NULL    |                |
| UserLastName  | varchar(20) | YES  |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+
3 rows in set (0.04 sec)

出力結果を見ると、IdカラムにはPRI(主キー)とauto_incrementが設定されており、テーブルが意図どおりに作成されたことがわかります。このようにストアドプロシージャを活用すれば、複数の環境へのテーブル展開や初期化処理を効率化できます。

  1. MySQL Workbenchでストアドプロシージャを作成・実行する方法

    MySQL Workbenchでストアドプロシージャを作成する手順 まずは、ストアドプロシージャを作成してみましょう。以下は、MySQL Workbenchを使用してストアドプロシージャを作成するためのクエリ例です。 use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE="HELLO"; SELECT CONCAT(MESSAGE, ,

  2. MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法

    MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St