Sql

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Langage de requête déclaratif
Norme ISO/CEI 9075 (SQL:2016 dernière édition majeure)
Familles de commandes DDL, DML, DCL, TCL
Voir aussi Oracle · MySQL · PostgreSQL

SQL (Structured Query Language) est le langage standard d'interrogation et de manipulation des bases de données relationnelles. Chaque système de gestion de base de données (SGBD) — Oracle, MySQL/MariaDB, PostgreSQL, SQL Server… — en implémente le cœur commun décrit ici, avec des extensions et des variantes de syntaxe propres à chacun.

Cette page réunit les commandes SQL génériques, transversales aux moteurs. Pour les spécificités d'un moteur donné, voir les catégories dédiées (Oracle, MySQL, PostgreSQL).

Catégories de commandes

DDL — Data Definition Language

Définition et modification de la structure des objets (bases, tables, index, vues…) :

  • Sql:CREATE — création d'un objet
  • Sql:ALTER — modification de la structure d'un objet existant
  • Sql:DROP — suppression définitive d'un objet

DML — Data Manipulation Language

Lecture et modification des données contenues dans les tables :

DCL — Data Control Language

Gestion des droits d'accès (utilisateurs, privilèges) : GRANT, REVOKE. Voir l'exemple d'implémentation MySQL sur Mysql:GRANT.

TCL — Transaction Control Language

Gestion des transactions : COMMIT (valide une transaction), ROLLBACK (annule une transaction), SAVEPOINT (point de reprise intermédiaire). Par défaut, MySQL/InnoDB et PostgreSQL fonctionnent en autocommit (chaque requête est validée immédiatement) sauf transaction explicite (START TRANSACTION / BEGIN).

Portabilité entre moteurs

La syntaxe de base (SELECT, INSERT, UPDATE, DELETE, clauses WHERE/JOIN/GROUP BY) est largement portable. Les points de divergence les plus fréquents entre moteurs :

  • pagination des résultats : LIMIT (MySQL/PostgreSQL) vs ROWNUM/
 FETCH FIRST (Oracle) vs TOP (SQL Server) ;
  • auto-incrément : AUTO_INCREMENT (MySQL) vs SERIAL/
 GENERATED ... AS IDENTITY (PostgreSQL) vs SEQUENCE (Oracle) ;
  • guillemets d'identifiants : double guillemets ("...", standard SQL,
 PostgreSQL, Oracle) vs accents graves (`...`, MySQL) ;
  • moteurs de stockage (MySQL uniquement, ENGINE=InnoDB etc.) sans équivalent
 direct ailleurs.

Ressources

 des fonctions SQL standard et spécifiques par moteur.

Voir aussi