

以下は著書の要旨です。
-----------------------------
テーブルのカラム構造だけをコピーする
それで、
できること
1) 生身のデータはコピーされない
2) 「AUTO_INCREMENT」や「PRIMARYKEY」などのレコードの属性がコピーされる。
◎テーブルカラム構造だけコピーして新しくテーブルを作成
[CREATE TABLE]でテーブル名の後に[LIKE]を付け、コピー元となテーブルを指定します。
書式:テーブルカラム構造だけレコーして新たらしくターブルを作成
+------------------------------------------------------------+
| CREATE TABLE 新規テーブル名 LIKE 元となるテーブ-ル名; |
+------------------------------------------------------------+
では、社員情報テーブル[tb1]と同じカラム構造を持つ、空テーブル
[tb_bkc]を作りさらに、テーブル[tb1]と[tb1_bkc]のカラム構造を表示してみます。
操作手順
①次を実行する
+----------------------------------+
| CREATE TABLE tb1_bkc LIKE tb1; |
+----------------------------------+
②次を実行する
+----------------------------------+
| DESC tb1; |
| DESC tb1_bkc; |
+----------------------------------+
実行結果
-----------------------------
mysql> SELECT * FROM tb1_bk;
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| a101 | 佐藤 | 40 |
| a102 | 高橋 | 28 |
| a103 | 中川 | 20 |
| a104 | 渡辺 | 23 |
| A105 | 西沢 | 35 |
+------+------+------+
11 rows in set (0.01 sec)
--------------------------------------
以上ですが!
できること
1) 生身のデータはコピーされない
とあります。しかし
佐藤、高橋など中身のデータまでコピーされるのはなぜですか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>>バグでしょうか!?
そんな感じですね。でも、MySQLの5.7系列の最新版は、5.7.33みたいですので、こちらにすると直っているかも?
現在、MySQLのライセンスはOracle社にあります。以前はSun Microsystemsにあったのですが、Sunが買収されてしまいましたからね。
一時期、OracleはSunから引き継いだ技術にかなりの投資をしていたと思いますが、なんかそのあたりのモノはリストラされたような気がします。
そして商売上は、Oracleとしては、MySQLじゃあなくて、有償のOracleデータベースを売りたいはずだと思われます。
となれば、MySQLへの力の入れ方が下がるのも仕方ないかな?なんて思ったりしています。
なお、MySQLは5.7から6,7を飛ばしてバージョンが8のものもあるようです。が、5.7との仕様の差が大きいので、移行は大変かもしれません。
どうもすみません!
テーブル名:tb1_bkcですが!恥ずかしながら、以下の処理後
、少なくてもP106~107処理を行ってから
SELECT * FROM tb1_bkc;
を行った可能性があります。
以後気を付けます。
めげずに頑張ります、今後ともよろしくお願いいたします。
P106~107
--------------------------------------
|他のテーブルのレコードをコピーする|
--------------------------------------
目的
1) 他のテーブルのレコード(データ)のみをコピーする。
◎他のテーブルのデータををコピーする
1) コピーすできる条件:同じカラム構造であること!
2) TBのデータを丸ごとコピーする構文は[SELECT]したデータを[INSERT]する
という流れです。
No.1
- 回答日時:
以下の処理を試してみました。
OS: Windows10
DB: Maria DB 10.5 (MySQLの互換DB)
ツール: A5:SQL mk2 version 2.15.5 64bit
1)新規のテーブル address を作って、2件のデータを追加。
2)CREATE TABLE newaddress LIKE address; を実行。
3)テーブル newaddress は作成された。データは0件。
想定されるとおりに、構造はコピーされて、中身のデータはコピーされませんでした。
一番ありえそうなのは、質問者さんの操作手順に間違いがある。
もし手順に間違いが無いのであれば、使われたMySQLのバグってことかもしれませんね。
ちなみに、MySQLの互換であるMariaDBを使っている理由は、Windows上でテーブル名に小文字が使えないからです。
MySQL互換のMariaDBでは、設定ファイルの変更で、テーブル名に小文字が使えます。
小文字が使えると、SQLServer等、小文字のテーブル名があるデータベースをMySQLに移行しやすいからです。
ちなみに、Linux(CentOS7)上でも、MySQLではなく、MariaDBを使っています。
DBの処理スピードはMariaDBのほうが速いようです。
おはようございます。
お待たせしました。
どうもすみません
誤字訂正です。生身を中身に変更します。
私は現在「基礎からのMySQL 第3版」
でMysqlを学んでいます。
https://play.google.com/store/books/details/%E8% …
この場合 MySQLの環境は以下です。
1) OS:Windows10 です。
2) MAMP 3.31
3) mysql> select version();
+------------+
| version() |
+------------+
| 5.6.34-log |
+------------+
以上ですが何かありましたらご連絡をお待ちしています。
操作手順ですが、このサイトでは文字オーバーと図形が崩れましたので
私のレンタルサーバの以下のURLからご確認が取れます。
http://afurieitohannei.la.coocan.jp/sns/teburuco …
何かありましたら、ご連絡いただけましたら光栄です。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 関数を用いて表示したセルの内容を、見えている形でコピーする方法 2 2022/09/14 16:36
- Oracle SQL update方法 2 2022/06/22 14:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
外部キーだけのテーブル(主キ...
-
会社の飲み会の幹事になり、座...
-
面接のときテーブルが正面に。...
-
更新されたテーブルを表示したい
-
1対1のリレーション(主キー同...
-
SQLでテーブルの値を集計して、...
-
オーダーの覚え方について
-
【エクセル】データテーブルの...
-
SQLServer DELETE 件数取得
-
論理名とコメント構文(?)について
-
テーブルリンク リンク元を知...
-
飲み会で、座敷orテーブルどち...
-
パッケージなどの印刷がテーブ...
-
Access SQL パラメータクエリ(...
-
L2SWはARPテーブルを持っている?
-
テーブル(構造)のコピー
-
人の前を通る場合について
-
【MySQL】1対1でテーブルをあ...
-
テーブルへの最終アクセス時刻(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
下記、問題に対しての解答が以...
-
L2SWはARPテーブルを持っている?
-
外部キーだけのテーブル(主キ...
-
飲み会で、座敷orテーブルどち...
-
テーブルリンク リンク元を知...
-
アクセスのリンクテーブル一覧...
-
男性と2人で飲食店に行きテーブ...
-
複雑なSQL文について
-
お金持ちのテーブル
-
オーダーの覚え方について
-
面接のときテーブルが正面に。...
-
【エクセル】データテーブルの...
-
【MySQL】1対1でテーブルをあ...
-
UTF8のテーブルをODBCドライバ...
-
テーブル(構造)のコピー
-
論理名とコメント構文(?)について
-
取数計算
-
まるいテーブル 円い 丸い 漢字...
おすすめ情報
文字オーバーでしたので補足で発信します。
どうもすみません!ミスっていました!
mysql> SELECT * FROM tb1_bk;は間違いでは元データのことで
mysql> select * from tb1_bkc;が正解でした。
しかし結果は同じで、構造だけ継承されるべきところですが
データも入っていますのでいわゆる全部コピーされている状態です。
ちなみに全部大文字の
SELECT * FROM TB1_BKC;
変えて試しましたが結果は同じでした。
以下実行結果です。
mysql> SELECT * FROM tb1_bkc;
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| a101 | 佐藤 | 40 |
| a102 | 高橋 | 28 |
| a103 | 中川 | 20 |
| a104 | 渡辺 | 23 |
| A105 | 西沢 | 35 |
+------+------+------+
22 rows in set (0.00 sec)
バグでしょうか!?