指定の箇所だけアップデート
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)




* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。