Vous êtes sur la page 1sur 59

BASES DE DONNEES AVANCEES

Lotfi NAJDI
Année Universitaire 2020 / 2021
Licence Professionnelle Génie Informatique
Faculté Polydisciplinaire de Taroudant
Modèle relationnel

L’informaticien britannique, Dr Edgar Frank Codd a proposé le modèle relationnel pour


les systèmes de bases de données en 1970.

Constitue la base pour les systèmes de gestion de base de données relationnels SGBDR
(RDBMS)

Le modèle relationnel est caractérisé par :

• la notion de relation: un tableau à deux dimensions qui contient un ensemble de n-


uplets (les lignes).

• Un ensemble d’opérations d'algèbre relationnelle telles que la


projection, l'intersection pour retourner de nouvelles relations à partir des relations
enregistrées dans la base de données.
Base de données relationnelle
Une base de données où l'information est organisée dans des tableaux à deux
dimensions appelés des relations ou tables

Une base de données consiste en une ou plusieurs relations.

Les lignes de ces relations sont appelées des nuplets ou enregistrements. Les colonnes
sont appelées des attributs.

Table Employees Table Departments


Base de données relationnelle

Chaque ligne est identifiée de manière unique par une clé primaire (absence
de redondance).

les relations entre les tables sont définies par des clés primaires et étrangères

Les données sur plusieurs tables peuvent être consolidées en utilisant les clés
étrangères.

Clé primaire Clé étrangère Clé primaire


Langage SQL

 SQL (sigle de Structured Query Language, en français langage de requête structurée )

 Développée chez IBM en 1970 par Donald Chamberlin et Raymond Boyce

 Adopté par l'Institut de normalisation américaine (ANSI) et par l'ISO comme langage
standard pour l’exploitation des bases de données relationnelles.

 Langage très largement utilisé

 Efficace, facile à apprendre et à utiliser

 Très riche fonctionnellement (définir, récupérer et manipuler les données)

 SQL n’est pas sensible à la casse


Types d’instructions SQL

SELECT Langage de manipulation de données


INSERT Data Manipulation Language (DML)
UPDATE Instructions pour interrogation et modification des
DELETE données
MERGE
CREATE Langage de définition de données
ALTER Data Definition Language (DDL)
DROP instructions pour la définition des objets de la
RENAME base de données.
TRUNCATE
COMMENT
GRANT Langage de contrôle de données
REVOKE Data control language (DCL)
gestion des autorisations et des privilèges
COMMIT Gestion des modifications apportées par les
ROLLBACK instruction DML.
SAVEPOINT
Schéma HR
Syntaxe d'une requête d'interrogation SQL

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM table;

• SELECT identifie les colonnes à afficher.

• FROM identifie la table contenant ces colonnes.


Exemples de requête SQL

Sélectionner toutes les colonnes

SELECT * FROM departments;


Exemples de requête SQL

Sélectionner des colonnes particulières

SELECT department_id, location_id FROM departments;


Expressions arithmétiques

Permettent de créer des expressions avec des données numériques et date à l’aide des
opérateurs suivants :

+ Addition
- Soustraction
* Multiplication
/ Division
Utilisation des opérateurs arithmétiques

SELECT last_name, salary, salary + 300


FROM employees;
Priorité des opérateurs

SELECT last_name, salary, 12*salary+100


FROM employees;
Priorité des opérateurs Notez que vous pouvez ajouter des
parenthèses chaque fois que vous
voulez imposer un autre ordre de
priorité ou rendre l'ordre de priorité
plus clair.

SELECT last_name, salary, 12*(salary+100)


FROM employees;
Gestion des valeurs NULL

 NULL représente une valeur manquante (non assignée, inconnue ou inapplicable)

 NULL est différent de zéro ou de l’espace vide (zéro est un nombre et l'espace vide
est un caractère)

SELECT last_name, job_id, salary, commission_pct


FROM employees;
Null et expressions arithmétiques

Expression arithmétique contenant une valeur Null sera évaluée comme Null

SELECT last_name,job_id, salary, commission_pct, 12*salary*commission_pct


