2 つのテーブル コピー ステートメントの詳細な説明: SELECT INTO と INSERT INTO SELECT (SQL データベースと Oracle データベースの違い)

2 つのテーブル コピー ステートメントの詳細な説明: SELECT INTO と INSERT INTO SELECT (SQL データベースと Oracle データベースの違い)

1. INSERT INTO SELECT文

ステートメントの形式は次のとおりです: Insert into Table2(field1,field2,...) select value1,value2,... from Table1

または: Table2に挿入し、Table1から*を選択します

注意: (1) ターゲットテーブル Table2 が存在し、フィールド field、field2... も存在している必要があります。

(2)Table2の主キー制約に注意してください。Table2に主キーがあり、それが空でない場合、field1、field2などに主キーが含まれている必要があります。

(3)構文に注意してください。データを挿入するためのSQLと混同しないように値を追加しないでください。次のように書かないでください。

Table2(field1,field2,...) に値を挿入します (Table1 から value1,value2,... を選択)

ターゲット テーブル Table2 はすでに存在するため、ソース テーブル Table1 のフィールドに加えて定数を挿入できます。次に例を示します。

 --1. テストテーブルを作成する create TABLE Table1 
 ( 
 varchar(10)、 
 b varchar(10)、 
 c varchar(10)
 )
 テーブル Table2 を作成する 
 ( 
 varchar(10)、 
 c varchar(10)、 
 d 整数
 )

 --2. テストデータを作成する Table1 に values('赵','asds','90') を挿入します。 
 Table1に値('money','asds','100')を挿入します 
 Table1に値('孙','asds','80')を挿入します 
 Table1に値('李','asds',null)を挿入します 

 表2から*を選択 

--3. INSERT INTO SELECT文はテーブルデータのいくつかの列と定数値をコピーします。Table2に挿入します(a、c、d)Table1からa、c、5を選択します。

または: Table2に挿入し、Table1から*を選択します

--4. 更新された結果を表示する表2から*を選択する 

 --5. テストテーブルを削除します。drop TABLE Table1 
 テーブルテーブル2をドロップする

2. SELECT INTO FROM ステートメント

ステートメントの形式は次のとおりです: SELECT vale1, value2 into Table2 from Table1

挿入時に Table2 が自動的に作成され、Table1 の指定されたフィールド データが Table2 にコピーされるため、ターゲット テーブル Table2 は存在していてはいけません。次に例を示します。

--1. テストテーブルを作成する create TABLE Table1 
 ( 
 varchar(10)、 
 b varchar(10)、 
 c varchar(10)
 )

 --2. テストデータを作成する Table1 に values('赵','asds','90') を挿入します。 
 Table1に値('money','asds','100')を挿入します 
 Table1に値('孙','asds','80')を挿入します 
 Table1に値('李','asds',null)を挿入します 

 --3.SELECT INTO FROM ステートメントはテーブル Table2 を作成し、データをコピーします。select a,c INTO Table2 from Table1 
 
 --4. 更新された結果を表示する表2から*を選択する 

 --5. テストテーブルを削除します。drop TABLE Table1 
 テーブルテーブル2をドロップする

注意: このステートメントを SQL/Plus または PL/SQL で実行すると、「ORA-00905: キーワードがありません」というエラーが発生します。これは、PL/Sql と T-SQL の違いによるものです。
このステートメントは T-SQL では正常ですが、PL/SQL での説明は次のとおりです。
select..into は PL/SQL 言語の一部であるため、PL/SQL ブロック内で使用する必要があります。PL/SQL 外の SQL ステートメントでは使用できません。
つまり、単一の SQL 文として実行することはできず、通常は PL/SQL プログラム ブロック内で使用されます。

この関数を PL/SQL で実装する場合は、Create table newTable as select * from ... を使用できます。
たとえば、create table NewTable as select * from ATable; です。

NewTable は、キーがないことを除いて ATable と同じです。

---------SQL SELECT INTO 構文の概要
SQL SELECT INTO ステートメントを使用して、テーブルのバックアップ コピーを作成できます。
SELECT INTO ステートメント
SELECT INTO ステートメントは、1 つのテーブルからデータを選択し、そのデータを別のテーブルに挿入します。
SELECT INTO ステートメントは、テーブルのバックアップ コピーを作成したり、レコードをアーカイブしたりするためによく使用されます。
SQL SELECT INTO 構文 すべての列を新しいテーブルに挿入できます。
SELECT * INTO new_table_name [IN externaldatabase] FROM old_table_name
または、必要な列のみを新しいテーブルに挿入します。
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
SQL SELECT INTO の例 - バックアップ コピーを作成する 次の例では、「Persons」テーブルのバックアップ コピーを作成します。
SELECT * INTO Persons_backup FROM Persons
IN 句を使用すると、テーブルを別のデータベースにコピーできます。
SELECT * INTO Persons IN 'Backup.mdb' FROM Persons
特定のフィールドをコピーしたい場合は、SELECT ステートメントの後にそれらをリストすることができます。
姓、名を選択
INTO 人物_バックアップ
人物から
SQL SELECT INTO の例 - WHERE 句を使用 WHERE 句を追加することもできます。
次の例では、「Persons」テーブルから「北京」に住む人々に関する情報を抽出して、2 つの列を持つ「Persons_backup」という名前のテーブルを作成します。
SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'
SQL SELECT INTO の例 - 結合されたテーブル 複数のテーブルからデータを選択することもできます。
次の例では、Persons テーブルと Orders テーブルの両方の情報を含む「Persons_Order_Backup」という新しいテーブルを作成します。
SELECT 人物.姓,注文.注文番号
INTO 人物_注文_バックアップ
人物から
INNER JOIN 命令
ON Persons.Id_P=Orders.Id_P

