MySQL5.0のテーブルから次の制約情報を取得する方法を見つけようとしています。
そのための1つまたは複数のクエリの構文は何ですか? this に近い気がしますが、例はありません。
SHOW COLUMNS コマンドは、テーブルの主キーと一意の列を表示します。
外部キーに関しては、couldは、 SHOW CREATE TABLE コマンドのようなものを使用して、複製に必要なDDLステートメントを出力します。テーブル。
MySQLの場合:
1)テーブル/フィールドのメタデータを取得
SELECT table_schema, table_name, column_name, ordinal_position, data_type,
numeric_precision, column_type, column_default, is_nullable, column_comment
FROM information_schema.columns
WHERE (table_schema='schema_name' and table_name = 'table_name')
order by ordinal_position;
[〜#〜]または[〜#〜]
show fields from 'table_name'
2)Foregn Keys参照テーブルを取得します
SELECT `REFERENCED_TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE
`TABLE_NAME` = 'table_name' AND
`COLUMN_NAME` = 'Column_Name'
)テーブルのインデックス(プライマリおよび外部)を取得します
show keys from `table_name`
5)すべてのインデックスと参照テーブルを取得します
SELECT *
FROM `KEY_COLUMN_USAGE`
WHERE
`TABLE_NAME` = 'table_name' AND
`TABLE_SCHEMA` = 'schema_name'
[〜#〜]または[〜#〜]
SELECT *
FROM `REFERENTIAL_CONSTRAINTS`
WHERE
`TABLE_NAME` = 'table_name' AND
`CONSTRAINT_SCHEMA` = 'schema_name'
6)ストアドプロシージャを取得します
SELECT *
FROM `ROUTINES`
WHERE
`ROUTINE_SCHEMA` = 'schema_name'
7)トリガーを取得
SELECT *
FROM `TRIGGERS`
WHERE
`TRIGGER_SCHEMA` = 'schema_name'
8)イベントを取得
SELECT *
FROM `EVENTS`
WHERE
`EVENT_SCHEMA` = 'schema_name'
9)VIEWSを取得
SELECT *
FROM `VIEWS`
WHERE
`TABLE_NAME` = 'table_name' AND
`TABLE_SCHEMA` = 'schema_name'
使用する
show fields from table_name
show keys from table_name
主キー、外部キー、一意などを取得します。
外部キーによって参照されるテーブルを取得するには、次を使用します。
SELECT `REFERENCED_TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE
`TABLE_NAME` = '[table_containing_foreign_key]' AND
`COLUMN_NAME` = '[foreign_key]'
[table_containing_foreign_key]
と[foreign_key]
を値に置き換えます
select Queryを使用して同じものを取得するには、以下を使用します。
SELECT table_schema, table_name, column_name, ordinal_position, data_type, numeric_precision, column_type FROM information_schema.columns WHERE table_name = '[TABLE_NAME]';
あなたはそれを試してみるべきです。 INFORMATION_SCHEMAはいくつかの標準の一部であり、他のデータベースでも(ほとんど)同様の方法でサポートされています。この標準は文書化する必要があります-あなたはその文書を探すことができます。
ただし、主な方法は、一連のテストテーブルを作成してから、INFORMATION_SCHEMAを調べてそこに何があるかを確認することです。