特定のMySQLテーブルの詳細を取得するストアドプロシージャの作成方法
以下の例では、「tabledetails」という名前のストアドプロシージャを作成します。このプロシージャを呼び出すことで、データベースに格納されている特定のテーブルに関する詳細情報(カラム名、データ型、NULL許可の有無、キー情報など)をすべて取得できます。
実行例
mysql> DELIMITER //
mysql> Create Procedure tabledetails()
-> BEGIN
-> DESCRIBE Student_detail;
-> END //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> CALL tabledetails;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Studentid | int(11) | NO | PRI | NULL | |
| StudentName | varchar(20) | YES | | NULL | |
| address | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Query OK, 0 rows affected (0.04 sec)
解説
このプロシージャのポイントは以下のとおりです。
1. DELIMITERコマンド
ストアドプロシージャの本体には複数のSQL文が含まれるため、通常の文の区切り文字であるセミコロン(;)がプロシージャ定義の終了として解釈されないよう、DELIMITER //で一時的に区切り文字を変更しています。定義完了後はDELIMITER ;で元に戻します。
2. DESCRIBE文
プロシージャ内部ではDESCRIBE Student_detail;を実行しています。DESCRIBE文は指定したテーブルの構造情報を表示するコマンドで、各カラムの名前(Field)、データ型(Type)、NULL値の許可(Null)、キーの種類(Key)、デフォルト値(Default)、追加情報(Extra)が出力されます。
3. プロシージャの呼び出し
作成したプロシージャはCALL tabledetails;で実行できます。実行結果として、Student_detailテーブルの3つのカラム(Studentid、StudentName、address)の構造が表形式で表示されます。
なお、この方法を応用すれば、引数としてテーブル名を受け取るプロシージャを作成することも可能です。その場合はプリペアドステートメントと組み合わせることで、任意のテーブルの詳細を動的に取得できます。
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI
-
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