0% ont trouvé ce document utile (0 vote)
147 vues182 pages

BD SQL

Transféré par

soumayabd897
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
147 vues182 pages

BD SQL

Transféré par

soumayabd897
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed Premier - Oujda

Ecole Nationale des Sciences Appliquées d’Oujda

Données et Web
Systèmes d’Information et Bases de Données
-----------------------

FILIERE : Cycle Ingénieur - Ingénierie des Technologies de


l'information et Réseaux de Communication

Réalisé par : Pr. Mohcine BOUKSIM [email protected] Année Universitaire : 2024/2025


Chapitre I

Introduction aux Bases de Données


Introduction aux Bases de Données
▪ Information & Donnée
Information : c’est un élément de connaissance concernant des faits, des
sujets ou des éléments particuliers.
Donnée : représentation conventionnelle d’un élément de connaissance que
traite l’ordinateur.

▪ Exemple:

Informations concernant un client : le nom, le prénom l’adresse, le tel…


Introduction aux Bases de Données
▪ Une base de données est un ensemble structuré et organisé permettant le
stockage de grandes quantités d’information afin d’en faciliter
l’exploitation.
➢ exhaustivité : contient toutes les informations requises pour le service
que l'on en attend
➢ unicité : la même information n'est présente qu'une seule fois.
▪ Une base de données peut être locale ou répartie
Introduction aux Bases de Données
▪ Le Système de Gestion de Bases de Données (SGBD) est un logiciel qui
permet de manipuler les informations stockées dans une base de donnée, en
jouant le rôle d’interface entre les utilisateurs et la base de données.
▪ Les fonctions principales d’un SGBD :
➢ La description de la structure de la base de données
➢ La manipulation des données
➢ Le contrôle des données : intégrité, confidentialité, partage et
sécurité
Introduction aux Bases de Données

Historiquement, pour stocker de l’information on dispose de deux


approches :
❑ Approche système de fichiers
❑ Approche base de données
Introduction aux Bases de Données

❑ Approche système de fichiers :


➢ Utiliser un ensemble de fichiers de données.
➢ Définir les données en fonction des traitements (dépendance
données/programmes).
➢ Toute application a ses propres fichiers.

Application 1 Application 2
Fichier 1 Fichier 2
Introduction aux Bases de Données
Exemple :
➢ Pour gérer les étudiants dans une université (plusieurs établissements) voici un exemple :

➢ Pour gérer l’ensemble des données d’une entreprise, chaque service définit ses fichiers
en fonction de ses besoins.
❑ Fichier Client
❑ Fichier Commande
❑ Fichier Détail commande
❑ Fichier Produit
Introduction aux Bases de Données
Inconvénients:
❑ Redondance de données => Risque d’incohérence de données lors de la m.à.j des
fichiers.
❑ Difficulté des traitements (consultation et m.à.j).
❑ Pas d’intégrité:
➢ On peut passer une commande d’un client qui n’existe pas dans le fichier
Client.
➢ Total commande donnée calculée…
❑ Tout contrôle sur les valeurs des données doit être traité par les programmes.
❑ Manque de confidentialité…
Introduction aux Bases de Données
"Je gère ma base de données sur Excel…"
Le tableur est un logiciel qui permet de traiter efficacement des données numériques et de
présenter les résultats sous forme de graphiques. Lorsqu’il est relié à une base de données, il
permet d'effectuer des bilans et des simulations qui serviront de bases aux décideurs.
Désavantages :
▪ pas de sémantique des données,
▪ travail sur 1 seul fichier à la fois,
▪ données répétées,
▪ problème des mises à jour des informations,
▪ Pas d’accès multiutilisateurs
Introduction aux Bases de Données: Tableur Vs
SGBD
▪ LES LIMITES DU TABLEUR EXCEL :
Introduction aux Bases de Données
❑ Approche base de données :
➢ Date de création 1963
➢ Représentation fidèle du monde réel.
➢ Intégration des données dans un seul fichier (la Base de Données).
➢ Indépendance données/programmes.
➢ Gestion d’une quantité importante de données.
➢ Organisation et gestion de la BD réalisées par un logiciel spécifique.
Introduction aux Bases de Données
Le SGBD gère correctement tous les désavantages du tableur
Désavantages :
▪ nécessite de bien définir les besoins et d’être méticuleux lors de la réalisation de la
base de données
▪ nécessite un réel apprentissage

Application 1 Application 2

BD
Introduction aux Bases de Données
▪ Pour les Bases de données:

Liaison
Introduction aux Bases de Données: Tableur Vs
SGBD
Actions Tableur Base de Données

Utilisation principale Calculs Gestion des données

Structuration des données Aucune Structuration et cohérence


forte
Contrôle d'intégrité des Aucun Vérification stricte des valeurs
données possibles de chaque donnée
Accès aux données Mono utilisateur Multi utilisateurs

Sécurité Faible à nulle Forte, limitée à 1


enregistrement
Confidentialité des données Aucun contrôle Vérification des droits
d'accès de chaque utilisateur
Taille des données - Une table - Plusieurs tables
- Quelques milliers de lignes - Plusieurs milliers de lignes par
table
Traitement sur les données Quantitatifs Qualitatifs et quantitatifs

Interrogation des données Réalisée par des procédures Langage "universel" : SQL
spécifiques
Introduction aux Bases de Données
❑ Définition :
➢ Une base de données (BD) est un ensemble structuré de données peu
redondantes que possible enregistrés (stockées) sur des supports accessibles
par l’ordinateur de façon à être indépendantes des programmes qui les
utilisent.
➢ Par exemple, dans une entreprise constituée de plusieurs services (service
commercial, service d’approvisionnement, etc.), la BD sera partagée et
utilisée par différents services qui n’ont pas les mêmes besoins.
Introduction aux Bases de Données : Cycle de vie

• Collection des informations de la base (Dictionnaire de


Conception données et contraintes)
• Définition de la structure de la BD (Merise)

• Réalisation de la structure Dans un SGBD


Implantation • Saisie des données de la BD

