web-dev-qa-db-fra.com

SQL Server 'select * into' versus 'insérer dans ..select *

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
25
Sujit Prabhakaran

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.

42
aF.

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 .

8
Martin Smith
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.

5
Charl

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à

3
gbn
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

1
ssingh