SQL

SQL (Structured Query Language) est un langage utilisé pour interagir avec les bases de données relationnelles. Il permet de créer, lire, mettre à jour et supprimer des données. Cet article présente une introduction aux types de requêtes SQL, avec des exemples simples adaptés à MySQL/MariaDB et SQLite.

    4ttr
  • niveau

Bien que SQL soit un langage standardisé, chaque système de gestion de base de données (SGBD) implémente ses propres variantes, appelées "dialectes". Ces dialectes introduisent des différences au niveau des fonctionnalités, de la syntaxe ou du comportement des commandes SQL.

La Norme SQL

La norme SQL est un ensemble de spécifications définies pour garantir une certaine portabilité et compatibilité des commandes SQL entre différents SGBD. Elle définit les fonctionnalités de base comme :

  • Les commandes DDL (CREATE, ALTER, DROP) pour la gestion des structures.
  • Les commandes DML (INSERT, UPDATE, DELETE) pour la manipulation des données.
  • Les commandes DQL (SELECT) pour les requêtes.
  • ...

Cependant, chaque SGBD interprète cette norme de manière spécifique et propose souvent des extensions ou des fonctionnalités non standard.

  1. Connaissez votre SGBD : Chaque SGBD a ses spécificités. Lorsque vous développez une application, choisissez le SGBD qui correspond le mieux à vos besoins.
  2. Favorisez les commandes standard : Autant que possible, utilisez des commandes SQL conformes à la norme pour garantir la portabilité.
  3. Adaptez les optimisations : Les optimisations (comme les index ou les commandes spécifiques) peuvent varier selon les SGBD. Apprenez à exploiter les forces de chaque dialecte.
  4. Documentation : Consultez la documentation officielle de votre SGBD pour connaître ses extensions, limitations, et comportements spécifiques.

Les "dialectes" SQL permettent de tirer parti des fonctionnalités avancées de chaque SGBD, mais en comprendre les différences est essentiel pour écrire des requêtes robustes et portables.

Dans les cours de cette année, nous aborderont les dialectes propres à SQLite3 et MySql/MariaDB.

Les Types de Requêtes SQL

SQL peut être divisé en plusieurs catégories de requêtes selon leur objectif. Voici les principaux types :

Requêtes DDL (Data Definition Language)

Ces requêtes permettent de définir ou modifier la structure de la base de données : créer, modifier ou supprimer des tables et d'autres objets.

Requêtes DML (Data Manipulation Language)

Ces requêtes permettent de manipuler les données à l'intérieur des tables : insertion, mise à jour ou suppression des enregistrements.

Requêtes DQL (Data Query Language)

Ces requêtes permettent d'interroger les données à l'aide de la commande SELECT.

Autres types

Il existe d'autres types de requêtes SQL. Bien qu'importants dans le monde des bases de données, ces types ne seront pas abordés dans ces cours d'introduction.

Requêtes DCL (Data Control Language)

Ces requêtes permettent de gérer les permissions et la sécurité des bases de données.

Requêtes TCL (Transaction Control Language)

Ces requêtes permettent de contrôler les transactions, comme valider ou annuler des modifications.


Les Requêtes DDL

Création d'une table

MySQL/MariaDB et SQLite

CREATE TABLE utilisateurs (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nom TEXT NOT NULL,
    age INTEGER,
    email TEXT UNIQUE
);

Ce script crée une table utilisateurs avec 4 colonnes : id, nom, age et email.


Modification d'une table

MySQL/MariaDB

ALTER TABLE utilisateurs ADD colonne_creation DATE;

SQLite

ALTER TABLE utilisateurs ADD COLUMN colonne_creation DATE;

Ce script ajoute une colonne colonne_creation à la table utilisateurs.


Suppression d'une table

MySQL/MariaDB et SQLite

DROP TABLE IF EXISTS utilisateurs;

Les Requêtes DML

Insertion de données

INSERT INTO utilisateurs (nom, age, email) 
VALUES ('Alice', 25, 'alice@example.com');

Ce script insère une ligne dans la table utilisateurs.


Mise à jour de données

MySQL/MariaDB et SQLite

UPDATE utilisateurs 
SET age = 26 
WHERE nom = 'Alice';

Ce script met à jour l'âge de l'utilisateur nommé "Alice".


Suppression de données

MySQL/MariaDB et SQLite

DELETE FROM utilisateurs 
WHERE age < 20;

Ce script supprime tous les utilisateurs ayant moins de 20 ans.


Les Requêtes DQL

Sélection de toutes les données

MySQL/MariaDB et SQLite

SELECT * FROM utilisateurs;

Ce script récupère toutes les colonnes et lignes de la table utilisateurs.


Sélection avec condition

MySQL/MariaDB et SQLite

SELECT nom, email 
FROM utilisateurs 
WHERE age > 25;

Ce script récupère les colonnes nom et email des utilisateurs âgés de plus de 25 ans.


Tri des données

MySQL/MariaDB et SQLite

SELECT nom, age 
FROM utilisateurs 
ORDER BY age DESC;

Ce script récupère les colonnes nom et age triées par ordre décroissant de l'âge.


Les Requêtes DCL

Donner des permissions

MySQL/MariaDB

GRANT SELECT, INSERT ON utilisateurs TO 'nouvel_utilisateur'@'localhost';

Ce script donne les permissions SELECT et INSERT à un utilisateur nommé nouvel_utilisateur.

SQLite

SQLite ne gère pas les permissions utilisateur directement, car il est conçu pour être utilisé comme une base de données légère embarquée.


Révoquer des permissions

MySQL/MariaDB

REVOKE INSERT ON utilisateurs FROM 'nouvel_utilisateur'@'localhost';

Les Requêtes TCL

Validation des modifications

MySQL/MariaDB et SQLite

COMMIT;

Ce script valide toutes les modifications effectuées dans une transaction.


Annulation des modifications

MySQL/MariaDB et SQLite

ROLLBACK;

Ce script annule toutes les modifications effectuées depuis le début de la transaction.


Conclusion

SQL est un langage puissant qui offre une variété de commandes pour manipuler des bases de données. Cet article a présenté les principales catégories de requêtes et des exemples simples pour chaque type. Ces bases permettent de débuter avec SQL et de comprendre les actions fondamentales, que vous utilisiez MySQL, MariaDB ou SQLite. Pour aller plus loin, explorez des notions avancées comme les jointures, les sous-requêtes et les index.