Découvrir PostgreSQL

Manipuler des tableaux

Testez gratuitement nos 1298 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez faire connaissance avec le type array. Voyez comment le manipuler et en extraire des éléments.
07:27

Transcription

Une fonctionnalité absolument géniale dans Postgres, c'est-à-dire dans le SQL de PostgreSQL, c'est la possibilité de faire des tableaux. Alors, il y a un truc intéressant avec le langage SQL de PostgreSQL version dialecte, c'est qu'une sorte de mélange entre du bon vieux SQL de la norme et puis quelque chose qui est un peu plus du développement traditionnel, impératif avec des constructions qui viennent plus des langages de développement traditionnel. Notamment les tableaux par exemple et la syntaxe qui va avec. Un tableau c'est bien entendu, on pourrait dire une liste d'élément du même type. Et on peut simplement les construire de plusieurs façons, avec un constructeur. Quelque chose qui est traditionnel dans les autres langages, je vais dire Je vais faire un " SELECT " pour afficher quelque chose. " ARRAY ", je vais mettre des crochets et je vais construire mon tableau. Je vais mettre des valeurs entières, ou on va faire quelque chose comme ça avec des chaînes de caractères. Et c'est tout ou presque tout. Parce que il me manque ici la fin de la chaîne. Et vous voyez que ce qui vient c'est un type de donnée, alors extraordinaire dans du SQL, " text " et vous voyez les crochets. Il s'agit donc d'un type de donnée qui est un tableau de type de donnée SQL, génial. Donc, j'obtiens un tableau de valeur que je peux stocker telle qu'elle dans une colonne. Et là c'est bon, on peut faire ce qu'on veut avec ça. Par exemple, je vais prendre mon tableau et je vais le transtyper en un tableau de " varchar ". parce que je ne sais pas pourquoi, je vous ai dit que c'était la même chose. Un " varchar " texte un peu de chose près. Et donc je vais l'exprimer comme ça. Et voilà un tableau de " varchar " ou " character varying ", OK? C'est absolument génial. Pour quelqu'un qui programme traditionnellement et qui doit faire du SQL, c'est un peu le meilleur des demandes. En tout cas ça offre beaucoup de puissance à ce qu'on peut exprimer en SQL. Alors bien sûr ce tableau, vous vous demandez, est-ce que je peux le construire dynamiquement ? Sans problème ! Regardez, par exemple je vais faire un " SELECT * " Je vais réutiliser ma fabuleuse fonction qui s'appelle " generate_series " vous vous souvenez? Et je vais lui faire générer une série de date. Alors on va commencer par exemple au " '2010-01-01' ". On va le faire terminer le " '2020-01-01' ". Et on va lui donner un intervalle " '1 year' ". Vous me voyez venir? [clic] Je vais avoir quelque chose qui ne marche pas parce que il faut peut-être que je fasse un petit transtypage ici. Je vais bien sûr dire que ce sont des " dates " ou des " timestamp " peu importe. Donc je recommence et voilà. J'ai de " 2010 à 2020 ". Parfait. Alors j'ai des années. Maintenant je voudrais avoir un tableau de ceci, qu'est-ce je fais ? Je vais améliorer un petit peu les choses. Vous voyez que le nom de la colonne qui revient s'appelle " generate_series ". Très bien. Alors je vais la reprendre ici. Et parce que le résultat me revient en " timestamp ", en " timestamp " des aides en plus. Et bien je vais convertir le résultat en " date ". Très bien. Et je vais générer un tableau. Alors je vais aller encore plus vite comme ceci. Je vais faire un " SELECT ARRAY ". J'ouvre les parenthèses. Et qu'est-ce je fais ? Et bien je lui donne une requête qui va générer ma série et qui va permettre de produire un tableau de " date ", comme vous le voyez. N'est-ce pas absolument fabuleux ? Admettons que je veux seulement avoir les années. Alors je vais faire ceci, au lieu de faire une date. Alors j'ai deux solutions, je peux utiliser une fonction qui s'appelle " date_part " comme ceci qui m'extrait une partie de date. Ou je peux utiliser une fonction qui s'appelle " extract ", et je vais lui dire " year from generate_series ". Vous êtes prêt ? Voilà mes années. Magnifique n'est-ce pas ? Et donc il s'agit bien entendu maintenant d'un type de données numériques. Bon double précision, ce n'est pas terrible, il faudrait le convertir en entier par exemple ou même en " smallint ", enfin peu importe et voilà j'ai un tableau d'entier. Donc voyez la souplesse que cela m'apporte. Vous allez me dire très bien mais est-ce qu'on peut extraire quelque chose dans le tableau ? Bien sûr on peut référencer un élément d'un tableau. Je vais prendre tout ça entre parenthèse, voilà. Et je vais ensuite, comme dans beaucoup de langages, utiliser cet opérateur en crochet pour dire retourne-moi, par exemple le deuxième élément du tableau 2011. Ou retourne-moi une rangée d'élément donc de " 2 à 4 ", " 2011, 2012, 2013 ". Donc évidemment si je retourne qu'un seul élément, c'est en entier, si je retourne ici 3 éléments, c'est un tableau d'entiers. Ça va de soit. Et c'est pas fini. Je vais faire un " CTRL+C ". Je peux prendre cette représentation en chaîne, comme ceci dans le tableau et puis lui dire, Et bien ça c'est la représentation en chaîne, est-ce que tu peux s'il te plaît me le convertir ? Et donc en tableau d'entiers. Ca va pas être très spectaculaire parce qu'on va avoir le même résultat. Mais il est évident que si je ne fais pas ça, le type de donnée de ceci c'est " unknown ". Ça pourrait être une chaîne de caractères, mais il n'a pas fait de transtypage. Par contre là bien sûr, je lui dis tu me fais un transtypage et puis bien entendu, je peux en extraire un élément seulement. En bref si vous avez l'habitude de langage comme Python ou peu importe d'ailleurs des langages modernes qui vous permet de manipuler facilement des tableaux. Aucun problème, vous êtes comme à la maison. Il y a une chose supplémentaire qui est intéressante. Je vais reprendre mon exemple dont je vous rappelle qu'il me retourne voilà 3 éléments. Je vais enlever d'ailleurs ça, pour retourner le tout. Très bien. Il y a une fonction absolument géniale qui s'appelle " unnest ". Vous pouvez peut-être deviner " unnest ". Au lieu de " unnest ", le nesting ça veut dire tout mettre dans le même nids. Et " unnest " ça veut dire on va décomposer notre tableau. Et qu'est-ce que ça va retourner ? Des lignes. J'ai pris mon tableau et avec la fonction " unnest " j'ai généré un certain nombre de lignes, une ligne par élément du tableau. Je vais donc le retransformer ce tableau en une représentation tabulaire que je vais pouvoir manipuler comme une vrai table.

Découvrir PostgreSQL

Comprenez le fonctionnement de PostgreSQL ainsi que son architecture. Effectuez les tâches courantes de sécurité, de création de bases de données et d'objets, etc.

2h46 (30 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
PostgreSQL PostgreSQL 9
Spécial abonnés
Date de parution :31 mars 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !