Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
  1. Livres et vidéos
  2. SQL
  3. Introduction
Extrait - SQL Les fondamentaux du langage (avec exercices et corrigés) - (5e édition)
Extraits du livre
SQL Les fondamentaux du langage (avec exercices et corrigés) - (5e édition)
4 avis
Revenir à la page d'achat du livre

Introduction

Un peu d’histoire

Les bases de données sont indispensables dans tout développement informatique. Toutes les données sont stockées dans la majorité des cas dans une structure de base de données.

On parle de BDD pour désigner le stockage des données et de SGBD pour désigner les éléments qui sont mis à disposition du développeur pour manipuler ces données.

Il existe plusieurs types de bases de données.

Il y a les bases de type hiérarchique comme IMS/DL1, que l’on rencontre majoritairement sur les Mainframes. Ces éléments sont organisés comme un arbre avec un niveau de hiérarchie et des pointeurs entre les enregistrements.

Il existe également les bases en réseau (ou Codasyl) comme IDS2 ou SOCRATE qui ne sont pratiquement plus utilisées actuellement et qui reprennent un peu le modèle hiérarchique mais en permettant de naviguer entre les éléments, pas uniquement de manière descendante.

Depuis quelques années, d’autres types de bases de données sont apparus avec les sites Internet utilisés par des millions d’utilisateurs :

  • Base de données qui range les données en colonnes et non en lignes pour gérer des volumes de données énormes comme Bigtable, développée par Google, ou Cassandra, utilisée par Facebook.

  • Base de données non relationnelle NoSQL (Not Only SQL), comme Redis, de type Clé-valeur, plus souple avec un schéma défini de façon...

Les normes SQL

La première version de SQL normalisée par l’ANSI date de 1986.

Elle sera suivie de plusieurs versions plus ou moins importantes.

La norme SQL2 ou SQL92 est la plus importante. La majorité des SGBDR existants implémentent cette version.

Puis suivront plusieurs autres évolutions SQL-3, SQL:2003, SQL:2008 et SQL:2011 jusqu’à la dernière : 2023 qui apportent chacune quelques fonctions complémentaires.

Chaque fournisseur de SGBDR a implémenté à sa façon le langage SQL et a ajouté ses propres extensions. Les exemples qui sont proposés dans cet ouvrage pour illustrer les propos ne sont donc pas totalement compatibles avec tous les SGBDR.

Les exemples présentés dans cet ouvrage sont conçus principalement pour les bases les plus utilisées : Oracle, SQL Server, PostgreSQL et MySQL.

Norme

Nom courant

Explications

ISO/CEI 9075:1986

SQL-86 ou SQL-87

Édité par l’ANSI puis adopté par l’ISO en 1987.

ISO/CEI 9075:1989

SQL-89 ou SQL-1

Révision mineure.

ISO/CEI 9075:1992

SQL-92 ou SQL2

Révision majeure dont l’ajout des jointures.

ISO/CEI 9075:1999

SQL-99 ou SQL3

Expressions rationnelles, requêtes récursives, déclencheurs, types non scalaires et quelques fonctions orientées objets.

ISO/CEI 9075:2003

SQL:2003

Introduction de fonctions pour la manipulation XML, « window functions », ordres standardisés et colonnes avec valeurs autoproduites (y compris colonnes d’identité).

ISO/CEI 9075:2006

SQL:2006

Précision...

Description rapide du modèle relationnel

Le modèle relationnel a été créé, comme indiqué précédemment, par un chercheur, Edgard Codd, travaillant chez IBM au début des années 1970. Celui-ci a travaillé à partir de principes mathématiques simples, la théorie des ensembles et la logique de prédicats.

Le modèle relationnel repose sur la notion d’ensemble. Schématiquement, un ensemble peut être représenté par une table (une table peut également être appelée une relation).

Cet ensemble a des attributs (les colonnes) et des lignes contenant des valeurs (les tuples). La forme la plus couramment utilisée pour représenter une table est celle-ci :

images/01RI01V3.PNG

Le modèle relationnel présente les données sous forme logique, il est totalement indépendant du modèle physique. C’est le fournisseur qui décide du mode de stockage physique des tables. C’est l’avantage majeur des bases de données relationnelles, l’indépendance entre le logique et le physique.

Une fois les tables définies, il faut disposer d’un langage pour les manipuler, il s’agit de l’algèbre relationnelle. Celui-ci a également été inventé par Edgard Codd. À l’aide de ces opérateurs, on peut interroger les relations existantes et créer de nouvelles relations. On parle d’opérateurs ensemblistes : union, intersection, différence, produit cartésien, division et jointure.

L’algèbre relationnelle est mise en œuvre par le SQL et les systèmes de gestion de bases de données relationnelles (SGBDR) implémentent le modèle relationnel. Les exemples de ce livre s’appuient sur quelques tables d’une base de données d’une société dans le secteur de l’hôtellerie. Cette base gère les tarifs des chambres par type de chambre et par hôtel. Le schéma de la base est présenté plus loin dans cet ouvrage (cf. chapitre La définition des données (LDD) - La clé étrangère (FOREIGN KEY)).

1. Principaux concepts du modèle relationnel

Les trois principaux concepts du modèle relationnel sont le domaine, le produit cartésien et les relations.

Domaine

C’est un ensemble de valeurs caractérisé par un nom.

Par exemple :

Le type de salle de bains (TYPESDB) est un domaine qui comprend les valeurs D, DW ou BW pour les douches, douches avec WC séparés ou baignoires avec WC séparés.

Le type de lit (TYPELIT) est un autre domaine (lit simple, lit double, lit XL).

Le nombre d’occurrences de chacun des domaines donne la cardinalité.

Pour les types de lits, la cardinalité est de 3.

Produit cartésien

Celui-ci représente la jonction entre deux domaines. Si par exemple on effectue le produit cartésien des types de salles de bains et des types de lits, on obtient des tuples D1,D2.

Dans notre exemple, le produit cartésien du domaine 1 (nombre de lits) et du domaine 2 (type de lit) donne :

(DW, lit simple), (DW, lit double), (DW, lit XL), (BW, lit simple), (BW, lit double), etc....

L’algèbre relationnelle

1. Généralités

L’algèbre relationnelle a conduit à la mise au point du SQL qui est devenu le standard en ce qui concerne la gestion des données.

C’est une méthode d’extraction permettant la manipulation des tables et des colonnes. Son principe repose sur la création de nouvelles tables (tables résultantes) à partir des tables existantes, ces nouvelles tables devenant des objets utilisables immédiatement.

Les opérateurs de l’algèbre relationnelle permettant de créer les tables résultantes sont basés sur la théorie des ensembles.

La syntaxe et les éléments de notations retenus ici sont les plus couramment utilisés.

2. Les opérateurs

a. Union

L’union entre deux relations de même structure (degré et domaines) donne une table résultante de même structure ayant comme éléments l’ensemble des éléments distincts des deux relations initiales.

Notation : Rx = R1 images/signe1.png R2

Exemple

Soient les relations HOTELS_EUROPE et HOTELS_AFRIQUE

RELATION HOTELS_EUROPE

idHotel

Libelle

Etoile

1

Ski Hotel

*

2

Art Hotel

**

RELATION HOTELS_AFRIQUE

idHotel

Libelle

Etoile

1

Ski Hotel

*

2

Lions Hotel

****

UNION DES DEUX RELATIONS

idHotel

Libelle

Etoile

1

Ski Hotel

*

2

Art Hotel

**

4

Lions Hotel

****

b. Intersection

L’intersection entre deux relations de même structure (degré et domaines) donne une table résultante de même structure ayant comme éléments l’ensemble des éléments communs aux deux relations initiales.

Notation : Rx = R1 images/signe2.png R2

Exemple

RELATION SKIHOTEL_TYPECHAMBRE

NumChambre

Description

1

1 lit simple avec douche

4

1 lit double avec douche

6

1 lit double avec bain et WC séparés

RELATION ARTHOTEL_TYPECHAMBRE

NumChambre

Description

1

1 lit simple avec douche

4

1 lit double avec douche

6

1 lit double avec bain et WC séparés

7

1 lit double large avec bain et WC séparés

TYPECHAMBRE communes aux deux relations :

NumChambre

Description

1

1 lit simple avec douche

4

1 lit double avec douche

6

1 lit double avec bain et WC séparés

c. Différence

La différence entre deux relations de même structure (degré et domaines) donne une table résultante de même structure ayant comme éléments l’ensemble des éléments de la première relation qui ne sont pas dans la deuxième. 

Notation : Rx = R2 - R1

Exemple

TYPECHAMBRE présente dans la relation 2 et pas dans la relation 1 :

NumChambre

Description

7

1 lit double large avec bain et WC séparés

d. Division

La division entre deux relations est possible à condition que la relation diviseur soit totalement incluse dans la relation dividende. Le quotient de la division correspond à l’information qui, présente dans le dividende, n’est pas présente dans le diviseur.

Il est également possible de définir la division de la façon suivante : soit R1 et R2 des relations telles que R2 soit totalement incluse dans R1. Le quotient R1÷R2 est constitué des tuples t tels que pour tout tuple t’ défini sur R2, il existe le tuple t.t’...

Les systèmes de gestion de bases de données utilisant SQL

Les SGBDR sur le marché sont assez nombreux. Les plus utilisés sont Oracle, MySQL, SQL Server (Microsoft), PostgreSQL et DB2 (IBM), notamment dans les entreprises qui ont des volumes de données importants et des contraintes de performance transactionnelles fortes.

Nous n’allons pas ici réaliser un comparatif de tous ces SGBDR, chacun a ses spécificités, ses avantages et ses inconvénients. Le choix d’une base de données est une décision qui doit être bien réfléchie, en fonction de critères tels que le volume des données, les types de données, les contraintes de performance, les coûts d’achat et de maintenance, les connaissances des développeurs, etc.