6
votes

Différence entre Sélectionner et insérer dans l'ancienne table?

Quelle est la différence entre ceux-ci en termes de contraintes forts> * * / em> * etc.

Sélectionnez une instruction P>

INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT  table2.column1, table2.column2,
FROM    table2
WHERE   table2.ID = 7


4 commentaires

Quels SGBD utilisez-vous? Il peut y avoir des différences de comportement


Avez-vous essayé votre troisième option? Ces deux déclarations ne compilaient pas dans mon SQL Server 2008 R2: Créer une table Test1 (ID INT); Créez Table Test2 comme sélectionnez * à partir de Test1; . L'erreur était syntaxe incorrecte près du mot clé "comme" .


Désolé, c'était d'Oracle Syntaxe, j'ai manqué d'écrire


Merci pour la mise à jour; creusé et trouvé vos réponses ;-)


7 Réponses :


2
votes

Je ne comprends pas vraiment votre question. Essayons:

Le 1er one sélectionne la valeur des colonnes "Quelques Varchasar" dans une variable appelée "itemBack1". Selon votre serveur SQL (mySQL / Oracle / MSSQL / etc Pré>

dans la table1 (copie)

et le 3ème crée une nouvelle table "RAMM" comme copie de la table "rammayan"


0 commentaires

10
votes

Je vais assumer MySQL ici.

Les deux premiers sont identiques, comme le Documentation états.

La troisième déclaration permet à la population de la création de table et , bien que votre syntaxe soit tort; Regardez le Syntaxe droite pour plus d'informations. < p> mise à jour

c'est SQL Server = p xxx

La première instruction créera automatiquement le itemback1 Tableau, basé sur Table2 . xxx

La deuxième deuxième instruction nécessite que table1 existe déjà.

Voir aussi: http://blog.sqlauthority.com/2007/08/15/sql-server-insert-data-from-one-table-a-another-table-insère- dans-select-select-to-table /


S'il y a une différence de contrainte, ce serait parce que la deuxième déclaration dépend de ce que vous avez déjà créé (et si la table est peuplé, etc.).

BTW, la troisième déclaration est Oracle (TM) et est identique à la première déclaration.


0 commentaires

4
votes

Sélectionnez dans -> Crée la table à la volée lors de la sélection sur EXECUTION

tandis que

Insérer dans -> suppose que la table DB existe déjà

enfin

Créer, crée simplement la table du résultat de retour de la requête


0 commentaires

1
votes

En règle générale Chacune a ses propres particularités, crée une table temporaire, d'autres utilise une table précédemment existante et le troisième crée une nouvelle table avec exactement la même œstructure et le même formatage

Sélectionnez ... dans Crée une nouvelle table dans le groupe de fichiers par défaut et insère les lignes résultantes de la requête dans celle-ci

Insérer dans: remplit une table déjà existante insert ... dans

La troisième option est appelée CTAS (Créer une table comme sélection) Faites une recherche et vous obtiendrez des tonnes de liens utiles. Fondamentalement, il crée une table, pas une temporaire, avec la structure et les types utilisés sur l'instruction SELECT.

Je voulais ajouter des liens supplémentaires, mais comme je suis un nouvel utilisateur, je n'ai autorisé à poster 2 liens pour empêcher le spam.


0 commentaires

6
votes

Il existe des différences très importantes entre Sélectionner et insérer.

Premièrement, pour l'insert, vous devez pré-définir la table de destination. Sélectionnez la table dans le tableau dans le cadre de l'instruction.

seconde, à la suite de la première condition, vous pouvez obtenir des erreurs de conversion de type sur la charge dans la table à l'aide de l'insert. Cela ne peut pas se produire avec un choix (bien que la requête sous-jacente puisse produire une erreur).

troisième, avec un choix dans vous devez donner tous vos noms de colonnes. Avec un insert, vous n'avez pas besoin de leur donner des noms.

quatrième, sélectionnez-le à verrouiller certaines des métadonnées pendant le traitement. Cela signifie que d'autres requêtes sur la base de données peuvent être verrouillées des tables d'accès. Par exemple, vous ne pouvez pas exécuter deux sélectionner dans des instructions simultanément sur la même base de données, en raison de ce verrouillage.

cinquième, sur un très grand insert, vous pouvez parfois voir des progrès avec insérer mais pas avec SELECT. DANS. Au moins, c'est mon expérience.

Lorsque j'ai une requête compliquée et que je veux mettre les données dans une table, j'utilise souvent: xxx


0 commentaires

0
votes

Insérez dans Sélectionner des insertions dans une table existante.

Sélectionnez la création d'une nouvelle table et met les données dedans. Toutes les colonnes de la requête doivent être nommées de sorte que chacune des colonnes de la table aura un nom. C'est l'erreur la plus courante que je vois pour cette commande. P>

Le type de données et la nullabilité proviennent de la requête source. Si l'une des colonnes source est une colonne d'identité et répond à certaines conditions (aucune jonction dans la requête par exemple), la colonne de la nouvelle table sera également une identité. P>

Insérer dans SELECT P>

SELECT ColumnName INTO NewTableName
FROM   ExistingTableName1;
GO


0 commentaires

0
votes

le SQL Sélectionnez dans l'instruction forte>

La sélection dans l'instruction copie des données d'une table dans une nouvelle table. p>

Sélectionnez la syntaxe em>

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;


0 commentaires