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_1vaut8) :🗂️ 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;ASCpourASCENDINGet l'ordre croissant. UtiliserDESCpour 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.