0% ont trouvé ce document utile (0 vote)
1 vues13 pages

Guide SQL Complet-2

Introduction au base du language sql

Transféré par

Matembo Lance
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues13 pages

Guide SQL Complet-2

Introduction au base du language sql

Transféré par

Matembo Lance
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Guide Complet SQL

Maîtriser les bases de données relationnelles

Base Intermédiaire Avancé

CREATE, INSERT JOIN, GROUP BY Transactions


SELECT, UPDATE HAVING, ORDER BY Index, Vues
DELETE, DROP Sous-requêtes Procédures stockées

Ce guide couvre toutes les commandes SQL essentielles avec des exemples pratiques. Chaque
section est progressive : commence par les bases, puis avance vers les concepts plus complexes.
1. Gestion des Bases de Données
Créer et sélectionner une base
CREATE DATABASE ma_base;
USE ma_base;
SHOW DATABASES;

Supprimer une base


DROP DATABASE ma_base;

■ Attention : DROP supprime définitivement tout le contenu.

2. Gestion des Tables


Créer une table
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Types de données courants


Type Description Exemple

INT Nombre entier id INT

VARCHAR(n) Texte variable (max n) nom VARCHAR(100)

TEXT Texte long description TEXT

DECIMAL(p,s) Nombre décimal prix DECIMAL(10,2)

DATE Date (AAAA-MM-JJ) naissance DATE

DATETIME Date + heure created_at DATETIME

TIMESTAMP Horodatage auto updated_at TIMESTAMP

BOOLEAN Vrai / Faux actif BOOLEAN

ENUM Valeur parmi liste sexe ENUM('M','F')

Modifier une table (ALTER TABLE)


-- Ajouter une colonne
ALTER TABLE user ADD COLUMN telephone VARCHAR(20);
-- Modifier une colonne
ALTER TABLE user MODIFY COLUMN nom VARCHAR(200);

-- Supprimer une colonne


ALTER TABLE user DROP COLUMN telephone;

-- Renommer une table


RENAME TABLE user TO utilisateur;

Supprimer une table


DROP TABLE user;
SHOW TABLES;
3. Insérer des Données (INSERT)
Insérer une ligne
INSERT INTO user (nom, email, age)
VALUES ('Jean Dupont', 'jean@[Link]', 25);

Insérer plusieurs lignes


INSERT INTO user (nom, email, age) VALUES
('Marie', 'marie@[Link]', 30),
('Paul', 'paul@[Link]', 22),
('Lucie', 'lucie@[Link]', 28);

■ Les colonnes avec DEFAULT ou AUTO_INCREMENT sont optionnelles.

4. Lire les Données (SELECT)


Sélection de base
-- Tout afficher
SELECT * FROM user;

-- Colonnes spécifiques
SELECT nom, email FROM user;

-- Avec alias
SELECT nom AS 'Nom complet', email AS 'Adresse mail' FROM user;

Filtrer avec WHERE


-- Égalité
SELECT * FROM user WHERE nom = 'Jean';

-- Comparaisons
SELECT * FROM user WHERE age > 25;
SELECT * FROM user WHERE age BETWEEN 20 AND 30;

-- Plusieurs conditions
SELECT * FROM user WHERE age > 20 AND email LIKE '%@[Link]';

-- Valeurs multiples
SELECT * FROM user WHERE age IN (20, 25, 30);

-- Valeur nulle
SELECT * FROM user WHERE age IS NULL;
SELECT * FROM user WHERE age IS NOT NULL;

Trier avec ORDER BY


SELECT * FROM user ORDER BY nom ASC;
SELECT * FROM user ORDER BY age DESC;
SELECT * FROM user ORDER BY nom ASC, age DESC;

Limiter les résultats


-- Les 5 premiers
SELECT * FROM user LIMIT 5;

-- 5 résultats à partir du 10e (pagination)


SELECT * FROM user LIMIT 5 OFFSET 10;

Recherche avec LIKE


-- Commence par 'J'
SELECT * FROM user WHERE nom LIKE 'J%';

-- Contient 'an'
SELECT * FROM user WHERE nom LIKE '%an%';

-- Termine par 'on'


SELECT * FROM user WHERE nom LIKE '%on';