FROM employees;
Alias sur une colonne

 Renommer le nom d’une colonne dans les résultats d’une requête SQL

 Avoir un nom facilement identifiable

 Pratique dans le cas des calculs

 Nécessite des guillemets si l’alias contient des espaces ou des caractères

spéciaux
Utiliser la commande
Alias sur une colonne AS de manière explicite Mettre un
simple espace

SELECT last_name AS name, commission_pct comm


FROM employees;
Alias sur une colonne

SELECT last_name Name , salary*12 "Annual Salary"


FROM employees;
Opérateurs de concaténation des chaines de caractères

L'opérateur || permet de concaténer deux chaînes ou plus.

SELECT last_name || job_id AS "Employees"


FROM employees;
Opérateurs de concaténation des chaines de caractères

L'opérateur || permet de concaténer deux chaînes ou plus.

SELECT last_name || ' is a ‘ || job_id AS "Employee Details"


FROM employees;
Lignes en doubles

La requête SELECT affiche par défaut toutes les données d’une ou plusieurs colonnes.
Peut afficher des lignes en doubles.

SELECT department_id
FROM employees;
Le mot clé DISTINCT

Pour éliminer les doublons lors de l’affichage des résultats de Select

SELECT DISTINCT department_id


FROM employees;
Commande DESCRIBE

Permet d’afficher la structure d’une table

DESC[RIBE] tablename

DESCRIBE employees
Récapitulatif

Ecrire une requête SELECT:

• Afficher toutes les lignes et colonnes d’une table

• Afficher des colonnes spécifiques

• Utiliser les expressions arithmétiques dans Select

• Utiliser les alias sur colonnes pour des résultats plus parlants

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM table;
Extraire les lignes respectant une condition.

Obtenir juste les informations désirées.

Retourner juste
les employées
appartenant au
département 60
Extraire les lignes respectant une condition.

 Limiter les lignes retournées en utilisant la clause WHERE


 WHERE est utilisée en complément à SELECT après la clause FROM.

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM table
[WHERE condition(s)];
Clause WHERE

SELECT employee_id, first_name, last_name, email, hire_date,


department_id
FROM employees
WHERE department_id = 60;
Clause WHERE

Les conditions portant sur les chaînes de caractères doivent être mises entre apostrophes.

Les chaines de caractères sont sensibles à la casse.

SELECT last_name, job_id, department_id


FROM employees
WHERE last_name = 'Whalen' ;

SELECT last_name, job_id, department_id


FROM employees
WHERE last_name = 'whalen' ;
Clause WHERE

Les conditions portant sur les dates doivent être mises entre apostrophes.
Les dates doivent être exprimées dans le format d’affichage par défaut

select sysdate from dual;

SELECT *
FROM employees
WHERE hire_date = '07/06/2002'
Opérateurs de comparaison

Opérateur Description
= égal à
<> différent de
> supérieur
>= supérieur ou égal à
< inférieur
<= inférieur ou égal à
Prédicats de comparaison

Prédicat Description
IN Détermine si la valeur spécifiée correspond à une
valeur quelconque dans une sous-requête ou une liste
de plusieurs valeurs possibles.
BETWEEN ...AND... Spécifie une plage de valeur à vérifier (entre valeur 1
et valeur 2 ) , cas des nombres ou dates.

LIKE Détermine si une chaîne de caractères correspond à un


pattern spécifique.

IS NULL Valeur est NULL


Utilisation des opérateurs de comparaison

SELECT first_name, last_name, salary, salary


FROM employees
WHERE salary <= 3000 ;
Utilisation des opérateurs de comparaison

Afficher les valeurs comprises dans un intervalle donné, à l’aide de BETWEEN


Limite inférieure Limite supérieur

SELECT first_name, last_name, salary, salary


FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
Utilisation des opérateurs de comparaison

Vérifier la condition pour une liste de plusieurs valeurs possibles avec IN .

SELECT employee_id, last_name, salary, manager_id


FROM employees
WHERE manager_id IN (100, 101, 201) ;
Utilisation des opérateurs de comparaison
 Utilisez LIKE pour effectuer des recherches génériques des valeurs valides pour les
chaînes de caractères .
 Les conditions de recherche peuvent contenir soit des chaînes de caractères littérales,
