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

mySQL プライマリーキーのカラム名を取得したい

mySQLで、そのテーブルのプライマリーキーのカラム名を取得する方法を 教えてください。 よろしくお願いします。 http://oshiete1.goo.ne.jp/qa3699289.html のようなSQL文で取得できるのが理想です。

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

  • MySQL
  • 回答数2
  • ありがとう数8

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

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

>SHOWコマンドを使用する方法 いくつか方法があります。 1.DESCRIBE (1)概要  表の列構成を知りたい場合などに有用 (2)マニュアル記載  http://dev.mysql.com/doc/refman/5.1/ja/describe.html (3)使用例  DESC 表名 (4)備考  主キーを複数列で構成した場合など、構成順は得られない 2.SHOW COLUMNS FROM (1)概要  表の構成列を知りたい場合などに有用 (2)マニュアル記載先  http://dev.mysql.com/doc/refman/5.1/ja/show-columns.html (3)使用例  SHOW COLUMNS FROM 表名 3.SHOW INDEXES FROM (1)概要  どのようなインデクスが定義済か調べる  主キーを定義(PRIMARY KEYを指定)すると、内部的にインデクスが定義されるので、この指定でも調べられる。 (2)使用例  SHOW INDEXES FROM 表名 4.SHOW CREATE TABLE (1)概要  DDLの逆生成する機能であり、主キーの定義状態も確認できる。ただし、実際に定義しようとしたものが、MySQLにより変更されている場合もある。  例 PRIMARY KEY(C1 ASC,C2 DESC)といった昇順・降順の混在は、MySQLでは実装しておらず、PRIMARY KEY(C1 ASC,C2 ASC)と勝手に変更される。 (2)使用例  SHOW CREATE TABLE 表名 5.INFORMATION_SCHEMAを検索 (1)標準SQLでも規定されているINFORMATION_SCHEMAが、MySQL 5.0からMySQLでも実装された。ただし、データベース名、カタログ名などに何が入るかはRDBMSにより違いがある。また、各RDBMSが拡張仕様として列を追加している。 (2)マニュアル記載 http://dev.mysql.com/doc/refman/5.0/en/key-column-usage-table.html (3)使用例 SELECT * FROM INFORMATION_SCHEMA KEY_COLUMN_USAGE WHERE TABLE_NAME='表名'

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

質問者からのお礼

ありがとうございます

その他の回答 (1)

  • 回答No.1

MySQLのバージョンは? MySQL 5.0以降なら、標準SQLでも規定されているinformation_schemaが実装され、SQLで検索可能です。 MySQL 4.1までなら、SQLで得ることはできず、SHOWコマンドを使用することになります。

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

質問者からのお礼

バージョンは5.0です。 information_schemaを見ましたところ、Primay Keyを確認できました。 ありがとうございました。 SHOWコマンドを使用する方法もお教え願いますでしょうか。 よろしくおねがいします。

関連するQ&A

  • テーブル名をカラムとして取得する方法

    テーブル名をカラムとして取得する方法はありますでしょうか? オラクル8とVB6でプログラムを組んでいます。 例 TABLE Aの内容 カラム1 1 2 3 TABLE B カラム1の内容 4 5 6 SQLは簡略化してかきます。下記のSQLを実行した場合、 select A.カラム1 from A union select b.カラム1 from b 1 2 3 4 5 6 を取得できます。 例えば、上記で、SQL実行後、 下記のような値を取得したいです。 1 ,Aのテーブルだよ 2 ,Aのテーブルだよ 3 ,Aのテーブルだよ 4 ,Bのテーブルだよ 5 ,Bのテーブルだよ 6 ,Bのテーブルだよ それぞれのテーブルの名前を別名で結果に格納したいのです。 何か方法はありますでしょうか? なければ、unionせずに、2回SQLを発行し、それぞれに、 プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

  • MySQLのカラム名を取得

    初歩的な質問で恐縮なのですが、PHPでカラム名の一括で取得する方法はありますか? id,name,kana・・・などを連想配列に入れて必要な情報を取得していたのですが、構造が変わるたびに入れ替えをしていたのですが、取得できるのであれば非常に重宝すると考えました。 ググるとそれらしいのが出てくるのですが、実装するとなかなかうまく動きません。 諸先輩方、どうぞ宜しくお願いします。 環境 MYSQL 5.6 PHP5

    • ベストアンサー
    • PHP
  • 値が「1」のカラム名を求めたい。

    任意の列の、値が「1」のカラム名を求めるにはどうしたらいいでしょうか? PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 そもそものテーブルの作り方がおかしいのかも知れませんが、 以下のようになっています。 このテーブルで、IDが「40」の列の値が「1」のカラム名を求めたいのです。 どの様にしたらいいでしょうか? ※カラム名「会員番号110」は実際は整数になっています。 ID  会員番号110  会員番号111  会員番号112  会員番号113  40  1       1       0       1       41  0       1       1       1   $sql ="select * from `member_sub_tbl` where `ID`='$ID'"; $result = mysql_query($sql, $con); //カラムの数を取得する $numFields = mysql_num_fields($result); for($i=0;$i<$numFields;$i++){ $nameFields[] = mysql_field_name($result, $i); } print_r($nameFields); これで、カラム名は全て配列に入るのですが、値が「1」のと限定する方法がわかりません。 ご教授、よろしくお願いいたします。    

    • ベストアンサー
    • PHP
  • mysql 空いているカラム

    恐れ入ります。mysqlで右端のカラムにデータを次々とupdateしたいのですが sql文はどのようにすれば良いでしょうか。 右端のデータの無いカラムのを探してupdateするイメージです。 よろしくお願いします。

  • プライマリーキー

    プログラムど素人です プライマリーキーはつけといたほうがいいでしょうか? プライマリーキーがないとプライマリーキー以外のカラムをselectするとき遅くなるのでしょうか? プライマリーキーのカラム名はid以外でもいいですか? 質問2 phpmyadminからindexを他のカラムにつけた場合はそのカラムにindexつけた後に追加された行も自動的にindexがついていますか? よろしくお願いします

    • ベストアンサー
    • MySQL
  • 特定のカラムを含むテーブル名を抽出したい

    50個程度のテーブルがあり、 そのテーブルの中から 「abc」というカラムが存在するテーブル名を取得するsql文を教えてください。 Oracleは10gです。 よろしくお願いいたします。

  • カラム名を取得

    テーブルの中のカラム名を取得するにはどうすればいいでしょうか? データがどのカラムに入っているかを調べたいのです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ストアド内でカラム名一覧を取得

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、  カラム名をカンマで繋げてひとつの変数に格納したいと思っています。  ※先の処理でカラムを取得したいテーブルをSELECTしており、  対象のテーブル名を変数に代入しています。  カラム一覧を取得するにあたり、以下のようにカーソルで習得し、  FETCHでカラム名を変数に格納しようと考えていましたが、  「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。  DECLARE CURS_test CURSOR FOR   SELECT name FROM dbo.syscolumns   WHERE id IN   (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名')   ORDER BY id, colid;  「sp_executesql」を使用してselect文を流そうとしたのですが、  複数ある列名を取得して、上記で記載しましたように  カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。  こういった場合、どのように考えて、どのように書けばよいのでしょうか。  まだ触り始めたばかりで、わからないことがわかっていない部分もあり、  質問内容でわかりにくい部分がありましたらご指摘いただければと思います。  どうぞよろしくお願いいたします。

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

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

    • ベストアンサー
    • MySQL
  • MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

    PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

    • ベストアンサー
    • MySQL