• ベストアンサー

データベースのテーブルやカラム情報の取得

データベースの定義を取得するSQL文を教えてください。 データベースはAccessとMySQLです。 得たい情報はデータベースにあるテーブルとカラムです。 例えば、テーブルがTblAとTblBがあって、 それぞれに整数型のFld1と文字型のFlb2があるとします。 この定義情報を取得したいのです。 テーブルだけでなくクエリ(ビュー)の定義情報も取得できるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえずMySQLの板なのでMySQLについて 基本構文SHOWをつかい、本件であれば SHOW COLUMNS FROM TblA; のようにして情報をえます。 フィールド名で絞り込みをする場合はLIKEがつかえます。

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/show-columns.html
Hirorin_20
質問者

お礼

ありがとうございます。 参考URLも見させていただきました。 まだ、SQL文実行していませんができそうです。

その他の回答 (3)

回答No.4

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で情報スキーマが実装されました。

Hirorin_20
質問者

お礼

ありがとうございました

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

mysqlですが、「infromation_schema」データベースの「TABLES」「COLUMNS」「VIEWS」あたりから情報を取得できると思います。

Hirorin_20
質問者

お礼

ありがとうございます。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

Accessについては デザインモードでテーブルを開けばそのような情報がでてくるとおもいます。 一括でとりたいということでしたら、ADOXをつかってVBAでがちがち書けば できますし、そのようなフリーソフトもたくさんあります。 たとえば、 http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_010_070.html クエリに関してはクエリをSQLビューで開けば(括弧だらけですが)SQLが見れます。 (MySQLについては全く知識がありません)

Hirorin_20
質問者

お礼

ありがとうございます。 デザインモードは解るのですが、テーブルやカラムが多いとき取り出すのが大変なので、レコードデータを操作するInsert文などと同じようなレベルでSQL文がないかと思いました。

関連するQ&A

専門家に質問してみよう