soit des chiffres :
• % indique zéro ou plusieurs caractères.
•_ indique un seul caractère.

SELECT first_name , last_name , salary


FROM employees
WHERE first_name LIKE 'S%' ;
Utilisation des opérateurs de comparaison

Les caractères génériques (%, _) peuvent être combinés avec des chaînes
de caractères littérales pour spécifier le pattern à rechercher :

SELECT first_name, last_name , salary


FROM employees
WHERE last_name LIKE '_o%' ;
Utilisation des opérateurs de comparaison

Vérifier les valeurs Null avec le prédicat IS NULL

SELECT first_name, last_name, salary


FROM employees
WHERE manager_id IS NULL ;
Définir les conditions à l'aide des opérateurs logiques

Opérateur Description
AND Combine deux expressions booléen et retourne TRUE
lorsque toutes les expressions sont TRUE.
OR Combine deux expressions booléennes et retourne TRUE
si l'une d'entre elles est TRUE.
NOT Fournit le complément du résultat d'une condition de
recherche. Retourne TRUE si la condition est FALSE
Opérateurs logiques: AND

SELECT employee_id, last_name, job_id, salary


FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%' ;
Opérateurs logiques: OR

SELECT employee_id, last_name, job_id, salary


FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%' ;
Opérateurs logiques: NOT IN

SELECT last_name, job_id


FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
Priorité entre AND et OR
SELECT last_name, job_id, salary SELECT last_name, job_id, salary
FROM employees FROM employees
WHERE job_id = 'SA_REP' WHERE ( job_id = 'SA_REP' OR job_id = 'AD_PRES')
OR job_id = 'AD_PRES' AND salary > 15000;
AND salary > 15000;
Tri avec ORDER BY
Trier les lignes du résultat d’une requête SQL à l’aide de la clause ORDER BY :
• ASC: résultats classés par ordre ascendant(par default)

• DESC: résultats triés selon l’ordre descendant

La clause ORDER BY est placée en dernier dans la déclaration SELECT :

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date ;

Par défaut le tri est


effectué selon
l’ordre croissant
Tri avec ORDER BY

Tri par ordre décroissant :

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date DESC ;

Tri selon l’ordre


descendant
avec Desc
Tri avec ORDER BY
Tri par alias de colonne :

SELECT employee_id, last_name, salary*12 annual_salary


FROM employees
ORDER BY annual_salary
Trie avec ORDER BY

Tri avec la position numérique de la colonne :

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY 3
Trie avec ORDER BY

Tri selon plusieurs colonnes

SELECT last_name, department_id, salary


FROM employees
ORDER BY department_id, salary DESC;
Variables de substitution

Une variable de substitution est un nom de variable utilisateur, préfixé par un ou


deux (&).

Les variables de substitution peuvent être utilisées dans :


• les conditions WHERE

• les clauses ORDER BY

• les expressions de colonnes

• les noms de tables

• Une requête SELECT complète


Variables de substitution

Utilisez une variable préfixée par le caractère & pour demander un paramètre à renseigner par
l’utilisateur:

SELECT employee_id, last_name, salary, department_id


FROM employees
WHERE employee_id = &employee_num ;
Variables de substitution

Les apostrophes doivent être utilisées avec les variables de substitution pour les dates
et les chaines de caractères:

SELECT last_name, department_id, salary*12


FROM employees
WHERE job_id = '&job_title' ;
Variables de substitution

Spécifier les noms de colonnes, les expressions et du texte de manière générale.

SELECT employee_id, last_name, job_id,&column_name


FROM employees
WHERE &condition
ORDER BY &order_column ;
Variables de substitution

Le caractère double && est employé pour réutiliser la valeur de la variable sans
redemander de la renseigner à chaque reprise :

SELECT employee_id, last_name, job_id, &&column_name


FROM employees
ORDER BY &column_name ;
Récapitulatif
 Utiliser la clause WHERE pour restreindre les lignes retournées par Select :

• Opérateurs de comparaison

• Prédicats BETWEEN, IN, LIKE et NULL

• Opérateurs logiques AND, OR et NOT

 Utiliser la clause ORDER BY pour trier les résultats.

 Utiliser les variables de substitution pour trier et filtrer au moment de l'exécution .

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]] ;