指定の箇所だけアップデート
10以下の対象項目は、5つあるが、そのうち上から3つまでを2で割る free72
Friday,July,19,2013
商品一覧
木炭 Charcoal 525
鉛筆 Pencil 105
油絵具 Oil paint 400
アクリル絵具 Acrylic paints 350
筆 Brush 735円
キャンバス Canvas 3150
スケッチブック Sketchbook 2940
//////////////////この状態から上書きやアップデートで数値を入力した。その悪戦苦闘は下記////////////////////////
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 0 0
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
5 rows in set (0.41 sec)
とりあえず、ここからスタートします。
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 525 2 *10以下の対象項目
Pencil 105 1 *10以下の対象項目
Oil paint 400 14
Acrylic paints 350 8 *10以下の対象項目
Brush 735 5 *10以下の対象項目
Canvas 3150 4 *10以下の対象項目
Sketchbook 2940 12
7 rows in set (0.00 sec)
○○10以下の対象項目は、5つあるが、そのうち上から3つまでを2で割る。
mysql> update sadachika_shop.sadachi_uriage set sada_price = sada_price / 2
-> where sada_count <= 10 limit 3;
*↑大きい方から3つ
*↑10以下の数字を対象にする
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0
○テーブルの中身の表示 (sadachi_uriage) なんか変な、対象の絞り方ですね。しかも四捨五入だもん。小数点出してほしい。
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 263(四捨五入) 2 *対象箇所 525/2=262.5
Pencil 53(四捨五入) 1 *対象箇所 105/2=52.5
Oil paint 400 14
Acrylic paints 175(四捨五入) 8 *対象箇所 350/2=175
Brush 735 5 *10以下の対象項目 非対象箇所
Canvas 3150 4 *10以下の対象項目 非対象箇所
Sketchbook 2940 12
7 rows in set (0.00 sec)
○○10以上の対象項目は、2つあるが、そのうち上の方から1つまでを0.80(20%OFF)で掛ける。
mysql> update sadachika_shop.sadachi_uriage set sada_price = sada_price * 0.8
-> where sada_count >= 10 limit 1;
○テーブルの中身の表示 (sadachi_uriage) なんか変な、対象の絞り方ですね。数字じゃなくて上からだもんね。
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 263 2
Pencil 53 1
Oil paint 320 14 *対象箇所 400*0.8=320
Acrylic paints 175 8
Brush 735 5
Canvas 3150 4
Sketchbook 2940 12 *対象箇所 非対象
7 rows in set (0.00 sec)
///////////////悪戦苦闘/////////////////////
木炭 Charcoal 525
鉛筆 Pencil 105
油絵具 Oil paint 400
アクリル絵具 Acrylic paints 350
キャンバス Canvas 3150
○特定のデータベース内のテーブルを表示させる
SHOW TABLES FROM sadachika_shop;
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 0 0
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
5 rows in set (0.41 sec)
○アップデート
○アップデート 指定できない難点を認識した。
↓db名 ↓テーブル名 ↓カラム名 ↓更新するデータ ↓古いデータ *後からふり返って分った、間違えたな、sada_nameで固定すればよかった
mysql> update sadachika_shop.sadachi_uriage set sada_price = 525 where sada_price = 0;
Query OK, 5 rows affected (0.43 sec)
Rows matched: 5 Changed: 5 Warnings: 0
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 525 0
Pencil 525 0
Oil paint 525 0
Acrylic paints 525 0
Brush 525 0
5 rows in set (0.41 sec)
○ゼロに戻す
↓db名 ↓テーブル名 ↓カラム名 ↓更新するデータ ↓古いデータ
mysql> update sadachika_shop.sadachi_uriage set sada_price = 0 where sada_price = 525;
Query OK, 5 rows affected (0.03 sec)
Rows matched: 5 Changed: 5 Warnings: 0
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 0 0
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
5 rows in set (0.41 sec)
○○値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Charcoal', 525, 2)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count); *values(sada_price)は、525を表している。values(sada_count)は、2を表している。入力すべきカラムの値を参照している
Query OK 1 row affected (0.03 sec)
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 0 0
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
Charcoal 525 2 *ユニークキー設定が施されていないので、重複データが許されていたため新規登録となった。
6 rows in set (0.41 sec)
○対象のカラムの値を削除する
delete from sadachika_shop.sadachi_uriage where (sada_name, sada_price, sada_count) = ('Charcoal', 525, 2);
Query OK 1 row affected (0.06 sec)
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 0 0
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
*削除された
5 rows in set (0.41 sec)
○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_uriage; *columns(新聞など印刷物の)縦の段; 欄.
Field Type Null Key Default Extra
sada_name varchar(20) YES NULL
sada_price int(11) YES NULL
sada_count int(11) YES NULL
○○カラム定義だけを変更する ユニークキーを設定する(重複を許さない)
mysql> alter table sadachika_shop.sadachi_uriage modify sada_name varchar(20) unique default 'データなし';
↑対象のカラム ↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_uriage;
Field Type Null Key Default Extra
sada_name varchar(20) YES UNI データなし *Key項目はUNI、Defaultは'データなし'へと設定された。
sada_price int(11) YES NULL
sada_count int(11) YES NULL
3 rows in set (0.05 sec)
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Charcoal', 525, 2)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 row affected (0.03 sec)
*values(sada_price)は、525を表している。 *values(sada_count)は、2を表している。入力すべきカラムの値を参照している
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 525 2 *上書きされた
Pencil 0 0
Oil paint 0 0
Acrylic paints 0 0
Brush 0 0
5 rows in set (0.41 sec)
商品一覧
木炭 Charcoal 525
鉛筆 Pencil 105
油絵具 Oil paint 400
アクリル絵具 Acrylic paints 350
筆 Brush 735円
キャンバス Canvas 3150
スケッチブック Sketchbook 2940
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Pencil', 105, 1)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 rows affected (0.03 sec)
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Oil paint', 400, 14)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 rows affected (0.00 sec)
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Acrylic paints', 350, 8)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 row affected (0.01 sec)
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Brush', 735, 3)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 rows affected (0.02 sec)
○○上書きし、値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Canvas', 3150, 4)
-> on duplicate key update sada_price=sada_price+values(sada_price), sada_count=sada_count+values(sada_count);
Query OK 2 row affected (0.03 sec)
○値を入力する
mysql> insert into sadachika_shop.sadachi_uriage values('Sketchbook', 2940, 12);
Query OK 1 roe affected (0.02 sec)
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 525 2
Pencil 105 1
Oil paint 400 14
Acrylic paints 350 8
Brush 735 3
Canvas 3150 4
Sketchbook 2940 12
7 rows in set (0.00 sec)
○値をアップデート
「sada_name」カラムの値が'筆Brush'のデータの「sada_count」カラムの値段を5に変更する。
mysql> update sadachika_shop.sadachi_uriage set sada_count = 5 where sada_name = 'Brush';
Query OK, 1 rows affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
○テーブルの中身の表示 (sadachi_uriage)
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name sada_price sada_count
Charcoal 525 2
Pencil 105 1
Oil paint 400 14
Acrylic paints 350 8
Brush 735 5 *3→5へ変更された
Canvas 3150 4
Sketchbook 2940 12
7 rows in set (0.00 sec)
メモ
○○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_food modify hirayama_id smallint;
↑対象のカラム ↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
○○カラム名の変更、データ型の変更 ↓{varchar(10)→varchar(20)}
mysql> alter table sadachika_shop.sadachi_food change sada_name hirayama_name varchar(20) default '無記入ですよ By 定近'; *データ型は{VARCHAR型default 'none'}→VARCHAR型'無記入ですよ By 定近'
↑旧カラム名 ↑新しく変更するカラム名(hirayama_name)
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。