ホームページ >データベース >mysql チュートリアル >「SELECT * INTO new_table FROM old_table;」が行われるのはなぜですか? Oracle で失敗しました。新しいテーブルを正しく作成するにはどうすればよいですか?

「SELECT * INTO new_table FROM old_table;」が行われるのはなぜですか? Oracle で失敗しました。新しいテーブルを正しく作成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-05 10:04:44530ブラウズ

Why Does

Oracle での ELECT INTO 予期せぬ悪影響

SQL の領域では、SELECT INTO ステートメントが重要な位置を占めており、簡単なデータ抽出と新しい宛先に挿入します。ただし、Oracle の独自の言語のコンテキストでは、この操作は驚くべき展開を明らかにします。

従来の予想に反して、クエリ "SELECT * INTO new_table FROM old_table;" は、予期しないエラー「SQL エラー: ORA-00905: キーワードがありません。」が発生します。この異常は、Oracle の INTO 句の独自の解釈に起因します。

Oracle の実装の公開

Oracle は、標準の SELECT INTO 動作から逸脱し、別のアプローチを選択しています。ターゲット テーブルが既に存在する場合、Oracle は次の構文に従って暗黙的な INSERT INTO 操作を実行します。

insert into new_table
select * from old_table
/

または、既存のレコードに基づいて新しいテーブルを作成するために、Oracle は次の構文を使用します。

create table new_table as
select * from old_table
/

興味深いことに、Oracle は空のtable:

create table new_table as
select * from old_table
where 1 = 2
/

本質的に false の条件を含む WHERE 句を追加することにより、Oracle はソースからデータをコピーせずに空のテーブルを巧みに構築します。

Oracle の SELECT INTO に対する独特のアプローチは、これまでとは異なるものです。確立された標準から外れており、開発者はその独自の構文とセマンティクスに適応する必要があります。ただし、最初は驚きましたが、この逸脱により、Oracle の広大なデータベース エコシステム内でのデータ操作に対する柔軟性と制御が提供されます。

以上が「SELECT * INTO new_table FROM old_table;」が行われるのはなぜですか? Oracle で失敗しました。新しいテーブルを正しく作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。