Vous êtes sur la page 1sur 36

Interrogation de données

Interrogation de données
Présentation de SQL

SQL est le langage standard pour la manipulation de BDR:


Facile à apprendre, comprendre et à utiliser aussi bien par des programmeurs
professionnel que par des utilisateurs profanes
Un langage complet pour gérer la BD:
Langage de Définition de Données LDD
Langage de Manipulation de Données LMD
Langage de requêtes LID
Langage de Contrôle de Données LCD

52
Interrogation de données
Langage de définition de données (LDD)

En tant que langage de définition des données, SQL permet de créer des tables dans une
base de données relationnelle, ainsi que d’en modifier ou en supprimer.
Création d’une base de données
CREATE DATABASE nom_bdd ;
Exemple:
CREATE DATABASE GestionProduits ;
Supprimer une Bases de données
DROP DATABASE nom_bdd ;
Exemple:
DROP DATABASE GestionProduits ;

53
Interrogation de données
Langage de définition de données (LDD)

Création de tables (CREATE)


Syntaxe: Exemple
CREATE Table nom_table CREATE TABLE Produit
( nom_attribut1 type_att1 [contrainte sur att1] ,
( idProduit CHAR(6) PRIMARY KEY,
nom_attribut2 type_att2 [contrainte sur att1] ,
….. nom VARCHAR(30) NOT NULL,
nom_attributn type_attn [contrainte sur attn] marque VARCHAR(30) CHECK (marque IN ('BMW', 'TOYOTA', 'PEUGEOT')),
); prix NUMBER(6,2),
couleur VARCHAR(10),
numMag NUMBER(10),
FOREIGN KEY (numMag) REFERENCES Magasin(numMag) );

54
Interrogation de données
Langage de définition de données (LDD)

Création de tables (CREATE)


Les types de données
type de données Description Exemples
CHAR(n) Chaine de caractères de longueur fixe = n ‘abc’

Chaine de caractères de long max n


