Memento SQL
⚓︎
Ce document n'a pas la vocation d'être exhaustif. On pourra se référer à ce site afin de le compléter et avoir plus de détails.
Dans certains dialectes SQL
, les points-virgules en fin de ligne sont indispensables même s'il n'y a qu'une seule instruction. Bien que n'utilisions ici que des instructions uniques, on écrit tout de même les points-virgules en fin de ligne.
Liens directs :⚓︎
Création d'une base de données⚓︎
-
La base n'existe pas :
🗂️ Requête SQLCREATE DATABASE ma_base;
-
Au cas où la base existe et que l'on ne souhaite pas l'écraser :
🗂️ Requête SQLCREATE DATABASE IF NOT EXISTS ma_base;
Création de tables⚓︎
-
Cas de base :
🗂️ Requête SQLCREATE TABLE ma_table ( attribut_1 INTEGER PRIMARY KEY AUTOINCREMENT, attribut_2 TEXT, attribut_3 VARCHAR(50) );
Là encore on peut ajouter l'argument
IF NOT EXISTS
. -
Clé primaire multiple :
🗂️ Requête SQLCREATE TABLE ma_table ( attribut_1 INTEGER, attribut_2 TEXT, attribut_3 VARCHAR(50), PRIMARY KEY (attribut_1, attribut_2) );
-
Clé étrangère :
🗂️ Requête SQLCREATE TABLE ma_table ( attribut_1 INTEGER PRIMARY KEY AUTOINCREMENT, attribut_2 INTEGER, attribut_3 VARCHAR(50), FOREIGN KEY (attribut_2) REFERENCES autre_table (attribut_de_reference) );
Afficher toute une table⚓︎
-
On effectue une requête :
🗂️ Requête SQLSELECT * FROM ma_table;
Effacer une base, une table⚓︎
-
Une base :
🗂️ Requête SQLDROP DATABASE ma_base;
-
Une table :
🗂️ Requête SQLDROP TABLE ma_table;
Insertion de valeurs⚓︎
-
On renseigne touts les attributs dans l'ordre de leur création :
🗂️ Requête SQLINSERT INTO ma_table VALUES (valeur_1, valeur_2, valeur_3);
-
On ne renseigne que les attributs cités dans l'ordre souhaité :
🗂️ Requête SQLINSERT INTO ma_table (attribut_3, attribut_1) VALUES (valeur_3, valeur_1);
-
Insertion de plusieurs lignes :
🗂️ Requête SQLINSERT INTO ma_table (attribut_3, attribut_1) VALUES (valeur_3_1, valeur_1_1), (valeur_3_2, valeur_1_2), (valeur_3_3, valeur_1_3);
Suppression de valeurs⚓︎
-
On supprime des entrées, des lignes, en précisant une condition (ici les entrées dont l'
attribut_1
vaut8
) :🗂️ Requête SQLDELETE FROM ma_table WHERE attribut_1 = 8;
Mise à jour de valeurs⚓︎
-
Modification de la valeur pour toutes les lignes d'une table :
🗂️ Requête SQLUPDATE ma_table SET attribut_1 = valeur_1;
-
Modification de la valeur en posant une condition :
🗂️ Requête SQLUPDATE ma_table SET attribut_1 = valeur_1 WHERE condition;
Sélections⚓︎
Cas de base⚓︎
-
Tous les attributs :
🗂️ Requête SQLSELECT * FROM ma_table;
-
Seulement certains attributs :
🗂️ Requête SQLSELECT attribut_1, attribut_3 FROM ma_table;
-
Avec une condition :
🗂️ Requête SQLSELECT attribut_1, attribut_3 FROM ma_table WHERE attribut_2 = valeur_2;
On peut utiliser les opérateurs
=
(attention, un seul symbole contrairement au==
de Python),<>
(plusieurs systèmes de gestion de BDD acceptent aussi!=
),>
,<
,>=
,<=
,AND
,OR
. -
Les chaînes de caractères :
L'usage veut que l'on délimite les chaînes de caractères par des guillemets simples :
'chaine'
. Les guillemets doubles sont réservés aux noms de tables, d'attributs :"attribut_1" = 'chaine'
. Dans les faits, cela ne change pas grand chose !En cas de stricte égalité :
🗂️ Requête SQLSELECT attribut_1, attribut_3 FROM ma_table WHERE attribut_2 = 'chat'
Si l'on cherche les chaînes débutant par
'chat'
(chat
,chatte
,chaton
...):🗂️ Requête SQLSELECT attribut_1, attribut_3 FROM ma_table WHERE attribut_2 LIKE 'chat%'
Si l'on cherche les chaînes se terminant par
'chat'
(achat
,le chat
...):🗂️ Requête SQLSELECT attribut_1, attribut_3 FROM ma_table WHERE attribut_2 LIKE '%chat'
Fonctions d'agrégation⚓︎
-
Compter les lignes vérifiant une condition :
🗂️ Requête SQLSELECT COUNT(*) FROM ma_table WHERE condition;
-
Regrouper toutes les lignes selon la valeur d'un attribut :
🗂️ Requête SQLSELECT COUNT(*) FROM ma_table WHERE condition GROUP BY attribut_1;
-
La maximum d'un attribut :
🗂️ Requête SQLSELECT MAX(attribut_1) FROM ma_table WHERE condition;
Il existe aussi la fonction
MIN
. -
La somme d'un attribut :
🗂️ Requête SQLSELECT SUM(attribut_1) FROM ma_table WHERE condition;
-
La moyenne d'un attribut :
🗂️ Requête SQLSELECT AVG(attribut_1) FROM ma_table WHERE condition;
-
Trier les données :
🗂️ Requête SQLSELECT attribut_1 FROM ma_table WHERE condition ORDER BY attribut_2 ASC;
ASC
pourASCENDING
et l'ordre croissant. UtiliserDESC
pour l'ordre décroissant. -
N'afficher que les 10 premiers résultats :
🗂️ Requête SQLSELECT attribut_1 FROM ma_table WHERE condition LIMIT 10;
Jointures⚓︎
-
Mettre en correspondance plusieurs tables grâce aux clés étrangères :
🗂️ Requête SQLSELECT table_1.attribut_1, table_2.attribut_3 FROM table_1 JOIN table_2 ON table_1.attribut_1 = table_2.attribut_de_reference JOIN table_3 ON table_2.attribut_2 = table_3.attribut_de_reference;
On précise à quelles tables appartiennent les attributs afin de lever les ambiguïtés si deux tables ont des attributs portant le même nom.