Les champs de type tableau dans PostgreSQL
Par rapport aux champs de type tableau ou aux collection, PostgreSQL partage avec MariaDB le goût de la simplicité, contrairement à Oracle. Quant à SQL Server et à MySQL, ce type de champ n’est tout simplement pas disponible nativement. Je ne parle pas ici de JSON !
La création d’une table d’exemple
Je vous livre, tout d’abord, le script de création de la table d’exemple comprenant deux champs de type ARRAY respectivement de 50 caractères maximum pour chaque compétence et de 14 caractères précisément pour chaque téléphone. Il s’agit, en fait, de listes (tableaux à une dimension) :
CREATE SEQUENCE employe_employe_id_seq; CREATE TABLE employe ( employe_id integer NOT NULL DEFAULT nextval('employe_employe_id_seq'), employe_nom character varying(30) NOT NULL, employe_prenom character varying(20) NOT NULL, employe_competences character varying(50)[], employe_telephones character(14)[], CONSTRAINT employe_pkey PRIMARY KEY (employe_id) );
Abonder la table
Vous pouvez, indifféremment, utiliser le mot réservé ARRAY ou bien les accolades (un peu plus compliquées à manipuler) pour assigner une valeur à un champ tableau.
INSERT INTO employe(employe_nom,employe_prenom,employe_competences) VALUES('Szalkowski','Denis', ARRAY['SQL','PostgreSQL','SQL Server','Oracle Database','MariaDB','SQLite']); INSERT INTO employe(employe_nom,employe_prenom,employe_competences) VALUES('Szalkowski','Denis', '{"Scripting","PowerShell","Perl","PHP","Shell","Bash"}'); INSERT INTO employe(employe_nom,employe_prenom,employe_competences) VALUES('Szalkowski','Denis', ARRAY['Linux','Fedora Server','CentOS','Red Hat','Ubuntu Server','Debian','openSUSE','SUSE']); UPDATE employe SET employe_telephones[1]='06.70.37.31.91' WHERE employe_id=2; SELECT employe_id,employe_competences[2],employe_telephones[1] FROM employe;