PostgreSQL prend en charge un type de données XMLBien que cela puisse nous être très utile, il y a souvent des critiques car cela peut conduire à enfreindre de nombreuses règles des bases de données relationnelles telles que la normalisation, même si cela n'a pas empêché tous les pilotes et moteurs des bases de données haut de gamme de prendre en charge ce type de données.
Chargement des données en XML
Avant de voir comment cela fonctionne d'un point de vue théorique, voyons un exemple de comment on peut charger un champ avec ce type de données.
INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml);Comme on le voit le deuxième champ auquel on fait l'insertion est le champ XML que nous désignons en le plaçant :: xml à la fin des informations que nous voulons insérer.
Interroger le XML
Pour vous renseigner sur le XML on peut utiliser la fonction chemin x () comme il est assez utile à cet effet, le premier argument qu'il reçoit est une requête de type XPath et le second est une chaîne qui contient le XML, la réponse est un tableau d'objets XML qui remplissent les conditions de la requête XPath. Voyons un exemple de comment faire cela en le combinant avec la fonction unnest () afin d'afficher les résultats comme s'il s'agissait de lignes d'un tableau.
AGRANDIR
Décomposons les points énumérés :
1. Nous souscrivons au tableau, car XPath il renvoie toujours un tableau même s'il s'agit d'un seul élément qui entre dans la réponse à la requête.
2. On obtient l'élément texte à la fois dans le nom et la valeur de chaque élément prop.
3. Nous parcourons les balises ,,,,, du XML.
Comme on peut le voir, il est assez facile de faire les requêtes pour obtenir les valeurs des champs avec le type de données XML.
Types de données composites et personnalisés
Le type d'objet composite composite est un type spécial dans PostgreSQL car il est souvent utilisé pour construire un objet, puis il est associé à un type personnalisé ou en tant que retour d'une fonction qui doit renvoyer plusieurs colonnes.
PostgreSQL crée automatiquement un type personnalisé pour toutes les tables, à toutes fins, nous pouvons utiliser des types personnalisés tels que ceux définis par défaut dans PostgreSQL, nous pouvons même créer un tableau de ces types.
Voyons un petit code à ce sujet :
CREATE TABLE user_facts (user_id varchar (30) PRIMARY KEY, faits recensement.facts []);Ensuite, nous créons un enregistrement :
ROW (86, '25001010206', 2012, 123, NULL) :: recensement.factsEt enfin nous l'insérons dans notre table personnalisée :
INSERT INTO user_facts (user_id, faits) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: recensement.facts]);Nous pouvons même incorporer plus de données à notre type de la manière suivante en utilisant la concaténation :
UPDATE user_facts SET faits = faits || tableau (SELECT F FROM recensement.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe';Ensuite, lors de la requête, nous voyons comment tout a du sens, comme dans l'image suivante :
AGRANDIR
Avec cela, nous terminons ce didacticiel sur les types de données XML et les types de données personnalisés, comme toujours, il vaut la peine de recommander de pratiquer les sujets vus ici de cette manière pour garder ces connaissances aussi à jour que possible pour votre application.