Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Systèmes d’Information et Application
Année Universitaire SIA TD3 SQL – Le langage de manipulation des données (LMD) – partie 1 Emmanuel Fruchart
2
Contact Web: http://happymaths.pagesperso-orange.fr
3
Descriptif du TD Objectif :
Savoir interroger et modifier les données d’une base de données déjà implémentée. Partie 1 : travail sur une seule table. Supports : SQL : le Langage de Manipulation des Données.
4
Contenu du TD Rappel de cours LMD SQL sur une seule table 0h30
Etude de cas Insertion, interrogation, modification, suppression de données sur une base existante 1h30 TNE 3 Exercice 2h
5
Langage de Manipulation des Données (LMD)
Présentation Langage de Manipulation des Données (LMD)
6
LMD : Langage de Manipulation des Données
LMD (DML en anglais) : Le LMD est l'ensemble des commandes permettant de : insérer des données. interroger des données. modifier des données. supprimer des données. d’une base de données relationnelle.
7
LMD : Insertion des données
Présentation LMD : Insertion des données
8
LMD : Insertion de données dans une table
Instruction standard SQL INSERT INTO nom_table VALUES (val_col1, val_col2, …); Les valeurs de toutes les colonnes doivent être renseignées, éventuellement avec la valeur NULL. INSERT INTO nom_table(col1, col2, …) Seules les colonnes 1, 2 sont renseignées, autres valeurs positionnées à NULL, ou à valeur par défaut de la colonne.
9
LMD : Interrogation des données d’une seule table
Présentation LMD : Interrogation des données d’une seule table
10
LMD : Interrogation d’une seule table
Instruction standard SQL SELECT [ALL | DISTINCT] clause_de_selection FROM nom_table [WHERE critere_de_selection] [GROUP BY clause_de_regroupement] [HAVING critere_de_regroupement] [ORDER BY critere_de_tri];
11
LMD : Interrogation d’une seule table
Options de la clause de sélection ALL permet de garder tous les t-uplets même ceux en double (option par défaut) DISTINCT permet d'éliminer les doublons.
12
LMD : Mise à jour des données
Présentation LMD : Mise à jour des données
13
LMD : Mise à jour de données
Instruction standard SQL UPDATE nom_table SET col1 = expr1, col2 = expr2, … [WHERE critere_de_selection]; Avec cette syntaxe, les colonnes 1, 2, … des lignes vérifiant éventuellement un critère de sélection seront mises à jour.
14
LMD : Suppression des données
Présentation LMD : Suppression des données
15
LMD : Suppression de données
Instruction standard SQL DELETE FROM nom_table [WHERE critere_de_selection]; Avec cette syntaxe, les lignes vérifiant éventuellement un critère de sélection seront supprimées. Si aucun critère de type WHERE n'est spécifié, toutes les données de la table sont effacées.
16
Etude de cas : utilisation du LMD
Présentation Etude de cas : utilisation du LMD
17
Etude de cas : schéma relationnel BDCours
18
Insertion de données (jeu de données)
Présentation Insertion de données (jeu de données)
19
Etude de cas : insertions 1
insert into annee values (2014, 'Année Scolaire ', 150, 150); insert into periode values ('1T', 'Premier trimestre'); insert into classe values ('2ND1', 'Seconde 1'); insert into matiere values ('FRAN', 'Français');
20
Etude de cas : insertions 2
insert into professeur values ('MOREAUPA', 'Moreau', 'Patrick', 'H', ' ', 'FRAN'); insert into professeur_rem ('CASTELAI', 'Castelain', 'Alice', 'F', NULL, 'FRAN'); insert into enseignement values (2014, '1T', ‘TSES', ‘FRAN', ‘MOREAUPA', 11.5);
21
Interrogation de données (une seule table) :
Présentation Interrogation de données (une seule table) : Clauses de sélection
22
Etude de cas : interrogation
SELECT nom FROM professeur; Ou SELECT ALL nom FROM professeur; On garde tous les noms, même ceux en double. SELECT DISTINCT nom FROM professeur; On élimine les éventuels doublons.
23
Etude de cas : interrogation
nom Dubois Leroy Moreau Durand Morel Fournier Petit Garcia Thomas Girard Lambert Lefebvre Martinez Roussel nom Dubois Leroy Moreau Durand Morel Fournier Petit Garcia Thomas Girard Lambert Lefebvre Martinez Roussel ALL / DISTINCT
24
Etude de cas : interrogation
SELECT * FROM professeur; Ou SELECT id_professeur, nom, prenom, sexe, date_naissance, id_matiere FROM professeur; Le symbole * représente l'ensemble des colonnes de la table professeur. SELECT nom, prenom, date_naissance On n’affiche que le contenu des colonnes spécifiées.
25
Etude de cas : interrogation
id_professeur nom prenom sexe date_naissance id_matiere DUBOISAM Dubois Amélie F ANGL LEROYTHO Leroy Thomas H DUBOISGE Gérard FRAN MOREAUPA Moreau Patrick DURANDST Durand Stéphane HGEO MORELSTE Morel Stéphanie FOURNIER Fournier Nicolas MATH PETITCHR Petit Christophe GARCIATH Garcia Thierry PHCH THOMASVI Vincent GIRARDAN Girard Antoine PHIL LAMBERTA Lambert Alice NULL LEFEBVRE Lefebvre Géraldine SCVT MARTINEZ Martinez Nathalie LEROYPHI Philippe SECS ROUSSELJ Roussel Jeanne
26
Etude de cas : interrogation
Incorporation de colonnes constantes chaînes SELECT nom, prenom, sexe, 'DATE DE NAISSANCE', date_naissance FROM professeur; numériques SELECT 2015, nom, prenom, sexe, date_naissance FROM professeur;
27
Etude de cas : interrogation
nom prenom sexe DATE DE NAISSANCE date_naissance Dubois Amélie F Leroy Thomas H Gérard Moreau Patrick Durand Stéphane Morel Stéphanie Fournier Nicolas Petit Christophe Garcia Thierry Vincent Girard Antoine Lambert Alice NULL Lefebvre Géraldine Martinez Nathalie Philippe Roussel Jeanne
28
Etude de cas : interrogation
Utilisation de fonctions arithmétiques SELECT id_annee , desc_annee FROM annee; SELECT id_annee, nb_filles + nb_garcons FROM annee; SELECT id_annee, 'Pourcentage de filles :', nb_filles * 100 / (nb_filles + nb_garcons)
29
Etude de cas : interrogation
id_annee desc_annee 14 Année Scolaire 15 Année Scolaire id_annee nb_filles + nb_garcons 2014 300 2015 299 id_annee Pourcentage de filles : nb_filles * 100 / (nb_filles + nb_garcons) 2014 2015
30
Etude de cas : interrogation
Utilisation de fonctions arithmétiques ensemblistes SELECT COUNT(*) FROM professeur; SELECT COUNT(DISTINCT nom) FROM professeur; SELECT MAX(nb_filles), MIN(nb_filles) FROM annee; SELECT SUM(nb_filles), AVG(nb_garcons)
31
Etude de cas : interrogation
COUNT(prenom) 16 COUNT(DISTINCT nom) 14 MAX(nb_filles) MIN(nb_filles) 157 150 SUM(nb_filles) AVG(nb_garcons) 307
32
Etude de cas : interrogation
Utilisation de fonctions littérales Majuscules, minuscules SELECT UPPER(nom), LOWER(prenom), date_naissance FROM professeur; Concaténation SELECT CONCAT(UPPER(nom), ' ', LOWER(prenom)), date_naissance FROM professeur; Ou SELECT UPPER(nom) || ' ' || LOWER(prenom), date_naissance FROM professeur;
33
CONCAT(UPPER(nom), ' ', LOWER(prenom))
Etude de cas : interrogation CONCAT(UPPER(nom), ' ', LOWER(prenom)) date_naissance DUBOIS amélie LEROY thomas DUBOIS gérard MOREAU patrick DURAND stéphane MOREL stéphanie FOURNIER nicolas PETIT christophe GARCIA thierry THOMAS vincent GIRARD antoine LAMBERT alice NULL LEFEBVRE géraldine MARTINEZ nathalie LEROY philippe ROUSSEL jeanne
34
Etude de cas : interrogation
Sous-chaîne SELECT DISTINCT SUBSTRING(prenom FROM 1 FOR 3) FROM professeur; Longueur de la chaîne SELECT ALL prenom, CHARACTER_LENGTH(prenom) FROM professeur;
35
CHARACTER_LENGTH(prenom) SUBSTRING(prenom FROM 1 FOR 3)
Etude de cas : interrogation prenom CHARACTER_LENGTH(prenom) Amélie 6 Thomas Gérard Patrick 7 Stéphane 8 Stéphanie 9 Nicolas Christophe 10 Thierry Vincent Antoine Alice 5 Géraldine Nathalie Philippe Jeanne SUBSTRING(prenom FROM 1 FOR 3) Amé Tho Gér Pat Sté Nic Chr Thi Vin Ant Ali Nat Phi Jea
36
Interrogation de données (une seule table) :
Présentation Interrogation de données (une seule table) : Critères de sélection
37
Etude de cas : interrogation
Mots clés =, <>, <, >, <=, >= SELECT * FROM professeur WHERE nom = 'Leroy'; WHERE nom > 'Lombart'; SELECT * FROM annee WHERE nb_filles > 150;
38
Etude de cas : interrogation
Mots clés AND et OR SELECT * FROM professeur WHERE (nom = 'Leroy') OR (prenom = 'Géraldine'); WHERE (nom > 'Lombart') AND (prenom < 'Marc'); SELECT * FROM enseignement WHERE (id_periode = '1T') AND ( (moyenne_classe >= 12) OR (moyenne_classe < 8.5) );
39
Etude de cas : interrogation
Mots clés IN et BETWEEN SELECT * FROM enseignement WHERE moyenne_classe BETWEEN 11.0 AND 11.5; SELECT * FROM professeur WHERE prenom IN ('Jacques', 'Thomas', 'Pierre'); WHERE prenom IN ('Géraldine', 'Thomas', 'Antoine') AND nom < 'Latour';
40
Etude de cas : interrogation
Mot clé LIKE On cherche des valeurs chaînes de caractères correspondant à un modèle donné. Le caractère '%' modélise une chaine quelconque de caractères (incluant une chaine vide), et le caractère '_' modélise 1 seul caractère. SELECT * FROM professeur WHERE nom LIKE '_e_o_'; WHERE prenom LIKE '___r%';
41
Etude de cas : interrogation
Mot clé NOT SELECT * FROM enseignement WHERE moyenne_classe NOT BETWEEN 8.0 AND 14.0; SELECT * FROM professeur WHERE prenom NOT IN ('Amélie', 'Thomas', 'Gérard', 'Stéphane', 'Patrick'); SELECT * FROM professeur WHERE prenom NOT LIKE '___r%';
42
Etude de cas : interrogation
Mots clés IS NULL et IS NOT NULL SELECT nom, prenom FROM professeur WHERE date_naissance IS NULL; SELECT nom, prenom FROM professeur WHERE date_naissance IS NOT NULL and prenom NOT LIKE '_____t%';
43
Etude de cas : interrogation
Utilisation de fonctions littérales SELECT UPPER(nom), LOWER(prenom), date_naissance FROM professeur WHERE CHARACTER_LENGTH( CONCAT(nom, prenom)) BETWEEN 12 AND 15; SELECT prenom FROM professeur WHERE SUBSTRING(prenom FROM 1 FOR 3) IN ('Pie', 'Mar', 'Dan', 'Pat') AND date_naissance IS NOT NULL;
44
Interrogation de données (une seule table) : Clauses de regroupement
Présentation Interrogation de données (une seule table) : Clauses de regroupement
45
Etude de cas : interrogation
Les colonnes dans la clause GROUP BY sont obligatoirement présentes dans la clause de sélection, accompagnées de fonctions de groupe ! SELECT nom, COUNT(*) FROM professeur WHERE SUBSTRING(prenom FROM 1 FOR 1) <> 'J' GROUP BY nom; SELECT id_annee, SUBSTRING(id_professeur FROM 1 FOR 1), AVG(moyenne_classe) FROM enseignement GROUP BY id_annee, SUBSTRING(id_professeur FROM 1 FOR 1);
46
SUBSTRING(id_professeur FROM 1 FOR 1)
Etude de cas : interrogation nom COUNT(*) Dubois 2 Durand 1 Fournier Garcia Girard Lambert Lefebvre Leroy Martinez Moreau Morel Petit Thomas id_annee SUBSTRING(id_professeur FROM 1 FOR 1) AVG(moyenne_classe) 2014 D F G L
47
Interrogation de données (une seule table) : Critères de regroupement
Présentation Interrogation de données (une seule table) : Critères de regroupement
48
Etude de cas : interrogation
On élimine certains groupes selon un critère sur le groupe. SELECT nom, COUNT(*) FROM professeur WHERE SUBSTRING(prenom FROM 1 FOR 1) <> 'J' GROUP BY nom HAVING COUNT(*) > 1; SELECT id_annee, SUBSTRING(id_professeur FROM 1 FOR 1), AVG(moyenne_classe) FROM enseignement GROUP BY id_annee, SUBSTRING(id_professeur FROM 1 FOR 1) HAVING AVG(moyenne_classe) > 12.0;
49
SUBSTRING(id_professeur FROM 1 FOR 1)
Etude de cas : interrogation nom COUNT(*) Dubois 2 Leroy id_annee SUBSTRING(id_professeur FROM 1 FOR 1) AVG(moyenne_classe) 2014 G L
50
Interrogation de données (une seule table) :
Présentation Interrogation de données (une seule table) : Critères de tri
51
Etude de cas : interrogation
Tri sur une seule colonne : ASC tri croissant DESC tri décroissant. Tri par défaut : ASC. SELECT DISTINCT prenom FROM professeur ORDER BY prenom; Ou … ORDER BY prenom ASC; ORDER BY 1;
52
Etude de cas : interrogation
prenom Alice Amélie Antoine Christophe Géraldine Gérard Jeanne Nathalie Nicolas Patrick Philippe Stéphane Stéphanie Thierry Thomas Vincent
53
Etude de cas : interrogation
Tri sur plusieurs colonnes : SELECT nom, prenom FROM professeur WHERE SUBSTRING(prenom FROM 1 FOR 3) IN ('Ant', 'Mar', 'Dan', 'Pat') ORDER BY prenom DESC, nom ASC; Ou … ORDER BY 2 DESC, 1 ASC;
54
Etude de cas : interrogation
nom prenom Moreau Patrick Girard Antoine
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.