DEFAULT関数default(sada_goukaku)とDEFAULTキーワード values(default,・・・ free67
特定のカラムを除き、データ値を入力する時の短縮方法
Tuesday,July,16,2013
カラム数が多いテーブルへデータを追加する時の便利な方法を勉強しました。デフォルトに数式を格納できないんだから便利なのかな?
カラム名を増やします
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_results;
Field Type Null Key Default Extra
sada_id int(11) NO NULL
sada_name varchar(10) YES 入力がありません
sada_total int(11) YES 0
○指定したカラムの後に挿入する場合は「AFTER」の後にカラム名を指定する
ALTER TABLE tbl_name ADD [COLUMN] column_definition AFTER col_name; ↓基準となるカラム名
ALTER TABLE sadachika_shop.sadachi_results ADD sada_goukaku tinyint default 0 AFTER sada_name;
ALTER TABLE sadachika_shop.sadachi_results ADD sada_suugaku int default 5 AFTER sada_goukaku;
ALTER TABLE sadachika_shop.sadachi_results ADD sada_eigo int default 5.1 AFTER sada_suugaku;
ALTER TABLE sadachika_shop.sadachi_results ADD sada_rika int default 5.2 AFTER sada_eigo;
ALTER TABLE sadachika_shop.sadachi_results ADD sada_shakai int default 5.3 AFTER sada_rika;
ALTER TABLE sadachika_shop.sadachi_results ADD sada_kokugo int default 5.4 AFTER sada_shakai;
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_results;
Field Type Null Key Default Extra
sada_id int(11) NO NULL
sada_name varchar(10) YES 入力がありません
sada_goukaku tinyint(4) YES 0 *追加された
sada_suugaku int(11) YES 5 *小数点以下は反映しませんね
sada_eigo int(11) YES 5 *小数点以下は反映しませんね
sada_rika int(11) YES 5 *小数点以下は反映しませんね
sada_shakai int(11) YES 5 *小数点以下は反映しませんね
sada_kokugo int(11) YES 5 *小数点以下は反映しませんね
sada_total int(11) YES 5 *小数点以下は反映しませんね
○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_results modify sada_id int not null primary key;
↑対象のカラム↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない) primary key(重複を許さない)}
○カラムの先頭にカラムを追加「FIRST」
mysql> ALTER TABLE sadachika_shop.sadachi_results ADD sada_t timestamp FIRST;
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_results;
Field Type Null Key Default Extra
sada_t timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP *timestamp が増えた
sada_id int(11) NO PRI NULL *Key項目 PRI(primary key)が増えた
sada_name varchar(10) YES 入力がありません
sada_goukaku tinyint(4) YES 0
sada_suugaku int(11) YES 5
sada_eigo int(11) YES 5
sada_rika int(11) YES 5
sada_shakai int(11) YES 5
sada_kokugo int(11) YES 5
sada_total int(11) YES 0
○入力 特定のカラム名(sada_t, sada_goukaku)以外を入力する
insert into sadachika_shop.sadachi_results(sada_id, sada_name, sada_suugaku, sada_eigo, sada_rika, sada_shakai, sada_kokugo, sada_total)
values(5, '定近', 40, 45, 50, 55, 60, sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
○カラムの値を見る
select * from sadachika_shop.sadachi_results;
select * from sadachika_shop.sadachi_results\G
sada_t sada_id sada_name sada_goukaku sada_suugaku sada_eigo sada_rika sada_shakai sada_kokugo sada_total
2013-07-16 22:00:55 1 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:00:55 3 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:00:55 4 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:07:58 5 定近 0 40 45 50 55 60 250
○○入力 特定カラムを除き、値を入力する短縮方法 DEFAULT関数default(sada_goukaku)とDEFAULTキーワード values(default,・・・
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 6, '充始', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default(sada_t), 7, '充始', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 7, '充始', default, default, default, default, default, default, sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
ERROR (23000); Duplicate entry '7'for key 'PRIMARY'
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 8, '充始', default, default, default, default, default, default, sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.02 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default(sada_t), 9, '平山', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 10, '橘高', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default(sada_t), 11, '橘高', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 12, '橘高', default(sada_goukaku), default(sada_suugaku), default(sada_eigo), default(sada_rika), default(sada_shakai), default(sada_kokugo), sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
mysql> insert into sadachika_shop.sadachi_results
-> values(default, 13, '坂本', default, default, default, default, default, default, sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total);
Query OK, 1 row affected (0.03 sec)
○カラムの値を見る
select * from sadachika_shop.sadachi_results;
select * from sadachika_shop.sadachi_results\G
sada_t sada_id sada_name sada_goukaku sada_suugaku sada_eigo sada_rika sada_shakai sada_kokugo sada_total
2013-07-16 22:00:55 1 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:00:55 3 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:00:55 4 入力がありません 0 5 5 5 5 5 0
2013-07-16 22:07:58 5 定近 0 40 45 50 55 60 250
2013-07-16 22:35:38 6 充始 0 5 5 5 5 5 25
0000-00-00 00:00:00 7 充始 0 5 5 5 5 5 25 *なぜかタイム表示がおかしい
2013-07-16 22:40:51 8 充始 0 5 5 5 5 5 25
*default(sada_t)これを用いると、タイム表示がおかしくなる。デフォルト関数使用時という意味
0000-00-00 00:00:00 9 平山 0 5 5 5 5 5 25 *なぜかタイム表示がおかしい
2013-07-16 22:57:37 10 橘高 0 5 5 5 5 5 25
0000-00-00 00:00:00 11 橘高 0 5 5 5 5 5 25 *なぜかタイム表示がおかしい
2013-07-16 23:01:14 12 橘高 0 5 5 5 5 5 25
2013-07-16 23:10:40 13 坂本 0 5 5 5 5 5 25
デフォルトに数式入れられるのかな
○カラム構造だけを変更する
mysql> alter table sadachika_shop.sadachi_results modify sada_total int not null default sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total;
↑対象のカラム↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない) メモprimary key(重複を許さない)}
ERROR
mysql> alter table sadachika_shop.sadachi_results modify sada_total int default 'sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total';
ERROR
mysql> alter table sadachika_shop.sadachi_results modify sada_total int not null;
数式は入れられない感じ
Query OK, 1 row affected (0.03 sec)
Records: 0 Duplicates; 0 Warnings: 0
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_results;
Field Type Null Key Default Extra
sada_t timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP *timestamp が増えた
sada_id int(11) NO PRI NULL *Key項目 PRI(primary key)が増えた
sada_name varchar(10) YES 入力がありません
sada_goukaku tinyint(4) YES 0
sada_suugaku int(11) YES 5
sada_eigo int(11) YES 5
sada_rika int(11) YES 5
sada_shakai int(11) YES 5
sada_kokugo int(11) YES 5
sada_total int(11) NO NULL * 変更された
○カラム構造だけを変更する
mysql> alter table sadachika_shop.sadachi_results modify sada_total int not null default 'sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total';
ERROR
mysql> alter table sadachika_shop.sadachi_results modify sada_total int not null default sada_suugaku + sada_eigo + sada_rika + sada_shakai + sada_kokugo + sada_total;
ERROR
mysql> alter table sadachika_shop.sadachi_results modify sada_total int not null default 0;
Query OK, 1 row affected (0.00 sec)
Records: 0 Duplicates; 0 Warnings: 0
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_results;
Field Type Null Key Default Extra
sada_t timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP *timestamp が増えた
sada_id int(11) NO PRI NULL *Key項目 PRI(primary key)が増えた
sada_name varchar(10) YES 入力がありません
sada_goukaku tinyint(4) YES 0
sada_suugaku int(11) YES 5
sada_eigo int(11) YES 5
sada_rika int(11) YES 5
sada_shakai int(11) YES 5
sada_kokugo int(11) YES 5
sada_total int(11) NO 0 * 変更された
メモ
○追加したカラムは既存のテーブルの最後に追加される
ALTER TABLE tbl_name ADD [COLUMN] column_definition;
mysql> ALTER TABLE sadachika_shop.sadachi_results ADD hirayama_cate int;
○カラムの先頭に表示する場合は「FIRST」
ALTER TABLE tbl_name ADD [COLUMN] column_definition FIRST;
ALTER TABLE sadachika_shop.sadachi_food ADD hirayama_cate int FIRST; *細かい設定を入れようとしたんだが出来ないdefault 'none'とか
○テーブルを作る
mysql> create table sadachika_shop.sadachi_results (sada_id int, sada_name varchar(10) default '入力がありません', sada_total int default 0);
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。