指定の箇所だけアップデート
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)
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。