• Recherche d’informations
Utilisation • Mise a jour de la BD
Introduction aux Bases de Données : SGBD
❑ Définition :
➢ Le SGBD est un logiciel (ensemble de programmes) permettant à un
utilisateur d’interagir avec une base de données. Le SGBD assure la création
et l’exploitation des BD.
➢ A titre d’exemple, il permet aux utilisateurs de créer une BD, extraire,
modifier ou supprimer des données…
➢ Contrairement aux programmes utilisés avec les fichiers classiques, on ne
connaît pas l’implantation physique des données.
➢ Exemple de SGBD : Oracle, SQL Server, MySQL, PostgreSQL, …
Introduction aux Bases de Données : SGBD
❑ MySQL:
➢ Système de Gestion de Base de Données Relationnel
➢ Open Source et téléchargeable à volonté (ou presque)
➢ Arrivé au même niveau de maturité que les grands SGBD
➢ Fonctionnalités riches et grande performance
➢ Ouvert à tous les principaux langages du marché
➢ Fonctionnement sur les OS les plus courants
➢ Facilité d’utilisation pour les applications Web
➢ Depuis 2009 racheté par Oracle
Introduction aux Bases de Données : SGBD
❑ MariaDB:
➢ Système de Gestion de Base de Données Relationnel
➢ Open Source et téléchargeable à volonté
➢ Fondé par le créateur de MySQL après son rachat par Oracle
➢ Basé sur la version open source de MySQL
Introduction aux Bases de Données : SGBD
❑ MySQL:
➢ Aller sur le lien https://dev.mysql.com/downloads/mysql/ et choisir la
version a télécharger selon le système d’exploitation
❑ MariaDB :
➢ Aller sur le lien https://mariadb.org/download/ et choisir la version a
télécharger selon le système d’exploitation
Introduction aux Bases de Données
❑ Plusieurs types de modèles:
➢ Modèle hiérarchique
➢ Modèle reseau
➢ Modèle relationnel (SQL)
➢ Modèle orientée objet
➢ Modèle objet relationnel
➢ Modèle NoSQL
on s’intéresse au modèle relationnel
Introduction aux Bases de Données : modèle
relationnel
❑ base sur un concept connu en mathématiques : algèbre relationnel
❑ en BD, une relation correspond à une table
❑ le concept relation a été repris par la suite dans plusieurs autres disciplines
telles que :
➢ la théorie des graphes
➢ l’intelligence artificielle
❑ Tous les SGBDR utilisent le langage SQL pour interroger les bases de
données
Chapitre II

Le Langage SQL
Le Langage SQL: Introduction

❑ SQL : Structured Query Language


❑ introduit par IBM dans les années 70
❑ base sur la notion de requêtes
❑ utilise l’algèbre relationnel (intersection, union, jointure...)
Le Langage SQL: Introduction

CREATE – ALTER – DROP - Définition des données


RENAME – TRUNCATE (LDD)

INSERT – UPDATE – Manipulation des


DELETE - LOCK TABLE données (LMD)

Interrogation des
SELECT données (LID)

COMMIT – ROLLBACK –
Contrôle des données
SAVEPOINT - SET
(LCD)
TRANSACTION…
Le Langage SQL: Base de donnée
❑ Une base de données est composée de plusieurs tables
❑ Une table comporte plusieurs colonnes
❑ Chaque ligne d’une table est appelée tuple (n-uplet)
❑ Chaque table doit posséder une clé
❑ S’il existe plusieurs clés pour une table, on en choisit une et elle sera
appelée clé primaire (elle peut être composé)
❑ Une clé primaire est un ensemble de colonne minimale qui identifie les
tuples
❑ Une colonne d’une table est dite clé étrangère si elle est clé primaire dans
une autre table
Le Langage SQL: Base de donnée
❑ Les propriétés A.C.I.D
❑ Atomicité : une transaction se fait au complet ou pas du tout.
❑ Cohérence : chaque transaction amènera la base d’un état valide a un autre
état valide.
❑ Isolation : Toute transaction doit s’exécuter comme si elle était la seule sur
le système. Ses modifications ne sont accessibles que lorsque la transaction
a été validée.
❑ Durabilité : Une fois la transaction validée, elle demeure enregistrée même a
la suite d’une panne ou autre.
Le Langage SQL: Base de donnée
❑ Dans le cadre de ce cours nous utiliserons le SGBDR MySQL qui est basé sur
l’architecture client-serveur;
❑ Au sein d’un serveur on peut créer autant de BD que l’on veut, chaque BD doit
avoir son propre nom;
❑ Dans une BD on peut trouvés plusieurs tables, une table appartienne à une
seule BD,
❑ Remarque: Chaque requête SQL doit se terminer par un point virgule « ;
».
Le Langage SQL: Base de donnée
❑ Pour créer une base de données qui sera appelé « mydb » il suffit d’utiliser
la requête suivante:

mysql> CREATE DATABASE mydb;


Query OK, 0 rows affected (0,01 sec)

mysql> USE mydb;


Database changed

❑ La commande CREATE DATABASE NOMBD, permet de créer une base


de donnée nomée NomBD
❑ Pour utiliser la base de données, on utilise la commande suivante USE
nom_base_de_donnees;
Le Langage SQL: Base de donnée

❑ La commande DROP DATABASE NOMBD, permet de supprimer une


base de donnée nommée NomBD
➢ Si la base de donnée existe elle sera supprimé
➢ Si la base de donnée n’existe pas un message d’erreur sera retourné.
Pour éviter ce problème on peut utiliser l’instruction IF EXISTS, alors
la requête devint : DROP DATABASE IF EXISTS NomBD
❑ La commande Show DATABASES, permet d’afficher toutes les base de
donnée existantes
Le Langage SQL: Base de donnée (Recap)

❑ Création:
CREATE DATABASE bd_Name;
❑ Suppression :
DROP DATABASE [IF EXISTS] bd_Name;
❑ IF EXISTS : pour éviter le message d’erreur si la BD n’existe pas.
❑ Pour utiliser la base de données
USE bd_Name;
❑ Pour afficher toutes les bases de données
SHOW DATABASES;
Le Langage SQL: Les commentaires

❑ Les symboles dièse « # » et « -- » permettent de faire un commentaire


jusqu’à la fin de la ligne;
❑ Pour avoir un commentaire sur plusieurs lignes on utilise « /* mon
commentaire */ » ;
❑ Un commentaire sur plusieurs lignes a l’avantage de pouvoir indiquer le
début et la fin du commentaire, ce qui rend possible de l’utiliser au corps
d’une requête SQL sans problème
Le Langage SQL: Table

❑ Pour créer une table exécuter une requête contenant la commande CREATE
TABLE :

❑ Exemple :
Le Langage SQL: Les Types De Base

❑ Pour décrire les colonnes d’une table, MySQL fournit les types prédéfinis
suivants:
❑ Alphanumériques: CHAR, VARCHAR, TINYTEXT, TEXT,
MEDIUMTEXT, LONGTEXT;
❑ Numériques: TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER,
BIGINT, FLOAT, DOUBLE, REAL, DECIMAL, NUMERIC;
❑ Date/Heure: DATE, DATETIME, TIME, YEAR, TIMESTAMP;
❑ Données binaires: BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB;
❑ Énumérations: ENUM, SET.
Le Langage SQL: Les Types De Base (Alphanumériques)

❑ Pour les chaînes fixe les valeurs sont stockées en ajoutant des blancs si sa
taille est inférieure à n. Ces blancs ne seront pas considérés après extraction
à partir de la table;
❑ Pour les chaînes variable les valeurs sont stockées sans l’ajout de blancs, on
stocke la chaîne plus la longueur de la chaîne stockées.
Le Langage SQL: Les Types De Base (Numérique:Entier)

