introduction
Les systèmes de gestion de bases de données relationnelles sont un élément clé de nombreux sites Web et applications. Ils fournissent un moyen structuré de stocker, d’organiser et d’accéder aux informations.
-
PostgreSQL *, ou Postgres, est un système de gestion de base de données relationnelle qui fournit une implémentation du langage de requête SQL. C’est un choix populaire pour de nombreux projets, petits et grands, qui présente l’avantage d’être conforme aux normes et de disposer de nombreuses fonctionnalités avancées telles que les transactions fiables et la simultanéité sans verrous de lecture.
Dans ce guide, nous montrerons comment installer Postgres sur une instance VPS Ubuntu 16.04 et commentons l’utilisation de base.
Installation
Les dépôts par défaut d’Ubuntu contiennent des paquets Postgres. Nous pouvons donc les installer facilement à l’aide du système de conditionnement + apt +
.
Comme c’est la première fois que nous utilisons + apt +
dans cette session, nous devons actualiser notre index de paquetage local. Nous pouvons ensuite installer le package Postgres et un package + -contrib +
qui ajoute des utilitaires et des fonctionnalités supplémentaires:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
Maintenant que notre logiciel est installé, nous pouvons voir comment il fonctionne et en quoi il peut être différent des systèmes de gestion de base de données similaires que vous avez utilisés.
Utilisation de rôles et de bases de données PostgreSQL
Par défaut, Postgres utilise un concept appelé «rôles» pour gérer l’authentification et l’autorisation. Celles-ci ressemblent, à certains égards, aux comptes normaux de style Unix, mais Postgres ne fait pas de distinction entre les utilisateurs et les groupes, mais préfère le terme plus souple «rôle».
Lors de l’installation, Postgres est configuré pour utiliser l’authentification * ident *, ce qui signifie qu’il associe les rôles Postgres à un compte système Unix / Linux correspondant. Si un rôle existe dans Postgres, un nom d’utilisateur Unix / Linux portant le même nom pourra se connecter en tant que rôle.
Il existe plusieurs façons d’utiliser ce compte pour accéder à Postgres.
Passer au compte postgres
La procédure d’installation a créé un compte utilisateur appelé + postgres +
associé au rôle Postgres par défaut. Pour utiliser Postgres, nous pouvons nous connecter à ce compte.
Basculez sur le compte + postgres +
sur votre serveur en tapant:
sudo -i -u postgres
Vous pouvez maintenant accéder immédiatement à une invite Postgres en tapant:
psql
Vous serez connecté et pourrez interagir immédiatement avec le système de gestion de base de données.
Quittez l’invite de PostgreSQL en tapant:
\q
Vous devriez maintenant être de retour dans l’invite de commande Linux + postgres +
.
Accéder à une invite Postgres sans changer de compte
Vous pouvez également exécuter la commande que vous souhaitez avec le compte + postgres +
directement avec + sudo +
.
Par exemple, dans le dernier exemple, nous voulions simplement obtenir une invite Postgres. Nous pourrions faire cela en une étape en exécutant la commande unique + psql +
en tant que l’utilisateur + postgres +
avec + sudo +
comme ceci:
sudo -u postgres psql
Cela vous connectera directement à Postgres sans les intermédiaires + bash +
intermédiaires.
Encore une fois, vous pouvez quitter la session interactive Postgres en tapant:
\q
Créer un nouveau rôle
Actuellement, le rôle + postgres +
est configuré dans la base de données. Nous pouvons créer de nouveaux rôles à partir de la ligne de commande avec la commande + createrole +
. Le drapeau + - interactive +
vous demandera les valeurs nécessaires.
Si vous êtes connecté en tant que compte + postgres +
, vous pouvez créer un nouvel utilisateur en tapant:
createuser --interactive
Si, au lieu de cela, vous préférez utiliser + sudo +
pour chaque commande sans passer de votre compte normal, vous pouvez taper:
sudo -u postgres createuser --interactive
Le script vous demandera quelques choix et, en fonction de vos réponses, exécutera les commandes Postgres appropriées pour créer un utilisateur conforme à vos spécifications.
OutputEnter name of role to add:
Shall the new role be a superuser? (y/n)
Vous pouvez obtenir plus de contrôle en passant des drapeaux supplémentaires. Découvrez les options en consultant la page + man +
:
man createuser
Créer une nouvelle base de données
Par défaut, le système d’authentification Postgres suppose également qu’il existe une base de données portant le même nom que le rôle utilisé pour la connexion, à laquelle le rôle a accès.
Ainsi, si dans la dernière section, nous avons créé un utilisateur appelé «+», ce rôle tentera de se connecter à une base de données également appelée « sammy +» par défaut. Vous pouvez créer la base de données appropriée à l’aide de la commande created.c +
.
Si vous êtes connecté en tant que compte + postgres +
, vous devez taper quelque chose comme:
createdb
Si, à la place, vous préférez utiliser + sudo +
pour chaque commande sans passer de votre compte normal, vous devez taper:
sudo -u postgres createdb
Ouvrir une invite Postgres avec le nouveau rôle
Pour vous connecter avec une authentification basée sur + ident +
, vous aurez besoin d’un utilisateur Linux portant le même nom que votre rôle et votre base de données Postgres.
Si aucun utilisateur Linux correspondant n’est disponible, vous pouvez en créer un avec la commande + adduser +
. Vous devrez le faire depuis un compte avec les privilèges + sudo +
(non connecté en tant qu’utilisateur + postgres +
):
sudo adduser
Une fois que vous avez le compte approprié disponible, vous pouvez basculer et vous connecter à la base de données en tapant:
sudo -i -u
psql
Ou, vous pouvez le faire en ligne:
sudo -u psql
Vous serez automatiquement connecté en supposant que tous les composants ont été correctement configurés.
Si vous souhaitez que votre utilisateur se connecte à une autre base de données, vous pouvez le faire en spécifiant la base de données comme suit:
psql -d
Une fois connecté, vous pouvez vérifier vos informations de connexion actuelles en tapant:
\conninfo
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Cela peut être utile si vous vous connectez à des bases de données non définies par défaut ou à des utilisateurs non définis par défaut.
Créer et supprimer des tables
Maintenant que vous savez comment vous connecter au système de base de données PostgreSQL, nous pouvons examiner comment effectuer certaines tâches de base.
Tout d’abord, nous pouvons créer une table pour stocker des données. Créons un tableau décrivant les équipements de jeux.
La syntaxe de base de cette commande ressemble à ceci:
CREATE TABLE (
() ,
(),
()
);
Comme vous pouvez le constater, nous attribuons un nom à la table, puis nous définissons les colonnes souhaitées, ainsi que le type de colonne et la longueur maximale des données de champ. Nous pouvons aussi éventuellement ajouter des contraintes de table pour chaque colonne.
Vous pouvez en savoir plus sur how pour créer et gérer des tables dans Postgres ici.
Pour nos besoins, nous allons créer un tableau simple comme celui-ci:
CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
install_date date
);
Nous avons créé une table de jeu qui répertorie le matériel dont nous disposons. Cela commence par un ID d’équipement de type + serial +
. Ce type de données est un entier auto-incrémenté. Nous avons attribué à cette colonne la contrainte + clé primaire +
, ce qui signifie que les valeurs doivent être uniques et non nulles.
Pour deux de nos colonnes (+ equip_id +
et + install_date +
), nous n’avons pas donné de longueur de champ. Cela est dû au fait que certains types de colonnes ne nécessitent pas de longueur définie, car la longueur est impliquée par le type.
Nous donnons ensuite des colonnes pour l’équipement + type
et` + couleur`, qui ne peuvent pas toutes être vides. Nous créons une colonne + location +
et créons une contrainte qui exige que la valeur soit l’une des huit valeurs possibles. La dernière colonne est une colonne de date qui enregistre la date d’installation de l’équipement.
Nous pouvons voir notre nouvelle table en tapant:
\d
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Notre table de jeu est ici, mais nous avons aussi quelque chose appelé + playground_equip_id_seq +
qui est du type + sequence +
. Ceci est une représentation du type + serial +
que nous avons donné à notre colonne + equip_id +
. Ceci garde une trace du prochain numéro de la séquence et est créé automatiquement pour les colonnes de ce type.
Si vous voulez voir uniquement la table sans la séquence, vous pouvez taper:
\dt
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Ajouter, interroger et supprimer des données dans une table
Maintenant que nous avons un tableau, nous pouvons y insérer des données.
Ajoutons une diapositive et une balançoire. Pour cela, nous appelons la table à laquelle nous voulons ajouter, en nommant les colonnes, puis en fournissant des données pour chaque colonne. Notre slide et notre swing pourraient être ajoutés comme ceci:
INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');
Lors de la saisie des données, veillez à éviter quelques interruptions courantes. Tout d’abord, gardez à l’esprit que les noms de colonne ne doivent pas être cités, mais que la colonne values que vous entrez nécessite des guillemets.
Une autre chose à garder à l’esprit est que nous ne saisissons pas de valeur pour la colonne + equip_id +
. En effet, cela est généré automatiquement chaque fois qu’une nouvelle ligne de la table est créée.
Nous pouvons ensuite récupérer les informations que nous avons ajoutées en tapant:
SELECT * FROM playground;
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2014-04-28
2 | swing | yellow | northwest | 2010-08-16
(2 rows)
Ici, vous pouvez voir que notre + equip_id +
a été rempli avec succès et que toutes nos autres données ont été organisées correctement.
Si la diapositive du terrain de jeu se casse et que nous devons la supprimer, nous pouvons également supprimer la ligne de notre tableau en tapant:
DELETE FROM playground WHERE type = 'slide';
Si nous interrogeons à nouveau notre table, nous verrons que notre diapositive ne fait plus partie de la table:
SELECT * FROM playground;
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2010-08-16
(1 row)
Comment ajouter et supprimer des colonnes d’une table
Si nous voulons modifier une table après sa création pour ajouter une colonne supplémentaire, nous pouvons le faire facilement.
Nous pouvons ajouter une colonne pour afficher la dernière visite de maintenance pour chaque équipement en tapant:
ALTER TABLE playground ADD last_maint date;
Si vous visualisez à nouveau les informations de votre table, vous verrez que la nouvelle colonne a été ajoutée (mais aucune donnée n’a été entrée):
SELECT * FROM playground;
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2010-08-16 |
(1 row)
Nous pouvons supprimer une colonne aussi facilement. Si nous constatons que notre équipe de travail utilise un outil distinct pour garder une trace de l’historique de maintenance, nous pouvons supprimer cette colonne en tapant:
ALTER TABLE playground DROP last_maint;
Comment mettre à jour des données dans une table
Nous savons comment ajouter des enregistrements à une table et comment les supprimer, mais nous n’avons pas encore expliqué comment modifier des entrées existantes.
Vous pouvez mettre à jour les valeurs d’une entrée existante en interrogeant l’enregistrement souhaité et en définissant la colonne sur la valeur que vous souhaitez utiliser. Nous pouvons demander l’enregistrement «swing» (cela correspond à every swing dans notre tableau) et changer sa couleur en «rouge». Cela pourrait être utile si nous donnions un coup de pinceau à la balançoire:
UPDATE playground SET color = 'red' WHERE type = 'swing';
Nous pouvons vérifier que l’opération a réussi en interrogeant à nouveau nos données:
SELECT * FROM playground;
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2010-08-16
(1 row)
Comme vous pouvez le constater, notre diapositive est maintenant enregistrée comme étant en rouge.
Conclusion
Vous êtes maintenant configuré avec PostgreSQL sur votre serveur Ubuntu 16.04. Cependant, il reste encore beaucoup à apprendre avec Postgres. Voici d’autres guides sur l’utilisation de Postgres: