Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !

SQL

Généralités

Le SQL (Structured Query Language) est un langage de requête utilisé pour la manipulation des bases de données relationnelles.

Il a été créé au milieu des années 70 par IBM et commercialisé par Oracle en 1979.

L’intérêt du SQL réside dans les caractéristiques suivantes :

Normalisation

Il implémente le modèle relationnel, et les principaux organismes de normalisation le décrivent :

  • L’ANSI (American National Standards Institute) dans les documents ANSI 9075-1:1999, ANSI 9075-2:1999 et ANSI 9075-5:1999. Il est possible d’obtenir plus de détails sur les documents qui définissent la norme en se rendant sur le site Web de l’ANSI (http://webstore.ansi.org) ou sur le site Web de NCITS (National Comittee for Information Technology Standards) qui reprend une partie des standards ANSI dont le SQL (http://www.ncits.org).

  • L’ISO (International Organization for Standardization) dans les documents ISO/IEC 9075-1:1999, ISO/IEC 9075-2:1999 et ISO/IEC 9075-5:1999. Il est possible d’obtenir une copie des documents de normalisation sur le site Web de l’ISO : http://www.iso.ch/iso/iso_catalogue.htm.

Standard

Du fait de cette normalisation, la plupart des éditeurs de SGBDR intègrent le SQL à leurs produits (INFORMIX, DB2, MS SQL Server, SYBASE...).

Les données, requêtes et applications sont donc assez facilement portables d’une base à une autre.

Non procédural

Le SQL est un langage de requête qui permet à l’utilisateur de demander un résultat sans se préoccuper des moyens techniques pour trouver ce résultat. Un composant du moteur de la base (l’optimiseur) se charge de cette tâche.

Les instructions sont écrites dans un langage courant (l’anglais !).

Le SQL manipule aussi bien des ensembles d’enregistrements qu’un seul enregistrement, et permet l’utilisation du résultat dans une autre commande. On n’a donc pas besoin de structures de contrôle comme dans les langages de programmation courants (langages de troisième génération).

Universel

Le SQL peut être utilisé à tous les niveaux dans la gestion d’une base de données :

  • administration système,

  • administration de la base...

Description des objets

Dans l’utilisation d’une base de données, les premiers objets à manipuler sont les tables qui "contiennent" les données et les index qui permettent de meilleures performances aux requêtes.

Ces deux objets doivent être créés avant de commencer à manipuler les données elles-mêmes.

1. Les types de données

CHAR (n)

Chaîne de caractères de longueur fixe : n octects complétés à droite par des espaces (n<=2000).

VARCHAR2 (n)

Chaîne de caractères de longueur variable : n octets au maximum (n <= 4000 si le paramètre MAX_STRING_SIZE est égal à STANDARD ; n <= 32767 si le paramètre MAX_STRING_SIZE est égal à EXTENDED).

NCHAR (n)

Chaîne de caractères de longueur fixe : n octets complétés à droite par des espaces (n<=2000). Les caractères sont codés suivant le jeu de caractères national actif.

NVARCHAR2 (n)

Chaîne de caractères de longueur variable : n octets au maximum (n<= 4000 si le paramètre MAX_STRING_SIZE est égal à STANDARD ; n<= 32767 si le paramètre MAX_STRING_SIZE est égal à EXTENDED). Les caractères sont codés suivant le jeu de caractères national actif.

NUMBER (p,s)

Numérique avec une précision de p chiffres dont s décimales avec 1 <= p <= 38 et -84 <= s <= +127.

DATE

Date comprise entre 1er janvier 4712 avant JC et le 31 décembre 9999 après JC.

TIMESTAMP (p)

Données de type date (année, mois, jour, heure, minute et seconde) dans laquelle il est possible de préciser, à l’aide de la précision p, le nombre de chiffres significatifs pour les fractions de secondes. Par défaut ce nombre est 6.

TIMESTAMP(p) WITH TIME ZONE

Données de type TIMESTAMP avec le décalage horaire.

TIMESTAMP(p) WITH LOCAL TIME ZONE

Données de type TIMESTAMP WITH TIME ZONE qui sont stockées sur le serveur en tenant compte de la plage horaire du serveur, mais ces données sont affichées sur le poste client en tenant compte de la zone horaire définie au niveau de la session.

BLOB

Données binaires non structurées (jusqu’à 128 To selon la taille de bloc...

Manipulation des données

Les instructions du DML permettent l’ajout, la suppression, la modification et la visualisation des lignes dans les tables existantes.

1. Les instructions

Les instructions SQL manipulent des expressions. Ces expressions font référence à des noms d’objets de la base, à des constantes, comportent des appels à des fonctions standardisées et composent ces éléments avec des opérateurs.

Des expressions logiques (conditions) permettent également de définir la portée des instructions.

a. Expressions

Les termes des expressions peuvent être :

  • constantes caractères

    exemple : ’chaîne de caractères’ ; ’Ecole Nantaise d’’Informatique’.

  • constantes littérales date (format dépendant de la langue configurée pour l’instance)

    exemple : ’15-JAN-94’

  • constantes numériques

    exemple : 10 ; -123.459 ; -1.26e+6

  • noms d’attribut de table

    exemple : CLIENTS.NOCLI, ARTICLES.DESIGNATION

  • fonctions

    exemple : SQRT(81) ; REPLACE(’IAGADIGI’, ’I’, ’OU’);SYSDATE

  • pseudo-colonnes

    exemple : nomsequence.NEXTVAL ; ROWID.

b. Opérateurs

  • arithmétiques + - / * ( )

    exemple : 1.15 * PRIX ; (2 * MTLIG)/5 ; SYSDATE +15

  • sur les chaînes de caractères : concaténation ||

    exemple : ’Monsieur’|| NOM

c. Conditions

Les conditions mettent en jeu des expressions, des opérateurs de comparaison et des opérateurs logiques.

Opérateurs de comparaison

La valeur des expressions logiques peut être VRAI, FAUX ou INCONNU. Une comparaison sera évaluée comme INCONNU si au moins un de ses termes est NULL.

  • Comparaison simple

    expression1 {=,!=,<>, <,<=, >, >=} expression2

  • Appartenance à un ensemble de valeurs

    expression1 IN(expression2,...)

    VRAI si expression1 apparaît au moins une fois dans la liste (expression2,...).

  • Appartenance à un intervalle de valeurs

    expression1 BETWEEN expression2 AND expression3

    VRAI si expression1 se situe entre les bornes expression2 et expression3, bornes comprises.

  • Comparaison par rapport à un format de chaîne de caractères

    expression1 LIKE ’format’

    Le format peut inclure les méta-caractères :

  • "%" pour désigner une suite de 0 à...

Traduction de l’algèbre relationnelle

La méthode de l’algèbre relationnelle permet de résoudre des extractions de données en créant des tables intermédiaires par l’utilisation d’opérateurs (UNION, RESTRICTION, JOINTURE, etc.). Cette méthode peut être traduite en SQL grâce à l’instruction SELECT qui permet toutes les opérations par ses différentes clauses (WHERE, GROUP BY, UNION, etc.), et par les instructions CREATE et INSERT qui permettent la gestion des tables intermédiaires.

1. Opérations

a. Restriction

La restriction permet de n’obtenir que les lignes répondant à une condition.

L’opération σ s (cond) se traduit par :


SELECT * FROM S WHERE cond ;
 

Exemple

Restriction sur le numéro de commande dans la table CDE = σCOMMANDES (NOCDE = 100) :


SQL> select * from COMMANDES where NOCDE = 100 ; 
 
    NOCDE     NOCLI  DATECDE    ET 
-------------------------------------- 
     100        15   18/11/98   EC 
 
SQL>
 

b. Calculs élémentaires

Le calcul élémentaire permet d’obtenir des colonnes calculées pour chaque ligne. L’opération π S (col, ..., nvcol = exp) se traduit par :


SELECT col, ..., expression FROM S ;
 

Exemple

Calcul de la valeur de stock π ARTICLES(REFART, DESIGNATION, VALSTK = (PRIXHT * QTESTK)) :


SQL> select REFART, DESIGNATION, (PRIX * QTESTK) from ARTICLES ; 
 
REFA DESIGNATION                    (PRIX*QTESTK) 
---- --------------------------- --------------------- 
AB22    Tapis Persan                   6250,5 
CD50    Chaine HiFi                    5147,8 
 
ZZZZ    Article bidon 
AA00    Cadeau                            0 
AB03    Carpette                      17400 
AB      Tapis 
ZZ01    Lot de tapis                      0 
AB10  ...

SQL avancé

Le SQL permet l’utilisation d’autres objets que les tables et les index, afin de gérer les données ou de manipuler des requêtes.

La puissance de l’instruction SELECT permet d’autre part, de combiner les différentes clauses en une seule commande, et également d’imbriquer les requêtes. 

Enfin, le SQL permet dans un environnement multi-utilisateur, de verrouiller les tables afin de préserver l’intégrité des données.

1. Les objets

a. Les objets View (vue)

Les vues sont des tables virtuelles présentant le résultat d’un SELECT.

L’un des intérêts de l’utilisation des vues vient du fait que la vue ne stocke pas les données, mais fait référence à une ou plusieurs tables d’origine à travers une requête SELECT, requête qui est exécutée chaque fois que la vue est référencée. De ce fait, toute modification de données dans les tables d’origine est immédiatement visible dans la vue dès que celle-ci est à nouveau exécutée.

Les cas d’utilisation des vues sont multiples :

  • Cacher aux utilisateurs certaines colonnes ou certaines lignes en mettant à leur disposition des vues de projection ou de restriction. Ceci permet de fournir un niveau de sécurité supplémentaire.

  • Simplifier l’utilisation de tables comportant beaucoup de colonnes, beaucoup de lignes, ou des noms complexes, en créant des vues avec des structures plus simples et des noms plus explicites.

  • "Sauvegarder" des requêtes fréquemment utilisées sous un nom.

  • Simplifier la saisie des instructions SQL pour les utilisateurs en masquant les jointures fréquemment utilisées.

Les vues, une fois créées, sont utilisables comme des tables dans les instructions DML, INSERT, SELECT, UPDATE, DELETE. Toutefois les mises à jour ne sont pas possibles si la vue comporte :

  • des instructions ensemblistes (UNION, INTERSECT, MINUS),

  • des fonctions de groupe,

  • des clauses GROUP BY, CONNECT BY, START WITH.

Une vue définie par une jointure supporte les instructions INSERT, UPDATE, DELETE si elle référence dans sa définition une table dont la (les) colonne(s) clé primaire apparaît (apparaissent)...