-- Exactement 4 caractères
SELECT * FROM user WHERE nom LIKE '____';
5. Modifier des Données (UPDATE)
-- Modifier une ligne
UPDATE user SET nom = 'Jean Martin' WHERE id = 1;

-- Modifier plusieurs colonnes


UPDATE user SET nom = 'Paul', age = 26 WHERE id = 3;

-- Modifier selon une condition


UPDATE user SET age = age + 1 WHERE age < 30;

■ Toujours utiliser WHERE avec UPDATE, sinon toutes les lignes sont modifiées !

6. Supprimer des Données (DELETE)


-- Supprimer une ligne
DELETE FROM user WHERE id = 1;

-- Supprimer selon condition


DELETE FROM user WHERE age < 18;

-- Vider toute la table (garde la structure)


TRUNCATE TABLE user;

■ DELETE sans WHERE supprime TOUTES les lignes. TRUNCATE est plus rapide mais non annulable.

7. Fonctions d'Agrégation
-- Compter les lignes
SELECT COUNT(*) FROM user;
SELECT COUNT(*) AS total FROM user WHERE age > 20;

-- Somme, Moyenne, Min, Max


SELECT SUM(age) FROM user;
SELECT AVG(age) AS moyenne_age FROM user;
SELECT MIN(age) AS plus_jeune FROM user;
SELECT MAX(age) AS plus_age FROM user;

GROUP BY et HAVING
-- Compter par groupe
SELECT age, COUNT(*) AS nb_users
FROM user
GROUP BY age;

-- Filtrer les groupes (HAVING = WHERE pour les groupes)


SELECT age, COUNT(*) AS nb
FROM user
GROUP BY age
HAVING nb > 2
ORDER BY nb DESC;

Fonctions sur les chaînes


SELECT UPPER(nom) FROM user; -- JEAN DUPONT
SELECT LOWER(email) FROM user; -- jean@[Link]
SELECT LENGTH(nom) FROM user; -- longueur
SELECT CONCAT(nom, ' - ', email) FROM user;
SELECT SUBSTRING(nom, 1, 3) FROM user; -- 3 premiers caractères
SELECT TRIM(' texte '); -- supprimer espaces

Fonctions sur les dates


SELECT NOW(); -- date et heure actuelles
SELECT CURDATE(); -- date du jour
SELECT YEAR(created_at) FROM user; -- année
SELECT MONTH(created_at) FROM user; -- mois
SELECT DATEDIFF(NOW(), created_at) FROM user; -- jours écoulés
8. Jointures (JOIN)
Les jointures permettent de combiner des données de plusieurs tables liées.

-- Table commande
CREATE TABLE commande (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
produit VARCHAR(100),
montant DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES user(id)
);

INNER JOIN — correspondances seulement


SELECT [Link], [Link], [Link]
FROM user u
INNER JOIN commande c ON [Link] = c.user_id;

LEFT JOIN — tous les users, même sans commande


SELECT [Link], [Link]
FROM user u
LEFT JOIN commande c ON [Link] = c.user_id;

RIGHT JOIN — toutes les commandes, même sans user


SELECT [Link], [Link]
FROM user u
RIGHT JOIN commande c ON [Link] = c.user_id;

Jointure sur 3 tables


SELECT [Link], [Link], [Link]
FROM user u
INNER JOIN commande c ON [Link] = c.user_id
INNER JOIN produit p ON c.produit_id = [Link];

Type Résultat

INNER JOIN Lignes avec correspondance dans les deux tables

LEFT JOIN Toutes les lignes de gauche + correspondances de droite

RIGHT JOIN Toutes les lignes de droite + correspondances de gauche

CROSS JOIN Toutes les combinaisons possibles (produit cartésien)


9. Sous-requêtes
-- Users ayant passé une commande
SELECT nom FROM user
WHERE id IN (SELECT user_id FROM commande);

-- Users sans commande


SELECT nom FROM user
WHERE id NOT IN (SELECT user_id FROM commande);

-- User avec la commande la plus chère


SELECT nom FROM user
WHERE id = (SELECT user_id FROM commande
ORDER BY montant DESC LIMIT 1);

10. Contraintes et Clés


