Detaillierte Erklärung zweier Tabellenkopieranweisungen: SELECT INTO und INSERT INTO SELECT (Unterschiede zwischen SQL-Datenbank und Oracle-Datenbank)

Detaillierte Erklärung zweier Tabellenkopieranweisungen: SELECT INTO und INSERT INTO SELECT (Unterschiede zwischen SQL-Datenbank und Oracle-Datenbank)

1. INSERT INTO SELECT-Anweisung

Das Anweisungsformat ist: Insert into Table2(field1,field2,...) select value1,value2,... from Table1

Oder: In Tabelle2 einfügen, select * aus Tabelle1

Hinweis: (1) Die Zieltabelle Table2 muss vorhanden sein, und die Felder field, field2... müssen ebenfalls vorhanden sein.

(2) Beachten Sie die Primärschlüsselbeschränkung von Tabelle2. Wenn Tabelle2 einen Primärschlüssel hat und dieser nicht leer ist, dann müssen Feld1, Feld2 usw. den Primärschlüssel enthalten.

(3) Achten Sie auf die Syntax. Fügen Sie keine Werte hinzu, die mit dem SQL zum Einfügen eines Datenelements verwechselt werden könnten. Schreiben Sie es nicht so:

In Tabelle2(Feld1,Feld2,…) Werte einfügen (Wert1,Wert2,… aus Tabelle1 auswählen)

Da die Zieltabelle Table2 bereits existiert, können wir zusätzlich zu den Feldern der Quelltabelle Table1 Konstanten einfügen. Hier ist ein Beispiel:

 --1. Erstellen Sie eine Testtabelle create TABLE Table1 
 ( 
 ein varchar(10), 
 b varchar(10), 
 c varchar(10)
 )
 Tabelle erstellen Tabelle2 
 ( 
 ein varchar(10), 
 c varchar(10), 
 d int
 )

 --2. Testdaten erstellen. In Tabelle1 Werte einfügen('赵','asds','90'). 
 In Tabelle1 Werte einfügen('Geld','Asds','100') 
 In Tabelle1 Werte einfügen('孙','asds','80') 
 In Tabelle1 Werte einfügen('李','asds',null) 

 Wählen Sie * aus Tabelle2 

--3. Die Anweisung INSERT INTO SELECT kopiert einige Spalten und Konstantenwerte der Tabellendaten. Insert into Table2 (a, c, d) select a,c,5 from Table1

Oder: In Tabelle2 einfügen, select * aus Tabelle1

--4. Zeigen Sie die aktualisierten Ergebnisse an. Wählen Sie * aus Tabelle2 aus. 

 --5. Löschen Sie die Testtabelle drop TABLE Table1 
 Tabelle löschen Tabelle2

2. SELECT INTO FROM-Anweisung

Das Anweisungsformat ist: SELECT vale1, value2 into Table2 from Table1

Die Zieltabelle Table2 darf nicht vorhanden sein, da Table2 beim Einfügen automatisch erstellt wird und die angegebenen Felddaten in Table1 nach Table2 kopiert werden. Hier ist ein Beispiel:

--1. Erstellen Sie eine Testtabelle create TABLE Table1 
 ( 
 ein varchar(10), 
 b varchar(10), 
 c varchar(10)
 )

 --2. Testdaten erstellen. In Tabelle1 Werte einfügen('赵','asds','90'). 
 In Tabelle1 Werte einfügen('Geld','Asds','100') 
 In Tabelle1 Werte einfügen('孙','asds','80') 
 In Tabelle1 Werte einfügen('李','asds',null) 

 --3.SELECT INTO FROM-Anweisung erstellt Tabelle Table2 und kopiert Daten select a,c INTO Table2 aus Table1 
 
 --4. Zeigen Sie die aktualisierten Ergebnisse an. Wählen Sie * aus Tabelle2 aus. 

 --5. Löschen Sie die Testtabelle drop TABLE Table1 
 Tabelle löschen Tabelle2

Hinweis: Wenn Sie diese Anweisung in SQL/Plus oder PL/SQL ausführen, erhalten Sie die Fehlermeldung „ORA-00905: fehlendes Schlüsselwort“. Dies liegt an den Unterschieden zwischen PL/SQL und T-SQL.
Diese Anweisung ist in T-SQL normal, aber die Erklärung in PL/SQL lautet:
select..into ist Teil der PL/SQL-Sprache, was bedeutet, dass Sie es innerhalb eines PL/SQL-Blocks verwenden müssen. Sie können es nicht in einer SQL-Anweisung außerhalb von PL/SQL verwenden.
Das heißt, es kann nicht als einzelne SQL-Anweisung ausgeführt werden und wird im Allgemeinen in einem PL/SQL-Programmblock verwendet.

