• ベストアンサー
  • 困ってます

MySQLでテーブルとビューの区別

SHOW COLUMNSで特定テーブルのカラム名などを取得しています。 テーブルとビューとを区別したいのですが、区別情報を取得するにはどうしたらいいのでしょうか。

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1

使用しているMySQLのバージョンを、少なくともMySQL 5.0、5.1といったレベルまで提示するようにしてくyださい。大きな機能拡張だけでなく、一部の仕様変更があります。 MySQL 5.0以降であれば、情報スキーマ(information_schema)が実装されています。 表の基本情報を管理する tables表の table_type列で、実表かビュー表かの区別ができます。 表の列の基本情報を管理する columns表を、表名などで結合することで、いろいろな検索を行えます。 http://dev.mysql.com/doc/refman/5.1/ja/information-schema.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。

関連するQ&A

  • MySQLの現存するテーブルからcreate table文を起こす方法ありますか?

    MySQLの現存するテーブルからcreate table文を起こす方法ありますか? ・お金が掛からない ・CUIベースでできる が条件です。 show full columns from テーブル名; でテーブルの情報を参照できるところまでは理解したのですが。。 showとかの特殊コマンドでなくて、管理情報のテーブル(かビュー、あるいはシノニム)に直接クエリー投げれるなら、スクリプト組めばなんとかなりそうなのですが。。

    • ベストアンサー
    • MySQL
  • MySQLで論理名を取得する方法

    表題の通り、MySQLでカラムの論理名を取得する方法を探しています。 show full columns from table; でやってもダメでした、、、

  • 【MySQL】1対1でテーブルをあえて分ける

    mysqlを使用してデータベースを作成しているのですが データベースでテーブルを分けるときって 【アカウントテーブル】 ID アカウント 名 アカウント パスワード 名前 住所 電話番号 職業 【職業テーブル】 職業ID 職業名 というような1対多というのはよく組むとおもうんですが 下記のような 【アカウント情報テーブル(アカウント情報)】 アカウントID アカウント 名 アカウント パスワード 【アカウント情報テーブル(プロフィール情報)】 アカウントID 名前 住所 電話番号 職業 1対1の関係でテーブルをジャンル(エンティティ)ごとに複数にわけて あとでリレーションして一個にまとめるというのはデータベース的にあまりよろしくないのでしょうか? 何故、こんなことしたいかというと、1テーブルあたりのカラム数がかなり多くなってくると PHPでデータベースを書き込んだり呼び出したりする時に毎度多くのカラムを取り扱わなければならず SELECTで、カラムを一個一個選んで行かないといけません。 しかし、取り扱いたいカラムは大抵の場合あるジャンルだけなので リレーションするかしないかで、あるジャンルのデータだけを取り扱えれば 効率がよくなるのでは? というのがあります。 また、視覚的にカラムの把握もしやすくなります。 この1対1テーブルは、DB設計的にどうなでしょうか?

    • ベストアンサー
    • MySQL
  • ユーザーテーブルとシステムテーブルを区別したい

    カテゴリーが違ったらすみません。 VC++のプログラムで SQLTables,SQLBindCol関数を使ってDB上のテーブル名の一覧を取得しています。 この時、システムテーブル(例えば、AccessならMSys_...,Oracle9なら_ALL_INSTANTIATION_DDL等)も取得してしまいます。 ユーザーが生成したテーブルだけの一覧を作りたいので困っています。 ユーザーが生成したテーブルとシステムテーブルを区別する方法があったら教えて下さい。

  • MySQL(5.5)1テーブル内のカラム数制限

    首記、InnoDBであれば1000、MyISAMであれば4096という仕様かと思いますが、CREATE TABLEを実行するとカラム数1500くらいから #1117 Too many columns のエラーが出てしまい、カラム数の多いテーブル追加ができない状況です。 こちら、事象や考えられる原因、対処方法などご存じの方がいれば教示いただけますか。 またVARCHARの64K制限があるため多くのカラムはTEXTにしています。

    • ベストアンサー
    • MySQL
  • SQLサーバーとMySQLの大きな違いは?

    MySQLは良く使っていますが、たとえばテーブルの型情報などは、SHOW [FULL] COLUMNS FROM tbl_name テーブル名で得ることができますが、SQLServerでは、どのようにするのでしょうか? また、MySQLからSQLServer移行者にとって、注意すべき点などご存知の方教えて下さい。また、SQLServerのお勧め書籍も知りたいです。

  • TIMESTAMP型が含まれるテーブルの列名の取得

    Oracle 11gを使用しているSQL初心者です。 テーブルの列名を取得する方法についての質問です。 テーブルの列名を取得するときは以下のSQLで取れると思っています。 select column_name from user_tab_columns where table_name = 'テーブル名'; --実行結果-- COLUMN_NAME ------------------------------ NAME1 NAME2 しかし、テーブルにTIMESTAMP型が含まれていると 「レコードが選択されませんでした。」 と表示されます。 TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、 ご教示ください。よろしくお願い致します。

  • テーブルの情報を取得したい

    テーブルの情報を取得したい PHP5とPostgreSQL8.4.3を使っています。 フォームにテーブル名を入力して送信すると、そのテーブルの情報(カラム名、型名など)が表示され、 そのテーブルに対してレコードの追加や削除を行いたいのですが方法が分かりません。 どなたか分かる方いらっしゃいましたらお願いします。

  • MySQL VIEW連結時の設定

    テーブル名 : table1 カラム1 : id(int) カラム2 : table2_id(int) テーブル名 : table2 カラム1 : id(int) カラム2 : time(int) ← phptaimestamp この二つをviewとして連結したいです。 table1.table2_id と table2.id をキーにするとして、問題はtable2.dateの中身がphpのtimestampで格納されている事です。 VIEW上で連結した際に、このtable2.dateのphpで吐いたtaimestampを通常の20131015の様な変換を加えたいのですが、MySQLの中で完結する方法はあるのでしょうか? 長文で申し訳ありませんが、アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • クエリー : テーブル一覧&定義情報取得

    手元にOracleがなく、実際にクエリーを投げて試すこともできず困っています。以下について教えて下さい。 1.Oracleにて、自分で作ったテーブルの名前の一覧を取得するクエリーを教えて下さい。 2.各テーブルにおいて、定義情報(カラム名、カラムサイズetc)を取得するクエリーを教えて下さい。 よろしくお願いします。