Qu’est-ce qu’une base de donnée ?
Une base de donnée sert à enregistrer et organiser des informations.
Quels sont les 4 types de base de données ?
Quels sont les différents niveaux d’organisation de PostgreSQL ?
serveur -> base -> schéma -> table
serveur : contient plusieurs bases de données
base de données : espace de stockage indépendant au sein du serveur, contient un ou plusieurs schémas
schéma : un espace logique de classification à l’intérieur d’une base, permet d’organiser les tables par domaine, module ou équipe
table : structure contenant les données (lignes/colonnes), toutes les requêtes SQL portent sur des tables.
Comment rédiger un commentaire en SQL ?
’ commentaire
Quelles est la syntaxe pour interroger la base de données ?
SELECT colonne 1, colonne 2
FROM nom_de_la_table
LIMIT 5;
Quels sont les type de données SQL ?
Types numériques :
- INT nombre entier
- SERIAL entier auto-incrémenté
- NUMERIC (p,s) nombre décimaux précis (p = nombre de chiffres, s = nombres de décimaux)
- REAL / FLOAT nombre à virgule flottante
Types de texte :
- VARCHAR(n) texte de longueur variable (n = max)
- CHAR(n) texte de longueur fixe
- TEXT texte de longueur illimitée
Types date et temps :
- DATE
- TIME
- TIMESTAMP date + heure
Autre :
- BOOLEAN
Qu’est-ce qu’une clé primaire ?
Une clé primaire (PK) est une colonne(ou groupe de colonne) qui :
- identifie uniquement chaque ligne de la table
- ne peut jamais être vide
- ne peut jamais être dupliquée
- est souvent un nombre auto-incrémenté
Qu’est-ce qu’une clé étrangère ?
Une clé étrangère (FK) est une colonne qui :
- fait référence à la clé primaire d’une autre table
- crée une relation entre deux tables
- garantit l’intégralité référentielle (pas de données orphelines)
FOREIGN KEY (id_etab)
REFERENCE etab(id_etab)
Quelle est la syntaxe pour créer un table ?
CREATE TABLE nom_schema.nom_table (
colonne1 TYPE CONTRAINTES,
colonne2 TYPE CONTRAINTES,
…
CONTRAINTES_DE_TABLES
);
Donner des exemples de contraintes (tables/colonne).
Contrainte de table :
UNIQUE (colonne1, colonne2)
Contrainte de colonne :
- NOT NULL
- UNIQUE
- CHECK (value >= 0 AND value <= 20)
- DEFAULT NOW()
Quelles sont les types de relations ?
1 - 1 one to one
1 - N one to many
N - N many to many
Quelle est la syntaxe pour insérer des données ?
INSERT INTO nom_table (colonne1, colonne2, …)
VALUES (valeur1, valeur2, …)
IMPORTANT : les colonnes SERIAL sont gérées automatiquement, ne jamais les inclure dans insert
Quelle clause permet de filtrer les lignes retournées par une requête ?
SELECT colonnes
FROM nom_table
WHERE condition;
exemple : WHERE date_naissance > ‘YYYY-MM-DD’
Quels sont les opérateurs de comparaison ?
=
!= ou <>
>
<
>=
<=
BETWEEN x and y
IN (‘value1’, ‘value2’) dans une liste
LIKE ‘%@gmail.com’ correspondant au motif
IS NULL
IS NOT NULL
Quels sont les opérateurs logiques ?
AND / OR / NOT
Citer des fonctions d’agrégation.
Les fonctions d’agrégation calculent une valeur unique à partir d’un ensemble de lignes.
ROUND(AVG(valeur), 2) permet d’arrondir le résultat
A quoi servent les alias en SQL ?
Les alias permet de renommer une colonne dans le résultat pour améliorer la lisibilité
SELECT colonne AS nom_alias
Quelles clause permet de trier les résultats dans un ordre spécifique ?
SELECT colonnes
FROM table
ORDER BY colonne [ASC|DESC]
IMPORTANT : pour une date, ACS tri par date anciennes à récentes
Quelle est la syntaxe pour modifier des données ?
UPDATE nom_table
SET colonne1 = nouvelle_valeur1
colonne2 = nouvelle_valeur2
WHERE condition;
ATTENTION : toujours utiliser une condition sur une clé primaire sinon toute la table sera modifiée.
Quelle est la syntaxe pour supprimer des données ?
DELETE FROM nom_table
WHERE condition;
ATTENTION : toujours utiliser une condition sur une clé primaire sinon toute la table sera supprimée.
Quel est l’ordre d’exécution des clauses SQL ?
SELECT colonnes
FROM table1
INNER JOIN table2 ON …
WHERE condition
GROUP BY colonne
HAVING condition
ORDER BY colonne [ASC|DESC]
LIMIT nombre;
FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT
Comment pouvons nous combiner plusieurs tables dans une requête ?
SELECT colonnes
FROM table1
INNER JOIN table2 ON table1.colonne = table2.colonne;
Quelle clause permet de regrouper les données ?
SELECT colonne,
fonction_agregation(colonne1)
FROM table
GROUPE BY (colonne);
IMPORTANT : toutes les colonnes non-agrégées dans SELECT doivent être dans GROUP BY
Quelle clause permet de filtrer les groupe après un GROUP BY ?
HAVING permet de filtrer sur des fonction d’agrégation.