Dites que table1
et table2
existent déjà, existe-t-il une différence entre ces requêtes?
query1: -
select * into table1 from table2 where 1=1
query2: -
insert into table1 select * from table2
Le select * into table1 from table2 where 1=1
crée table1 et insère les valeurs de table2 dans celles-ci. Donc, si la table est déjà créée, cette instruction générera une erreur.
Le insert into table1 select * from table2
insère uniquement les valeurs de table2 dans table1.
Le premier ( SELECT INTO
) crée et remplit une nouvelle table que le second ( INSERT... SELECT
) insère dans une table existante.
Dans les versions de SQL Server antérieures à 2008, le premier pouvait être journalisé de manière minimale et le second non mais ce n'est plus vrai .
select * into table1 from table2 where 1=1
La requête ci-dessus nécessite que la table n'existe pas. Il n'est pas nécessaire de spécifier des colonnes car toutes les colonnes sont créées au fur et à mesure de leur extraction à partir de la table source.
insert into table1 select * from table2
Pour la requête ci-dessus, vous avez besoin d'une table EXISTING table1 . Les colonnes des deux tables doivent également être dans le même ordre, sinon vous devez fournir une liste de colonnes pour les deux tables.
Dans query2, la table table1
must existait avant d'exécuter la commande
Dans la requête1, table1
sera créé ou une erreur sera générée si elle existe déjà
INSERT INTO TABLE_A SELECT * FROM TABLE_B
Est une phrase couramment utilisée, qui est utilisée pour insérer les valeurs d'une table dans une autre table. Les colonnes sélectionnées peuvent également être insérées à l'aide de cette option.
SELECT * INTO TABLE_A FROM TABLE_B
Va créer un nouveau TABLE_A rempli avec les valeurs de TABLE_B