C’est quoi une BDD ?
C’est un système qui nous permet de stocker et gérer les données d’une façon souple et efficace.
Comment modifier la colonne d’une table en BDD ?
➢ ALTER TABLE nom_table ALTER COLUMN nom_colonne TYPE NOUVEAU_TYPE
Autres opérations : [ADD | DROP ] COLUMN nom_colonne
Comment ajouter une contrainte à une table ?
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte FOREIGN KEY (client_id) REFERENCES
clients(id)
Comment supprimer une contrainte d’intégrété ?
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte
Les containtes d’intégrité qu’on a dans les BDDs ?
PRIMARY KEY, FOREINGN KEY, NOT NULL, UNIQUE, DEFAULT, CHECK
Exp: ALTER TABLE car ADD CONSTRAINTE check_price CHECK(price < 3000)
Comment créer/supprimer un index ?
CREATE INDEX nom_index ON nom_table(colonne1, colonne2…)
DROP INDEX
NB: Les colonnes doivent êtres de la même tables.
Inconvénient d’index ?
➢ C’est comme l’index d’un livre, il accélère la recherche mais ça prend de la place.
➢ Impacte la vitesse d’écriture de données.
Les datatypes supportés par postgsql ? (selon les SGBD)
String: char(n), Varchar(n)
Numérique: decimal(p,s) integer, float
Date: date, timestemp, timestemptz, datetime(YYYY-MM-DD hh:mm:ss)
Comment importer un fichier csv à une BDD SQL ? (postgrsql)
COPY my_table(colonne1, colonne2,…) FROM ‘/my/path/exemple/[Link]’ DELIMITER ‘,’
CSV HEADER
Pourquoi les BDDs non relationnels sont-elles généralement plus performantes ?
➢ Pas de contraintes d’intégrités => lecture et écritures plus rapides
➢ Structure flexible => pas de validation de données => écritures plus rapides.
➢ Elles sont conçues pour les Big Data => elles supportent la scalabilité horizontales.
Types de commandes SQL ? CMD
➢ DCL: Data Control Language => grant, revoke users permissions
➢ DML: Data Manipulation Language => select, insert, delete, update, merge
➢ DDL: Data Définition Language => create, ADD, MODIFY, DROP
Nb : merge mettre à jour et insère si ça n’existe pas.
A quoi sert la commande BACKUP / dump file ?
Empêche la perte des données : Permet d’exporter la BDD dans un fichier (restore file)
Postgrsql:
Pg_dump -U username -d db_name > dump_file_name.sql
SQL Server :
BACKUP TO DISK = ‘C:\path\[Link]’ WITH FORMAT, INIT;
Comment créer une function SQL ?
DELIMITER $$
CREATE OR REPLACE FUNCTION carre(valeur NUMERIC) RETURNS NUMERIC
BEFGIN
RETURN valeur * valeur;
END;
$$
Comment l’appeler ?
SELECT carre(5); -- 25z
A quoi sert l’opérateur EXISTS ?
SELECT * FROM Employee e WHERE EXISTS (SELECT * FROM Employee e2 WHERE [Link] = [Link])
De même on peut utiliser les ops : ANY ou ALL ( vaut true si l’id match tous les ids retournés par
sub-query)
A quoi sert la fonction IFNULL ?
Permet de retourner une valeur alternative si la valeur actuelle de la colonne est null.
Les fonctions les plus utilisées dans SQL ?
String : UPPER(), LOWER(), LENGTH(), CONCAT(), REPLACE(a, b) , TRIM().
Date: NOW(), EXTRACT(YEAR|DAY| DOW |MOUNT FROM DATE ‘2024-05-05’) , -- DOW retorn 0 à 6 |
0=Dimanche.
Number: ROUND(10.2525, 2) -- 10.25, MAX(), MIN(), AVG()
Les fonctions d’agrégation ?
C’est des fonctions qui combines plusieurs lignes pour retourner une seule valeur, elles sont utilisées
avec GROUP BY.
Exemple:
COUNT(), AVG(), MIN(), MAX(), SUM(), ROUND()
HAVING vs WHERE ?
WHERE: applique la condition avant le regroupement.
HAVING: applique la condition après le regroupement et elle est utilisée avec GROUP BY. S’applique
sur le les groupes générés par GROUP BY.
JOINTURES
JOIN : veut dire combiner deux tables.
INNER JOIN, LEFT JOIN, RIGTH JOIN, FULL OUTER JOIN.
- FULL OUTER JOIN | CROSS JOIN: retourne les éléments des deux tables(intersection+les lignes des
deux tables) avec les null dans les colonnes manquants.
- LEFT OUTER JOIN LEFT JOIN : indentique LEFT JOIN est une expression courte de l’autre.
- RIGHT OUTER JOIN RIGHT JOIN : Pareil.
- SELF JOIN: utilisée pour une jointure sur la table actuelle
Exp: je veux dans une table Employee(nom, prenom, manager), je veux avoir le nom d’employée et
de son manager.
SELECT [Link] , [Link] FROM employes e
LEFT JOIN employes m ON e.manager_id = [Link];
C’est quoi UNION ?
UNION : clause/opérateur utilisée pour concaténer le résultat de deux requêtes.
NB 01 :
➢ Elle élimine les enregistrements en double.
➢ On peut l’utiliser plusieurs fois pour concaténer le résultat de plusieurs requêtes.
C’est quoi la différence entre UNION et UNIO ALL ?
UNION ALL: fait la même chose que UNION mais elle garde les doublons.
Exp :
SELECT cust_name, cust_amount FROM custA
[UNION ALL | UNION]
SELECT cust_name, cust_amount FROM custB
CASE EXPRESSION
Expression utilisée pour manipuler la valeur à retourner selon des conditions comme IF/ELSE
SUB QUERY/RQUETES IMPRIQUEES
Sert à imbriquer la requête principale avec une autre requête dans la clause WHERE.
Imbriquer une requête à l’intérieur d’une autre requête.
Exp :
Je veux les employées qui touche un salaire supérieur à la moyenne général des salaires.
WINDOW FUNCIONS
Permet d’appliquer les fonctions d’agrégation de statistiques sur une partition de lignes. Sans
Grouper les lignes par GROUP BY.
SELECT RANK() OVER(PARTITION BY nom ORDER BY nom);
Syntaxe :
Exp 01: RANK(), SUM()
Explications :
• PARTITION BY: permet de regrouper un ensemble de lignes.
• RANK(): sert à calculer un RANK() d’une partition.
• ROWS: sélectionne les lignes d’une partition.
Résultat :
Exp 02 : Sélectionner l’id le plus petit/grand id.
Fonctions de fenêtrage : FIRST_VALUE(), LAST_VALUE(), LEAD() => valeur suivante LAG() valeur
précédente.
Entrée :
Résultat :
WINDOW FUNCTION vs GROUP BY ?
WINDOW FUNCTION garde le meme nombre de lignes, et ajoute des colonnes
GROUPE BY: il regroupe les lignes.
EXP : si 100 ventes et tu veux regrouper par vendeur.
• WINDOW FUNCTIONS: retourne 100 ligne
• GROUP BY : retourne le nombre de vendeurs.
GROUP BY :
WINDOW FUNCTIONS :
COMMON TABLE EXPRESSION (CTE)
C’est une requête qui stock sa valeur dans une table temporaire, cette table sera utilisée par la
requête principale.
Syntaxe :
WITH table_temporaire AS ( SELECT a, b, c FROM table01 ) -- CTE
SELECT a, b FROM table_temporaire; -- main query