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

特定の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)の構造が表形式で表示されます。

なお、この方法を応用すれば、引数としてテーブル名を受け取るプロシージャを作成することも可能です。その場合はプリペアドステートメントと組み合わせることで、任意のテーブルの詳細を動的に取得できます。

  1. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI

  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