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);
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。