• 締切済み

SQLのPRIMARY KEYの後のKEYについて

SQLの超初心者です。 SQLのPRIMARY KEYの後のKEYについてご教授ください。m(__)m CREATE TABLE ***** (   shipping_id NOT NULL default 0,   order_date datetime NOT NULL default 0000-00-00 00:00:00,     ・     ・   PRIMARY KEY (shipping_id),   KEY order_date (order_date) ) の様に参考書に記載があるのですが、 KEY order_date (order_date) の部分の意味がわかりません。 どなたか詳しい方アドバイスお願いします。

みんなの回答

回答No.1

>参考書に記載がある その書籍は、何らかのRDBMSを前提にしたものではないですか? 定義系SQL(DDL)は、RDBMSによる仕様差が大きい部分です。 primary key・・・主キー。重複禁止。nullも禁止。 unique・・・表定義中で定義すること以外は、create unique indexと同じ。 key・・・表定義中で定義すること以外は、create indexと同じ。 create unique index・・・重複禁止。nullは重複値とは扱わない。(※SQL Serverを除く) create index・・・重複可。

abuhiro
質問者

補足

返信ありがとうございます。 DBはMySQLをデフォルトで使用しています。 TABLE作成時にインデックスを付与するのが、KEYだったのですね。 勉強になりました。 ただ、理解できないのがテーブルの設計用に表が掲載されており、 インデックスフィールド order_date ○ shipping_date ○ users_id ○ item_id ○ quantity ○ sale_price ○ payment ○ state ○ の合計8個に○が付いているのに対し、 作成するSQL文では、 PRIMARY KEY (shipping_id), KEY order_date (order_date) KEY shipping_date (shipping_date) KEY users_id (users_id) KEY item_id (item_id) KEY remote_addr (remote_addr) と主キーを合わせても6個しかありません。 ちなみに、当参考書はかなり誤字脱字があり、都度修正しながら進めています。(PHPやHTML部分だけはなんとか修正できてます。) また、KEY・・・・(・・・・)の確固の意味がわかりません。 さらに、別参考書で読んだのですが、インデックスキーは 1テーブルにつき、2,3個にしておかないとパフォーマンスが低下すると記載されていました。 この辺りも詳しくしりたいので、ぜひご教授よろしくお願いします。 m(_ _)m

関連するQ&A