Langage de requêtes : opérateurs logiques, opérateurs relationnels, regroupement et fonctions associées - Cours Spé Systèmes d’Information de Gestion - Terminale STMG

Langage de requêtes : opérateurs logiques, opérateurs relationnels, regroupement et fonctions associées - Cours Spé Systèmes d’Information de Gestion - Terminale STMG

Ce chapitre de Spécialité Systèmes d'Information de Gestion de Terminale STMG porte sur le langage de requêtes. Il a été rédigé par notre professeur, et est issu du thème "Comment peut-on produire de l’information à partir de données contenues dans une base ?".

Dans la première partie de ce cours de Spécialité SIG, vous étudierez les opérateurs logiques et opérateurs relationnels. Par la suite, vous vous intéresserez aux opérateurs de regroupement et les fonctions associées.

Téléchargez gratuitement ci-dessous ce cours de Spé SIG pour le Bac STMG sur le langage de requêtes.

Document rédigé par un prof Langage de requêtes : opérateurs logiques, opérateurs relationnels, regroupement et fonctions associées - Cours Spé Systèmes d’Information de Gestion - Terminale STMG

Le contenu du document


OPERATEURS LOGIQUES ET OPERATEURS RELATIONNELS

Un langage de requêtes permet de manipuler les données d’une base de données. Le langage d’interrogation d’une base de donnes relationnelle, graphique ou littéral -SQL- nous permet de comprendre le principe de fonctionnement des principaux opérateurs relationnels (sélection, projection et jointure) et logiques (ET, OU, NON) à travers différentes extractions.


LE LANGAGE SQL

Le langage de gestion des bases de données relationnelles est le SQL (Structured Query Langage : langage de requête structuré). 

Il comporte différentes branches correspondant aux principales fonctionnalités d’un SGBDR : 

- Définir la structure d’une base de données,

- Traiter des données : 

  • Manipuler (implanter, mettre à jour, supprimer)
  • Interroger (rechercher)

- Tout en assurant leur intégrité (cohérence), leur sécurité et la gestion d’un contexte multi-utilisateurs.


Quelques conventions de présentation utilisées lors de la présentation de la syntaxe SQL : 

  • Les mots-clés SQL sont présentés en majuscules mais les SGBDR sont insensibles à la casse pour ces mots-clés (mais pas forcément pour les noms des champs)
     
  • La présentation [entre crochets] de certains arguments indique leur caractère facultatif, mais lorsqu’ils sont mis en œuvre les crochets ne doivent pas être saisis 
     
  • Le caractère I indique des arguments alternatifs,
     
  • L’utilisation d’un point-virgule pour marquer la fin d’une requête sera omise, cela n’est indispensable que lors de l’enchainement de plusieurs requêtes afin de permettre dans le but de comprendre une erreur courante.


Les bases de données relationnelles sont confrontées à plusieurs difficultés : 

  • La mémorisation des données non structurées
  • La mémorisation des données non textuelles
  • La volumétrie importante et la nécessite de temps de réponse courts peuvent conduire dans certains contextes (moteur de recherche…) à utiliser des bases de données non relationnelles…


Les données sont les éléments de base constituant une information. Une donnée est la représentation d’une valeur sous une forme conventionnelle (par exemple JJ/MM/AAA pour une date), destinée à faciliter sa mémorisation et sa transformation (en de nouvelles informations).


Le langage de définition de données permet donc d’agir sur la structure de la base, il s’agit entre autres de : 

  • Créer des tables,
  • Modifier des tables (ajouter ou supprimer des champs et/ou contraintes de clé)
  • Supprimer des tables


Les types de données

Les principaux types de données (alphanumérique, numérique, date/heure, booléen) sont pris en charge par les SGBDR, avec de nombreux sous-types.

Voici les plus courants : 

Types de données


La création de tables

La création d’une table consiste à lister ses champs avec leur type et à créer ses clés primaire et étrangère(s) : 

CREATE TABLE nomTable (champ) TypeDonnées [champ2TypeDonnées…]

PRIMARY KEY (champCléPrimaire […] ),

[CONSTRAINT nomContrainte]   FOREIGN KEY (champClé étrangère  […])

REFERENCES NomTableSource(champReference […]))


Exemple : Considérons le schéma relationnel suivant : 

  • Service (num,libelle,budget)

Clé primaire : num (auto-incrémenté)


  • Qualification (num, libelle,niveau)

