CodeGym /Cours /SQL SELF /Utilisation des tableaux (`ARRAY`)

Utilisation des tableaux (`ARRAY`)

SQL SELF
Niveau 16 , Leçon 2
Disponible

Aujourd'hui, on va parler un peu des tableaux — c'est un des outils puissants de PostgreSQL qui permet de stocker une liste de valeurs du même type dans une seule colonne. On verra les tableaux plus en détail dans les prochains niveaux.

Quand on parle de "tableaux", on pense direct aux listes. Imagine comment tu fais ta liste de courses avant d'aller au supermarché : pommes, bananes, lait, pain. Dans PostgreSQL, un tableau c'est un peu pareil, tu peux stocker plusieurs valeurs dans un seul champ, et chaque valeur est du même type de données. Par exemple, un tableau de nombres, un tableau de textes, un tableau de dates, etc.

Voici quelques exemples.

Tableau de nombres :

{1, 2, 3, 4}

Tableau de chaînes de caractères :

{"pomme", "banane", "cerise"}

Tableau de dates :

{2024-10-01, 2024-10-02, 2024-10-03}

Un tableau te permet de mettre plein de valeurs dans un seul champ, ce qui économise de la place dans la table et rend les requêtes plus flexibles.

Pourquoi utiliser les tableaux ? Les principaux avantages

Stockage compact des données : stocker plusieurs valeurs dans un seul champ. C'est super utile pour des données qui sont logiquement liées. Par exemple, une liste de tags pour un article ou une liste de notes pour un étudiant. Créer une table séparée juste pour deux tags ?

Facilité de sélection : les tableaux te permettent de récupérer toute une liste de valeurs depuis un seul champ, et aussi de manipuler facilement chaque élément du tableau.

Performance : dans certains cas, les tableaux évitent de créer des tables supplémentaires pour les données liées, ce qui peut simplifier l'architecture de la base et accélérer le dev. Plutôt cool, non ?

Comment bosser avec les tableaux dans PostgreSQL ?

Créer un tableau dans SELECT

Pour définir un tableau, tu peux utiliser le constructeur ARRAY[]. Voilà un exemple :

-- Exemple de tableau de nombres
SELECT ARRAY[1, 2, 3, 4];

-- Exemple de tableau de chaînes
SELECT ARRAY['pomme', 'banane', 'cerise'];

Trop facile. Allez, créons une table et essayons d'y sélectionner quelque chose.

Créer une table avec des tableaux

Pour commencer, on va créer une table où une des colonnes sera un tableau.

id name - VARCHAR(50) subjects - TEXT[]
1 Alex {Mathematique,Physique}
2 Maria {Chimie,Biologie,Anglais}
3 Peter {Informatique}

Voyons ce qu'on a obtenu :

SELECT * FROM students;
id name subjects
1 Alex {Mathematique,Physique}
2 Maria {Chimie,Biologie,Anglais}
3 Peter {Informatique}

Extraction des données depuis les tableaux

Pour extraire des données d'un tableau, PostgreSQL propose plusieurs fonctions et opérateurs.

Extraire un élément du tableau

Pour choper un élément du tableau par son index, on utilise les crochets []. Attention, la numérotation commence à 1 (et pas à 0 comme dans la plupart des langages de prog).

-- On récupère la première matière de chaque étudiant
SELECT name, subjects[1] AS premiere_matiere FROM students;

Et voilà le résultat :

name premiere_matiere
Alex Mathematique
Maria Chimie
Peter Informatique

Extraire toute la ligne du tableau

Pour récupérer tous les éléments du tableau, on utilise un simple SELECT :

SELECT name, subjects FROM students;

Rechercher des valeurs dans un tableau

Parfois, on veut savoir si un tableau contient une valeur précise. Pour ça, on utilise l'opérateur ANY.

-- Sélectionner les étudiants qui étudient "Mathematique"
SELECT name
FROM students
WHERE 'Mathematique' = ANY(subjects);

Résultat de la requête :

name
Alex

Dans PostgresQL, il y a plein de fonctions et d'opérateurs pour bosser avec les tableaux, mais tu verras ça dans les prochains niveaux :P

Erreurs courantes avec les tableaux

Confusion entre indexation à 0 et à 1.

Dans PostgreSQL, l'indexation des tableaux commence à 1. Si t'es habitué à des langages comme Python ou JavaScript, ça peut vite te perturber.

Tableaux vides.

Un tableau vide {} et NULL — c'est pas la même chose dans PostgreSQL. Si tu compares des tableaux, ne confonds pas ces concepts.

Travailler avec de gros tableaux.

Stocker une grosse quantité de données dans un tableau peut ralentir le traitement des requêtes. Utilise les tableaux pour des petits volumes de données.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION