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