CREATE TABLE produit (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prix DECIMAL(10,2) NOT NULL DEFAULT 0.00,
stock INT CHECK (stock >= 0),
categorie_id INT,
UNIQUE (nom),
FOREIGN KEY (categorie_id) REFERENCES categorie(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);

Contrainte Rôle

PRIMARY KEY Identifiant unique de chaque ligne

NOT NULL La valeur ne peut pas être vide

UNIQUE Valeur unique dans toute la colonne

DEFAULT Valeur par défaut si non fournie

CHECK Valide une condition sur la valeur

FOREIGN KEY Lie une colonne à une autre table

AUTO_INCREMENT Incrémente automatiquement (id)


11. Index
Les index accélèrent les recherches sur les grandes tables.

-- Créer un index
CREATE INDEX idx_nom ON user(nom);
CREATE INDEX idx_email ON user(email);

-- Index unique
CREATE UNIQUE INDEX idx_email_unique ON user(email);

-- Voir les index d'une table


SHOW INDEX FROM user;

-- Supprimer un index
DROP INDEX idx_nom ON user;

■ Crée des index sur les colonnes souvent utilisées dans WHERE, JOIN, ORDER BY.

12. Vues (VIEW)


Une vue est une requête sauvegardée qu'on peut utiliser comme une table.
-- Créer une vue
CREATE VIEW vue_commandes AS
SELECT [Link], [Link], [Link]
FROM user u
INNER JOIN commande c ON [Link] = c.user_id;

-- Utiliser la vue
SELECT * FROM vue_commandes;
SELECT * FROM vue_commandes WHERE montant > 100;

-- Supprimer une vue


DROP VIEW vue_commandes;

13. Transactions
Une transaction groupe plusieurs opérations : soit tout réussit, soit tout est annulé.

START TRANSACTION;

INSERT INTO commande (user_id, produit, montant)


VALUES (1, 'Laptop', 500.00);

UPDATE user SET solde = solde - 500 WHERE id = 1;

COMMIT; -- Valider si tout est OK


-- En cas d'erreur, annuler tout
START TRANSACTION;

DELETE FROM user WHERE id = 5;

ROLLBACK; -- Annuler

■ COMMIT = valider définitivement. ROLLBACK = tout annuler. Très utile pour les paiements.

14. Gestion des Utilisateurs MariaDB/MySQL


-- Créer un utilisateur
CREATE USER 'mt'@'localhost' IDENTIFIED BY 'motdepasse';

-- Donner tous les droits sur une base


GRANT ALL PRIVILEGES ON ma_base.* TO 'mt'@'localhost';

-- Droits limités (lecture seule)


GRANT SELECT ON ma_base.* TO 'mt'@'localhost';

-- Appliquer les changements


FLUSH PRIVILEGES;

-- Voir les droits


SHOW GRANTS FOR 'mt'@'localhost';

-- Supprimer un utilisateur
DROP USER 'mt'@'localhost';
15. Commandes Utilitaires
-- Décrire la structure d'une table
DESCRIBE user;
SHOW COLUMNS FROM user;

-- Voir la requête de création d'une table


SHOW CREATE TABLE user;

-- Voir toutes les tables


SHOW TABLES;

-- Voir toutes les bases


SHOW DATABASES;

-- Base de données active


SELECT DATABASE();

-- Version MariaDB/MySQL
SELECT VERSION();

16. Aide-Mémoire Rapide


Commande Action

CREATE DATABASE nom Créer une base

USE nom Sélectionner une base

CREATE TABLE ... Créer une table

INSERT INTO ... VALUES Insérer des données

SELECT * FROM ... Lire toutes les données

SELECT ... WHERE ... Lire avec filtre

UPDATE ... SET ... WHERE Modifier des données

DELETE FROM ... WHERE Supprimer des données

ALTER TABLE ... ADD Ajouter une colonne

DROP TABLE ... Supprimer une table

JOIN ... ON ... Lier deux tables

GROUP BY ... Regrouper les résultats

ORDER BY ... DESC Trier les résultats

COUNT / SUM / AVG Fonctions d'agrégation

LIKE '%texte%' Recherche partielle


LIMIT n Limiter les résultats

START TRANSACTION / COMMIT Démarrer / valider une transaction

ROLLBACK Annuler une transaction

Bonne pratique : toujours tester tes requêtes UPDATE/DELETE avec un SELECT d'abord !

Vous aimerez peut-être aussi