元になるテーブル内のデータをコピーして、新しく作るテーブルに格納する設定を勉強しました。 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と入力
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。