前回と前々回のおさらい
プライマリーキー(primary key)はインデックス数字の重複を許さない設定
ユニークキー(unique)はインデックス数字にNULL(データなし)の入力を許可するが、整数の重複は許さない設定 ユニーク制約

今回学ぶインデックスは、整数の数字の重複を許す設定です free54

Saturday,July,6,2013

○テーブルを作る
mysql> create table sadachika_books.sadachi_indextest(sada_id int, sada_name varchar(10), index(sada_id));
                                                                                                  ↑カラム名を統一しないとエラー ここで苦労した
     お手本CREATE TABLE db_name.tbl_name
             (col_name1 data_type1, col_name2 data_type2, ...,
             INDEX (index_col_name1, index_col_name2, ...));

CREATE TABLE sadachika_books.sadachi_indextest2
  ->(sada_id int, sada_name varchar(10),
  ->INDEX (sada_id));

SHOW TABLES FROM sadachika_books;
Table_in_sadachika_books
sadachi_indextest          *増えた
sadachi_indextest2         *増えた

○テーブルの構造を見る
mysql> show columns from sadachika_books.sadachi_indextest;             *columns(新聞など印刷物の)縦の段; 欄.                     
Field          Type         Null   Key    Default    Extra
sada_id        int(11)      YES    MUL    NULL                          *Key項目がMUL意味は? カラム名sada_id INT型(おそらく数字のみ入力可能)
sada_name      varchar(10)  YES    MUL    NULL                          *Key項目がMUL意味は? カラム名sada_name VARCHAR型 文字によるインデックスを作成するんだな、INT型が数字だけしか使用できないから

○この項目初めてさわるかも。 インデックスを確認。
mysql> show index from sadachika_books.sadachi_indextest\G

**************** 1.row **********************
        Table: sadachi_indextest
   Non_unique: 1
     Key_name: sada_id         *設定によってはPRIMARYになったり
 Seq_in_index: 1
  Column_name: sada_id         *カラム名
    Collation: A
  Cardinality: 0               *たぶん0項目の入力だな
     Sub_part: NULL
       Packed: NULL
         NULL: YES
   Index_Type: BTREE
      Comment:
Index_comment:


○データ入力
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(1, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(2, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(3, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(1, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(2, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(3, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values('a', '定近');*やっぱりINT型って文字入力無理なですね。
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(8, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(NULL, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(NULL, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(12, '定近');
insert into sadachika_books.sadachi_indextest(sada_id, sada_name) values(11, '定近');



○テーブルの中身の表示 
mysql> select * from sadachika_books.sadachi_indextest;
sada_id    sada_name
      1    定近
      2    定近
      3    定近
      1    定近         *インデックス数字の重複を許している
      2    定近         *インデックス数字の重複を許している
      3    定近         *インデックス数字の重複を許している
      8    定近         *インデックス数字の重複を許している
   NULL    定近         *NULの重複を許している
   NULL    定近
     12    定近
     11    定近

○この項目初めてさわるかも。 インデックスを確認。
mysql> show index from sadachika_books.sadachi_indextest\G

**************** 1.row **********************
        Table: sadachi_indextest
   Non_unique: 1
     Key_name: sada_id         *設定によってはPRIMARYになったり
 Seq_in_index: 1
  Column_name: sada_id         *カラム名
    Collation: A
  Cardinality: 11              *たぶん0項目の入力だな
     Sub_part: NULL
       Packed: NULL
         NULL: YES             *NULL(データなし)の入力が可能という事なんだろう    
   Index_Type: BTREE
      Comment:
Index_comment:


* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。