mysql の select into と sql の select into の比較<br /> 現在、student というテーブルがあり、このテーブルのデータを dust という新しいテーブルにコピーしたいと考えています。

回答01:
create table dust select * from student; //コピー前に新しいテーブルdustが作成されていない場合に使用します
回答02:
insert into dust select * from student; //新しいテーブルdustが作成された場合

ここで、select..into.. ステートメントを使用して、上記を実現します。

MySQL は、テーブル構造とデータを直接バックアップするための Select Into ステートメントをサポートしていません。代わりに使用できる方法がいくつかあります。また、使用できる他の方法もいくつかあり、以下にまとめます。

方法1:

MYSQL は以下をサポートしていません:
Select * Into new_table_name from old_table_name; これは、SQL Server での代替の使用方法です。
テーブル new_table_name を作成します (old_table_name から * を選択)。

方法2:

1. まずテーブル構造とデータをバックアップする
#エクスポートコマンド -u ユーザー名 -p パスワード -h ホスト IP アドレス データベース名 テーブル名 1 > エクスポートファイル.sql
mysqldump -uroot -proot -h192.168.0.88 ok_db oktable2 > ok_db.sql

2. バックアップテーブルの名前を変更する
3. MySQLにログインする
4. データベースを選択する
5.実行: バックアップ テーブルのパスを Source d:/ok_db.sql のように入力し、Enter キーを押します。
6. 完了です。

MySQL Select into outfile は、次のように指定されたクエリ データをファイルにエクスポートするために使用されます。

1. 次のように、テーブル内のすべてのデータをドライブ C のルート ディレクトリにある outfile.txt にエクスポートします。
テストから出力ファイル 'c://outfile.txt' に * を選択します。

2. 次のように、テーブル内の指定されたクエリ条件 2005-06-08 のデータを、ドライブ C のルート ディレクトリにある outfile1.txt にエクスポートします。
beginDate='2008-06-08' のテストから、出力ファイル 'c://outfile.txt' に * を選択します。

mysql> ローカル入力ファイル「d:/gpsdata.txt」のデータを、';' で終わる位置データフィールド (userid、latitude、longitude、altitude、speed、innerid、repo) のテーブルにロードします。
rttime、ステータス);

データをロード [LOW_PRIORITY CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[無視して置き換え]
テーブル tbl_name に
[フィールド
['文字列' によって終了]
[[オプション] 'char' で囲む]
['char' によってエスケープされました]
]
[行
['文字列'で始まる]
['文字列' によって終了]
]
[行数を無視]
[(列名またはユーザー変数、...)]
[COL_NAME の設定 = eXPr,...]

フィールドと行は前にあり、(col_name_or_user_var、...) は後ろにあります。使用時に、書き込みたい属性をテーブル名の直後に置くと、これは正しくありません。フィールドと行の後に記述する必要があります。

もう 1 つ追加する点: テーブル A のデータがテーブル B にコピーされる場合、テーブル B には自動増分 ID を設定できません。

自動増分IDがある場合は、自動増分IDを挿入しないでください。

B(タイトル)に挿入 Aからタイトルを選択

以下もご興味があるかもしれません:
  • postgresql 13.1 insert into select の並列クエリの実装
  • Postgresql の insert into select では並列クエリ ソリューションを使用できません
  • MySQL での重複キー更新時の replace into と insert into の使用法と相違点の分析
  • 詳細な説明とサンプルコード付きのphp mysql insert into
  • PHP+MySQL における Insert Into データ挿入の使用法の分析
  • MySQL INSERT INTO ステートメントの正しい使用方法
  • INSERT INTO ステートメントを使用して MySql で複数のレコードを更新する例
  • SQL 挿入文の書き方の説明

<<:  nginxのリソースキャッシュ設定の詳細な説明

>>:  EChartsマウスイベント処理方法の詳細な説明

推薦する

CSS3 で King of Glory マッチング人員読み込みページを実装する方法

King of Glory をプレイしたことがある人なら、このページの効果をよくご存知でしょう。なぜ...

ページにデータを表示するReactメソッド

目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...

Javascript 文字列メソッドの詳細な説明

目次文字列の長さ: 長さcharAt() charCodeAt()文字列に値が含まれているかどうかを...

インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する

1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

CSS3 で less のテキストの長い影を実装する

この記事では主に、CSS3 LESS で長いテキストの影を実装する方法を紹介し、皆さんと共有します。...

CSS における XHTML タグの対応する属性と使用法

XHTML CSS を使って Web ページをデザインし始めた頃は、タグの使用経験も少なく、あまり気...

DOCTYPEタイプの詳細な紹介

<br />通常、HTML では次の方法で DOCTYPE を宣言します。 <!D...

Windows10でmysql8.0.17を置き換える詳細なチュートリアル

この記事では、Windows10でmysql8.0.17を置き換える具体的な手順を参考までに紹介しま...

MySQL 8の新機能である降順インデックスの基礎となる実装の詳細な説明

降順インデックスとは何ですか?インデックスについてはよくご存知かもしれませんが、降順インデックスにつ...

Windows Server 2016 AD サーバーをセットアップする手順 (画像とテキスト)

導入: AD は Active Directory の略称で、中国語では Active Direct...

Navicatを使ってMySQLを操作する方法

目次序文: 1. Navicatの紹介2. シンプルなチュートリアルの共有接続管理ライブラリテーブル...

CSS フロントエンドの知識ポイントのまとめ(必読)

1. CSS の概念: (カスケーディング スタイル シート)利点: 1. コンテンツとプレゼンテ...

よくある HTML タグの記述エラー

HTML Police がコードを調べて意味のないタグをすべて見つけ出すので、注意を払う必要がありま...

CSS3 での 2D および 3D 変換の実装

CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...