元になるテーブル内のデータをコピーして、新しく作るテーブルに格納する設定を勉強しました。 free57

Monday,July,8,2013


○テーブルを作る
mysql> create table sadachika_shop.sadachi_allproducts(
    -> sada_id int not null primary key, sada_cate int, sada_name varchar(10));     *カラム名sada_id INT型 NULLの入力を許さない primary key重複データを許さない, カラム名sada_cate INT型,  カラム名sada_name VARCHAR型

○データをカラムに入力
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(1, 1, '牛乳');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(2, 2, '食パン');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(3, 2, 'コロッケ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(4, 1, '紅茶');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(5, 3, 'パイナップル');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(6, 3, '苺');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(7, 1, 'コーラ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(8, 1, 'ラムネ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(9, 2, '焼きそば');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(10, 2, 'たこ焼き');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(11, 2, 'メロンパン');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(12, 3, 'キューイフルーツ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(13, 3, 'マンゴ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(14, 3, 'ナタデココ');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(15, 1, 'オレンジジュース');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(16, 1, 'トマトジュース');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(17, 2, 'お好み焼き');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(18, 2, 'ハンバーガー');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(19, 3, '梨');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(20, 3, 'みかん');
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(21, 3, 'みかん');      *テスト 入力出来た
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(22, 1, '欧州');        *テスト 後に訂正する
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(23, 2, 'アメリカ');    *テスト 後に訂正する
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(24, 3, 'ギリシャ');    *テスト 後に訂正する
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(20, 3, 'ギリシャ');    *テスト ERROR
mysql> insert into sadachika_shop.sadachi_allproducts(sada_id, sada_cate, sada_name) values(null, 3, '東京');      *テスト ERROR

○データベースを表示させる
show databases;
○データベースに接続する
USE sadachika_shop;
○テーブルを表示させる。
SHOW TABLES;
○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_allproducts;
sada_id    sada_cate   sada_name
1                  1   牛乳
2                  2   食パン
3                  2   コロッケ
4                  1   紅茶
5                  3   パイナップル
6                  3   苺
7                  1   コーラ
8                  1   ラムネ
9                  2   焼きそば
10                 2   たこ焼き
11                 2   メロンパン
12                 3   キューイフルーツ
13                 3   マンゴ
14                 3   ナタデココ
15                 1   オレンジジュース
16                 1   トマトジュース
17                 2   お好み焼き
18                 2   ハンバーガー
19                 3   梨
20                 3   みかん
21                 3   みかん
22                 1   欧州
23                 2   アメリカ
24                 3   ギリシャ

○テーブルの内を検索
mysql> SELECT * FROM sadachika_shop.sadachi_allproducts WHERE sada_cate = 1;
sada_id    sada_cate   sada_name
      1            1        牛乳
      4            1        紅茶
      7            1        コーラ
      8            1        ラムネ
     15            1        オレンジジュース
     16            1        トマトジュース
     22            1        欧州

mysql> SELECT * FROM sadachika_shop.sadachi_allproducts WHERE sada_cate = 2;
sada_id    sada_cate   sada_name
      2            2        食パン
      3            2        コロッケ
      9            2        焼きそば
     10            2        たこ焼き
     11            2        メロンパン
     17            2        お好み焼き
     18            2        ハンバーガー
     23            2        アメリカ

○○アップデート
update sadachika_shop.sadachi_allproducts set sada_name = 'はっさく' where sada_id = 21;
update sadachika_shop.sadachi_allproducts set sada_name = 'スプライト' where sada_id = 22;
update sadachika_shop.sadachi_allproducts set sada_name = '生姜焼き' where sada_id = 23;
update sadachika_shop.sadachi_allproducts set sada_name = '桃' where sada_id = 24;

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_allproducts;
sada_id    sada_cate   sada_name
1                  1   牛乳
2                  2   食パン
3                  2   コロッケ
4                  1   紅茶
5                  3   パイナップル
6                  3   苺
7                  1   コーラ
8                  1   ラムネ
9                  2   焼きそば
10                 2   たこ焼き
11                 2   メロンパン
12                 3   キューイフルーツ
13                 3   マンゴ
14                 3   ナタデココ
15                 1   オレンジジュース
16                 1   トマトジュース
17                 2   お好み焼き
18                 2   ハンバーガー
19                 3   梨
20                 3   みかん
21                 3   はっさく            *アップデートされた
22                 1   スプライト          *アップデートされた
23                 2   生姜焼き            *アップデートされた
24                 3   桃                  *アップデートされた

○○元のテーブルのカラムだけを使ってテーブルを作成
mysql> create table sadachika_shop.sadachi_back select * from sadachi_allproducts;

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_back;
sada_id    sada_cate   sada_name
1                  1   牛乳                *元テーブルからコピーされた
2                  2   食パン              *元テーブルからコピーされた
3                  2   コロッケ            *元テーブルからコピーされた
4                  1   紅茶                *元テーブルからコピーされた
5                  3   パイナップル        *元テーブルからコピーされた
6                  3   苺                  *元テーブルからコピーされた
7                  1   コーラ              *元テーブルからコピーされた
8                  1   ラムネ              *元テーブルからコピーされた
9                  2   焼きそば            *元テーブルからコピーされた
10                 2   たこ焼き            *元テーブルからコピーされた
11                 2   メロンパン          *元テーブルからコピーされた
12                 3   キューイフルーツ    *元テーブルからコピーされた
13                 3   マンゴ              *元テーブルからコピーされた
14                 3   ナタデココ          *元テーブルからコピーされた
15                 1   オレンジジュース    *元テーブルからコピーされた
16                 1   トマトジュース      *元テーブルからコピーされた
17                 2   お好み焼き          *元テーブルからコピーされた
18                 2   ハンバーガー        *元テーブルからコピーされた
19                 3   梨                  *元テーブルからコピーされた
20                 3   みかん              *元テーブルからコピーされた
21                 3   はっさく            *元テーブルからコピーされた
22                 1   スプライト          *元テーブルからコピーされた
23                 2   生姜焼き            *元テーブルからコピーされた
24                 3   桃                  *元テーブルからコピーされた

○元テーブル(sadachi_allproducts)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_allproducts\G
*********** 1. row **************
       Table: sadachi_allproducts
Create Table: CREATE TABLE 'sadachi_allproducts'(
 'sada_id' int(11) NOT NULL,                   *カムラの名前sada_id、   INT型 NULLを格納を許さない
 'sada_cate' int(11) DEFAULT NULL,             *カムラの名前sada_cate、 INT型 NULLを格納を許可
 'sada_nane' varchar(10) DEFAULT NULL          *カムラの名前sada_price、INT型 NULLを格納を許可
 PRIMARY KEY ('sada_id')                       *○重要  ここのプライマリキー(重複するデータの格納を許さない)の設定がコピーできない。ユニークキーやインデックス設定もコピーできない。
) ENGINE=InnoDB DEFAULT CHARSET=utf8           *my.ini ファイルのデフォルトを参照
1 row in set (0.00 sec)                        *指定する場合のためにメモを残しておくmysql> create database sadachika_cp932db character set cp932; 
         *↑デフォルトはInnoDBだが、指定する場合のためにメモを残しておく  InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型  MyISAMと入力

○作成したテーブル(sadachi_back)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_back\G
*********** 1. row **************
       Table: sadachi_back
Create Table: CREATE TABLE 'sadachi_back'(
 'sada_id' int(11) NOT NULL,                   *カムラの名前sada_id、   INT型 NULLを格納を許さない
 'sada_cate' int(11) DEFAULT NULL,             *カムラの名前sada_cate、 INT型 NULLを格納を許可
 'sada_nane' varchar(10) DEFAULT NULL          *カムラの名前sada_price、INT型 NULLを格納を許可
) ENGINE=InnoDB DEFAULT CHARSET=utf8           *my.ini ファイルのデフォルトを参照
1 row in set (0.00 sec)                        *指定する場合のためにメモを残しておくmysql> create database sadachika_cp932db character set cp932; 
         *↑デフォルトはInnoDBだが、指定する場合のためにメモを残しておく  InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型  MyISAMと入力


○○元テーブルのカラムを指定して新しいテーブルにコピーする
mysql> create table sadachika_shop.sadachi_productname select sada_id, sada_name from sadachika_shop.sadachi_allproducts;
                                        ↑新テーブル名         ↑元カラム名 ↑元カラム名     ↑元データベース名     ↑元テーブル名名

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_productname;
sada_id   sada_name
      1   牛乳            *元テーブルから2項目がコピーされた
      2   食パン          *元テーブルから2項目がコピーされた
      3   コロッケ        *元テーブルから2項目がコピーされた
      4   紅茶            *元テーブルから2項目がコピーされた
      5   パイナップル    *元テーブルから2項目がコピーされた
      6   苺              *元テーブルから2項目がコピーされた
      7   コーラ          *元テーブルから2項目がコピーされた
      8   ラムネ          *元テーブルから2項目がコピーされた
      9   焼きそば        *元テーブルから2項目がコピーされた
     10   たこ焼き        *元テーブルから2項目がコピーされた
     11   メロンパン      *元テーブルから2項目がコピーされた
     12   キューイフルーツ   *元テーブルから2項目がコピーされた
     13   マンゴ          *元テーブルから2項目がコピーされた
     14   ナタデココ      *元テーブルから2項目がコピーされた
     15   オレンジジュース   *元テーブルから2項目がコピーされた
     16   トマトジュース     *元テーブルから2項目がコピーされた
     17   お好み焼き      *元テーブルから2項目がコピーされた
     18   ハンバーガー    *元テーブルから2項目がコピーされた
     19   梨              *元テーブルから2項目がコピーされた
     20   みかん          *元テーブルから2項目がコピーされた
     21   はっさく        *元テーブルから2項目がコピーされた
     22   スプライト      *元テーブルから2項目がコピーされた
     23   生姜焼き        *元テーブルから2項目がコピーされた
     24   桃              *元テーブルから2項目がコピーされた

○対象のカラムの値を削除する
delete from sadachika_shop.sadachi_productname where (sada_id) = (11);
delete from sadachika_shop.sadachi_productname where (sada_id) = (12);
delete from sadachika_shop.sadachi_productname where (sada_id) = (13);
delete from sadachika_shop.sadachi_productname where (sada_id) = (14);
delete from sadachika_shop.sadachi_productname where (sada_id) = (15);
delete from sadachika_shop.sadachi_productname where (sada_id) = (16);
delete from sadachika_shop.sadachi_productname where (sada_id) = (17);
delete from sadachika_shop.sadachi_productname where (sada_id) = (18);
delete from sadachika_shop.sadachi_productname where (sada_id) = (19);
delete from sadachika_shop.sadachi_productname where (sada_id) = (20);
delete from sadachika_shop.sadachi_productname where (sada_id) = (21);
delete from sadachika_shop.sadachi_productname where (sada_id) = (22);
delete from sadachika_shop.sadachi_productname where (sada_id) = (23);


○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_productname;
sada_id   sada_name
      1   牛乳            *元テーブルから2項目がコピーされた
      2   食パン          *元テーブルから2項目がコピーされた
      3   コロッケ        *元テーブルから2項目がコピーされた
      4   紅茶            *元テーブルから2項目がコピーされた
      5   パイナップル    *元テーブルから2項目がコピーされた
      6   苺              *元テーブルから2項目がコピーされた
      7   コーラ          *元テーブルから2項目がコピーされた
      8   ラムネ          *元テーブルから2項目がコピーされた
      9   焼きそば        *元テーブルから2項目がコピーされた
     10   たこ焼き        *元テーブルから2項目がコピーされた
     24   桃              *元テーブルから2項目がコピーされた

  
○○元のテーブルにWHERE句を指定することで特定のデータだけを新しいテーブルに追加
mysql> create table sadachika_shop.sadachi_drinkproductname       *新テーブル名
    -> select sada_id, sada_name from sadachika_shop.sadachi_allproducts where sada_cate = 2;
               ↑新カラム名 ↑新カラム名    ↑元データベース名   ↑元テーブル名      

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_drinkproductname; *テーブル名は飲み物じゃなくてパンだねwしくじった
sada_id   sada_name
      2   食パン
      3   コロッケ
      9   焼きそば
     10   たこ焼き
     11   メロンパン
     17   お好み焼き
     18   ハンバーガー
     23   アメリカ

○○元のテーブルにWHERE句を指定することで特定のデータだけを新しいテーブルに追加
mysql> create table sadachika_shop.sadachi_drinkproductname1       *新テーブル名
    -> select sada_id, sada_name from sadachika_shop.sadachi_allproducts where sada_cate = 1;
               ↑新カラム名 ↑新カラム名    ↑元データベース名   ↑元テーブル名  

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_drinkproductname1; *今度は飲み物にできたよ
sada_id   sada_name
      1   牛乳
      4   紅茶
      7   コーラ
      8   ラムネ
     15   オレンジジュース
     16   トマトジュース
     22   スプライト

○○元のテーブルにWHERE句を指定することで特定のデータだけを新しいテーブルに追加
mysql> create table sadachika_shop.sadachi_drinkproductname2       *新テーブル名
    -> select sada_id, sada_name from sadachika_shop.sadachi_allproducts where sada_id = 11;
               ↑新カラム名 ↑新カラム名    ↑元データベース名   ↑元テーブル名
複数の選択をしたいのだが、わからない。

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_drinkproductname2;
sada_id   sada_name
     11   メロンパン

○○元のテーブルのカラムに新しいカラムを追加してテーブルを作成
mysql> create table sadachika_shop.sadachi_pricetable(sada_price int) select * from sadachika_shop.sadachi_allproducts;

○テーブルの中身の表示(sadachi_pricetable) 
mysql> select * from sadachika_shop.sadachi_pricetable;
sada_price    sada_id    sada_cate   sada_name
      NULL          1            1   牛乳
      NULL          2            2   食パン
      NULL          3            2   コロッケ
      NULL          4            1   紅茶
      NULL          5            3   パイナップル
      NULL          6            3   苺
      NULL          7            1   コーラ
      NULL          8            1   ラムネ
      NULL          9            2   焼きそば
      NULL         10            2   たこ焼き
      NULL         11            2   メロンパン
      NULL         12            3   キューイフルーツ
      NULL         13            3   マンゴ
      NULL         14            3   ナタデココ
      NULL         15            1   オレンジジュース
      NULL         16            1   トマトジュース
      NULL         17            2   お好み焼き
      NULL         18            2   ハンバーガー
      NULL         19            3   梨
      NULL         20            3   みかん
      NULL         21            3   はっさく
      NULL         22            1   スプライト
      NULL         23            2   生姜焼き
      NULL         24            3   桃

○元のテーブルのカラムに追加の属性を設定
mysql> create table sadachika_shop.sadachi_pricetable2(sada_id int primary key, sada_price int)    *新テーブルには、カラム名sada_id INT型にprimary keyを設定し、あらたにカラム名sada_price INT型を付け加えた
    -> select * from sadachika_shop.sadachi_allproducts;        *コピーを行なう元となるテーブル、元テーブル名sadachi_allproducts

○テーブルの中身の表示(sadachi_pricetable2) 
mysql> select * from sadachika_shop.sadachi_pricetable2;
sada_price    sada_id    sada_cate   sada_name
      NULL          1            1   牛乳
      NULL          2            2   食パン
      NULL          3            2   コロッケ
      NULL          4            1   紅茶
      NULL          5            3   パイナップル
      NULL          6            3   苺
      NULL          7            1   コーラ
      NULL          8            1   ラムネ
      NULL          9            2   焼きそば
      NULL         10            2   たこ焼き
      NULL         11            2   メロンパン
      NULL         12            3   キューイフルーツ
      NULL         13            3   マンゴ
      NULL         14            3   ナタデココ
      NULL         15            1   オレンジジュース
      NULL         16            1   トマトジュース
      NULL         17            2   お好み焼き
      NULL         18            2   ハンバーガー
      NULL         19            3   梨
      NULL         20            3   みかん
      NULL         21            3   はっさく
      NULL         22            1   スプライト
      NULL         23            2   生姜焼き
      NULL         24            3   桃

○テーブル(sadachi_pricetable2)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_pricetable2\G
*********** 1. row **************
       Table: sadachi_pricetable2
Create Table: CREATE TABLE 'sadachi_pricetable2'(
 'sada_price' int(11) DEFAULT NULL,
 'sada_id' int(11) NOT NULL,                   *カムラの名前sada_id、   INT型 NULLを格納を許さない
 'sada_cate' int(11) DEFAULT NULL,             *カムラの名前sada_cate、 INT型 NULLを格納を許可
 'sada_nane' varchar(10) DEFAULT NULL          *カムラの名前sada_price、INT型 NULLを格納を許可
 PRIMARY KEY ('sada_id')                       *追加されたね。*○重要  ここのプライマリキー(重複するデータの格納を許さない)の設定がコピーできない。ユニークキーやインデックス設定もコピーできない。
) ENGINE=InnoDB DEFAULT CHARSET=utf8           *my.ini ファイルのデフォルトを参照
1 row in set (0.00 sec)                        *指定する場合のためにメモを残しておくmysql> create database sadachika_cp932db character set cp932; 
         *↑デフォルトはInnoDBだが、指定する場合のためにメモを残しておく  InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型  MyISAMと入力



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

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

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