07テーブルやレコードをコピー・削除する(備忘録)→ > 01p > 02p > 03p > 04p > 05p > END
07テーブルやレコードをコピー・削除する(p94)
(1)《テーブルのカラム構造やデータのコピー》
(2)《テーブルのカラム構造とレコードを丸ごとコピーする》
(3)《テーブルのカラム構造だけをコピー》
(4)《他のテーブルのレコードをコピーする》
(5)《特定のカラムを選択してコピーする》
(6)《テーブル・データベース・レコードの削除》
(7)《テーブルを削除する》
(8)《データベースの削除》
(9)《レコードの丸ごと削除》
<まとめ>
<チェック>
<練習問題>
END
07 テーブルやレコードをコピー・削除する
データベースの作成→テーブルの作成→データの挿入→データの確認、そしてテーブルを改造し、コピー、そして削除する方法です。
☆CHAPTER03⇒MySQLモニタ
☆CHAPTER04⇒データベースの作成
☆CHAPTER05⇒データ型とデータの入力
☆CHAPTER06⇒テーブルを改造する
★CHAPTER07⇒テーブルやレコードをコピー・削除する
★CHAPTER07⇒テーブルやレコードをコピー・削除する(p94)★
テーブルのカラム構造やデータをコピーしたり、データベース・テーブル・レコードを丸ごと削除したりする方法について説明。
(1)《テーブルのカラム構造やデータのコピー》
(2)《テーブルのカラム構造とレコードを丸ごとコピーする》
(2-1)テーブルのカラム構造+データのコピー
●書式⇒テーブルのカラム構造とレコードをコピーしてテーブルを作成
CREATE TABLE 新規テーブル名 SELECT * FROM 元となるテーブル名; ※「SELECT * FROM・・・」した結果を使って「CREATE TABLE」することになります。これで新しくテーブルが作成され、そのデータもコピーされます。社員情報テーブル「tb1」のバックアップを作っておきましょう。テーブル「tb1」のカラム構造とレコードをコピーして「tb1H」を作成します。 |
●実行される内容 p95
●操作手順
①次を実行する CREATE TABLE tb1H SELECT * FROM tb1; ②次を実行する コピーされたかどうか、確認してみます。 SELECT * FROM tb1H; |
【実行結果】
mysql> CREATE TABLE tb1H SELECT * FROM tb1; Query OK, 6 rows affected (0.18 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM tb1H; +------+------+------+ | bang | nama | tosi | +------+------+------+ | A101 | 佐藤 | 40 | | A101 | 佐藤 | 40 | | A102 | 高橋 | 28 | | A103 | 中川 | 20 | | A104 | 渡辺 | 23 | | A105 | 西沢 | 35 | +------+------+------+ 6 rows in set (0.01 sec) mysql> |
(3)《テーブルのカラム構造だけをコピー》
(3-1)テーブルのカラム構造のみコピー
※
●書式⇒テーブルのカラム構造でけコピーして新しくテーブルを作成する
CREATE TABLE 新規テーブル名 KIKE 元となるテーブル名; ※社員情報テーブル「tb1」と同じカラム構造を持つ、空のテーブル「tb1I」を作ってみましょう。 まず、テーブル「tb1」のカラム構造だけをコピーして、テーブル「tb1I」を新規に作ります。さらに、テーブル「tb1」と「tb1I」のカラム構造を表示してみましょう。 |
●実行される内容 p97
●操作手順
①次を実行する CREATE TABLE tb1I LIKE tb1; ②次を実行する DESC tb1; DESC tb1I; |
【実行結果】
mysql> DESC tb1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.09 sec) mysql> DESC tb1I; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.04 sec) mysql> mysql> SELECT * FROM tb1I; Empty set (0.00 sec) mysql> |
(4)《他のテーブルのレコードをコピーする》
※
(4-1)他のテーブルのデータをコピーする
※
●書式⇒他のテーブルのレコードをコピー
NSERT INTO テーブル名 SELECT * FROM 元となるテーブル名; ※先ほど、テーブル「tb1」と同じ構造を持つ空のテーブル「tb1I」作りました。このテーブル「tb1I」に「tb1」のすべてのレコードをコピーしてみます。先ほどテーブルのカラム構造だけコピーした「tb1I」に、「tb1」のレコードを挿入します。さらに挿入後、全レコードを表示してみましょう。 |
●実行される内容 p98
●操作手順
①次を実行する INSERT INTO tb1I SELECT * FROM tb1; ②次を実行する SELECT * FROM tb1I; |
【実行結果】
mysql> INSERT INTO tb1I SELECT * FROM tb1; Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM tb1I; +------+------+------+ | bang | nama | tosi | +------+------+------+ | A101 | 佐藤 | 40 | | A101 | 佐藤 | 40 | | A102 | 高橋 | 28 | | A103 | 中川 | 20 | | A104 | 渡辺 | 23 | | A105 | 西沢 | 35 | +------+------+------+ 6 rows in set (0.00 sec) mysql> |
(5)《特定のカラムを選択してコピーする》
※
(6)《テーブル・データベース・レコードの削除》
※
(7)《テーブルを削除する》
※
●書式⇒テーブルの削除
DROP TABLE テーブル名; ※テーブル「tb1A」を削除してみましょう。また、削除後、存在するすべてのテーブル名を表示してみましょう。 |
●実行される内容 p101
●操作手順
①次を実行する DROP TABLE tb1A; ②次を実行する SHOW TABLES; |
【実行結果】
mysql> SELECT * FROM tb1A; +------+------+------+ | bang | nama | tosi | +------+------+------+ | A101 | 佐藤 | 40 | | A101 | 佐藤 | 40 | | A102 | 高橋 | 28 | | A103 | 中川 | 20 | | A104 | 渡辺 | 23 | | A105 | 西沢 | 35 | +------+------+------+ 6 rows in set (0.55 sec) mysql> DROP TABLE tb1A; Query OK, 0 rows affected (0.12 sec) mysql> SHOW TABLES; +-----------------+ | Tables_in_db1 | +-----------------+ | hizu_ziko | | hizuke | | itii | | renzoku | | syokiti_renzoku | | tb1 | | tb1b | | tb1c | | tb1g | | tb1h | | tb1i | | unig | +-----------------+ 12 rows in set (0.03 sec) mysql> ※ |
(7-1)もし指定のテーブルがある場合には削除する(p102/省略)
※
(8)《データベースの削除》
※
●書式⇒データベースの削除
DROP DATABASE データベース名; ※ |
(9)《レコードの丸ごと削除》
※
●書式⇒レコードの全削除
DELETE FROM テーブル名; ※「DELETE FROM」とすれば、テーブルにあるすべてのレコードが削除されます。また、もし丸ごとでなくレコードを選択して削除するときは、「WHERE」で条件を設定します。WHEREについては後で詳しく。 テーブル「tb1H」のすべてのレコードを削除しましょう。また削除後、レコードがないことを確認します。 |
●実行される内容 p103
●操作手順
①次を実行する DELETE FROM tb1H; ②次を実行する SELECT * FROM tb1H; |
【実行結果】
mysql> SELECT * FROM tb1H; +------+------+------+ | bang | nama | tosi | +------+------+------+ | A101 | 佐藤 | 40 | | A101 | 佐藤 | 40 | | A102 | 高橋 | 28 | | A103 | 中川 | 20 | | A104 | 渡辺 | 23 | | A105 | 西沢 | 35 | +------+------+------+ 6 rows in set (0.00 sec) mysql> DELETE FROM tb1H; Query OK, 6 rows affected (0.53 sec) mysql> SELECT * FROM tb1H; Empty set (0.00 sec) mysql> |
<まとめ>
●他のテーブルのカラム構造とデータをコピーしてテーブルを作成する方法
●他のテーブルのカラム構造をコピーしてテーブルを作成する方法
●他のテーブルのレコードをコピーする方法
●テーブル・データベース・レコードを単純に削除する方法
<チェック>
□「CREATE TABLE…SELECT…」でカラム構造とデータをコピーしてテーブルが作成できる
□「CREATE TABLE…LIKE…」でカラム構造だけをコピーしてテーブルが作成できる
□「INSERT INTO…SELECT…FROM…」を使ってテーブルにデータをコピーできる
□「DROP」を使って、データベース・テーブル・レコードが削除できる
<練習問題>
問題1
次のようなテーブル「nadake」があります。ここにテーブル「」のカラム「」のデータだけを挿入して下さい。
《解答》
問題1
次を実行します。
INSERT INTO nadake (a) SELECT nama FROM tb1;
【実行結果】
①テーブルの作成p43 CREATE TABLE nadake(a VARCHAR(10)); ②テーブルにデータを入力p51 INSERT INTO nadake (a) VALUES ('松尾'),('市川'),('郷'),('伊藤'),('岡田'); ③テーブルのデータ確認 SELECT * FROM nadake; ④「tb1」テーブルから名前「nama」だけ挿入する INSERT INTO nadake (a) SELECT nama FROM tb1; ⑤確認 SELECT * FROM nadake; mysql> CREATE TABLE nadake(a VARCHAR(10)); Query OK, 0 rows affected (0.04 sec) mysql> INSERT INTO nadake (a) VALUES ('松尾'),('市川'),('郷'),('伊藤'),('岡田'); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM nadake; +------+ | a | +------+ | 松尾 | | 市川 | | 郷 | | 伊藤 | | 岡田 | +------+ 5 rows in set (0.00 sec) mysql> INSERT INTO nadake (a) SELECT nama FROM tb1; Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM nadake; +------+ | a | +------+ | 松尾 | | 市川 | | 郷 | | 伊藤 | | 岡田 | | 佐藤 | | 佐藤 | | 高橋 | | 中川 | | 渡辺 | | 西沢 | +------+ 11 rows in set (0.00 sec) mysql> |