❑ La directive UNSIGNED permet de considérer seulement des valeurs positives;


❑ La directive ZEROFILL complète par des zéros à gauche une valeur (par exemple : soit
un INTEGER(3) contenant valeur 4, si ZEROFILL est appliqué, la valeur extraite sera
«004»).
Le Langage SQL: Les Types De Base (Numérique:
Décimal)

❑ Dans toute instruction SQL, écrivez la virgule avec un point (7/2 retourne 3.5).
Le Langage SQL: Les Types De Base (Date & heure)
Le Langage SQL: Les Types De Base (Données Binaires)

❑ Les types BLOB (Binary Large OBject) permettent de stocker des données non
structurées comme le multimédia (images, sons, vidéo, etc.). Ces types sont traités
comme des flots d’octets sans jeu de caractère associé
Le Langage SQL: Les Types De Base (Énumération)

❑ SET et ENUM sont des types propres à MySQL:


➢ ENUM: on ne peut choisir qu’une seule valeur parmi la liste;
➢ SET: on peut choisir plusieurs valeurs parmi la liste.
Le Langage SQL: Contraintes d’Intégrités

❑ Les Contraintes d’intégrités sont les règles que l’on peut demander au
SGBD de garantir (vérification automatique par le SGBD); Les contraintes
sur une colonne sont :
➢ NOT NULL;
➢ DEFAULT ;
➢ UNIQUE ;
➢ CHEK(Condition) ;
➢ PRIMARY KEY ;
➢ FOREIGN KEY.
Le Langage SQL: Contraintes d’Intégrités (NOT NULL)

❑ La contrainte NOT NULL est une contrainte d’intégrité imposant qu'une


colonne d’une table doit comporter une valeur non nulle (différente de
nulle);
❑ Pour appliquer cette contrainte utiliser le mot clé NOT NULL pendant la
définition des colonnes de la table;
Le Langage SQL: Contraintes d’Intégrités (NOT NULL)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (Default)

❑ La contrainte DEFAULT est une contrainte d’intégrité qui s’applique


lorsqu'une valeur d’une colonne n'est pas renseignée, elle consiste à attribuer
automatiquement une valeur à une colonne.
❑ Pour appliquer cette contrainte utiliser le mot clé DEFAULT suivi de la
valeur par défaut;
Le Langage SQL: Contraintes d’Intégrités (Default)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (Unique)

❑ La contrainte UNIQUE est une contrainte d’intégrité imposant que toute les
valeurs de la colonne soient distinctes (impossibles de trouvé deux lignes ou
plus ayant les mêmes valeurs pour cette colonne);
❑ Pour appliquer cette contrainte utiliser le mot clé UNIQUE pendant la
définition des colonnes de la table;
Le Langage SQL: Contraintes d’Intégrités (Unique)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (CHECK)
❑ La norme SQL2 comprend une contrainte d’intégrité CHECK (condition) imposant
qu'une colonne d’une table doit comporter des valeurs vérifiant la condition;
❑ Pour appliquer cette contrainte utiliser le mot clé CHECK puis exprimer la condition
entre parenthèse pendant la définition des colonnes de la table, ou créer une contrainte
avec le mot clé CONSTRAINT et exprimer la condition avec CHECK;

