sql >> データベース >  >> RDS >> Mysql

MySQLにテーブルが存在するかどうかを確認する5つの方法

    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でテーブルを作成する前にテーブルがすでに存在するかどうかを確認する方法を参照してください。


    1. SQLDiagツールを使用してパフォーマンスデータを収集する| SQLServerのパフォーマンスのトラブルシューティング-6

    2. ユーザー設定のためのデータベース設計

    3. MySQLでvarcharフィールドを数値で並べ替える

    4. PostgreSQLで秒単位のタイムスタンプ間の違いを見つける