削除の応用 桁を指定したり、値が大きい方から3番目までを指定するなどして削除の応用を学ぶ。 free74

Saturday,July,20,2013

商品一覧               sada_price  sada_cate           sada_count
木炭 Charcoal               525円  Pens and pencils             5
鉛筆 Pencil                 105円  Pens and pencils             1
油絵具 Oil paint            400円  Paints                      14
アクリル絵具 Acrylic paints 350円  Paints                       8
筆 Brush                    735円  Pens and pencils             2
キャンバス Canvas          3150円  Others                       4
スケッチブック  Sketchbook 2940円  Others                      12

sada_cate
絵具    Paints
筆記具  Pens and pencils
その他  Others

///////////////////////ここまでの奮闘記は別記下に記載////////////////////////////

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
Charcoal          525  Pens and pencils           5    *対象項目
Pencil            105  Pens and pencils           1
Oil paint         400  Paints                    14        
Acrylic paints    350  Paints                     8     
Brush             735  Pens and pencils           2    *対象項目      
Canvas           3150  Others                     4
Sketchbook       2940  Others                    12   
7 rows in set (0.00 sec)

○○削除する桁数と並べ替え
「sada_cate」カラムの値が'Pens and pencils'のデータを対象に「sada_count」カラムの値が大きいものから2行のデータを削除してみます。
mysql> delete from sadachika_shop.sadachi_uriage where sada_cate = 'Pens and pencils' order by sada_count DESC limit 2;    *削除対象を大きいものから2つに絞る。
                                                        ↑カラム名   ↑削除対象の値                       ↑*DESCを指定した場合は降順(大きい)
Query OK, 2 rows affected (0.02 sec)
ASCを指定した場合は昇順
DESCを指定した場合は降順

お手本 ASC DESC の指定が無い場合は値が小さいものからになるみたい。
「cate」カラムの値が'Fruit'のデータを対象に「sales」カラムの値が少ないものから3行のデータを削除する。
mysql> delete from uriage where cate = 'Fruit' order by sales limit 3;

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
                                                        *削除された
Pencil            105  Pens and pencils           1
Oil paint         400  Paints                    14        
Acrylic paints    350  Paints                     8     *次の対象項目   
                                                        *削除された      
Canvas           3150  Others                     4
Sketchbook       2940  Others                    12   
5 rows in set (0.00 sec)

○○削除する桁数と並べ替え
「sada_cate」カラムの値が'Paints'のデータを対象に「sada_count」カラムの値が小さいものから1行のデータを削除してみます。
mysql> delete from sadachika_shop.sadachi_uriage where sada_cate = 'Paints' order by sada_count ASC limit 1;    *削除対象を小さいものから1つに絞る。
                                                        ↑カラム名   ↑削除対象の値              ↑*ASCを指定した場合は昇順(小さい)
Query OK, 1 row affected (0.00 sec)
ASCを指定した場合は昇順
DESCを指定した場合は降順

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
Pencil            105  Pens and pencils           1
Oil paint         400  Paints                    14    *次の対象項目        
                                                       *削除された     
Canvas           3150  Others                     4
Sketchbook       2940  Others                    12   
4 rows in set (0.00 sec)

お手本 メモ 若干例2がよく分らないけれど、組み込めそうなのでメモ。
[例1]categoryカラムの値が'Fruit'のデータを10行分削除する
  DELETE FROM uriage WHERE category = 'Fruit' LIMIT 10;
[例2]salesカラムの値が少ない順に5行分削除する
  DELETE FROM uriage ORDER BY sales LIMIT 5;


○○削除する桁数と並べ替え  カラムsada_count の値が13より大きければ削除する。
mysql> delete from sadachika_shop.sadachi_uriage where sada_count > 13; 
Query OK, 1 row affected (0.03 sec)

お手本 [例2]countカラムの値が100より小さいデータを削除する
       DELETE FROM uriage WHERE count < 100;

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
Pencil            105  Pens and pencils           1
                                                       *削除された        
Canvas           3150  Others                     4    *次の対象項目
Sketchbook       2940  Others                    12    *次の対象項目   
3 rows in set (0.00 sec)

○○指定して削除
mysql> delete from sadachika_shop.sadachi_uriage where sada_cate = 'Others'; 
Query OK, 2 rows affected (0.03 sec)

[例1]idカラムの値が10のデータを削除する
  DELETE FROM uriage WHERE id = 10;

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
Pencil            105  Pens and pencils           1    *次の対象項目      
                                                       *削除された
                                                       *削除された   
1 row in set (0.00 sec)

○○単独での削除
mysql> delete from sadachika_shop.sadachi_uriage where sada_count = 1; 
Query OK, 1 row affected (0.00 sec)

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;    *削除されたみたい
Empty set (0.00 set)


お手本をメモ
[例1]idカラムの値が10のデータを削除する
  DELETE FROM uriage WHERE id = 10;
[例2]countカラムの値が100より小さいデータを削除する
  DELETE FROM uriage WHERE count < 100;
[例3]全てのデータを削除する
  DELETE FROM uriage;








応用おさらいメモ
ASCを指定した場合は昇順
DESCを指定した場合は降順

