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

テーブルを動的に作成するMySQLクエリ?


このために、ストアドプロシージャを使用できます。 2つの列を持つテーブルを動的に作成しましょう。つまり、StudentIdはintで、StudentNameはvarchar-

mysql> DELIMITER $$
mysql> CREATE PROCEDURE creatingDynamicTableDemo(yourTableName
VARCHAR(200))
   -> BEGIN
   ->    SET @name = yourTableName;
   ->    SET @st = CONCAT('
   '>       CREATE TABLE IF NOT EXISTS `' , @name, '` (
   '>       `StudentId` int UNSIGNED NOT NULL AUTO_INCREMENT,
   '>       `StudentName` varchar(20) NOT NULL,
   '>    PRIMARY KEY (`StudentId`)
   '>    )
   '> ');
   -> PREPARE myStatement FROM @st;
   -> EXECUTE myStatement;
   -> DEALLOCATE PREPARE myStatement;
   -> END $$
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

上記では、StudentIdをPRIMARYKEYとして設定しました。

CALLコマンドを使用してストアドプロシージャを呼び出す-

mysql> call creatingDynamicTableDemo('DemoTable');
Query OK, 0 rows affected, 1 warning (0.65 sec)

これで、テーブルの説明を確認できます-

mysql> desc DemoTable;

出力

これにより、次の出力が生成されます-

+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| StudentId   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| StudentName | varchar(20)      | NO   |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

  1. MySQLプロシージャで一時テーブルを作成しますか?

    MySQLプロシージャで一時テーブルを作成するには、次の構文を使用します- CREATE PROCEDURE yourProcedureName()    BEGIN       CREATE TEMPORARY TABLE yourTemporaryTableName SELECT yourValue;    END 上記の構文を実装して一時テーブルを作成し、テーブルにいくつかのレコードを挿入してみましょう。以下は、ストアドプロシージャとその中に一時テーブルを作成するためのクエリです- mysql> DELIMIT

  2. MySQLで手動のAUTO_INCREMENT開始値を使用してテーブルクエリを作成しますか?

    まずテーブルを作成しましょう- mysql> create table DemoTable1907    (    UserId int NOT NULL AUTO_INCREMENT,    UserName varchar(20),    UserAge int,    UserCountryName varchar(20),    PRIMARY KEY(UserId)    )ENGINE=MyISAM,AUTO_INCREMENT=100;