Comment transférer vos données sql

En plus d'utiliser le INSERT et METTRE À JOUR déclarations dans SQL, vous pouvez ajouter des données à une table ou d'une vue en utilisant le FUSION déclaration. Tu peux FUSION données d'une table ou vue source dans une table de destination ou de la vue.

La FUSION peut soit insérer de nouvelles lignes dans la table de destination ou mettre à jour des lignes existantes. FUSION est un moyen commode de prendre des données qui existent déjà quelque part dans une base de données et le copier dans un nouvel emplacement.

Par exemple, considérons une base de données de laboratoire vétérinaire. Supposons certaines personnes à la table des employés sont les vendeurs qui ont pris les commandes, tandis que d'autres sont des employés non commerciaux ou les vendeurs qui ne sont pas encore prises un ordre. L'année vient de se terminer a été rentable, et que vous voulez partager une partie de ce succès avec les employés.

Vous décidez de donner un bonus de 100 $ à tous ceux qui ont pris au moins un ordre et un bonus de 50 $ à tout le monde. D'abord, vous créez une table de BONUS et l'insérer dans un dossier pour chaque employé qui apparaît au moins une fois dans la table Orders, attribuant chaque enregistrement une valeur de bonus par défaut de 100 $.

Ensuite, vous voulez utiliser le FUSION déclaration à insérer de nouveaux enregistrements pour les employés qui ne sont pas prises ordres, leur donnant 50 $ bonus. Voici un code qui construit et remplit la table de BONUS:

CREATE TABLE BONUS (EmployeeName CARACTERE (30) PRIMARY KEY, Bonus NUMERICDEFAULT 100) -INSERER EN BONUS (EmployeeName) (SELECT EmployeeName DE L'EMPLOYÉ, ORDERSWHERE EMPLOYEE.EmployeeName = ORDERS.SalespersonGROUP PAR EMPLOYEE.EmployeeName) -



Vous pouvez maintenant interroger la table BONUS pour voir ce qu'elle contient:

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

Maintenant, en exécutant un FUSION déclaration, vous pouvez donner 50 $ bonus au reste des employés:

Fusionner en BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName) QUAND pas égalé puis insérez (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -

Enregistrements pour les personnes à la table des employés qui ne correspondent pas à des enregistrements pour des personnes déjà dans le tableau de BONUS sont maintenant insérées dans la table de BONUS. Maintenant, une requête de la table de BONUS donne le résultat suivant:

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

Les quatre premiers enregistrements, qui ont été créés avec le INSERT déclaration, sont dans l'ordre alphabétique par nom de l'employé. Le reste des dossiers, ajouté par le FUSION déclaration, apparaître dans l'ordre qu'ils ont été répertoriés dans la table EMPLOYEE.

La FUSION déclaration est un ajout relativement récent à SQL et peut ne pas être pris en charge par certains produits de SGBD. Même plus récente est une capacité supplémentaire de FUSION ajouté dans SQL: 2011, paradoxalement vous permettant de supprimer des enregistrements avec un FUSION déclaration.

Supposons que, après avoir fait le INSERT, vous décidez que vous ne voulez pas donner des primes aux personnes qui ont effectué au moins un ordre après tout, mais vous ne voulez donner un bonus de 50 $ à tout le monde. Vous pouvez supprimer les primes de vente et ajouter les primes non-vente avec la suivante FUSION déclaration:

Fusionner en BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName) quand a égalé PUIS DELETEWHEN ne correspond pas puis insérez (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -

Le résultat est

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

» » » » Comment transférer vos données sql