Clé primaire : num (auto-incrémenté)


  • Salarié (num, nom,prenom,dateEmbauche,salaire,indemnite,poste,numService)

Clé primaire : num (auto-incrémenté)

Clé étrangère : num Service en référence à num de la relation service


  • Competence (numSalarie, num Qualif, dateAcq

Clé primaire : numSalarie, numQualification

Clés étrangères : numSalarie en référence à num de la relation salarie

  numQualif en référence à num de la relation qualification


Voici les requêtes de création de table correspondantes : 

CREATE TABLE service (numinteger auto_increment,

Libelle varchar(20) NOT NULL,

Budget float

PRIMARY KEY (num))


CREATE TABLE qualification (num integer auto_increment,

Libelle varchar (20) NOT NULL

Niveau varchar (1) NOT NULL,

PRIMARY KEY (num))


CREATE TABLE salarie (num integer autoincrement,

Nom varchar (25) NOT NULL,

Prenom varchar(25) NOT NULL,

DatEmbauche date NOT NULL,

Salaire float,

NumService integer

PRIMARY KEY (num),

FOREIGN KEY (numService) REFERENCES service(num))


CREATE TABLE competence (numSalarie integer, numQualif integer,

DateAcq date NOT NULL,

PRIMARY KEY (numSalarie, numQualif),

FOREIGN KEY (numSalarie REFERENCES salarie(num) ,

FOREIGN EY (numQualif) REFERENCES qualification (num))


La suppression d’une table

La suppression une table supprime également de manière irréversible son contenu : 

DROP TABLE nomTable

La modification de la structure d’une table

Deux types de modification sont possibles : 

  • L’ajout d’un champ

ALTER TABLE nomTable ADD champAjouté1 type [, champ ajouté2 type…]


  • L’ajout d’une clé primaire

ALTER TABLE nomTable ADD PRIMARY KEY (champClé […])


  • L’ajout d’une clé étrangère

ALTER TABLE nomTable ADD FOREIGN KEY (champCléEtrangère[…])

REFERENCES NomTableSource(champReference […])


  • La suppression d’un champ

ALTER TABLE nomTable DROP champSupprimé1 [, champSupprimé2…]


  • La suppression d’une clé

ALTER TABLE nomTable DROP PRIMARY KEY

Changer de clé primaire nécessite de supprimer la clé primaire d’origine (ci-dessus) puis d’en recréer une (ALTER TABLE nomTable ADD PRIMARY KEY…)

ALTER TABLE nomTable DROP CONSTRAINT nomContrainte

Il est obligatoire de passer par un nom de contrainte pour supprimer une clé étrangère car il peut y avoir plusieurs clés étrangères contrairement à la clé primaire unique.

Cela implique d’avoir nommé la contrainte lors de la création de la clé étrangère (dans les ordres CREATE TABLE ou ALTER TABLE…ADD).


Lors d’un ajout de champ, ce nouveau champ n’aura pas de valeur pour tous les enregistrements déjà présents dans la table. Lors d’une suppression d’un champ, son contenu sera perdu pour tous les enregistrements de la table.

On notera que la saisie directe de requêtes SQL de définition est rare. Elle s’opère lors de la création de la base ou de son évolution. Ces requêtes prennent également place dans des programmes d’installation ou de mise à jour, à destination des utilisateurs, qui permettent la création ou l’évolution automatique de la base de données.


LA PROJECTION

Si une base de données remplit principalement la fonction de mémorisation, son principal intérêt et dans son exploitation : les données sont mémorisées dans le but d’être extraites par des requêtes d’interrogation notamment pour les transformer en de nouvelles informations.

La projection est l’opération qui consiste à délivrer des données. Au premier abord, on peut approcher la projection d’un résultat affiché, cependant toutes les données projetées ne sont pas forcément destinées à être affichées. Le plus souvent les requêtes sont exécutées par des programmes qui utilisent certaines des données pour un affichage et d’autres pour les traitements.

Exemple : la projection d’une donnée sexe délivre les valeurs « F » ou 3M » qui ne seront pas forcément affichées telles quelles mais qui peuvent être utilisées pour personnaliser un affichage « Chère » ou « Cher ».


L’instruction SELECT permet de déterminer les données à projeter en provenance de tables précisées dans la clause FROM.

SELECT champProjeté [, champProjeté2…] il y a au minimum un champ projeté

FROM nomTable

SELECT *

FROM NonTable

(*) signifie que les champs de la table sont projetés


LA JOINTURE

Les jointures sont nécessaires dès lors que la requête fait appel à plusieurs tables ; une jointure indique au SGBDR comment mettre en relation deux tables (le plus souvent comme l’indique le schéma relationnel). Les tables sont donc jointes deux à deux et en règle générale il y a n-1 critères de jointure pour n tables (attention il y a des exceptions).

Exemple : Considérons le schéma relationnel suivant

  • Service (num,libelle,budget)

Clé primaire : num (auto-incrémenté)


  • Salarié (num, nom,prenom,dateEmbauche,salaire,indemnite,poste,numService)

Clé primaire : num (auto-incrémenté)

Clé étrangère : num Service en référence à num de la relation service


Liste alphabétique des salariés avec libellé de service

SELECT salarie.*,libelle

FROM salarie, service

ORDER BY nom, prenom


En l’absence de jointure, le SGBDR ne « sait » pas comment mettre en relation les deux tables et va projeter toutes les combinaisons possibles. Ainsi si la table service comporte 5 enregistrements et la table salarié en compte 120, 600 enregistrement (120*5) seront projetés alors qu’il aurait du y en avoir 120 (chaque salarié n’appartient qu’à un seul service).


SELECT salarie.*libelle

FROM salarie, service

WHERE service.num = numService

ORDER BY nom, prenom


REGROUPEMENT ET FONCTIONS ASSOCIEES

Les opérateurs de regroupement permettent d’obtenir des informations agrégées à partir du contenu d’une base de données, en regroupant ensemble des lignes ayant des caractéristiques communes avant de leur appliquer une fonction agrégative.

Nous avons vu qu’il était possible d’introduire des calculs dans l’instruction SELECT ou dans les clauses WHERE ou ORDER BY mais il s’agit alors de calculs répétés de manière indépendante pour chaque enregistrement. 

Une opération est au contraire réalisée en colonne et concerne simultanément tous les enregistrements d’un champ : 

Une opération d’agrégat effectuée dans l’instruction SELECT délivrera un seul enregistrement-résultat, la clause ORDER BY n’a donc pas lieu d’être. Par contre une telle requête peut faire appel à des critères de restriction et de jointure.


Exemple : Utilisons la relation salarie (num, nom,prenom, dateEmbauche, salaire, indemnite, poste)


Salaire moyen des salariés de l’entreprise

SELECT AVG(salaire)

FROM salarie


Les salaires extrêmes

SELECT MIN (salaire), MAX (salaire)

FROM salarie


Les opérations présentées auparavant et exécutées dans l’instruction SELECT seule délivraient un seul enregistrement-résultat. La clause GROUP BY permet d’effectuer des opérations par sous-groupes d’enregistrement délivrant ainsi plusieurs enregistrements-résultat (un pour chaque sous-groupe d’enregistrements).

La clause ODER BY retrouve ici sa raison d’être. Les critères de restriction et de jointure peuvent toujours être présents.

Exemple : Considérons le schéma relationnel suivant : 

  • Service (num,libelle,budget)

 

Clé primaire : num (auto-incrémenté)


  • Qualification (num, libelle,niveau)

 

Clé primaire : num (auto-incrémenté)


  • Salarié (num, nom,prenom,dateEmbauche,salaire,indemnite,poste,numService)

 

Clé primaire : num (auto-incrémenté)

Clé étrangère : num Service en référence à num de la relation service


  • Competence (numSalarie, num Qualif, dateAcq

 

Clé primaire : numSalarie, numQualification

Clés étrangères : numSalarie en référence à num de la relation salarie

  numQualif en référence à num de la relation qualification

Le montant des salaires de chaque service

SELECT libelle, SUM(salaire)

FROM salarie, service

WHERE service.num=salarie.numService

GROUP BY libelle

Fin de l'extrait

Vous devez être connecté pour pouvoir lire la suite

Télécharger ce document gratuitement

Donne ton avis !

Rédige ton avis

Votre commentaire est en attente de validation. Il s'affichera dès qu'un membre de Bac STMG le validera.
Attention, les commentaires doivent avoir un minimum de 50 caractères !
Vous devez donner une note pour valider votre avis.

Nos infos récentes du Bac STMG

Communauté au top !

Vous devez être membre de digiSchool bac STMG

Pas encore inscrit ?

Ou identifiez-vous :

Mot de passe oublié ?