Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Abréviations
BDD Base de données
SGBD Système de gestion de bases de données
SQL Structured Query Language (en français, langage de requête structurée)
Définitions
SGBD Logiciel qui va manipuler les données d’une base. C’est ce logiciel qui commande les interactions avec la base pour y récupérer,
ajouter, modifier ou supprimer des données.
SQL Langage informatique qui permet d'interagir avec les bases de données.
Les différents SGBD
MySQL Le plus connu des SGBD. C’est le plus utilisé, car il était open-source avant son rachat par Oracle Corporation. Connu pour être
notamment utilisé par les sites WordPress.
MariaDB "Copie" open-source de MySQL qui suit les mêmes règles de langage que MySQL.
Oracle Très cher, mais utile pour traiter un très gros volume de données. Ce sont presque exclusivement les grandes entreprises qui
Database l’utilisent. Oracle tend à se faire rattraper par les SGBD open-source type MariaDB ou PostgreSQL. Il est en réelle perte de
vitesse sur le marché.
PostgreSQL Grand SGBD open-source disponible sur le marché. C’est le SGBD qui suit le plus les recommandations du SQL, ainsi que le
plus rapide (ces dernières années). Il est notamment utilisé par Instagram ou par Spotify.
SQLite Il stocke toute la base de données dans un seul et unique fichier. Peu propice à l’utilisation sur un grand nombre de données.
Recommandé pour développer une base de données “en local”.
Quel est le lien entre le SGBD et le langage SQL ?
Un utilisateur arrive sur Foodly. Il scanne un aliment présent dans son supermarché pour connaître ses caractéristiques nutritionnelles. Que va
faire l'application ?
L’application va traduire cette recherche en SQL et l’envoyer au SGBD, qui va récupérer l’aliment en question dans le stockage de la base de
données, pour ensuite le redonner à l’application . L’utilisateur retrouvera ainsi son aliment avec toutes ses caractéristiques.
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 1 of 6. Yours!
https://apollopad.com
Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Commandes terminal MySQL
mysql -u root -p Acceder à MySQL.
mysql -u root -p nom_de_la_base_de_donnees < nom_du_fichi Permet de "charger" une base de données en une
er.sql seule commande, en chargeant le fichier.
use nom_de_la_base_de_donnees; Permet de "charger" les données d'une bdd en
source nom_du_fichier.sql; chargeant le fichier.
exit; Retourner dans le terminal en mode "normal".
Rédaction des valeurs selon leur type
Effectuer des opérations
SELECT COUNT(*) COUNT(*) permet de compter le nombre de
FROM utilisateur lignes répondant au filtre parmi toutes les
WHERE email LIKE "%gmail.com"; colonnes.
SELECT COUNT(nom) COUNT(nom) permet de compter le nombre
FROM utilisateur de lignes répondant au filtre dans la colonne
WHERE email LIKE "%gmail.com"; nom.
SELECT COUNT(DISTINCT nom) COUNT(DISTINCT nom) permet d'éviter
FROM utilisateur les doublons.
WHERE email LIKE "%gmail.com";
SELECT COUNT(DISTINCT nom) AS "Alias" AS permet de créer un alias à la colonne
précédemment citée.
SELECT MAX(sucre) AS "taux de sucre maximum" Nous donne le maximum de la colonne sur la
FROM aliment; sélection.
MIN Nous donne le minimum de la colonne sur la
sélection.
AVG Nous donne la moyenne de la colonne sur la
sélection.
SUM Nous donne la somme de la colonne sur la
sélection.
SELECT ROUND(AVG(calories)) AS "calories moyennes des aliments ROUND(AVG(calories)) permet
> 30g" d'arrondir la valeur retournée.
FROM aliment
WHERE calories > 30;
UPPER Transformer le texte en majuscules.
NOW Retourne la date actuelle.
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 2 of 6. Yours!
https://apollopad.com
Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Filtres SQL
WHERE colonne = valeur WHERE peut s'exécuter avec SELECT, mais aussi avec n’importe quelle autre commande : vous pouvez l’utiliser
avec UPDATE ou DELETE pour ne mettre à jour ou supprimer qu’un objet spécifique.
> Supérieur à
< Inférieur à
>= Supérieur ou égal à
<= Inférieur ou égal à
LIKE = "texte" Permet de sélectionner les objets dont le texte d’une colonne répond à un modèle spécifique.
"%gmail.com" Texte se terminant par "gmail.com".
"gmail.com%" Texte commençant par "gmail.com".
"%gmail.com%" Texte comprenant "gmail.com" au début ou à la fin.
AND Permet d'ajouter un filtre supplémentaire avec la condition ET
OR Permet d'ajouter un filtre supplémentaire avec la condition OU
Le caractère % à un rôle très spécifique. Il va permettre de faire correspondre des schémas spécifiques, on parle parfois de pattern.
Types et options de champs
PRIMARY KEY Champ spécial obligatoire dans toutes les tables. Indique à MySQL que ce champ sera l'identifiant permettant d'identifier
(option) les objets.
NOT NULL (option) Ce champ ne peut pas être nul .
AUTO_INCREME Ce champ sera créé par MySQL automatiquement , pas besoin de s'en soucier ! MySQL va utiliser l'id précédent et y
NT (option) ajouter +1 lors de l'ajout d'un nouvel objet.
UNIQUE (option) Ce champ ne peut pas avoir la même valeur en double .
DEFAULT value Ce champ sert à indiquer une valeur par défaut . Utile pour ne pas avoir à spécifier une valeur tout le temps.
(option)
INTEGER (type) Champ numérique sous forme de nombre entier.
VARCHAR(100) Champ sous forme de texte, limité à 100 caractères
(type)
FLOAT (type) Ce champ contiendra des chiffres décimaux.
BOOLEAN (type) Ce champ ne peut stocker que les valeurs true (vrai) ou false (faux).
Une option dans un champ est un attribut optionnel qui va modifier le comportement de ce champ. Le type lui est obligatoire !
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 3 of 6. Yours!
https://apollopad.com
Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Commandes SQL
CREATE DATABASE nomdelabase; Création d'une nouvelle base de données.
USE nomdelabase; Utiliser une base de données.
SHOW DATABASES; Montre toutes les bases de données.
CREATE TABLE utilisateur ( Création d'une table.
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100),
prenom VARCHAR(100),
email VARCHAR(255) NOT NULL UNIQUE
);
SHOW TABLES; Affiche les tables existantes.
SHOW COLUMNS FROM nomdelatable; Affiche le schéma d'une table.
FROM nomdelatable Spécifie la table de la base de donnée qui nous intéresse
INSERT INTO `nomdelatable` (`nom`, `prenom`, `email Permet d'insérer des données dans une table.
`)
VALUES
('Doe', 'John', '[email protected]'),
('Smith', 'Jane', 'jane@hotmail.com');
SELECT * SELECT indique à MySQL que nous souhaitons récupérer de la
FROM `nomdelatable`; donnée ;
* indique que l’on souhaite récupérer toutes les colonnes (ou
champs) présents dans cette table ;
FROM permet à MySQL de comprendre depuis quelle table nous
souhaitons récupérer de la donnée.
SELECT `nom`, `prenom`, `email` Indiquer les colonnes à afficher permet de choisir les champs que
FROM `nomdelatable`; MySQL va montrer.
UPDATE `nomdelatable` UPDATE table mettre à jour de la donnée en indiquant la table
SET `email` = '
[email protected]' dans laquelle se trouve(nt) le ou les objets que l'on veut modifier.
WHERE `id` = '1'; SET colonne = valeur sert à indiquer quelles sont la ou les
colonnes à modifier, et quelles sont la ou les valeurs qu’elles doivent
désormais prendre.
DELETE FROM `nomdelatable` Supprime une ligne de table en fonction du filtre.
WHERE `id` = '1';
DROP TABLE `nomdelatable`; Supprime toutes les données d'une table et la table elle-même.
DROP DATABASE `nomdelabase`; Supprime entièrement et de façon irréversible la base de données.
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 4 of 6. Yours!
https://apollopad.com
Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Commandes SQL (cont)
ORDER BY DATABASE `nom` ASC; Ce mot clé vous permet d’ordonner une colonne par ordre croissant
( ascending en anglais, d’où le mot clé SQL ASC), ou décroissant
( descending en anglais, soit le mot clé DESC).
CREATE VIEW utilisateurs_gmail_vw AS Créé une vue. MySQL a un système de “vues” qui permet de créer des
( SELECT * tables temporaires à partir d’une commande SQL. Il est donc possible de
FROM utilisateur “sauvegarder” une commande SQL.
WHERE email LIKE "%gmail.com"
);
SELECT * FROM utilisateurs_gmail_vw; Utilisation d'une vue. À noter que _vw permet de faire la distinction
"vraies" tables.
SELECT * La table langue a été jointe grâce à JOIN langue.
FROM utilisateur Pour pouvoir faire cette jointure, il faut préciser à MySQL la correspondanc
JOIN langue entre la table langue et la table utilisateur. Ici, cette correspondanc
ON utilisateur.langue_id = langue.id; est effectuée via la clé langue_id pour la table utilisateur et
la table langue. Celà se fait grâce à ON `utilisateur`.`langu
e_id` = `langue`.`id`.
SELECT * - MySQL sélectionne tous les utilisateurs avec SELECT * FROM utilis
FROM utilisateur teur
JOIN utilisateur_aliment - On joint la table utilisateur_aliment avec JOIN utilisate
ON (utilisateur.id = utilisateur_aliment.utilisateur_i r_aliment
d) - On relie en considérant que l’id de l’utilisateur est stocké en tant que
JOIN aliment sateur_id dans la table utilisateur_aliment ON (utilis
ON (aliment.id = utilisateur_aliment.aliment_id teur.id = utilisateur_aliment.utilisateur_id)
); - À ce JOIN , on lie de la donnée de la table aliment, soit un nouveau
N avec JOIN aliment
- On précise que l’id de l’aliment est stocké dans utilisateur_alim
nt en tant que aliment_id avec ON (aliment.id = utilisateu
_aliment.aliment_id)
ALTER TABLE nomdelatable ADD colonne FLOAT; Modification de la table en ajoutant une colonne de type FLOAT.
ALTER TABLE nomdelatable DROP colonne; Modification de la table en supprimant une colonne.
ALTER TABLE nomdelatable MODIFY colonne; Modification de la table en changeant le type de la colonne.
ALTER TABLE nomdelatable CHANGE truc colonne; Modification de la table en changeant le nom de la colonne.
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 5 of 6. Yours!
https://apollopad.com
Bases de données relationnelles avec SQL Cheat Sheet
by Piotezaza (Piotezaza) via cheatography.com/198304/cs/41940/
Commandes SQL (cont)
ALTER TABLE aliment FOREIGN KEY (famille_id) indique que la colonne “famille_id” est une clé étrangère
ADD FOREIGN KEY (famille_id) REFERENCES famille(id) on indique ensuite ce à quoi cette clé fait référence
REFERENCES famille (id) ON DELETE permet de savoir quel comportement avoir en cas de suppression de la
ON DELETE CASCADE; référence
Options :
- RESTRICT ou NO ACTION empêche la suppression sous conditions
- SET NULL supprime la référence et remplace les objets par NULL
- CASCADE supprime tous les objets reliés
ALTER TABLE aliment Options de ON UPDATE :
ADD FOREIGN KEY (famille_id) - RESTRICT ou NO ACTION empêche la mise à jour sous conditions
REFERENCES famille (id) - SET NULL met à jour la référence et remplace les objets par NULL
ON DELETE CASCADE ON UPDATE CASCADE; - CASCADE met à jour tous les objets reliés
By Piotezaza (Piotezaza) Published 24th January, 2024. Sponsored by ApolloPad.com
cheatography.com/piotezaza/ Last updated 24th January, 2024. Everyone has a novel in them. Finish
Page 6 of 6. Yours!
https://apollopad.com