Ce document est une synthèse du module SQL Fundamentals de TryHackMe, rédigée en français. Il couvre les bases des bases de données, les commandes SQL essentielles, les opérations CRUD, les clauses, les opérateurs et les fonctions.([Medium][1])
Les bases de données sont omniprésentes dans le domaine de la cybersécurité. Que ce soit pour sécuriser une application web, analyser des menaces dans un SOC ou empêcher un utilisateur curieux d’accéder à des données sensibles, les bases de données jouent un rôle crucial.([Medium][2])
Bases de Données Relationnelles : Stockent les données dans des tables avec des lignes et des colonnes. Idéales pour des données structurées et prévisibles.
Bases de Données Non-Relationnelles : Stockent les données dans des formats flexibles, souvent utilisés pour des contenus générés par les utilisateurs.
Dans une base de données relationnelle, les données sont organisées en tables. Chaque ligne représente un enregistrement, et chaque colonne représente un champ de données.
Clé Primaire : Identifiant unique pour chaque enregistrement dans une table.([Medium][3])
Clé Étrangère : Lien entre deux tables, assurant l’intégrité référentielle des données.
SQL (Structured Query Language) est le langage standard pour interagir avec les bases de données relationnelles. Il permet de créer, lire, mettre à jour et supprimer des données.
Rapide : Peut gérer de grandes quantités de données efficacement.
Simple : Syntaxe proche de l’anglais, facile à apprendre.([Medium][4])
Précis : Permet des requêtes complexes pour des analyses approfondies.
mysql -u root -p
# Mot de passe : tryhackme
CREATE DATABASE nom_de_la_base;
SHOW DATABASES;
USE nom_de_la_base;
DROP DATABASE nom_de_la_base;
CREATE TABLE nom_de_la_table (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL,
date_publication DATE
);
SHOW TABLES;
DESCRIBE nom_de_la_table;
ALTER TABLE nom_de_la_table ADD colonne INT;
DROP TABLE nom_de_la_table;
INSERT INTO livres (id, nom, date_publication, description)
VALUES (1, "Sécurité Android", "2014-10-14", "Guide approfondi de la sécurité Android.");
SELECT * FROM livres;
SELECT nom, description FROM livres;
UPDATE livres
SET description = "Guide mis à jour de la sécurité Android."
WHERE id = 1;
DELETE FROM livres WHERE id = 1;
Élimine les doublons dans les résultats.
SELECT DISTINCT nom FROM livres;
Regroupe les résultats selon une ou plusieurs colonnes.
SELECT nom, COUNT(*) FROM livres GROUP BY nom;
Trie les résultats.([Medium][1])
SELECT * FROM livres ORDER BY nom ASC;
SELECT * FROM livres ORDER BY nom DESC;
Filtre les groupes après l’utilisation de GROUP BY.([Medium][1])
SELECT nom, COUNT(*) FROM livres GROUP BY nom HAVING COUNT(*) > 1;
Égal : =
Différent : != ou <>
Supérieur à : >
Inférieur à : <
Supérieur ou égal à : >=
Inférieur ou égal à : <=
ET : AND
OU : OR
NON : NOT
Recherche de motifs.
SELECT * FROM livres WHERE nom LIKE '%Sécurité%';
SELECT COUNT(*) FROM livres;
SELECT SUM(prix) FROM livres;
SELECT AVG(prix) FROM livres;
SELECT MAX(prix) FROM livres;
SELECT MIN(prix) FROM livres;
SELECT LENGTH(nom) FROM livres;
SELECT CONCAT(nom, ' - ', auteur) FROM livres;