MariaDBデータベースにテーブルが存在するかどうかを確認する4つの方法があります。
information_schema.TABLES
表
information_schema.TABLES
テーブルには、さまざまな非TEMPORARY
に関する情報が含まれています テーブル(情報スキーマデータベースのテーブルを除く)とサーバー上のビュー。
このテーブルをクエリする例を次に示します。
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
結果:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | PetHouse | pets | BASE TABLE | +--------------+------------+------------+
ここでは、Pets
というベーステーブルを返しました。 PetHouse
というデータベースから 。 TABLE_SCHEMA
で結果をフィルタリングせずにこれをクエリする すべてのデータベースからベーステーブルを返します。 TABLE_TYPE
でフィルタリングせずにクエリを実行する すべてのテーブルタイプを返します。
そのすべての情報が必要ない場合は、次のようにすることができます:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
結果:
1
または、カウントを取得することもできます:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
結果:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
SHOW TABLES
コマンド
SHOW TABLES
コマンドは非TEMPORARY
をリストします 特定のデータベース内のテーブル、シーケンス、およびビュー。 WHERE
を使用できます 特定のタイプに絞り込むための句。
FULL
も使用できます タイプを表示する2番目の列を返す修飾子:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_pethouse LIKE 'Pets';
結果:
+--------------------+------------+ | Tables_in_pethouse | Table_type | +--------------------+------------+ | Pets | BASE TABLE | +--------------------+------------+
この場合、データベース名はpethouse
です。 、したがって、最初の列はTables_in_pethouse
。
SHOW TABLE STATUS
コマンド
SHOW TABLE STATUS
コマンドはSHOW TABLES
に似ています コマンドですが、それぞれに関するより広範な情報を提供します(TEMPORARY
以外 )テーブル。
例:
SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';
結果:
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | 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 | Max_index_length | Temporary | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | Pets | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 32768 | 0 | NULL | 2021-04-01 15:42:43 | NULL | NULL | utf8mb4_general_ci | NULL | | | 0 | N | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
mariadb-show
クライアント
これを行う別の方法は、mariadb-show
を使用することです。 効用。
このオプションを使用するには、コマンドラインプロンプト/ターミナルウィンドウを開き、次のコマンドを実行します(pethouse
を置き換えます) 興味のあるデータベースを使用):
mariadb-show pethouse;
結果:
+---------------+ | Tables | +---------------+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +---------------+
これにより、ビューとテーブルが返されます。
出力には、いくつかの特権を持っているデータベース、テーブル、または列の名前のみが表示されます。
データベースが指定されていない場合は、一致するすべてのデータベースが表示されます。テーブルが指定されていない場合は、データベース内の一致するすべてのテーブルが表示されます。列が指定されていない場合は、テーブル内の一致するすべての列と列タイプが表示されます。
クライアントはmysqlshow
として実行することもできます :
mysqlshow pethouse;
このユーティリティは、--user
などのかなりの数のオプションを受け入れます (ユーザー名を渡すことができるように)、--password
(パスワードを渡すことができるように)など
オプションの完全なリストについては、MariaDBのドキュメントを参照してください。
テーブルを作成する前に、テーブルがすでに存在するかどうかを確認してください
テーブルが存在しない場合にテーブルを作成する必要がある場合は、IF NOT EXISTS
を使用できます。 CREATE TABLE
の句 声明。テーブルが存在しない場合は作成されます。すでに存在する場合、作成されません。
例については、MariaDBにテーブルが存在しない場合にのみテーブルを作成する方法を参照してください。