MySQL 5.0 のテーブルから次の制約情報を取得する方法を見つけようとしています。
- 主キー
- 外部キーとテーブル参照
- ユニークな列
そのためのクエリの構文は何ですか? 私はこれに近いと感じていますが、例はありません。
MySQL 5.0 のテーブルから次の制約情報を取得する方法を見つけようとしています。
そのためのクエリの構文は何ですか? 私はこれに近いと感じていますが、例はありません。
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'
3) テーブルのインデックス (プライマリおよび外部) を取得する
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) ビューを取得する
SELECT *
FROM `VIEWS`
WHERE
`TABLE_NAME` = 'table_name' AND
`TABLE_SCHEMA` = 'schema_name'
SHOW COLUMNSコマンドは、テーブルの主キーと一意の列を表示します。
外部キーに関しては、テーブルの複製に必要な DDL ステートメントを出力するSHOW CREATE TABLEコマンドのようなものを使用できます。
使用する
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]
あなたの価値観を置き換える
試してみてください。INFORMATION_SCHEMA はいくつかの標準の一部であり、他のデータベースでも (ほぼ) 同様の方法でサポートされています。この標準は文書化する必要があります。その文書を探すことができます。
しかし、主な方法は、一連のテスト テーブルを作成し、そこにあるものを確認するために INFORMATION_SCHEMA を調べることです。