おさらい、格納した値をアップデート。
さらに新しいカラムを追加し構造も編集する。それを新しい値へアップデート。 free80
Thursday,July,25,2013
○テーブルの中身の表示
mysql> select * from sadachika_shop.sadachi_products;
sada_id sada_name sada_category
1 牛乳 飲み物
2 たこ焼き 食べ物
3 りんご 果物
4 ワイン 飲み物
5 ピザ 食べ物
6 ブドウ 果物
7 にんじん 野菜
8 コーラ 飲み物
9 牛丼 食べ物
10 キューイフルーツ 果物
11 ほうれん草 野菜
12 ビール 飲み物
13 天丼 食べ物
1 牛乳 Drink
2 たこ焼き Food
3 りんご Fruit
4 ワイン Drink
5 ピザ Food
6 ブドウ Fruit
7 にんじん Vegetables
8 コーラ Drink
9 牛丼 Food
10 キューイフルーツ Fruit
11 ほうれん草 Vegetables
12 ビール Drink
13 天丼 Food
○○カラムを追加する。追加したカラムは、既存のテーブルの最後に追加される
ALTER TABLE tbl_name ADD [COLUMN] column_definition;
ALTER TABLE sadachika_shop.sadachi_products ADD sada_price int;
Query OK, 0 rows affected (0.34 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE sadachika_shop.sadachi_products ADD sada_releasedate date;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
○テーブルの中身の表示
mysql> select * from sadachika_shop.sadachi_products;
sada_id sada_name sada_category sada_price sada_releasedate
1 牛乳 飲み物 NULL NULL
2 たこ焼き 食べ物 NULL NULL
3 りんご 果物 NULL NULL
4 ワイン 飲み物 NULL NULL
5 ピザ 食べ物 NULL NULL
6 ブドウ 果物 NULL NULL
7 にんじん 野菜 NULL NULL
8 コーラ 飲み物 NULL NULL
9 牛丼 食べ物 NULL NULL
10 キューイフルーツ 果物 NULL NULL
11 ほうれん草 野菜 NULL NULL
12 ビール 飲み物 NULL NULL
13 天丼 食べ物 NULL NULL
1 牛乳 Drink NULL NULL
2 たこ焼き Food NULL NULL
3 りんご Fruit NULL NULL
4 ワイン Drink NULL NULL
5 ピザ Food NULL NULL
6 ブドウ Fruit NULL NULL
7 にんじん Vegetables NULL NULL
8 コーラ Drink NULL NULL
9 牛丼 Food NULL NULL
10 キューイフルーツ Fruit NULL NULL
11 ほうれん草 Vegetables NULL NULL
12 ビール Drink NULL NULL
13 天丼 Food NULL NULL
○アップデート
↓db名 ↓テーブル名 ↓カラム名 ↓更新するデータ ↓基準のカラムの桁
mysql> update sadachika_shop.sadachi_results set sada_name = '佐藤' where sada_name = '橘高';
↓カラムへ格納後には年号に表示される
mysql> update sadachika_shop.sadachi_products set sada_price = 198, sada_releasedate = 10131018 where sada_name = '牛乳' and sada_category = '飲み物';
mysql> update sadachika_shop.sadachi_products set sada_price = 100, sada_releasedate = 10120725 where sada_name = 'たこ焼き' and sada_category = '食べ物';
mysql> update sadachika_shop.sadachi_products set sada_price = 100, sada_releasedate = 10120725 where sada_name = 'たこ焼き';
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_products set sada_price = 150, sada_releasedate = 10130108 where sada_name = 'りんご' and sada_category = '果物';
mysql> update sadachika_shop.sadachi_products set sada_price = 250, sada_releasedate = 10130312 where sada_name = 'ワイン' and sada_category = '飲み物';
mysql> update sadachika_shop.sadachi_products set sada_price = 450, sada_releasedate = 10110503 where sada_name = 'ピザ' and sada_category = '食べ物';
mysql> update sadachika_shop.sadachi_products set sada_price = 300, sada_releasedate = 10130716 where sada_name = 'ブドウ' and sada_category = '果物';
mysql> update sadachika_shop.sadachi_products set sada_price = 35, sada_releasedate = 10130317 where sada_name = 'にんじん' and sada_category = '野菜';
mysql> update sadachika_shop.sadachi_products set sada_price = 98, sada_releasedate = 10120521 where sada_name = 'コーラ' and sada_category = '飲み物';
mysql> update sadachika_shop.sadachi_products set sada_price = 350, sada_releasedate = 10110225 where sada_name = '牛丼' and sada_category = '食べ物';
mysql> update sadachika_shop.sadachi_products set sada_price = 160, sada_releasedate = 10130919 where sada_name = 'キューイフルーツ' and sada_category = '果物';
mysql> update sadachika_shop.sadachi_products set sada_price = 145, sada_releasedate = 10130425 where sada_name = 'ほうれん草' and sada_category = '野菜';
mysql> update sadachika_shop.sadachi_products set sada_price = 220, sada_releasedate = 10120701 where sada_name = 'ビール' and sada_category = '飲み物';
mysql> update sadachika_shop.sadachi_products set sada_price = 460, sada_releasedate = 10130625 where sada_name = '天丼' and sada_category = '食べ物';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
○テーブルの中身の表示
mysql> select * from sadachika_shop.sadachi_products;
sada_id sada_name sada_category sada_price sada_releasedate
1 牛乳 飲み物 198 1013-10-18
2 たこ焼き 食べ物 100 1012-07-25
3 りんご 果物 150 1013-01-08
4 ワイン 飲み物 250 1013-03-12
5 ピザ 食べ物 450 1011-05-03
6 ブドウ 果物 300 1013-07-16
7 にんじん 野菜 35 1013-03-17
8 コーラ 飲み物 98 1012-05-21
9 牛丼 食べ物 350 1011-02-25
10 キューイフルーツ 果物 160 1013-09-19
11 ほうれん草 野菜 145 1013-04-25
12 ビール 飲み物 220 1012-07-01
13 天丼 食べ物 460 1013-06-25
1 牛乳 Drink NULL NULL*対象項目
2 たこ焼き Food 100 1012-07-25
3 りんご Fruit NULL NULL
4 ワイン Drink NULL NULL*対象項目
5 ピザ Food NULL NULL
6 ブドウ Fruit NULL NULL
7 にんじん Vegetables NULL NULL
8 コーラ Drink NULL NULL*対象項目
9 牛丼 Food NULL NULL*対象項目
10 キューイフルーツ Fruit NULL NULL
11 ほうれん草 Vegetables NULL NULL
12 ビール Drink NULL NULL
13 天丼 Food NULL NULL
○削除する 「sada_category」カラムの値が'Drink'のデータを対象に「sada_id」カラムの値が小さいものから3行のデータを削除する。
ASCを指定した場合は昇順
DESCを指定した場合は降順
mysql> delete from sadachika_shop.sadachi_products where sada_category = 'Drink' order by sada_id ASC limit 3; *削除対象を小さいものから3つに絞る
Query OK, 3 rows affected (0.03 sec)
delete from sadachika_shop.sadachi_products where sada_category = 'Drink';
Query OK, 1 rows affected (0.01 sec)
delete from sadachika_shop.sadachi_products where sada_category = 'Food';
Query OK, 4 rows affected (0.00 sec)
delete from sadachika_shop.sadachi_products where sada_category = 'Fruit';
Query OK, 3 rows affected (0.00 sec)
delete from sadachika_shop.sadachi_products where sada_category = 'Vegetables';
Query OK, 2 rows affected (0.00 sec)
○テーブルの中身の表示
mysql> select * from sadachika_shop.sadachi_products;
sada_id sada_name sada_category sada_price sada_releasedate
1 牛乳 飲み物 198 1013-10-18
2 たこ焼き 食べ物 100 1012-07-25
3 りんご 果物 150 1013-01-08
4 ワイン 飲み物 250 1013-03-12
5 ピザ 食べ物 450 1011-05-03
6 ブドウ 果物 300 1013-07-16
7 にんじん 野菜 35 1013-03-17
8 コーラ 飲み物 98 1012-05-21
9 牛丼 食べ物 350 1011-02-25
10 キューイフルーツ 果物 160 1013-09-19
11 ほうれん草 野菜 145 1013-04-25
12 ビール 飲み物 220 1012-07-01
13 天丼 食べ物 460 1013-06-25
○カラムの構造を表示する
show columns from sadachika_shop.sadachi_products;
Field Type Null Key Default Extra
sada_id int(11) YES NULL
sada_name varchar(20) YES NULL
sada_category varchar(20) YES NULL
sada_price int(11) YES NULL
sada_releasedate date YES NULL *カラム名sada_releasedate DATE型 数字を入力すると、年号として格納される。
3 rows in set (0.13 sec)
○カラム定義だけを変更する。INT型はprimary VARCHAR型にはunique 設定を施す事で重複の値を許可しないように出来る。
mysql> alter table sadachika_shop.sadachi_products modify sada_id int(11) not null primary key; *プライマリーキー設定、データ無しを許可しない設定。*名前だけ変更するのであってもあわせて型を入力する。
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show columns from sadachika_shop.sadachi_products;
Field Type Null Key Default Extra
sada_id int(11) NO PRI NULL *Key項目がPRIに変わった
sada_name varchar(20) YES NULL
sada_category varchar(20) YES NULL
sada_price int(11) YES NULL
sada_releasedate date YES NULL *カラム名sada_releasedate DATE型 数字を入力すると、年号として格納される。
3 rows in set (0.13 sec)
おさらいメモ
○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_food modify hirayama_id smallint;
↑対象のカラム ↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
○カラム名の変更、データ型の変更
mysql> alter table sadachika_shop.sadachi_food change sada_id hirayama_id int not null; *名前だけ変更するのであってもあわせて型を入力する。
↑旧カラム名 ↑新しく変更するカラム名(hirayama_id)
おさらいメモ。ユニークキーに設定すれば、この文も使用できるようになる。
○ON DUPLICATE KEY UPDATE句を使用して、重複する値の上書き格納を行なう
mysql> insert into sadachika_shop.sadachi_sales select hira_name, hira_count from sadachika_shop.hiraya_yamaguchisales
-> on duplicate key update sada_count=sada_count+values(sada_count);
↑本家 ↑本家 ↑本家
○カラムの先頭に表示する場合は「FIRST」
ALTER TABLE tbl_name ADD [COLUMN] column_definition FIRST;
ALTER TABLE sadachika_shop.sadachi_food ADD hirayama_cate int FIRST; *細かい設定を入れようとしたんだが出来ないdefault 'none'とか
○指定したカラムの後に挿入する場合は「AFTER」の後にカラム名を指定する
ALTER TABLE tbl_name ADD [COLUMN] column_definition AFTER col_name;
ALTER TABLE sadachika_shop.sadachi_food ADD hirayama_cate int AFTER hirayama_id;
○カラム削除
ALTER TABLE tbl_name DROP [COLUMN] col_name;
mysql> alter table sadachika_shop.sadachi_food drop column hirayama_cate;
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。