○○カラム名sada_count の小さい方から3件、50(50円クーポン)を引いて行く。
                   ↓db名     ↓テーブル名      ↓変更するカラム名の値↓カラム名の値
mysql> update sadachika_shop.sadachi_uriage set sada_price = sada_price - 50 
    -> order by sada_count ASC limit 3;                                        *カラム名sada_count の内、小さい方から3件を更新する。
                ↑*カラム名 ↑*ASCを指定した場合は昇順


























○基本はこの品揃えがサンプルになります。
/////////////////////奮闘記////////////////////////////
商品一覧               sada_price    sada_count
木炭 Charcoal               525円             2
鉛筆 Pencil                 105円             1
油絵具 Oil paint            400円            14
アクリル絵具 Acrylic paints 350円             8
筆 Brush                    735円             5
キャンバス Canvas          3150円             4
スケッチブック  Sketchbook 2940円            12

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_count
Charcoal          525           2   *対象品目475+50=525
Pencil            105           1   *対象品目 55+50=105 
Oil paint         400          14        
Acrylic paints    350           8     
Brush             735           5       
Canvas           3150           4   *対象品目3100+50=3150
Sketchbook       2940          12   
7 rows in set (0.00 sec)


WHERE句は省略可能ですが、その場合はテーブル内の全てのデータが削除されます。

○カラムを後ろに、前に、位置を指定して追加する。 おさらいfree61
○テーブル(sadachi_uriage) へ、カテゴリーカラム(sada_cate)を追加する。
○指定したカラムの後に挿入する場合は「AFTER」の後にカラム名を指定する
mysql> ALTER TABLE tbl_name ADD [COLUMN] column_definition AFTER col_name;
mysql> ALTER TABLE sadachika_shop.sadachi_uriage ADD sada_cate varchar(20) AFTER sada_price;

○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_uriage;         *columns(新聞など印刷物の)縦の段; 欄.            
Field          Type         Null   Key    Default    Extra
sada_name      varchar(20)  YES    UNI    データなし            *メモ ユニークキーが上書きの基準に使えます。基準値のカラムへは上書き出来ませんが、それ以外のカラムへは上書きします。
sada_price     int(11)      YES           0                     
sada_cate      varchar(20)  YES           NULL                  *追加された。カラム名sada_cate VARCHAR(20)型
sada_count     int(11)      YES           0 

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count             *カラム名sada_sate が増えた
Charcoal          525  NULL                       2
Pencil            105  NULL                       1
Oil paint         400  NULL                      14        
Acrylic paints    350  NULL                       8     
Brush             735  NULL                       5       
Canvas           3150  NULL                       4
Sketchbook       2940  NULL                      12   
7 rows in set (0.00 sec)

○アップデート
絵具    Paints
筆記具  Pens and pencils
その他  Others
                     ↓db名       ↓テーブル名    ↓カラム名   ↓更新・格納するデータ    ↓基準カラムの桁となる
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Pens and pencils' where sada_name = 'Charcoal';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Pens and pencils' where sada_name = 'Pencil';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Paints' where sada_name = 'Oil paint';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Paints' where sada_name = 'Acrylic paints';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Pens and pencils' where sada_name = 'Brush';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Others' where sada_name = 'Canvas';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update sadachika_shop.sadachi_uriage set sada_cate = 'Others' where sada_name = 'Sketchbook';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count             *カラム名sada_sate が増えた
Charcoal          525  Pens and pencils           2  *アップデートを試みる
Pencil            105  Pens and pencils           1
Oil paint         400  Paints                    14        
Acrylic paints    350  Paints                     8     
Brush             735  Pens and pencils           5  *アップデートを試みる       
Canvas           3150  Others                     4
Sketchbook       2940  Others                    12   
7 rows in set (0.00 sec)

○アップデート カラムsada_name Charcoal桁のsada_countを2→5へ変更
mysql> update sadachika_shop.sadachi_uriage set sada_count = 5 where sada_name = 'Charcoal';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
               カラムsada_name Brush桁のsada_countを5→2へ変更                                                             
mysql> update sadachika_shop.sadachi_uriage set sada_count = 2 where sada_name = 'Brush';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

○テーブルの中身の表示 (sadachi_uriage) 
mysql> select * from sadachika_shop.sadachi_uriage;
sada_name  sada_price  sada_cate         sada_count
Charcoal          525  Pens and pencils           5  *2→5へ変更された
Pencil            105  Pens and pencils           1
Oil paint         400  Paints                    14        
Acrylic paints    350  Paints                     8     
Brush             735  Pens and pencils           2  *5→2へ変更された       
Canvas           3150  Others                     4
Sketchbook       2940  Others                    12   
7 rows in set (0.00 sec)















free70.html←間違っているので訂正した
○アップデート
                     ↓db名       ↓テーブル名    ↓カラム名   ↓更新するデータ        ↓基準のカラムの桁
mysql> update sadachika_shop.sadachi_results set sada_name = '佐藤' where sada_name = '橘高';
mysql> update sadachika_shop.sadachi_results set sada_id = 4 where sada_id = 3;
mysql> update sadachika_shop.sadachi_results set sada_id = 3 where sada_id = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0





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

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

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