Wie Sie Ihre SQL-Daten zu übertragen

Zusätzlich zur Verwendung der EINFÜGEN und AKTUALISIEREN Aussagen in SQL können Sie Daten in eine Tabelle oder Sicht hinzufügen, indem Sie die VERSCHMELZEN Erklärung. Sie können VERSCHMELZEN Daten aus einer Quelltabelle oder Ansicht in eine Zieltabelle oder Sicht.

Das VERSCHMELZEN können entweder neue Zeilen in die Zieltabelle einfügen oder bestehende Zeilen aktualisieren. VERSCHMELZEN ist eine bequeme Möglichkeit, Daten zu übernehmen, die in einer Datenbank vorhanden ist irgendwo schon und kopieren Sie sie in eine neue Position.

Betrachten wir zum Beispiel ein Veterinärlabor Datenbank. Angenommen, einige Leute in der Tabelle EMPLOYEE Verkäufer sind die Bestellungen entgegengenommen haben, während andere nicht-Vertriebsmitarbeiter oder Verkäufer, die noch nicht einen Auftrag genommen. Das Jahr gerade abgeschlossen ist profitabel, und Sie wollen mit den Mitarbeitern etwas von diesem Erfolg zu teilen.

Sie entscheiden, einen Bonus von $ 100 für jeden zu geben, die sonst mindestens einen Auftrag und einen Bonus von $ 50 bis jeder genommen hat. Zunächst erhalten Sie einen Bonus-Tabelle erstellen und einfügen in sie einen Datensatz für jeden Mitarbeiter, der mindestens einmal in der ORDERS-Tabelle angezeigt wird, die Zuordnung jeweils einen Standardbonuswert von $ 100 aufzunehmen.

Als nächstes wollen Sie die zu verwenden VERSCHMELZEN Anweisung neue Datensätze einzufügen für diejenigen Mitarbeiter, die Aufträge nicht genommen haben, so dass sie 50 $ Boni geben. Hier einige Code, baut und füllt die BONUS-Tabelle:

CREATE TABLE BONUS (EmployeeName CHARACTER (30) Primärschlüssel, Bonus NUMERICDEFAULT 100) -EINFÜGE IN BONUS (EmployeeName) (SELECT EmployeeName FROM EMPLOYEE, ORDERSWHERE EMPLOYEE.EmployeeName = ORDERS.SalespersonGROUP BY EMPLOYEE.EmployeeName) -

Sie können nun die BONUS-Tabelle abfragen, um zu sehen, was es gilt:

SELECT * FROM BONUS -EmployeeName Bonus ------------ ------------- Brynna Jones100Chris Bancroft 100Greg Bosser100Kyle Weeks100

Jetzt, durch Ausführen einer VERSCHMELZEN Anweisung können Sie 50 $ Boni an den Rest der Mitarbeiter geben:

Merge in BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName), wenn nicht, dann INSERT ABGESTIMMTER (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -

Datensätze für die Menschen in der Tabelle EMPLOYEE, die Datensätze für die Menschen nicht schon in der BONUS-Tabelle entsprechen, werden nun in die BONUS-Tabelle eingefügt. Jetzt eine Abfrage der BONUS-Tabelle ergibt folgendes Ergebnis:

SELECT * FROM BONUS -EmployeeName Bonus -------------- ----------- Brynna Jones100Chris Bancroft 100Greg Bosser100Kyle Weeks100Neth Doze 50Matt Bak 50Sam Saylor50Nic Foster50

Die ersten vier Datensätzen, die mit den erstellten EINFÜGEN Aussage, sind in alphabetischer Reihenfolge nach Mitarbeiternamen. Der Rest der Aufzeichnungen, die von der Mehr VERSCHMELZEN Aussage, erscheinen in welcher Reihenfolge, wie sie in der Tabelle EMPLOYEE aufgeführt wurden.

Das VERSCHMELZEN Anweisung ist eine relativ neue Ergänzung zu SQL und möglicherweise noch nicht von einigen DBMS-Produkten unterstützt werden. Auch neuere ist eine zusätzliche Fähigkeit, VERSCHMELZEN hinzugefügt in SQL: 2011, paradoxerweise Sie ermöglicht mit einem Datensätze zu löschen VERSCHMELZEN Erklärung.

Nehmen wir an, nachdem das tun EINFÜGEN, Sie entscheiden, dass Sie nicht wollen, Boni, um Menschen zu geben, die mindestens einen Auftrag, nachdem alle genommen haben, aber Sie möchten sonst einen $ 50 Bonus für alle zu geben. Sie können die Verkaufsprämien entfernen und die nicht-Sales-Boni mit der folgenden hinzufügen VERSCHMELZEN Erklärung:

Merge in BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName) WHEN MATCHED THEN DELETEWHEN dann nicht ABGESTIMMTER INSERT (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -

Das Ergebnis ist

SELECT * FROM BONUS-EmployeeName Bonus -------------- ----------- Neth Doze 50Matt Bak 50Sam Saylor50Nic Foster50

Menü