Maison >base de données >tutoriel mysql >Comment insérer des données d'une table à une autre à l'aide de la syntaxe SQL standard ?

Comment insérer des données d'une table à une autre à l'aide de la syntaxe SQL standard ?

DDD
DDDoriginal
2025-01-24 03:52:09897parcourir

How to Insert Data from One Table to Another Using Standard SQL Syntax?

SQL : Copie de données entre tables

Une tâche SQL fréquente consiste à transférer des données d'une table à une autre. Bien que la syntaxe spécifique puisse différer légèrement selon les systèmes de bases de données, une approche largement compatible utilise l'instruction INSERT INTO ... SELECT.

Syntaxe SQL standard pour l'insertion de données

La syntaxe suivante offre un haut degré de compatibilité entre divers systèmes de gestion de bases de données (SGBD) :

<code class="language-sql">INSERT INTO target_table (column1, column2, ...)
SELECT source_column1, source_column2, ...
FROM source_table
[WHERE condition];</code>

Voici une répartition :

  • target_table : La table recevant les nouvelles données.
  • column1, column2, ... : Les colonnes de target_table où les données seront insérées. La commande doit correspondre à la déclaration SELECT.
  • source_column1, source_column2, ... : Les colonnes de source_table fournissant les données. Les types de données doivent être compatibles avec les target_table colonnes correspondantes.
  • source_table : Le tableau fournissant les données.
  • WHERE condition (facultatif) : filtre les données de source_table avant l'insertion. Seules les lignes satisfaisant la condition sont copiées.

Compatibilité SGBD

Cette INSERT INTO ... SELECT méthode fonctionne généralement sur un large éventail de SGBD, notamment :

  • Oracle
  • Microsoft SQL Server
  • MySQL
  • PostgreSQL
  • SQLite
  • Teradata
  • DB2
  • Sybase
  • Verticale
  • HSQLDB
  • H2
  • Amazon Redshift
  • SAP HANA
  • Google Cloud Spanner

Exemple illustratif

Disons que nous avons une table « employés » et une table « department_summary ». Pour remplir department_summary avec les noms des services des employés :

<code class="language-sql">INSERT INTO department_summary (department_name)
SELECT department
FROM employees;</code>

Cela insère tous les noms de département uniques de la table employees dans la colonne department_name de la table department_summary. Notez que les noms de département en double ne seront insérés qu’une seule fois. Si vous devez gérer les doublons différemment, vous devrez ajouter une logique supplémentaire (par exemple, en utilisant GROUP BY et les fonctions d'agrégation).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn