●外部キーの設定例 create table goods3( goods_id int primary key, name varchar(10), price int ); create table sales3( id int primary key, goods_id int , d date, foreign key(goods_id ) references goods3(goods_id ) ); ######################################################################## ●複数カラムのインデックス(複合インデックス)は、 インデックス化された列の値を連結した値になりm、ソート(並び替え)されます。 MySQL では、WHERE 節内でインデックスの第 1 列を指定する場合、他の列の値を指定しなくても、検索が高速化できるように複合インデックスが使用されます。 次のようなテーブルが定義されているとします。 CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first_name) ); ここで、インデックス name は、last_name と first_name に対する複インデックスです。 このインデックスは、last_name の範囲、または last_name と first_name の両方の範囲の値を指定するクエリに使用できます。 したがって、name インデックスは次のようなクエリに使用されます。 mysql> SELECT * FROM test WHERE last_name="Widenius"; mysql> SELECT * FROM test WHERE last_name="Widenius" -> AND first_name="Michael"; ######################################################################## ●MySQLでは以下のようなクエリーでカラム名を変更する。 ALTER TABLE <テーブル名> CHANGE <古いカラム名> <新しいカラム名> <型情報>; ALTER TABLE test CHANGE num number int; ALTER TABLE test CHANGE name nickname varchar(255) NOT NULL; このとき型情報を変更しないとしても型情報を書かなければならない。 型情報には、NOT NULLやAUTO_INCREMENTの情報が含まれる。 以下のようなクエリーで、同時に複数のカラム名を変更することもできる。 ALTER TABLE <テーブル名> CHANGE <古いカラム名> <新しいカラム名> <型情報>, CHANGE <古いカラム名> <新しいカラム名> <型情報>, ....; ALTER TABLE test CHANGE id login_id int, CHANGE name login_name varchar(255);