❑ Pour MySQL Cette contrainte est prise en charge au niveau de la déclaration mais n’est
pas encore opérationnelle
Le Langage SQL: Contraintes d’Intégrités (CHECK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (PK)
❑ La contrainte PRIMARY KEY déclare la clé primaire de la table, les colonnes clés
primaires ne peuvent être ni nulles ni identiques;
❑ Pour appliquer cette contrainte utiliser le mot clé PRIMARY KEY pendant la définition
des colonnes de la table, ou créer une contrainte avec le mot clé CONSTRAINT puis
exprimer la clé primaire avec PRIMARY KEY
Le Langage SQL: Contraintes d’Intégrités (PK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (PK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (PK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (FK)
❑ La contrainte FOREIGN KEY déclare la clé étrangère qui permet de mettre en place
une contrainte de référence entre une ou plusieurs colonnes d'une table et les colonnes
composantes les clés primaires des autres tables;
❑ Pour appliquer cette contrainte utiliser les mots clés FOREIGN KEY et
REFERENCES ou créer une contrainte avec le mot clé CONSTRAINT puis exprimer
la clé étrangère avec FOREIGN KEY;

❑ Remarque: la table référencée(clé primaire) doit être créée avant la table qui la
référence(clé étrangère)
Le Langage SQL: Contraintes d’Intégrités (FK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (FK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (FK)
❑ Que se passe-t-il quand la violation d’une contrainte d’intégrité référentielle est détectée
par le SGBD? par exemple supprimer (ou modifier) le NumInscEt d’un étudiant qui a
des notes (référencé comme clé étrangère);
❑ Par défaut, le SGBD empêche l’exécution de cette requête en affichant un message
d’erreur; Il est possible de demander la répercussion de cette mise à jour de manière à ce
que la contrainte soit respectée;
❑ Les événements que l’on peut répercuter sont la modification ou la suppression de la
ligne référencée, On les désignes par ON UPDATE et ON DELETE respectivement.
Le Langage SQL: Contraintes d’Intégrités (FK)
Les répercussions que l’on peut demandées à MySQL sont:
❑ RESTRICT: opération par défaut, MySQL empêche l’exécution de la requête ;
❑ NO ACTION: même opération que RESTRICT;
❑ SET NULL: met NULL les valeurs des lignes de table qui référence (met NULL les clés
étrangères qui référence la valeur concernée);
❑ CASCADE: appliquer la même opération aux valeurs des lignes de table qui référence
(modification ou suppression des clés étrangères qui référence la valeur concernée)
Le Langage SQL: Contraintes d’Intégrités (FK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (FK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités (FK)

❑ Exemple :
Le Langage SQL: Contraintes d’Intégrités(AUTO_INCREMENT)

❑ La directive AUTO_INCREMENT permet de spécifier qu’une colonne numérique


souvent clé primaire (PRIMARY KEY) sera incrémentée automatiquement à chaque
insertion d’une ligne;
❑ Pour appliquer l’incrémentation automatique des valeurs d’une colonne utiliser le mot clé
AUTO_INCREMENT pendant la définition de la colonne;
Le Langage SQL: Contraintes d’Intégrités(AUTO_INCREMENT)

❑ Exemple :
Le Langage SQL: Describe

❑ Pour afficher la structure d’une table on utilise la directive DESCRIBE NOM_TABLE

Describe Nom_Table;
Le Langage SQL: Show

❑ Pour afficher la liste des tables de la base de donnée on utilise la directive SHOW
TABLES

SHOW Tables;
Le Langage SQL: Modification des structures des tables
Modification des structures des tables
❑ Ajouter une colonne
❑ Modifier une colonne
❑ Supprimer une colonne
❑ Renommer une colonne
❑ Ajouter une contrainte
❑ Vider, renommer ou supprimer une table
Le Langage SQL: Modification des structures des tables
❑ La définition de la structure d’une table n’est qu’une première étape dans la vie d’une
base de données;
❑ On est toujours amené par la suite à créer de nouvelles tables, à ajouter des colonnes ou à
en modifier leurs définition;
❑ La forme générale de la requête permettant de modifier la structure d’une table est :

❑ où ACTION peut être principalement:


✓ ADD;
✓ MODIFY;
✓ CHANGE;
✓ DROP;
❑ description_Action est la commande de modification associée à ACTION.
Le Langage SQL: Ajouter une Colonne

❑ Pour ajouter une colonne exécuter une requête contenant la commande ALTER
conjointement avec l’action ADD.
Le Langage SQL: Modification des colonnes
❑ Pour modifier une colonne exécuter une requête contenant la commande ALTER
conjointement avec l’action MODIFY;

❑ Les modifications possibles sont :


➢ Dans tous les cas il est possible d'augmenter la taille d'une colonne ;
➢ Il est possible de diminuer la taille, ou même de changer le type si la colonne ne
contient que des valeurs nulles (sinon risque d’une perte des données pour les
données existantes);
➢ On peut spécifier NOT NULL si la colonne ne contient aucune valeur NULL (sinon
les NULL seront remplacées par des blancs);
➢ On peut dans tous les cas spécifier NULL pour autoriser les valeurs NULL
Le Langage SQL: Modification des colonnes

❑ Exemple :
Le Langage SQL: Suppression des colonnes
❑ Pour supprimer une colonne exécuter une requête contenant la commande ALTER
conjointement avec l’action DROP
Le Langage SQL: Renommer des colonnes
❑ Pour renommer une colonne exécuter une requête contenant la commande ALTER
conjointement avec l’action CHANGE
Le Langage SQL: Ajouter une Contrainte
❑ Pour ajouter une contrainte exécuter une requête contenant la commande ALTER
conjointement avec l’action ADD CONSTRAINT
Le Langage SQL: Ajouter une Contrainte
❑ Pour ajouter (ou modifier) une contrainte valeur par défaut exécuter une requête
contenant la commande ALTER conjointement avec l’action SET DEFAULT;
Le Langage SQL: Vider, Renommer, Ou supprimer une table
❑ Pour Vider une table exécuter une requête contenant la commande TRUNCATE;

❑ Pour renommer une table exécuter une requête contenant la commande ALTER
conjointement avec l’action RENAME TO;

❑ Pour supprimer une table exécuter une requête contenant la commande DROP;
Le Langage SQL: Moteur de stockage

❑ Un moteur de stockage, aussi appelé moteur de table, est un ensemble d’algorithme qui
permettent de stocker et d’accéder aux données dans un Système de Gestion de Base de
Données (SGBD). En règle général, les SGBD utilisent chacun qu’un seul moteur de
stockage qui est optimisé au mieux pour la lecture, l’écriture et la suppression de
données.
❑ MySQL se démarque des autres SGBD car il propose libre choix à ses utilisateurs
d’utiliser un moteur de table parmi plusieurs moteurs différents.
❑ Chaque moteur offre des avantages mais aussi des inconvénients
Le Langage SQL: Moteur de stockage

❑ Les éléments ci-dessous présente une liste non-exhaustive des principaux moteurs de
stockage :
➢ MyISAM
➢ InnoDB
➢ BDB (ou BerkeleyDB)
➢ Archive
➢ Aria
➢ BLACKHOLE
❑ Les moteurs les plus utilisés sont : MyISAM et InnoDB
Le Langage SQL: Moteur de stockage

❑ MyISAM est le moteur par défaut dans les versions de MySQL inférieures à 5.5 et ce,
depuis la version 3.23. MyISAM est un moteur non-transactionnel ce qui explique qu’il
est rapide (surtout en lecture). Il faut noter qu’il ne gère ni les relations, ni les
transactions. C’est un moteur qui perd énormément en intégrité à cause des points
précédents, en revanche il gagne de la vitesse.
❑ Les avantages :
➢ Très rapide pour les requêtes de type SELECT ou INSERT
❑ Les inconvénients :
➢ Il ne supporte pas les transactions
➢ Il ne supporte pas les clés étrangères
Le Langage SQL: Moteur de stockage

❑ InnoDB est apparu par la suite ; la plus importante différence avec MyISAM est qu’InnoDB est un
moteur relationnel : il permet de créer des contraintes d’intégrité, tout comme d’autres SGBD comme
PostgreSQL, SQL Server ou Oracle. Ainsi, l’utilisateur est certain que les relations entre les tables
sont cohérentes et que les changements effectués sur les données contenues dans ces tables seront
transmis aux tables qui y sont liées.
❑ Les avantages :
➢ Il gère les transactions (instructions sql BEGIN, COMMIT, ROLLBACK…)
➢ Il supporte les clés étrangères et les intégrités référentielles
❑ Les inconvénients :
➢ Le moteur de stockage est parfois plus lent que d’autres et gourmand en ressources mémoires
➢ InnoDB prend de 1,5 à 2 fois la place qu’occupe une table MyISAM, ce qui n’est pas
négligeable dans certains cas
Le Langage SQL: Moteur de stockage

❑ Exemple :

CREATE TABLE table1(id int) ENGINE = InnoDB;

CREATE TABLE table2(id int) ENGINE = MyISAM;

CREATE TABLE table3 (id int);


ALTER TABLE table3 ENGINE= MyISAM;
Remarque : Pour certaine version de Mysql même si on choisi le moteur de stockage
InnoDB il faut exécuter la commande suivante pour activer l’utilisation des clés étrangères
SET FOREIGN_KEY_CHECKS=1;
Le Langage SQL: Langage de Manipulation de Données LMD

❑ Introduction

❑ La commande INSERT

❑ La commande UPDATE

❑ La commande DELETE
Le Langage SQL (LMD): Insertion
❑ Pour insérer des données dans une table utiliser la commande INSERT, cette commande
permet d’insérer plusieurs lignes dans une table;

❑ La liste des colonnes entre crochets [ ] est optionnelle (n’est pas obligatoire), par défaut
toutes les colonnes sont classées dans l’ordre donné lors de la création de la table;
❑ Si la commande comporte une liste de colonnes, les colonnes qui ne sont pas
mentionnées dans la liste auront la valeur par défaut ou la valeur NULL
Le Langage SQL (LMD): Insertion
Le Langage SQL (LMD): Insertion
Le Langage SQL (LMD): Insertion
Le Langage SQL (LMD): Insertion
Le Langage SQL (LMD): Mise à jour
❑ Pour modifier des données dans une table utiliser la commande UPDATE, cette
commande permet de modifier plusieurs lignes dans une table;

❑ L’expression peut être une valeur ou une opération;


❑ La clause WHERE est optionnelle (n’est pas obligatoire);
❑ Si la condition de modification n’est pas exprimée (pas de clause WHERE), toutes les
lignes de la table seront modifiées (pour les colonnes clés la modification sera annulée)
Le Langage SQL (LMD): Mise à jour
Le Langage SQL (LMD): Suppression
❑ Pour supprimer des données à partir d’une table utiliser la commande DELETE, cette
commande permet de supprimer plusieurs lignes à partir d’une table;

❑ La clause WHERE est optionnelle (n’est pas obligatoire);


❑ Si la condition de suppression n’est pas exprimée (pas de clause WHERE), toutes les
lignes de la table seront supprimées
Le Langage SQL (LMD): Suppression
Le Langage SQL (LMD): Suppression
Le Langage SQL: Langage d’Interrogation de Données LID
❑ Introduction
❑ Projection
➢ L’opérateur DISTINCT
❑ Alias (Renommage)
❑ Sélection ou restriction
➢ L’opérateur LIKE
➢ L’opérateur IS NULL
❑ Tri
❑ Jointure
➢ Jointure naturelle
➢ θ-jointure
➢ Produit cartésien
➢ Equijointure
➢ Jointure externe droite
➢ Jointure externe gauche
➢ Jointure externe
➢ Auto-jointure
Le Langage SQL (LID): Introduction
❑ Le Langage d’Interrogation des Données LID permet d’exprimer toutes les questions que
l’on peut poser à une base de données;
❑ La forme générale d’une requête d’interrogation est la suivante:

❑ L'ordre des clauses est important;


❑ SELECT et FROM sont obligatoires.
Le Langage SQL (LID): Select basique
❑ SELECT récupère des enregistrements dans un tableau. Cette commande peut
sélectionner une ou plusieurs colonnes d’une table.
❑ L’utilisation basique de cette commande s’effectue de la manière suivante:
SELECT nom_du_champ1, nom_du_champ2, …
FROM nom_du_tableau ;
❑ Pour sélectionner toutes les colonnes on utilise * a la place du nom de la colonne

SELECT * FROM client;


❑ Pour obtenir les prénoms et les noms des clients il faut utiliser la requête suivante :

SELECT prenom, nom FROM client;


Le Langage SQL (LID): Select basique
❑ Exemple :
Le Langage SQL (LID): DISTINCT
❑ Pour éviter des redondances dans les résultats il faut simplement ajouter DISTINCT
après le mot SELECT.
❑ L’utilisation basique de cette commande consiste alors à effectuer la requête suivante:

SELECT DISTINCT ma_colonne


FROM nom_du_tableau

❑ Cette requête sélectionne le champ « ma_colonne » de la table « nom_du_tableau » en


évitant de retourner des doublons.
Le Langage SQL (LID): DISTINCT
❑ Exemple :
Le Langage SQL (LID): Alias
❑ Le renommage permet de renommer une table sans changé sa structure ou de renommer
des colonnes d’une table sans changé leurs types de données.
❑ Les noms des colonnes sont par défaut ceux indiqués dans la clause SELECT (noms
choisis pendant la création de la table), on utilise le mot-clé AS pour créer des alias des
colonnes(renommer ces colonnes temporairement);
❑ Les noms des tables sont par défaut ceux indiqués dans la clause FROM (noms choisis
pendant la création des tables), on utilise le mot-clé AS pour créer des alias des tables
(renommer ces tables temporairement);
❑ Les alias permettent de simplifié l’écriture et la lisibilité des requêtes (voir jointures,
fonctions…).
SELECT ma_colonne AS newName
FROM nom_du_tableau
Le Langage SQL (LID): Alias

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour renommer ❑ Donne le résultat suivant:


les colonnes de la table
Le Langage SQL (LID): Alias

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour renommer ❑ Donne le résultat suivant:


la table
Le Langage SQL (LID): Exercice

❑ Soit la table Etudiant(CIN, Nom, Prénom, Age, Adresse, Tel).


1. Créer la table étudiant.
2. Effectuer 4 insertions.
2. Afficher toutes les lignes de la relation Etudiant.
4. Afficher les noms, les prénoms et les âges de tous les étudiants.
5. Afficher les CIN des étudiants dans une colonne nommée Code
Le Langage SQL (LID): Solution

❑ Soit la table Etudiant(CIN, Nom, Prénom, Age, Adresse, Tel).


Le Langage SQL (LID): Opérateurs arithmétiques

Opérateur Description
* Multiplication
/ Division
% Modulo (reste de la division
+ Addition
- Soustraction
Le Langage SQL (LID): Opérateurs arithmétiques
❑ Pour afficher le prix TTC d’un produit on peut utiliser la requête suivante:

SELECT nomP, prix + tax as "prix TTC" FROM produit;

❑ Pour afficher le prix d’un produit après réduction de 20%, on utilise la requête :

SELECT nomP, (prix + tax)*0,8 as "prix TTC après reduction"


FROM produit;

❑ On peut même utiliser Mysql uniquement pour des calcules (sans utilisé de table) :

SELECT (101 +54)/(412%3) as resultat


Le Langage SQL (LID): WHERE
❑ La commande WHERE s’utilise en complément à une requête utilisant SELECT. La
syntaxe générale de cette commande est la suivante :
Le Langage SQL (LID): WHERE - les operateurs
Opérateur Description
= Égale
<> Pas égale
!= Pas égale
> Supérieur à
< Inférieur à
>= Supérieur ou égale à
<= Inférieur ou égale à
IN Liste de plusieurs valeurs possibles

BETWEEN Valeur comprise dans un intervalle


donnée (utile pour les nombres ou dates)

LIKE Recherche en spécifiant le début, milieu


ou fin d'un mot.
IS NULL Valeur est nulle
IS NOT NULL Valeur n'est pas nulle
Le Langage SQL (LID): WHERE

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher l’étudiant qui ❑ Donne le résultat suivant:


porte le NumInscrEt 10004:
Le Langage SQL (LID): WHERE (AND/OR)
❑ Une requête SQL peut être restreinte à l’aide de la condition WHERE. Les opérateurs
logiques AND et OR peuvent être utilisées au sein de la commande WHERE pour
combiner des conditions.
❑ Les opérateurs sont à ajoutés dans la condition WHERE. Ils peuvent être combinés à
l’infini pour filtrer les données comme souhaités.
❑ L’opérateur AND permet de s’assurer que la condition1 ET la condition2 sont vrai :

SELECT nom_colonnes FROM nom_table


WHERE condition1 AND condition2
Le Langage SQL (LID): WHERE (AND/OR)
❑ L’opérateur OR vérifie quant à lui que la condition1 OU la condition2 est vrai :

SELECT nom_colonnes FROM nom_table


WHERE condition1 OR condition2

❑ Ces opérateurs peuvent être combinés à l’infini et mélangés. L’exemple ci-dessous filtre les
résultats de la table “nom_table” si condition1 ET condition2 OU condition3 est vrai :

SELECT nom_colonnes FROM nom_table


WHERE condition1 AND (condition2 OR condition3)

❑ Attention : il faut penser à utiliser des parenthèses lorsque c’est nécessaire. Cela permet
d’éviter les erreurs car et ça améliore la lecture d’une requête par un humain.
Le Langage SQL (LID): WHERE (AND/OR)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants ❑ Donne le résultat suivant:


qui sont nés entre 1999 et 2002
Le Langage SQL (LID): WHERE (AND/OR)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants


❑ Donne le résultat suivant:
habitant à Safi, Rabat ou à
Marrakech
Le Langage SQL (LID): WHERE (BETWEEN)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants ❑ Donne le résultat suivant:


qui sont nés entre 1999 et 2002
Le Langage SQL (LID): WHERE (BETWEEN)
❑ Ces deux requêtes sont équivalente :
Le Langage SQL (LID): WHERE (LIKE)
❑ Le langage SQL fournit des options pour les recherches par motif (pattern matching) à
l’aide de l’opérateur LIKE;
❑ L’opérateur LIKE compare de manière générique des chaînes de caractères;
❑ On utilise l’opérateur LIKE avec le symbole '_' pour désigner n’importe quel caractère
(chaque '_' sera désigné par un seul caractère), et le symbole ’%’ pour désigner
n’importe quelle chaîne de caractères (un ou plusieurs)
❑ Par exemple :
➢ LIKE ‘%a’ : le caractère “%” est un caractère joker qui remplace tous les autres
caractères. Ainsi, ce modèle permet de rechercher toutes les chaines de caractère qui
se termine par un “a”.
Le Langage SQL (LID): WHERE (LIKE)
➢ LIKE ‘a%’ : ce modèle permet de rechercher toutes les lignes de “colonne” qui
commence par un “a”.
➢ LIKE ‘%a%’ : ce modèle est utilisé pour rechercher tous les enregistrement qui
utilisent le caractère “a”.
➢ LIKE ‘pa%on’ : ce modèle permet de rechercher les chaines qui commence par “pa”
et qui se terminent par “on”, comme “pantalon” ou “pardon”.
➢ LIKE ‘a_c’ : peu utilisé, le caractère “_” (underscore) peut être remplacé par
n’importe quel caractère, mais un seul caractère uniquement (alors que le symbole
pourcentage “%” peut être remplacé par un nombre incalculable de caractères .
Ainsi, ce modèle permet de retourner les lignes “aac”, “abc” ou même “azc”.
Le Langage SQL (LID): WHERE (LIKE)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants ❑ Donne le résultat suivant:


dont leur nom se termine par « li »:
Le Langage SQL (LID): WHERE (LIKE)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants dont ❑ Donne le résultat suivant:


leur prénom contient la lettre « c »:
Le Langage SQL (LID): WHERE (LIKE)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants dont


leur prénom commence par la lettre 'H’
et comprend exactement 4 caractères:
❑ Donne le résultat suivant:
Le Langage SQL (LID): WHERE (IN)
❑ L’opérateur logique IN dans SQL s’utilise avec la commande WHERE pour vérifier si
une colonne est égale à une des valeurs comprise dans un set de valeurs déterminés.
C’est une méthode simple pour vérifier si une colonne est égale à une valeur OU une
autre valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois
l’opérateur OR.

SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )
Le Langage SQL (LID): WHERE (IN)

❑ Soit l’extension de la
table Etudiant:

❑ Requête pour afficher les étudiants ❑ Donne le résultat suivant:


habitant à Safi, Rabat ou à Marrakech
Le Langage SQL (LID): WHERE (IN/OR)
❑ Ces deux requêtes sont équivalente :
Le Langage SQL (LID): WHERE (IS NULL/IS NOT
NULL)
❑ NULL représente une valeur inconnue;
❑ NULL ne peut pas être égal à (ou différent de) n’importe quelle expression;
❑ Les opérateurs de comparaison (=, !=, <, et >) ne peuvent pas être appliqués pour
comparer une expression à NULL;
❑ Pour comparer des expressions à NULL, vous devez utilisez les opérateurs:
➢ IS NULL;
➢ IS NOT NULL.

SELECT *
FROM `table` WHERE nom_colonne IS NULL
SELECT *
FROM `table` WHERE nom_colonne IS NOT NULL
Le Langage SQL (LID): WHERE (IS NULL/IS NOT
NULL)

❑ Soit l’extension de la
table Note:

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL (LID): WHERE (IS NULL/IS NOT
NULL)

❑ Soit l’extension de la
table Note:

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL (LID): Le TRI
❑ Le langage SQL donne la possibilité de trier les lignes d’une table sur une ou plusieurs
colonnes, par ordre ascendant ou descendant;
❑ Pour trier les lignes d’une table utiliser la commande ORDER BY suivie de la liste des
colonnes à triées suivi de l’ordre de tri(ascendant ou descendant)

❑ Ordre_de_tri prend la valeur:


➢ ASC: ordre ascendant (plus petit au plus grand);
➢ DESC: ordre descendant (plus grand au plus petit);
❑ Par défaut les lignes sont triées par ordre ascendant
Le Langage SQL (LID): Le TRI

❑ Soit l’extension de la
table Etudiant:

❑ Requête de tri par défaut des prénoms: ❑ Donne le résultat suivant:


Le Langage SQL (LID): Le TRI

❑ Soit l’extension de la
table Etudiant:

❑ Requête de tri par ordre descendant des ❑ Donne le résultat suivant:


prénoms:
Le Langage SQL (LID): Le TRI

❑ Soit l’extension de la
table Etudiant:

❑ Requête de tri par ordre descendant


❑ Donne le résultat suivant:
des prénoms puis ascendant des
années_naiss:
Le Langage SQL (LID): Le TRI

❑ Soit l’extension de la
table Etudiant:

❑ Requête de tri par ordre ascendant des


❑ Donne le résultat suivant:
années_naiss puis descendant des
prénoms :
Le Langage SQL (LID): Exercice

Soit la table Etudiant (CNE, nom, prenom, age, ville). Ecrire les requêtes
SQL qui permet de :
❑ Afficher les villes des étudiants sans doublon.
❑ Afficher les étudiants des villes qui ne commence pas par « T »
❑ Afficher les étudiants qui ont un prénom soit « Ahmed » soit « Said » soit
« karim »
❑ Afficher les étudiants qui ont des villes inconnu
❑ Afficher la liste des étudiant avec l’âge supérieur a 18 ans et qui habitent a
Oujda.
Le Langage SQL (LID): Jointure
❑ La jointure est l'opération primordiale (la plus courante) dans le langage SQL car elle
permet d’exprimer des requêtes qui établissent des liens entre plusieurs tables ;
❑ Les principaux types de jointures sont:
➢ Jointure Naturelle;
➢ θ-Jointure;
➢ Equijointure;
➢ Jointure externe;
➢ Auto-Jointure
Le Langage SQL (LID): Jointure Naturelle

❑ Définition :

La jointure naturelle de deux tables R et S qui ont des colonnes communes, donne une
table R’ ayant pour structure les colonnes appartenant à R et S (les colonnes communes
n’apparaissent qu’une seule fois) formée de toutes les combinaisons des lignes de R et de
S ayant les mêmes valeurs pour les colonnes communes.

❑ Pour exprimer la jointure naturelle utiliser le mot clé NATURAL JOIN en respectant la
syntaxe suivante:
Le Langage SQL (LID): Jointure Naturelle

❑ Soit les extensions des tables Service, Grade et Médecin :


Le Langage SQL (LID): Jointure Naturelle

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): θ-Jointure

❑ Définition :

La thêta jointure de deux tables R et S selon une qualification Q donne une table
R’ ayant pour structure les colonnes appartenant à R et S formée de toutes les
combinaisons des lignes de R et de S qui satisfont à la qualification Q.

❑ Pour exprimer la thêta jointure utiliser le mot clé JOIN en respectant la syntaxe suivante:
Le Langage SQL (LID): θ-Jointure

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): Produit Cartésien

❑ Définition :

Le produit cartésien de deux tables R et S donne une table R’ ayant pour structure
la concaténation des colonnes de R et de S, formée de toutes les combinaisons des
lignes de R avec toutes les lignes de S.

❑ On obtient un produit cartésien lorsque :


➢ Une condition de jointure est omise;
➢ Le mot clé CROSS JOIN est utilisé;
❑ Pour éviter un produit cartésien, il faut toujours insérer une condition de jointure après le
mot clé ON
Le Langage SQL (LID): Produit Cartésien

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): L'équijointure

❑ Définition :

L'équijointure est un cas particulier de la θ-jointure, lorsque la qualification Q est


une égalité.

❑ Pour exprimer l'équijointure utiliser la syntaxe suivante:


Le Langage SQL (LID): La jointure externe droite

❑ Définition :

La jointure externe droite: est une θ-jointure sur deux tables R et S en ajoutant à
la table résultante (de la θ-jointure) toutes les lignes de la deuxième table (S) qui ne
vérifient pas les critères de jointure combinées avec des valeurs NULL

❑ Pour exprimer la jointure externe droite utiliser le mot clé RIGHT OUTER JOIN en
respectant la syntaxe suivante:
Le Langage SQL (LID): La jointure externe droite

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): La jointure externe gauche

❑ Définition :

La jointure externe gauche: est une θ-jointure sur deux tables R et S en ajoutant à
la table résultante (de la θ-jointure) toutes les lignes de la première table(R) qui ne
vérifient pas les critères de jointure combinées avec des valeurs NULL

❑ Pour exprimer la jointure externe gauche utiliser le mot clé LEFT OUTER JOIN en
respectant la syntaxe suivante:
Le Langage SQL (LID): La jointure externe gauche

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): La jointure externe
❑ Définition :
La jointure externe de deux tables R et S est une θ-jointure de ces deux tables en
ajoutant les lignes de R et de S qui ne satisfont pas à la qualification Q en leurs
combinant avec des valeurs nulles
❑ MySQL ne supporte pas ce type de jointure (sous les autres SGBD comme Oracle ou SQL
Server il existe la commande FULL OUTER JOIN qui permet de réaliser cette jointure);
❑ Je vous propose la solution (il existe d’autres) suivante pour réaliser la jointure externe:
Le Langage SQL (LID): La jointure externe

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): L'auto-jointure
❑ Définition :
L'auto-jointure est un cas particulier de la θ-jointure, lorsque qu’il s’agit d’une
jointure d'une table avec elle même.

❑ La requête suivante:
Le Langage SQL (LID): L'auto-jointure

❑ Donne le résultat suivant:


Le Langage SQL (LID): L'auto-jointure

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL (LID): L'auto-jointure

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions
❑ Introduction
➢ Types de fonctions en SQL
❑ Les fonctions Mono-ligne
➢ Principaux fonctions de chaînes de caractères
➢ Principaux fonctions de nombres
➢ Principaux fonctions de dates
❑ Les fonctions Multi-ligne (fonctions de groupe)
➢ La fonction AVG
➢ Les fonctions MIN et MAX
➢ La fonction SUM
➢ La fonction COUNT
➢ Création de Groupes(GROUP BY)
➢ Exclusion de Groupes(HAVING)
Le Langage SQL: Les Fonctions

❑ Les fonctions sont des expressions faisant partie de la requête SQL qui
permettent de calculer des valeurs à partir des arguments passés en
paramètres;
❑ Les fonctions sont principalement utilisées pour :
➢ Calculer des valeurs à partir de données;
➢ Convertir des données;
➢ Effectuer des calculs sur des groupes de lignes;
➢ Formater l’affichage des données dates et nombres
Le Langage SQL: Les Fonctions – Les Types
Le Langage SQL: Les Fonctions - Mono-Ligne
❑ Les fonctions mono-ligne agissent sur une seule ligne à la fois et retournent une seule
valeur par ligne;

❑ Un argument peut être: une constante, un nom d’une colonne ou une expression;
❑ Caractéristiques des fonctions mono-ligne :
➢ Agissent sur chaque ligne retournées dans la requête;
➢ Retournent un résultat par ligne;
➢ Peuvent retourner une donnée dont le type est différent du type de la donnée initiale;
➢ Peuvent ne pas avoir des arguments ou accepter un ou plusieurs arguments;
➢ Sont utilisées dans les clauses SELECT, WHERE et ORDER BY;
➢ Peuvent être imbriquées (appeler une fonction à l’intérieur d’une autre fonction).
Le Langage SQL: Les Fonctions - Mono-Ligne

❑ Dans le cadre de ce cours nous étudierons les fonction


mono-ligne suivantes:
➢ Les fonctions de chaînes de caractères ;
➢ Les fonctions de nombres ;
➢ Les fonctions de dates
Le Langage SQL: Les Fonctions - Mono-Ligne

❑ Principaux Fonctions de Chaines de Caractères


Le Langage SQL: Les Fonctions - Mono-Ligne

❑ Principaux Fonctions de Nombres


Le Langage SQL: Les Fonctions - Mono-Ligne

❑ Principaux Fonctions de Dates


Le Langage SQL: Les Fonctions - Multi-Ligne
❑ Les fonctions multi-ligne (appelées aussi fonctions de groupe ou fonction d’agrégation)
agissent sur un groupe de lignes à la fois et retournent une seule valeur par groupe de
lignes;
❑ Les fonctions d’agrégation sont utilisées principalement pour réaliser les statistiques de
bases sur des tables, les principales fonctions sont:
➢ AVG;
➢ MAX;
➢ MIN;
➢ SUM;
➢ COUNT.
Le Langage SQL: Les Fonctions - Multi-Ligne (AVG)
❑ La fonction AVG permet de calculer la moyenne d’un ensemble de lignes de type
numérique, la syntaxe de cette fonction est la suivante:

❑ Le résultat est la somme des valeurs des lignes non nulles divisée par le nombre de
lignes dont les valeurs non nulles.
Le Langage SQL: Les Fonctions - Multi-Ligne (AVG)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne (AVG)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL:Les Fonctions-Multi-Ligne(MIN/MAX)
❑ La fonction MAX permet de retourner la valeur maximale d’un ensemble de lignes, la
syntaxe de cette fonction est la suivante:

❑ La fonction MIN permet de retourner la valeur minimale d’un ensemble de lignes, la


syntaxe de cette fonction est la suivante:

❑ Les fonctions MAX et MIN s’appliquent pour les données de type numérique, caractères
et date
Le Langage SQL:Les Fonctions-Multi-Ligne(MIN/MAX)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne (SUM)
❑ La fonction SUM permet de calculer la somme totale d’un ensemble de lignes de type
numérique, la syntaxe de cette fonction est la suivante:

❑ Le résultat est la somme des valeurs des lignes non nulles.


Le Langage SQL: Les Fonctions - Multi-Ligne (SUM)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne (Count)
❑ La fonction COUNT permet de calculer le nombre de lignes dans une table, la syntaxe
de cette fonction est la suivante:

❑ Pour connaitre le nombre de lignes non nulles pour une colonne utiliser la syntaxe
suivante

❑ Pour connaitre le nombre de lignes distinctes (sans compter les valeurs en double)
pour une colonne utiliser la syntaxe suivante:
Le Langage SQL: Les Fonctions - Multi-Ligne (Count)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne(Group By)
❑ Jusqu’à maintenant nous avons vu comment appliquée les fonctions de groupes sur une
table comme un seul groupe de données, mais parfois il est nécessaire de diviser les
données d'une table en groupes plus petits, par exemple compter le nombre de
médecins exerçant dans chaque service ou afficher les sommes des salaires par service;
Une solution c’est d’utiliser la clause GROUP BY suivant la syntaxe:

❑ Il faut toujours placer la clause GROUP BY après la clause WHERE et avant la


clause HAVING
Le Langage SQL: Les Fonctions - Multi-Ligne(Group By)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne(Group By)
❑ Il n'est pas obligatoire que les colonnes de la clause GROUP BY soient également
dans la clause SELECT (dans ce cas le résultat n’a pas de sens);
❑ Il est obligatoire de mettre la liste des colonnes de la clause SELECT dans la clause
GROUP BY(toute colonne sélectionnée avec une fonction de groupe doit figurer dans la
clause GROUP BY);
❑ Les lignes de la clause GROUP BY sont triées dans l'ordre croissant des colonnes,
pour changer cet ordre en utiliser la clause ORDER BY.
❑ Utiliser la clause WHERE, pour éliminer des lignes (l’élimination se fait avant la
création des groupes)
Le Langage SQL: Les Fonctions - Multi-Ligne(Group By)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Fonctions - Multi-Ligne(Having)
❑ De même qu’il est possible de sélectionner certaines lignes qui répondent à des critères
avec une clause WHERE, il est possible de sélectionner certains groupes de lignes
répondant à des critères en utilisant une clause HAVING;
❑ Pour restreindre des groupes de lignes utiliser la clause HAVING suivant la syntaxe:

❑ La clause HAVING est utilisée pour sélectionner des groupes alors que la clause
WHERE est utilisée pour sélectionner des lignes.
Le Langage SQL: Les Fonctions - Multi-Ligne(Having)

❑ Soit les extensions de la table Médecin :

❑ La requête suivante: ❑ Donne le résultat suivant:


Le Langage SQL: Les Sous-requêtes

❑Introduction
❑Sous-requête retournant une seule ligne
❑Sous-requête retournant plusieurs lignes
Le Langage SQL: Les Sous-requêtes - Introduction
❑ Une sous-requête est une requête SQL imbriquée dans une clause d’une autre requête
(requête à l'intérieur d'une autre) qui consiste à utiliser une requête pour réaliser une
autre; La forme générale d’une sous-requête est la suivante:

❑ Une sous-requête doit être placée entre parenthèse à la suite des clauses SQL suivantes:
➢ FROM;
➢ WHERE;
➢ HAVING.
❑ Operateur : dépend du résultat de la requête imbriquée : une ligne ou bien plusieurs
lignes
Le Langage SQL: Les Sous-requêtes - Introduction
❑ Les requêtes sont exécutées en commençant par la requête la plus profonde en remontant
vers la requête la plus externe : de Requete_n vers la Requete_1;
❑ Si la sous-requête retourne une seule ligne on utilise les opérateurs suivants:
>, >=, <, <=, =, !=
❑ Si la sous-requête retourne plusieurs lignes on utilise les opérateurs suivants:
➢ IN;
➢ ANY;
➢ SOME;
➢ ALL;
➢ EXISTS.
❑ Une sous-requête peut être utilisée dans une requête de type SELECT, INSERT, UPDATE
ou DELETE.
Le Langage SQL: Les Sous-requêtes–Une seul ligne

❑ Soit les extensions de la table Médecin :

❑ Permet d’afficher les noms et les prénoms des


❑ La requête suivante:
médecins gagnant plus que le médecin dont l’IdMed
est 10005
Le Langage SQL: Les Sous-requêtes-Plusieurs lignes
❑ Si la sous-requête retourne plusieurs lignes on utilise les opérateurs suivants:
➢ IN : compare une expression avec une liste de valeurs , signifie " égal à n'importe
laquelle des valeurs" ;
➢ ANY: compare une expression à au moins une des valeurs de la liste, signifie "au
moins une des valeurs" il est combiné avec l’un des opérateurs: =, <, >, <=, >= et
!= (= ANY est équivalent à IN);
➢ SOME: est un synonyme de ANY;
➢ ALL: compare une expression avec toutes les valeurs d'une liste, signifie "toutes
les valeurs" il est combiné avec l’un des opérateurs: =, <, >, <=, >= et !=;
➢ EXISTS : renvoie vrai si la sous-requête retourne au moins une ligne, n'est pas
précédé d'un opérateur.
Le Langage SQL: Les Sous-requêtes-Plusieurs lignes

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL: Les Sous-requêtes-Plusieurs lignes

❑ La requête suivante:

❑ Donne le résultat suivant:


Le Langage SQL: Les Sous-requêtes-Plusieurs lignes

❑ La requête suivante:

❑ Donne le résultat suivant: les médecins qui gagnent un salaire supérieur de tous les
médecin du service 1

Vous aimerez peut-être aussi