Wenn Sie diese Funktion in PL/SQL implementieren möchten, können Sie Create table newTable as select * from ... verwenden:
Beispiel: Erstellen Sie die Tabelle NewTable als select * from ATable;

NewTable ist dasselbe wie ATable, außer dass es keine Schlüssel hat.

---------Einführung in die SQL SELECT INTO-Syntax
Mit der SQL-Anweisung SELECT INTO kann eine Sicherungskopie einer Tabelle erstellt werden.
SELECT INTO-Anweisung
Die Anweisung SELECT INTO wählt Daten aus einer Tabelle aus und fügt sie in eine andere Tabelle ein.
Die SELECT INTO-Anweisung wird häufig verwendet, um Sicherungskopien von Tabellen zu erstellen oder Datensätze zu archivieren.
SQL SELECT INTO-Syntax Sie können alle Spalten in eine neue Tabelle einfügen:
SELECT * INTO neuer_Tabellenname [IN externe Datenbank] FROM alter_Tabellenname
Oder fügen Sie nur die gewünschten Spalten in die neue Tabelle ein:
SELECT Spaltenname(n) INTO neuer Tabellenname [IN externe Datenbank] FROM alter Tabellenname
SQL SELECT INTO Beispiel - Erstellen einer Sicherungskopie Das folgende Beispiel erstellt eine Sicherungskopie der Tabelle „Personen“:
Wählen Sie * in Personen_Backup aus Personen
Mit der IN-Klausel kann eine Tabelle in eine andere Datenbank kopiert werden:
SELECT * INTO Personen IN 'Backup.mdb' FROM Personen
Wenn wir bestimmte Felder kopieren möchten, können wir diese nach der SELECT-Anweisung auflisten:
SELECT Nachname,Vorname
INTO Personensicherung
VON Personen
SQL SELECT INTO-Beispiel – mit WHERE-Klausel. Wir können auch eine WHERE-Klausel hinzufügen.
Das folgende Beispiel erstellt eine Tabelle namens „Persons_backup“ mit zwei Spalten, indem Informationen über Personen, die in „Peking“ leben, aus der Tabelle „Persons“ extrahiert werden:
SELECT Nachname,Vorname INTO Persons_backup FROM Persons WHERE Stadt='Peking'
SQL SELECT INTO Beispiel - Verknüpfte Tabellen Es ist auch möglich, Daten aus mehr als einer Tabelle auszuwählen.
Das folgende Beispiel erstellt eine neue Tabelle namens „Persons_Order_Backup“, die Informationen aus den Tabellen „Persons“ und „Orders“ enthält:
Wählen Sie Personen.Nachname,Bestellungen.Bestellnummer aus.
INTO Personen_Auftrag_Sicherung
VON Personen
INNER JOIN-Aufträge
EIN Personen.Id_P=Aufträge.Id_P

Vergleich zwischen „Select into“ in MySQL und „Select into“ in SQL <br /> Jetzt gibt es eine Tabelle namens „Student“ und ich möchte die Daten in dieser Tabelle in eine neue Tabelle namens „Dust“ kopieren.

Antwort 01:
create table dust select * from student; //Wird verwendet, wenn vor dem Kopieren kein neuer Tabellenstaub erstellt wird
Antwort 02:
insert into dust select * from student; //Wenn eine neue Tabelle dust erstellt wurde

Verwenden Sie jetzt die select..into..-Anweisung, um die oben genannten Punkte zu erreichen.

MySQL unterstützt keine Select Into-Anweisungen zum direkten Sichern von Tabellenstrukturen und Daten. Stattdessen können mehrere Methoden verwendet werden. Darüber hinaus können auch andere Methoden verwendet werden, die im Folgenden zusammengefasst werden:

Methode 1:

MySQL unterstützt nicht:
Select * Into new_table_name from old_table_name; Dies ist eine alternative Verwendungsmethode in SQL Server:
Tabelle „new_table_name“ erstellen (* aus „old_table_name“ auswählen);

Methode 2:

1. Sichern Sie zuerst die Tabellenstruktur und die Daten
#Exportbefehl -u Benutzername -p Passwort -h Host IP-Adresse Datenbankname Tabellenname 1 > Exportdatei.sql
mysqldump -uroot -proot -h192.168.0.88 ok_db oktable2 > ok_db.sql

2. Ändern Sie den Namen der Sicherungstabelle
3. Melden Sie sich bei MySQL an
4. Wählen Sie die Datenbank aus
5. Ausführen: Geben Sie den Pfad der Sicherungstabelle ein, z. B.: Quelle d:/ok_db.sql, und drücken Sie die Eingabetaste.
6. Fertig.

Mit MySQL Select into outfile können die angegebenen Abfragedaten wie folgt in eine Datei exportiert werden:

