MySQLデータベースにテーブルが存在するかどうかを確認する5つの方法があります。
table_exists() 手順
MySQLでは、sys.table_exists() ストアドプロシージャは、特定のテーブルが通常のテーブルTEMPORARYとして存在するかどうかをテストします テーブル、またはビュー。このプロシージャは、テーブルタイプをOUTで返します。 パラメータ。
例:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type; 結果:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
指定された名前の一時テーブルと永続テーブルの両方が存在する場合は、TEMPORARY 返されます。
information_schema.TABLES 表
テーブルが存在するかどうかを確認する別の方法は、information_schema.TABLESをクエリすることです。 表:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; 結果:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
この場合、Artistsというベーステーブルを返しました。 musicというデータベースから 。 TABLE_SCHEMAで結果をフィルタリングせずにこれをクエリする すべてのデータベースからベーステーブルを返します。 TABLE_TYPEでフィルタリングせずにクエリを実行する すべてのテーブルタイプを返します。
そのすべての情報が必要ない場合は、次のようにすることができます:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
); 結果:
1
または、カウントを取得することもできます:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; 結果:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
SHOW TABLES コマンド
SHOW TABLES コマンドは非TEMPORARYをリストします 特定のMySQLデータベース内のテーブル、シーケンス、およびビュー。 WHEREを使用できます 特定のタイプに絞り込むための句。
FULLも使用できます タイプを表示する2番目の列を返す修飾子:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums'; 結果:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
この場合、データベース名はmusicです。 、したがって、最初の列はTables_in_musicです。 。
SHOW TABLE STATUS コマンド
MySQLでは、SHOW TABLE STATUS コマンドはSHOW TABLESに似ています コマンドですが、それぞれに関するより広範な情報を提供します(TEMPORARY以外 )テーブル。
例:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums'; 結果:
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Albums | InnoDB | 10 | Dynamic | 20 | 819 | 16384 | 0 | 32768 | 0 | 21 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
mysqlshow クライアント
MySQLデータベースのテーブルを確認する別の方法は、mysqlshowを使用することです。 クライアント。
このユーティリティを使用するには、コマンドラインプロンプト/ターミナルウィンドウを開き、次のコマンドを実行します。
mysqlshow --user root --password music;
必ずmusicを置き換えてください 興味のあるデータベースとroot 該当するユーザーと。 --password ビットを指定すると、ユーザーはパスワードの入力を求められます。
結果:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
mysqlshow クライアントはビューとテーブルを返します。
出力には、ユーザーがいくつかの特権を持っているデータベース、テーブル、または列の名前のみが表示されます。
データベースが指定されていない場合は、一致するすべてのデータベースが表示されます。テーブルが指定されていない場合は、データベース内の一致するすべてのテーブルが表示されます。列が指定されていない場合は、テーブル内の一致するすべての列と列タイプが表示されます。
テーブルを作成する前に、テーブルがすでに存在するかどうかを確認してください
テーブルが存在しない場合にテーブルを作成する必要がある場合は、IF NOT EXISTSを使用できます。 CREATE TABLEの句 声明。テーブルが存在しない場合は作成されます。すでに存在する場合、作成されません。
例については、MySQLでテーブルを作成する前にテーブルがすでに存在するかどうかを確認する方法を参照してください。