入力データにインデックスをつける free51
お手本CREATE TABLE db_name.tbl_name (col_name1 data_type1 AUTO_INCREMENT, col_name2 data_type2, ..., INDEX(col_name1)); ○設定を施したテーブルを作る mysql> create table sadachika_books.sadachi_autotest(sada_id int auto_increment, sada_name varchar(10), *カラム名sada_id INT型 auto_increment(関数みたいなもんでしょX+1), カラム名sada_name VARCHAR型 -> index(sada_id)); Query OK, 0 rows affected (0.22 sec) ○テーブルの構造を見る mysql> show columns from sadachika_books.sadachi_autotest; *columns(新聞など印刷物の)縦の段; 欄. Field Type Null Key Default Extra sada_id int(11) NO MUL NULL auto_increment *Extra項目がauto_increment設定にになった。Key項目がMULこれなんだ? データが未記入の場合は0が入る カラム名sada_num INT型 sada_name varchar(10) YES NULL *カラム名sada_name VARCHAR型 *忘れるからメモ*前回はDefaultの項目をいじってたから'定近の未記入'になってた ○テーブルを作る mysql> create table sadachika_books.sadachi_defaulttest(sada_num int default 0, -> sada_str varchar(10) default '定近の未入力'); ○テーブルの詳細情報を取得する SHOW TABLE STATUS FROM sadachika_books LIKE 'sadachi_autotest'\G **************** 1.row ********************** Name: sadachi_autotest Engine: InnoDB Version: 10 Row_format: Compact Rows: 0 0 Avg_row_length: 0 Data_length: 16384 Max_data_length: 0 Index_length: 16384 *新たに数字が表示されましたよ Data_free: 0 Auto_increment: 1 *ふだんはNULLですが、→1に変わりました AUTO_INCREMENTが設定されたカラムに次にNULLまたは0が格納されたときに1を足す、と説明にあります。 Create_time: 2013-07-05 04:23:11 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: ○データ入力 mysql> insert into autotest(name) values('扇風機'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(2013); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(広島); *ERROR mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('広島'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('福山'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('定近'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('充始'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('NULL'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(NULL); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('さだちか'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(); *ERROR mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(''); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('サダチカ'); ○テーブルの中身の表示 mysql> select * from sadachika_books.sadachi_autotest; sada_id sada_name 1 2013 2 広島 3 福山 4 定近 5 充始 6 NULL *NULLが入力されても 7 NULL 8 さだちか 9 *何も表示されないがインデックス数字がついた 10 サダチカ ○テーブルの詳細情報を取得する SHOW TABLE STATUS FROM sadachika_books LIKE 'sadachi_autotest'\G **************** 1.row ********************** Name: sadachi_autotest Engine: InnoDB Version: 10 Row_format: Compact Rows: 10 *入力カウント回数10 Avg_row_length: 1638 Data_length: 16384 Max_data_length: 0 Index_length: 16384 *新たに数字が表示されましたよ Data_free: 0 Auto_increment: 11 *現在のインデックスの最大値は10であるから、次の入力時は11だという意味表示。 Create_time: 2013-07-05 04:23:11 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: ○現在接続されているデーターベース MySQL> select database(); database() NULL *どこにも接続されてないみたい mysql> USE sadachika_books; ○対象のカラムの値を削除する delete from sadachika_books.sadachi_autotest where sada_id = 10; *現在の最大値を削除してみる、つぎのインデックスのカウント数を見るテスト delete from sadachika_books.sadachi_autotest where sada_id = 9; delete from sadachika_books.sadachi_autotest where sada_id = 8; ○データ入力 mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('定近充始'); mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('Atsushi Sadachika'); *ERROR なぜエラーなんだろうね、空白?文字数? mysql> insert into sadachika_books.sadachi_autotest(sada_name) values('Sadachika'); ○テーブルの中身の表示 mysql> select * from sadachika_books.sadachi_autotest; sada_id sada_name 1 2013 2 広島 3 福山 4 定近 5 充始 6 NULL *NULLが入力されても 7 NULL 11 定近充始 *8〜10が削除されて、次のインデックスは11から始まる 12 Sadachika ○データ入力 mysql> insert into sadachika_books.sadachi_autotest(sada_id, sada_name) values(88, '福島県'); ○テーブルの詳細情報を取得する SHOW TABLE STATUS FROM sadachika_books LIKE 'sadachi_autotest'\G **************** 1.row ********************** Name: sadachi_autotest Engine: InnoDB Version: 10 Row_format: Compact Rows: 10 *入力カウント回数10 (削除込みでカウント) Avg_row_length: 1638 Data_length: 16384 Max_data_length: 0 Index_length: 16384 Data_free: 0 Auto_increment: 89 *現在のインデックスの最大値は88であるから、次の入力時は89だという意味表示。 Create_time: 2013-07-05 04:23:11 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: ○データ入力 mysql> insert into sadachika_books.sadachi_autotest(sada_name) values(3.11); ○テーブルの中身の表示 mysql> select * from sadachika_books.sadachi_autotest; sada_id sada_name 1 2013 2 広島 3 福山 4 定近 5 充始 6 NULL *NULLが入力されても 7 NULL 11 定近充始 *8〜10が削除されて、次のインデックスは11から始まる 12 Sadachika 88 福島県 89 3.11 ○設定を施したテーブルを作る 「AUTO_INCREMENT = 初期値」を指定。 mysql> create table sadachika_books.sadachi_autotest2(sada_id int auto_increment, sada_name varchar(10), -> index(sada_id)) -> auto_increment = 100; ○データ入力 mysql> insert into sadachika_books.sadachi_autotest2(sada_name) values('定近充始'); ○テーブルの詳細情報を取得する SHOW TABLE STATUS FROM sadachika_books LIKE 'sadachi_autotest2'\G **************** 1.row ********************** Name: sadachi_autotest2 Engine: InnoDB Version: 10 Row_format: Compact Rows: 1 *入力カウント回数0 (削除込みでカウント) Avg_row_length: 16384 Data_length: 16384 Max_data_length: 0 Index_length: 16384 Data_free: 0 Auto_increment: 101 *現在のインデックスの最大値は88であるから、次の入力時は89だという意味表示。 Create_time: 2013-07-05 05:52:41 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: ○テーブルの中身の表示 mysql> select * from sadachika_books.sadachi_autotest2; sada_id sada_name 100 定近充始
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。