1. Exportieren Sie alle Daten der Tabelle wie folgt in die Datei outfile.txt im Stammverzeichnis des Laufwerks C:
Wählen Sie * in die Ausgabedatei „c://outfile.txt“ aus dem Test aus.

2. Exportieren Sie die Daten der angegebenen Abfragebedingung 2005-06-08 in der Tabelle wie folgt nach outfile1.txt im Stammverzeichnis des Laufwerks C:
Wählen Sie * in Ausgabedatei „c://outfile.txt“ aus dem Test, wo beginDate=„2008-06-08“;

mysql> lade Daten des lokalen Infiles "d:/gpsdata.txt" in die mit ';' abgeschlossenen Positionsdatenfelder der Tabelle (Benutzer-ID, Breitengrad, Längengrad, Höhe, Geschwindigkeit, innere ID, Repo
rtzeit,status);

DATEN LADEN [NIEDRIORITÄT GLEICHZEITIG] [LOKAL] INFILE 'Dateiname.txt'
[Ersetzen durch Ignorieren]
INTO TABLE Tabellenname
[FELDER
[BEENDET DURCH 'Zeichenfolge']
[[OPTIONAL] EINGESCHLOSSEN DURCH 'char']
[Entkommen durch 'char']
]
[Zeilen
[BEGINNT MIT 'Zeichenfolge']
[BEENDET DURCH 'Zeichenfolge']
]
[Zahlenzeilen IGNORIEREN]
[(Spaltenname_oder_Benutzervariable,...)]
[SET col_name = eXPr,...)]

Felder und Zeilen stehen vorne, (col_name_or_user_var, ...) hinten. Wenn Sie bei der Verwendung die Attribute, die Sie schreiben möchten, direkt hinter den Tabellennamen setzen, ist das falsch. Sie müssen diese nach Feldern und Zeilen schreiben!

Eine weitere Ergänzung: Wenn Daten aus Tabelle A in Tabelle B kopiert werden, kann Tabelle B keine Auto-Increment-ID haben.

Wenn eine Auto-Increment-ID vorhanden ist, fügen Sie diese nicht ein.

in B (Titel) einfügen Titel aus A auswählen

Das könnte Sie auch interessieren:
  • Implementierung der parallelen Abfrage von PostgreSQL 13.1 „Insert in Select“
  • Postgresql-Einfügung in Auswahl kann keine parallele Abfragelösung verwenden
  • Verwendung und Unterschiedsanalyse von „Ersetzen in“ und „Einfügen in“ beim Update doppelter Schlüssel in MySQL
  • php mysql insert into mit ausführlicher Erklärung und Beispielcode
  • Analyse der Verwendung von Insert Into-Dateneinfügung in PHP+MySQL
  • Korrekte Verwendung der MySQL INSERT INTO-Anweisung
  • Beispiel für die Verwendung der INSERT INTO-Anweisung zum Aktualisieren mehrerer Datensätze in MySql
  • Erläuterung der Methode zum Schreiben von SQL-Anweisungen zum Einfügen

<<:  Detaillierte Erläuterung zum Einrichten des Ressourcencaches in Nginx

>>:  Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Artikel empfehlen

Ein QQ-Chatroom basierend auf vue.js

Inhaltsverzeichnis Einführung Nachfolgend sehen S...

js, um einfache Lupeneffekte zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der grundlegenden Verwendung von JS-Arrays

Vorwort Arrays sind eine spezielle Art von Objekt...

js realisiert 3D-Soundeffekte durch audioContext

In diesem Artikel wird der spezifische Code von j...

Detaillierte Erklärung von Javascript-Closures und -Anwendungen

Inhaltsverzeichnis Vorwort 1. Was ist ein Abschlu...

MYSQL METADATA LOCK (MDL LOCK) Theorie und Sperrtyptest

Inhaltsverzeichnis MYSQL METADATA LOCK (MDL LOCK)...

Beispielcode von Vue + Element UI zur Realisierung der Player-Funktion

Die Anzeige ohne Effektbild ist nur leeres Gerede...

JS Canvas realisiert die Funktionen von Zeichenbrett und Signaturtafel

In diesem Artikel wird der spezifische Code von J...

Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]

Bei der Verwendung von MySQL werden häufig Trigge...

Detaillierte Erklärung der JavaScript-Array-Deduplizierung

Inhaltsverzeichnis 1. Array-Deduplizierung 2. Ded...

Linux verwendet iftop, um den Netzwerkkartenverkehr in Echtzeit zu überwachen

Linux verwendet iftop, um den Verkehr der Netzwer...

So installieren Sie MySQL auf CentOS und richten den Fernzugriff ein

1. Laden Sie die MySQL-Repo-Quelle herunter $ wge...