一回も披露したことのない豆知識

サンプルのCREATE TABLE文 の中に、
UNIQUE KEY user_name_index(user_name)

とあったのですが、意味を教えてください。

 自分で調べた限りは、UNIQUEというのはあったのですが、
 UNIQUE KEY が見つかりませんでした。
 UNIQUE KEY は、UNIQUEと同義なのでしょうか?
 あるいは、こういう書き方があるのでしょうか?

 また、CREATE TABLEの中で、user_nameカラムを作成しているのですが、
 user_name_index(user_name)では、何をしているのでしょうか?
 user_name_indexと別の名前でUNIQUE KEYに設定しているのでしょうか?

 それとも、_indexとついてるので、
 この書き方だけで、ユニークインデックスなるものにしているのでしょうか?

A 回答 (2件)

>UNIQUE KEY user_name_index(user_name)



user_name_indexという名前で、user_nameにユニークインデックスを設定しています

「user_name_index」は特に命名ルールがあるわけではなく
hogeでもfugaでもなんでもかまいませんが、本人が後から見てわかるようなものに
しておくのが賢明です

たとえば
(1)CREATE TABLE X (A INT,B INT,C INT,UNIQUE KEY D(A));
(2)CREATE TABLE Y (A INT UNIQUE,B INT,C INT);
(3)CREATE TABLE Z (A INT,B INT,C INT,UNIQUE KEY E(B,C));

(1)であればAフィールドをつかったDという名前のユニークキーを作りますし
(2)のような書き方でもユニークインデックスは設定できます
(この場合、インデックス名はAになります)
(3)のように複合インデックスを貼ることもできます
(この場合BとCの組み合わせがユニークであるという意味になります)
    • good
    • 0
この回答へのお礼

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

「たとえば」以下の具体的な説明が、大変参考になりましたー

お礼日時:2011/07/03 03:33

UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option ...]


http://dev.mysql.com/doc/refman/5.1/ja/create-ta …

ですから「UNIQUE」「UNIQUE INDEX」「UNIQUE KEY」は同義でしょう。

値が一意(unique)であることを保証する情報は,実表(create table)自体が持つのではなく,索引表(create unique index)が保持しています。
ですから,user_name_index が索引表名 [index_name] で,(user_name) が列名 (index_col_name,...) でしょう。
    • good
    • 0
この回答へのお礼

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

>ですから「UNIQUE」「UNIQUE INDEX」「UNIQUE KEY」は同義でしょう。
知りたかった情報なので、参考になりましたー

お礼日時:2011/07/03 03:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報