MySQLインデックスの概要
MySQLインデックス概要インデックスの利点:1.一意性インデックスを作成することで、データベース・テーブル内の各行のデータの一意性を保証できます.2.データの取得を高速化できます.インデックスの欠点:1.テーブル内のデータを追加、削除、変更する場合、インデックスも動的にメンテナンスされ、データのメンテナンス速度が低下します.2.インデックスは物理空間を占有する必要があります.
索引の種類:1.INDEX:一般インデックス2.PRIMARY KEY:プライマリ・キー3.UNIQUE:ユニークインデックス4.FOREGN KEY:外部キー5.FULLTEXT:グループインデックス
1.INDEX:一般インデックス1.1 1つのテーブルに複数のINDEXフィールドがあります.1.2フィールドの値は重複を許容し、NULL値を付与することができる.1.3クエリー条件を行うフィールドをINDEXフィールドに設定することが多い.1.4 INDEXフィールドのKEYフラグはMULです.
Insert intoライブラリ名テーブル名values(値リスト);テーブルレコードselect*fromライブラリ名を挿入します.テーブル名;テーブルのすべてのレコードの表示
既存のテーブルにINDEXフィールドのフォーマットを設定:create indexインデックスonライブラリ名.テーブル名(フィールド);
指定したテーブルのインデックスフィールドフォーマットを削除します:drop indexインデックス名onライブラリ名.テーブル名;
テーブルのインデックス情報フォーマットを表示する:show index fromライブラリ名.テーブル名;
デフォルトで使用されるインデックスタイプ:BTREE(ツリー)hash B+Tree
2.PRIMARY KEY:プライマリ・キー2.1 1つのテーブルに1つのprimary keyフィールド2.2しか存在しない対応するフィールドの値に重複は許可されず、NULL値の付与は許可されません.2.3複数のフィールドがprimary keyとして使用され、複合プライマリ・キーと呼ばれる場合は、一緒に作成する必要があります.2.4主キーフィールドのKEYフラグはPRIです.2.5通常とAUTO_INCREMENT連用.2.6表に記録を一意に表示できるフィールドを主キーフィールドに設定することが多い.(レコード番号フィールドなど)
注記:プライマリ・キーとauto_increment連用フィールド値は+1プライマリ・キーを自動的に増加し、数値タイプ
作成したテーブルにPRIMARY KEYフィールドのフォーマットを設定する:alter tableライブラリ名.表名ADD PRIMARY KEY(ワードセグメント名);
指定されたテーブルのPRIMARY KEYフィールドフォーマット:alter tableライブラリ名を削除します.表名DROP PRIMARY KRY;注意:自己増加属性(AUTO_INCREMENT)がある場合は、先に削除する必要があります.
3.UNIQUE:一意のインデックス3.1 1つのテーブルに複数のUNIQUEフィールドがあります.3.2対応するフィールドの値に重複は許可されません.3.3 UNIQUEフィールドのKEYフラグはUNIです.3.4 UNIQUEフィールドの値はNULLを許可し、NULLを許可しないように変更すると、このフィールドはプライマリ・キーと同じに制限され、KEYはPRIになります.
作成したテーブルにUNIQUEフィールドのフォーマットを設定:create unique index uniqueフィールド名onライブラリ名.表名(段落名);
指定したテーブルのUNIQUEフィールドフォーマットを削除する:drop index uniqueフィールド名onライブラリ名.表名(段落名);
4.FOREGN KEY:外部キー4.1は、現在のテーブルフィールドの値を別のテーブルフィールドの値の範囲内で選択させる.
外部キーの使用条件:1.テーブルのストレージエンジンはinnodbでなければなりません.2.2つのテーブルのフィールドタイプが一致するようにします.3.参照されるフィールドは、プライマリ・キー・タイプ(PRIMARY KEY)である必要があります.
基本的な使い方:フォーマット:foreign key(表Aのフィールド名)references表B(フィールド名)on update cascade on delete cascade#参照表はB、すなわちB表フィールドの値の範囲から選択します.
外部キーフィールドフォーマットの削除:alter tableテーブル名drop foreign key制約名;
索引の種類:1.INDEX:一般インデックス2.PRIMARY KEY:プライマリ・キー3.UNIQUE:ユニークインデックス4.FOREGN KEY:外部キー5.FULLTEXT:グループインデックス
1.INDEX:一般インデックス1.1 1つのテーブルに複数のINDEXフィールドがあります.1.2フィールドの値は重複を許容し、NULL値を付与することができる.1.3クエリー条件を行うフィールドをINDEXフィールドに設定することが多い.1.4 INDEXフィールドのKEYフラグはMULです.
Insert intoライブラリ名テーブル名values(値リスト);テーブルレコードselect*fromライブラリ名を挿入します.テーブル名;テーブルのすべてのレコードの表示
:
-INDEX( 1),INDEX( 2)...
mysql>create database ku;
mysql>create table ku.abc(
>id int(2) not null,
>name varchar(4) not null,
>age int(3) not null,
>index(name),index(age)
>);
mysql>desc ku.abc;
Field Type Null Key Default Extra
.. .. .. MUL .. ..
mysql>insert into ku.abc values(1,"wang",23);
mysql>select * from ku.abc;
既存のテーブルにINDEXフィールドのフォーマットを設定:create indexインデックスonライブラリ名.テーブル名(フィールド);
指定したテーブルのインデックスフィールドフォーマットを削除します:drop indexインデックス名onライブラリ名.テーブル名;
:
mysql>create index xixi on ku.abc(id);
mysql>drop index xixi on ku.abc;
テーブルのインデックス情報フォーマットを表示する:show index fromライブラリ名.テーブル名;
:
mysql>show index from ku.abc\G;
......
Index_type: BTREE( B )
......
デフォルトで使用されるインデックスタイプ:BTREE(ツリー)hash B+Tree
2.PRIMARY KEY:プライマリ・キー2.1 1つのテーブルに1つのprimary keyフィールド2.2しか存在しない対応するフィールドの値に重複は許可されず、NULL値の付与は許可されません.2.3複数のフィールドがprimary keyとして使用され、複合プライマリ・キーと呼ばれる場合は、一緒に作成する必要があります.2.4主キーフィールドのKEYフラグはPRIです.2.5通常とAUTO_INCREMENT連用.2.6表に記録を一意に表示できるフィールドを主キーフィールドに設定することが多い.(レコード番号フィールドなど)
注記:プライマリ・キーとauto_increment連用フィールド値は+1プライマリ・キーを自動的に増加し、数値タイプ
:
-PRIMARY KEY( )
mysql>create table ku.abc2(
>id int(3) auto increment,
>name varchar(5) not null,
>age int(2) not null,
>primary key(id)
>);
mysql>desc ku.abc2;
Field Type Null Key Default Extra
.. .. .. PRI .. ..
mysql>insert into ku.abc2 values(2,"wang",23);
mysql>select * from ku.abc2;
作成したテーブルにPRIMARY KEYフィールドのフォーマットを設定する:alter tableライブラリ名.表名ADD PRIMARY KEY(ワードセグメント名);
指定されたテーブルのPRIMARY KEYフィールドフォーマット:alter tableライブラリ名を削除します.表名DROP PRIMARY KRY;注意:自己増加属性(AUTO_INCREMENT)がある場合は、先に削除する必要があります.
:
mysql>alter tabel ku.abc2 drop primary key;
mysql>alter table ku.abc2 add primary key(id);
3.UNIQUE:一意のインデックス3.1 1つのテーブルに複数のUNIQUEフィールドがあります.3.2対応するフィールドの値に重複は許可されません.3.3 UNIQUEフィールドのKEYフラグはUNIです.3.4 UNIQUEフィールドの値はNULLを許可し、NULLを許可しないように変更すると、このフィールドはプライマリ・キーと同じに制限され、KEYはPRIになります.
: UNIQUE
-UNIQUE( 1),UNIQUE( 2)...
mysql>create table ku.abc3(
>id char(6),
>name varchar(4) not null,
>age int(3) not null,
>unique(id),unique(name),unique(age)
>);
mysql>desc ku.abc3;
Field Type Null Key Default Extra
.. .. YES UNI .. ..
mysql>insert into ku.abc3 values(3,"wang",23);
mysql>insert into ku.abc values(4,"lisi",23);
mysql>select * from ku.abc3;
作成したテーブルにUNIQUEフィールドのフォーマットを設定:create unique index uniqueフィールド名onライブラリ名.表名(段落名);
指定したテーブルのUNIQUEフィールドフォーマットを削除する:drop index uniqueフィールド名onライブラリ名.表名(段落名);
:
mysql>drop index name on ku.abc3; # INDEX 。
mysql>create unique index name on ku.abc3(age);
4.FOREGN KEY:外部キー4.1は、現在のテーブルフィールドの値を別のテーブルフィールドの値の範囲内で選択させる.
外部キーの使用条件:1.テーブルのストレージエンジンはinnodbでなければなりません.2.2つのテーブルのフィールドタイプが一致するようにします.3.参照されるフィールドは、プライマリ・キー・タイプ(PRIMARY KEY)である必要があります.
基本的な使い方:フォーマット:foreign key(表Aのフィールド名)references表B(フィールド名)on update cascade on delete cascade#参照表はB、すなわちB表フィールドの値の範囲から選択します.
:
: (PRIMARY KEY)。
mysql>create table ku.abc4(
>id int(4),
>name char(5),
>foreign key(name),
>references abc3(name),
>on update cascade
>on delete cascade
>engine=innodb
>);
外部キーフィールドフォーマットの削除:alter tableテーブル名drop foreign key制約名;
:
mysql>show create table ku.abc4\G;
...
CONSTRAINT `xxx` #`xxx`
.....
mysql>alter table ku.abc4 drop foreigen key xxx ;