- ベストアンサー
データベースのテーブルやカラム情報の取得
データベースの定義を取得するSQL文を教えてください。 データベースはAccessとMySQLです。 得たい情報はデータベースにあるテーブルとカラムです。 例えば、テーブルがTblAとTblBがあって、 それぞれに整数型のFld1と文字型のFlb2があるとします。 この定義情報を取得したいのです。 テーブルだけでなくクエリ(ビュー)の定義情報も取得できるでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずMySQLの板なのでMySQLについて 基本構文SHOWをつかい、本件であれば SHOW COLUMNS FROM TblA; のようにして情報をえます。 フィールド名で絞り込みをする場合はLIKEがつかえます。
その他の回答 (3)
- chukenkenkou
- ベストアンサー率43% (833/1926)
Accessについては分かりませんが。。。 表定義などの定義情報の管理方式は、各RDBMS毎に異なり、その情報取得方法もSQLで行えたり、特別なコマンドを使ったりと様々です。 そのため、共通の方式で参照できるように標準SQLで規定され、各RDBMSでも実装が進んでいるのが情報スキーマ(information_schema)です。 例えば、表名など、表の基本情報は、 information_schema.tables表 で参照でき、表名は table_name列で参照できます。 表の列名などの列の基本情報は、 information_schema.columns表 で table_name列で条件指定などして参照でき、列名は column_name列で参照できます。 例えば、次のようなSQLで参照できます。 select column_name from information_schema.columns where table_name='t1' order by ・・・ ただ、いくつか注意点があります。 (1)表名、列名などであれば、情報スキーマで同じようなSQLで得られる。 (2)データベース、スキーマなどの概念は、RDBMSにより異なっており、どこにどの情報が入るかは、RDBMS毎に確認する必要がある。 (3)より詳細な情報を得るには、システムカタログなどを参照する必要がある (4)主要なRDBMSでは、情報スキーマはほぼ実装されてきているが、未実装のRDBMSもある。また、情報スキーマで参照できる内容も、各RDBMSの各バージョン毎に順次、拡張されている最中。 などです。 MySQLでは、独自コマンドでdescがありますが、MySQL 5.0で情報スキーマが実装されました。
お礼
ありがとうございました
- nora1962
- ベストアンサー率60% (431/717)
mysqlですが、「infromation_schema」データベースの「TABLES」「COLUMNS」「VIEWS」あたりから情報を取得できると思います。
お礼
ありがとうございます。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
Accessについては デザインモードでテーブルを開けばそのような情報がでてくるとおもいます。 一括でとりたいということでしたら、ADOXをつかってVBAでがちがち書けば できますし、そのようなフリーソフトもたくさんあります。 たとえば、 http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_010_070.html クエリに関してはクエリをSQLビューで開けば(括弧だらけですが)SQLが見れます。 (MySQLについては全く知識がありません)
お礼
ありがとうございます。 デザインモードは解るのですが、テーブルやカラムが多いとき取り出すのが大変なので、レコードデータを操作するInsert文などと同じようなレベルでSQL文がないかと思いました。
お礼
ありがとうございます。 参考URLも見させていただきました。 まだ、SQL文実行していませんができそうです。