Construire une base de données relationnelle

Partie 4
Chapitre 1 sur 6
Partie 4 – Organiser et schématiser les données avec SQL

DDL : CREATE, ALTER, DROP

NB : Dans cette lecon, nous n’utiliserons pas le client en ligne de commande PSQL mais la plateforme graphique de PostgreSQL : pgAdmin.

Afin de comprendre ce qu’est concrètement une base de données prenons l’exemple d’Excel.
Un classeur Excel est une collection d’informations pouvant contenir une ou plusieurs feuilles Excel.

Voici une feuille Excel :

Le tableau ci-dessus est une table (feuille) contenue dans une database (classeur).

Simplement, une database (base de données) est un contenant dont les contenus sont des tables.

Une table est un croisement de ligne et de colonne. Chaque colonne est une variable avec ses caractéristiques : ses nombres de caractères, ses contraintes, son type. Chaque ligne ou observation est un tuple (référence à l’introduction sur PostgreSQL), un objet avec ses caractéristiques propres.

Créer une database

Pour créer une database, il faut utiliser l’instruction DDL CREATE.

Il y a plusieurs façons de créer sa propre base de données. Dans un premier temps, voyons ensemble une méthode graphique : cliquez droit sur Databases et cliquez sur ‘Create > Database…’

 

Vous pouvez ensuite donner le nom que vous souhaitez à la database et cliquer sur ‘Save’.

 

Sinon, vous pouvez aussi rédiger une requête SQL à l’aide de ‘Query Tool’ : créer votre database avec l’instruction DDL CREATE :

 

 

CREATE DATABASE mydb;

C’est aussi simple que ça.

NB : pour certains utilisateurs, créer des databases n’est pas forcément nécessaire si elles existent déjà. Ces utilisateurs ne vont utiliser que des instructions DML.

Créer une table

Maintenant que nous avons notre database, nous pouvons créer nos tables. Encore une fois, nous pouvons créer une table en cliquant droit sur Tables et ‘Create > Table…’ ou bien utiliser une requête SQL avec ‘Query Tool’.

 

 

-Avec l’instruction DDL CREATE:

 

CREATE TABLE table1 ();

Modifier une table

Maintenant que vous avons une table, vide, nous devons ajouter des colonnes et leurs caractéristiques à l’aide de l’instruction DDL ALTER.

En cliquant, il suffit de cliquer droit sur notre table et sélectionner ‘Properties…’ puis d’ajouter les colonnes dans l’onglet correspondant.

-Avec une requête SQL :

ALTER TABLE public.table1
ADD id SERIAL NOT NULL PRIMARY KEY,
ADD nom VARCHAR(50) NOT NULL,
ADD prenom VARCHAR(50) NOT NULL,
ADD email VARCHAR(50) NOT NULL,
ADD age INT NOT NULL,
ADD adresse VARCHAR(100) NOT NULL,
ADD ville VARCHAR(50) NOT NULL;

NB : Pour supprimer une colonne d’une table, il suffit de remplacer l’instruction ADD (ou ADD COLUMN) par DROP COLUMN <nom de la colonne> dans l’instruction. Il existe de nombreuses modifications de tables avec l’instruction DDL ALTER.

 

  • Ajouter une contrainte : même syntaxe que lors de la création de table.

ALTER TABLE table1
ADD CONTRAINT, CHECK, FOREIGN KEY, PRIMARY KEY, etc.

  • Supprimer une contrainte :

ALTER TABLE table1
DROP CONSTRAINT <contrainte>;

  • Déclarer ou supprimer une contrainte non nulle :

ALTER TABLE table1
ALTER COLUMN <colonnes> SET NOT NULL/DROP NOT NULL.

  • Modifier le type d’une colonne :

ALTER TABLE table1
ALTER COLUMN <colonne> TYPE <type> USING <colonne> :: <type> ;

  • Renommer une colonne :

ALTER TABLE table1
RENAME COLUMN <colonnes1> TO <colonnes2>;
(renommer une table : RENAME TO <table2>;)

Créer une table en définissant ses colonnes

Lors de la création d’une table, si vous avez déjà la structure de la table à disposition, vous pouvez gagner une étape en définissant directement les colonnes et leurs caractéristiques dans l’instruction DDL CREATE TABLE.

-Avec la méthode graphique :

-Avec une requête SQL :

CREATE TABLE public.table1
(
id SERIAL NOT NULL PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
age INT NOT NULL,
adresse VARCHAR(100) NOT NULL,
ville VARCHAR(50) NOT NULL
);

Supprimer une table

Pour supprimer entièrement une table, il faut utiliser l’instruction DDL DROP TABLE.

-Avec la méthode graphique :

-Avec une requête SQL :

DROP TABLE table1, table2;

NB : l’utilisation en requête SQL de l’instruction DROP TABLE permet aussi de supprimer plusieurs tables de la database en séparant les noms des tables par des virgules ‘,’.

 

Exemple

Maintenant, reprenons la structure de notre dataset « air_quality_Nov2017.csv » que nous avons exploré et nettoyé dans les cours précédents.

Créer la structure d’une table

CREATE TABLE air_quality
(id SERIAL PRIMARY KEY,
Station VARCHAR(50),
"Air Quality" CHAR(1),
Longitude VARCHAR(20),
Latitude VARCHAR(20),
"O3 Hour" VARCHAR(10),
"O3 Quality" VARCHAR(10),
"O3 Value" NUMERIC,
"NO2 Hour" VARCHAR(10),
"NO2 Quality" VARCHAR(10),
"NO2 Value" NUMERIC,
"PM10 Hour" VARCHAR(10),
"PM10 Quality" VARCHAR(10),
"PM10 Value" NUMERIC,
"Generated" DATE,
"Date Time" DATE
);

Vérifier si la table a bien été créée avec la structure

Il suffit de cliquer droit sur notre table, ‘View/Edit Data > All Rows’.

 

-Avec une requête SQL pour les pros :

SELECT *
FROM air_quality;

Génial ! Voici notre table et sa structure (4 premières colonnes) :

Vous remarquerez qu’en créant des colonnes, nous avons aussi défini la structure de ces colonnes avec des types et des contraintes comme VARCHAR, SERIAL, PRIMARY KEY ou NOT NULL. Nous détaillerons ces concepts dans les cours suivants.

Voilà, vous savez à peu près tout sur la création et la suppression de tables.