SQL Tips : Créer une table avec le résultat d'une requête

But : Notre but dans cette exemple est de pou­voir tra­vailler sur une copie des lignes ayant une lon­gueur com­prisent entre 10 et 400. Mais cette astuce peux aus­si être uti­li­sée pour : Créer un clone d'une table, figer les don­nées à un ins­tant don­né, tra­vailler sur un sous ensemble de don­nées, sim­pli­fier un ordre sql, etc.

Pré­re­quis : Savoir affi­cher le(s) champs d'une table cor­res­pon­dant aux valeurs choi­sies (clause WHERE).

Dif­fi­cul­té : 1 (Facile)

L'ordre SQL per­met­tant de créer une table pré-rem­plie est le sui­vant  :

Exemple :

  • Don­nées dans la table "pdb" :
code_​pdb length code_​uniprotkb
1F88 348 P02699
3IYO 666 Q1AHV0
3HYD 7 P01308
2FGT 417 Q794W0
3B4T 262 Q10628
  • Requête qui extrait les lignes que nous sou­hai­tons, celle avec une lon­gueur com­prise entre 10 et 400 :

  • La créa­tion de la nou­velle table pré-rem­plie :

  • Pour véri­fi­ca­tion on affiche le conte­nu de la table pdb_​length :

code_​pdb length code_​uniprotkb
1F88 348 P02699
3B4T 262 Q10628

Les modi­fi­ca­tions dans la table pdb ne seront pas réper­cu­tées sur la table pdb_​length et inver­se­ment. Nous venons de voir com­ment créer une table pré-rem­plie avec le jeu de don­nées sur lequel nous sou­hai­tons tra­vailler et indé­pen­dant des don­nées de départ.

Pour aller plus loin :

Il est pos­sible de faire la même chose tout en gar­dant le lien entre les don­nées, ce méca­nisme s'appelle VIEW.

=> La table pdb_​length est une VIEW de la table pdb. Ceci à l'avantage que toute modi­fi­ca­tion par l'intermédiaire de cette vue (pdb_​length) sera réper­cu­tée dans les don­nées de la table (pdb) et inver­se­ment.

Liens :

 



Pour continuer la lecture :


Commentaires

Une réponse à “SQL Tips : Créer une table avec le résultat d'une requête”

  1. Avatar de sansen

    sym­pa comme astuce, j'aurais lu ca il y a quelques heures ca m'aurait fait gagner pas mal de temps… T.T
    bon, faut d'abord que je veri­fie si ca fonc­tionne avec post­gres­ql ;D

Laisser un commentaire