VARCHAR(n) (peut stocker jusqu'à 2000 octets de caractères)
‘AZERTY’

Chaine de caractères de long max n


VARCHAR2(n) (peut stocker jusqu'à 4000 octets de caractères)
‘bonjour’

Nombre décimal qui a n chiffres significatifs et m


NUMBER(n,m) chiffres après la virgule.
10.9999

‘t’, ‘true’, ‘y’, ‘yes’, ‘on’, ‘1’


BOOLEAN Vrai/faux ‘f’, ‘false’, ‘n’, ‘no’, ‘off’, ‘0’

DATE Date: ‘DD-MM-YYYY’ '10-FEB-2023‘ / '10-02-2023‘


TIMESTAMP Date+temps: ‘DD-MM-YYYY HH:MM:SS’ ‘10-02-2023 12:53:01’

• Prenom CHAR(10) A h m e d
Ahmed

• Prenom VARCHAR2(10) A h m e d 55
Interrogation de données
Langage de définition de données (LDD)

Création de tables (CREATE)


Contrainte d’intégrité
Une contrainte d’intégrité est une règle qui permet de contrôler la validité et la cohérence des
valeurs entrées dans les différentes tables de la base.
Elle peut être définie sous deux formes :
Dans les commandes de création des tables.
Au moment de la modification de la structure de la table.

56
Interrogation de données
Langage de définition de données (LDD)

Création de tables (CREATE)


Contrainte d’intégrité
La contrainte porte sur un seul attribut.
Ces contraintes sont :
NOT NULL : Spécifie que pour toute occurrence, l’attribut doit avoir une valeur (la saisie de
ce champ est obligatoire).
UNIQUE : Toutes les valeurs de l’attribut sont distinctes.
PRIMARY KEY : L’attribut est une clé primaire pour la table.
REFERENCES table (attribut) : Il s’agit d’une contrainte d’intégrité fonctionnelle par rapport à
une clé ; chaque valeur de l’attribut doit exister dans la table dont l’attribut est référencée. On
utilise cette contrainte pour les clés étrangères.
CHECK : C’est une contrainte associée à une condition qui doit être vérifiée par toutes les
valeurs de l’attribut (domaine des valeurs de l’attribut)
57
Interrogation de données
Langage de définition de données (LDD)

Création de tables (CREATE)


Contrainte d’intégrité
La contrainte porte sur un ensemble d’attributs d’une même table.
Ces contraintes sont :
UNIQUE (attri, attrj,…) : L’unicité porte sur le n-uplet des valeurs.
PRIMARY KEY (attri, attrj,…) : Clé primaire de la table (clé composée).
FOREIGN KEY (attri, attrj, …) REFERENCES table (attrm, attrn, …) [ON….
Désigne une clé étrangère sur plusieurs attributs.
[ON DELETE { CASCADE | SET NULL }] : indique que la suppression d’une ligne de la
table de référence va entraîner automatiquement la suppression des lignes référencées.
[ON UPDATE …] : Cette clause spécifie l'action à effectuer lorsque la valeur de la clé
principale à laquelle la clé étrangère fait référence est mise à jour. Les options sont les
mêmes que pour ON DELETE.
58
Interrogation de données
Langage de définition de données (LDD)

Modification de la structure d’une table (ALTER)


Renommer une table
ALTER TABLE nom_bdd
RENAME TO nouveau_nom ;
Exemple:
ALTER TABLE Produit
RENAME TO Voiture;
Ajouter un attribut dans la table
ALTER TABLE nom_tab
ADD nom_attribut type [contrainte sur attribut] ;
Exemple:
ALTER TABLE Voiture
ADD quantitProd NUMBER(5) ;
59
Interrogation de données
Langage de définition de données (LDD)

Modification de la structure d’une table (ALTER)


Modifier un attribut de la table: permet la modification du type de données d'un attribut.
On ne peut qu’augmenter la taille d’un attribut.
ALTER TABLE nom_tab
MODIFY nom_attribut nouveau_type_attribut ;
Exemple:
ALTER TABLE Voiture
MODIFY quantitProd NUMBER(10) ;
Supprimer un attribut de la table
ALTER TABLE nom_tab
DROP COLUMN nom_attribut ;
Exemple:
ALTER TABLE Voiture
DROP COLUMN nom; 60
Interrogation de données
Langage de définition de données (LDD)

Modification de la structure d’une table (ALTER)


Ajouter une contrainte
ALTER TABLE nom_tab
ADD CONSTRAINT nom_containte définition_contrainte ;
Exemple:
ALTER TABLE Voiture
ADD CONSTRAINT ck_couleur CHECK ( couleur in ('blanc', 'rouge’, 'noir') );
Supprimer une contrainte
ALTER TABLE nom_tab
DROP CONSTRAINT nom_contrainte ;
Exemple:
ALTER TABLE Produit
DROP CONSTRAINT ck_QTE;
61
Interrogation de données
Langage de définition de données (LDD)

Modification de la structure d’une table (ALTER)


Déactivation d’une contrainte
ALTER TABLE nom_tab
DISABLE CONSTRAINT nom_containte ;
Exemple:
ALTER TABLE Voiture
DISABLE CONSTRAINT ck_couleur ;
Activation d’une contrainte
ALTER TABLE nom_tab
ENABLE CONSTRAINT nom_contrainte ;
Exemple:
ALTER TABLE Voiture
ENABLE CONSTRAINT ck_couleur ;
62
Interrogation de données
Langage de définition de données (LDD)

Suppression de tables (DROP)


DROP TABLE nom_tab;

Exemple:
DROP TABLE Produit ;

63
Interrogation de données
Langage de définition de données (LDD)

Création d’index

Qu’est ce qu’on veut dire par indexation?


Dans les livres un index désigne un tableau qui
permet d’accéder rapidement à un chapitre ou un
leçon particuliers
En l’absence d’un index, pour retrouver un
chapitre, on serait obligé de parcourir un livre
page par page
Comment alors ce mécanisme est utilisé dans les
bases de données?

64
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Comment alors ce mécanisme est utilisé dans les bases de
données?
Un disque est divisé entre plusieurs pistes et de secteurs.
L’intersection entre une piste et un secteur forme un bloc
Une base de données est un ensemble de fichiers stockés sur
un support persistant
Un fichier de données est constitué d’un ensemble
d’enregistrements (n-uplet)
Un ensemble d’enregistrements est stocké sur un bloc
Un fichier de données d’une table est stocké sur un ou
plusieurs blocs
65
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Exemple de bloc de données contenant une table client

66
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Exemple
Retrouver les client provenant de Marrakech
select * from client where ville='Marakech’;
Le serveur va parcourir la table client d’une manière
séquentielle à partir du premier enregistrement jusqu’au
dernier en vérifiant pour chaque client s’il satisfait ou non
ville='Marakech'

67
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Pour chercher des données dans une table, on parcours de
manière séquentiel tous les blocs associés à cette table
jusqu’à trouver le ou les enregistrements recherchés

Si seulement on connaissait les adresses des blocs où se trouvent les


valeurs recherchées
A quel point aura un impact sur la réduction du temps de recherche?
68
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Les index sont des structures de données qui améliorent les performances des requêtes
en accélérant le processus de recherche de données dans une table.
Utilisations courantes des index en SQL :
Accélération de la recherche
Les index permettent de rechercher des données plus rapidement en fournissant
un moyen efficace d'accéder directement aux enregistrements pertinents dans une
table, plutôt que de parcourir l'intégralité de la table.

Optimisation des requêtes


Les index peuvent améliorer les performances des requêtes en optimisant
l'exécution des opérations de recherche, de tri et de regroupement.
69
Interrogation de données
Langage de définition de données (LDD)
Création d’index
Utilisations courantes des index en SQL :
Contraintes d'intégrité :
Les index peuvent être utilisés pour imposer des contraintes d'intégrité, comme la
contrainte d'unicité, en garantissant qu'aucune valeur dupliquée n'est autorisée dans
la colonne indexée.
Joindre les opérations :
Lors de l'exécution de jointures entre plusieurs tables, les index peuvent être utilisés
pour améliorer les performances en évitant des analyses approfondies de l'ensemble
des données.
Optimisation des opérations de tri :
Les index facilitent les opérations de tri, ce qui peut être crucial pour certaines
requêtes.
70
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index=couple[clé, adresse]
Clé: une Valeur de la
colonne indexée
Adresse: l’adresse du
bloc
Exemple: index sur la
colonne ville de la table
client

71
Interrogation de données
Langage de définition de données (LDD)

Création d’index
B-arbre (index multi-
niveaux): est la technique la
plus utilisée dans les bases de
données relationnelles.
Un index B-arbre est une
structure multi-niveaux appelé
arbre équilibré contenant un
nœud racine et des pointeurs
vers les niveaux bas suivants
dans l’arbre.
Utilisé pour les requêtes
d’égalité: =,<>,>,<,<= et >=
72
Interrogation de données
Langage de définition de données (LDD)

Création d’index

73
Interrogation de données
Langage de définition de données (LDD)

Création d’index
B-arbre (index multi-niveaux)
Syntaxe:
CREATE [UNIQUE] INDEX nom_index ON nom_table (Attr1[ASC/DESC],
Attr2[ASC/DESC], …);
L'option UNIQUE permet de définir la présence ou non de doublons pour
les valeurs de l’attribut.
Les options ASC/DESC permettent de définir un ordre de classement des
valeurs présentes dans l’attribut.

74
Interrogation de données
Langage de définition de données (LDD)

Création d’un index


Exemple:
CREATE TABLE Produits ( ID_Produit INT PRIMARY KEY, Nom_Produit
VARCHAR(100), Prix_Unitaire DECIMAL(10, 2));
-- Création de l'index composite avec ordre ascendant et descendant
CREATE INDEX idx_Produits_Nom_Prix ON Produits(Nom_Produit ASC,
Prix_Unitaire DESC);
ASC est utilisé pour spécifier l'ordre ascendant pour la colonne Nom_Produit.
DESC est utilisé pour spécifier l'ordre descendant pour la colonne Prix_Unitaire.
Cela signifie que lorsque vous effectuez des requêtes de recherche ou de tri qui
impliquent ces colonnes dans l'index, les valeurs pour Nom_Produit seront triées
par ordre alphabétique croissant, tandis que les valeurs pour Prix_Unitaire seront
triées par ordre décroissant. 75
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index bitmap:
recommandé en particulier
si la cardinalité de l’attribut
indexé est faible (faible
nombre de valeurs
distinctes par rapport au
nombre total de lignes dans
la table)
Syntaxe:
CREATE INDEX index_bitmap
ON ma_table (colonne2)
USING BITMAP;
76
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index de jointure:
précalculer la jointure et
stocker le résultat dans une
table

77
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index par hachage:
est très performant pour les recherches
d’égalité: = ou <>
Ne fonctionne pas avec les recherche
par intervalle et pour les inégalité
Permet un accès direct à un
enregistrement dans le cas des valeurs
uniques
Est préconisé pour les valeurs uniques

78
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index par hachage:
Syntaxe:
CREATE [UNIQUE] INDEX nom_index ON nom_table (colonne)
USING HASH;

79
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index par hachage:

80
Interrogation de données
Langage de définition de données (LDD)

Création d’index
Index par hachage:

81
Interrogation de données
Langage de définition de données (LDD)

Création d’un index


Stratégie pour la création des index:
Ne pas créer d’index pour les tables de faible cardinalité (moins de quelques
centaines de lignes)
Ne pas créer d’index sur une colonne qui ne possède que peu de valeurs
différentes
Indexer les colonnes qui interviennent souvent dans les clauses:
Where
Group by
Order by
Ainsi que les colonnes de jointure

83
Interrogation de données
Langage de définition de données (LDD)

Suppression d’un index


Syntaxe:
DROP INDEX Nom_Index [ON Nom_Table];
Remarque:
Un index est automatiquement supprimé dès qu’on supprime la table à laquelle il
appartient

84
Interrogation de données
Langage de définition de données (LDD)

Création de vues
L'architecture ANSI/SPARC, datant de 1975,
définit des niveaux d'abstraction pour un
système de gestion de bases de données :
Niveau interne (ou physique) : il définit la
façon selon laquelle sont stockées les
données et les méthodes pour y accéder
Niveau conceptuel : appelé aussi MCD
(modèle conceptuel des données) ou MLD
(modèle logique des données). Il définit
l'arrangement des informations au sein de
la base de données
Niveau externe : il définit les vues des
utilisateurs 85
Interrogation de données
Langage de définition de données (LDD)

Création de vues
Une vue est une vision partielle ou particulière des données d’une ou plusieurs tables
de la base.
C’est une fenêtre dynamique sur la base de données.
La définition d’une vue est donnée par un select qui indique les données de la base qui
seront vues.
Les utilisateurs pourront consulter la base (avec certaines restrictions) à travers la vue,
c-à-d manipuler les données renvoyées par la vue comme si c’était des données d’une
table réelle.
Seule la définition de la vue est enregistrée dans la base, et pas les données de la vue.
On peut parler de table virtuelle (il n’existe pas de fichier physique qui présente la vue).
A deux instants distincts, le « contenu » d’une vue peut changer (si le contenu des
tables qui entrent dans la description de la vue a évolué). En effet, le contenu d’une vue
86
est recalculé à chaque utilisation de la vue par SQL.
Interrogation de données
Langage de définition de données (LDD)

Création de vues
Quatre raisons d’utiliser des vues
Effet macro : remplacer une requête compliquée par des requêtes plus simples
Confidentialité: les vues peuvent également être utilisées pour restreindre l'accès aux
données sensibles en créant une vue qui inclut uniquement les colonnes nécessaires à un
utilisateur particulier ou à un groupe d'utilisateurs.
Contraintes d’intégrité: les vues peuvent être utilisées pour appliquer des contraintes
d'intégrité au niveau logique. Par exemple, vous pouvez créer une vue qui combine des
données provenant de plusieurs tables, garantissant ainsi que les données restent
cohérentes et conformes aux règles métier.
Augmenter l’indépendance logique: Si la structure de la base de données change, les vues
peuvent être ajustées pour refléter ces changements sans impacter les applications qui
utilisent ces vues.
87

Vous aimerez peut-être aussi