107 sql structured query language int management
TRANSCRIPT
![Page 1: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/1.jpg)
1
SQLStructured Query Language
INT Management
![Page 2: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/2.jpg)
2
Plan du document
Introduction slide 109 BD Exemple : les vins slide 112 Définition des données slide 114 Manipulation des données
Recherche slide 119 Mises à jour slide 147
Traitement d’une requête slide 151
![Page 3: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/3.jpg)
3
Langages de requêtes Langage de requêtes
Langage de Définition de Données Langage de Manipulation de Données
Langages de manipulation formels algèbre relationnelle calcul relationnel (basé sur la logique des prédicats)
Langages de requêtes orientés utilisateur Structured Query Language (SQL) QUEry Language (QUEL) Query By Example (QBE)
Lien avec les langages de programmation immersion d'un langage de requêtes dans un langage de
programmation : approche Embedded SQL (Pascal, C, ...)
Introduction
![Page 4: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/4.jpg)
4
Présentation de SQL Fonctionnalités :
définition et manipulation de données au format relationnel contrôle des données
Le langage de manipulation non procédural emprunté à l'algèbre relationnelle et au calcul relationnel de
tuples Puissance du langage de manipulation
Algèbre Relationnelle + Fonctions-Agrégats + Tri
Une requête SQL (sans fonctions et tri) Suite d'opérations de l'algèbre relationnelle
Introduction
![Page 5: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/5.jpg)
5
Présentation de SQL (2) Origine
langage SEQUEL du prototype de SGBD relationnel SYSTEM/R (74-76) laboratoire de recherche IBM à San José
Normalisation ISO norme SQL1 (1986, 1989) norme SQL2 (1992) nouvelle norme en préparation SQL3
Langage de requêtes des SGBD relationnels ORACLE (Oracle Corporation - 1977) INGRES (Ingres Technology - 1980) DB2 (IBM - 1984) INFORMIX (Informix Inc - 1981) SYBASE (Sybase Inc - 1984) MySQL (1995)
Introduction
![Page 6: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/6.jpg)
6
BD Exemple: les vins
Vins(num, cru, annee, degre)
Recoltes(nvin, nprod, quantite)
Producteurs(num, nom, prenom, region)
Buveurs(num, nom, prenom, ville)
Commandes(ncde, date, nb, nvin, qte)
Livraisons(ncde, no_ordre, qteLivree)
BD Exemple
V
R
P
B
C
L
![Page 7: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/7.jpg)
7
Modèle E/A de la BD des vins
0,n
1,1
(1,1)0,n
1,1
0,n
0,n
0,n
Vins
numcrudegréannee
Producteurs
numnomprenomregion
recoltes
Livraisons
No_ordreqteLivréedate
concerne
Buveurs
numnomprenomville
Commandes
ncdeqtédate
Passer
Donner_lieu
quantite
BD Exemple
![Page 8: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/8.jpg)
8
Définition des données
définition des schémas des relations définition de vues relationnelles définition de contraintes d'intégrité définition de droits validation d'un traitement définition du placement et des index
(non normalisé => SGBD dépendant !!)
Définition des données
![Page 9: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/9.jpg)
9
Domaines de base
Numériques : Entier : INTEGER, SMALLINT Décimal : DECIMAL (m,n), NUMBER(m,n) Réel flottant : FLOAT, REAL
Chaîne de caractères : CHAR (n), VARCHAR(n) Temporel : DATE (dans la norme SQL2 !) chaque SGBD possède d'autres domaines qui lui sont
propres
Valeur NULL : absence de valeur
Définition des données
![Page 10: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/10.jpg)
10
Schéma d’une relation
CréationCREATE TABLE Vins (
num Integer,
cru Char(20),
annee Integer)
Mise à jour Ajout d'un attribut (norme SQL2 !)
ALTER TABLE Vins ADD COLUMN degre Integer
Suppression (norme SQL2 !) DROP TABLE Vins
Définition des données
![Page 11: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/11.jpg)
11
Contraintes d’intégrité règle qui définit la cohérence d'une donnée ou d'un ensemble de
données de la BD Contraintes définies en SQL
non nullité des valeurs d'un attribut unicité de la valeur d'un attribut ou d'un groupe d'attributs valeur par défaut pour un attribut contrainte de domaine clé primaire (un attribut ou un groupe) intégrité référentielle "minimale"
CREATE TABLE Vins (num integer PRIMARY KEY,cru char (40) NOT NULL,annee integer
CONSTRAINT Cannee CHECK (annee between 1970 and 2010),degre number(4,2)
CONSTRAINT Cdegre CHECK (degre between 9.0 and 15.0))
Définition des données
![Page 12: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/12.jpg)
12
LDD SQL vs. Modèle relationnel Domaines limités Clé facultative :
Doublons Opérateur de projection différent ( DISTINCT) Relation n’est plus un ensemble
![Page 13: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/13.jpg)
13
Recherche des données
Syntaxe générale de recherche slide 120 Restriction et projection slide 121 Jointures slide 125 Opérateurs ensemblistes slide 130 Fonctions agrégats slide 131 Partitionnement slide 135 Prédicats et division slide 139 Synthèse slide 144 Exemple complet slide 146
Recherche des données
![Page 14: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/14.jpg)
14
Syntaxe générale de recherche
Syntaxe
SELECT <liste d’attributs projetés>
FROM <liste de relations>
[WHERE <liste des critères de
restriction et de jointure>]
Comment remplir les clauses ?
Quel résultat souhaite voir l’utilisateur, schéma du résultat ?
Où sont les attributs dont j’ai besoin ?
Y-a t-il des conditions sur les valeurs exprimées dans ma requête ? Ai-je plusieurs relations dans ma clause FROM ?
Recherche des données
![Page 15: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/15.jpg)
15
Restriction et projection
"Donner les vins de cru Pommard" SELECT num, annee, degre
FROM Vins
WHERE cru = ‘Pommard'
Recherche des données
Nombre de tuples accédés : 2
NUM ANNEE DEGRE
5 1976 11.70
23 1972 12.00
![Page 16: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/16.jpg)
16
Projection
"Donner tous les vins" SELECT *
FROM Vins
"Donner la liste de tous les crus, avec élimination des doublons"
SELECT DISTINCT cru
FROM Vins
Recherche des données
![Page 17: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/17.jpg)
17
Restriction
"Donner les vins de degré compris entre 8 et 12" SELECT *FROM VinsWHERE degre >=8 AND degre <=12
SELECT *FROM VinsWHERE degre BETWEEN 8 AND 12
SELECT *FROM VinsWHERE degre IN (8, 9, 10, 11, 12)
Recherche des données
![Page 18: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/18.jpg)
18
Restriction et tri
"Donner les vins dont le cru commence par p ou P" SELECT *FROM Vins WHERE cru LIKE ‘p%’ OR cru LIKE ‘P%’
"Donner les crus des vins de millésime 1995 et de degré 12, triés par ordre croissant"
SELECT cruFROM VinsWHERE annee=1995 AND degre = 12ORDER BY cru
Recherche des données
![Page 19: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/19.jpg)
19
Jointure "Donner les noms des producteurs de
Pommard" SELECT nom
FROM Vins V, Recoltes R, Producteurs P
WHERE V.num = R.nvin
AND R.nprod=P.num
AND cru = ‘Pommard’
Recherche des données
Produitcartésien
Conditions de jointures
Nom d’attribut non ambigü
![Page 20: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/20.jpg)
20
Jointure procéduraleSELECT nom
FROM Producteurs
WHERE num IN (
SELECT nprod
FROM Recoltes
WHERE nvin IN (
SELECT num
FROM Vins
WHERE cru = ‘Pommard’))
Recherche des données
![Page 21: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/21.jpg)
21
Auto-jointure
Jointure d’une relation avec elle-même synonymes
« Donner les couples de producteurs ayant le même nom. Préciser les régions »
SELECT P1.nom, P1.region, P2.region
FROM Producteurs P1, Producteurs P2
WHERE P1.nom = P2.nom
AND P1.num > P2.num
Recherche des données
![Page 22: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/22.jpg)
22
Jointure (syntaxe SQL2)
SQL2 propose une nouvelle syntaxe plus proche de l’algèbre relationnelle (jointure directement exprimée dans le FROM)
Supportée dans plusieurs SGBD (>= Oracle 9, MySQL, SQLServer, …)
![Page 23: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/23.jpg)
23
Exemples de jointure SQL2
Produit cartésienSELECT nom, prenomFROM vins CROSS JOIN recoltes
Jointure SELECT nomFROM Vins V JOIN Recoltes R ON (V.num = R.nvin) JOIN
Producteurs P ON (R.nprod=P.num)WHERE cru = ‘Pommard’
Jointure « naturelle » L’égalité sur les attributs de même nom peut être
remplacée par NATURAL JOIN, ou JOIN … USING (attrs)
![Page 24: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/24.jpg)
24
Opérateurs ensemblistes Union (norme SQL1)
Élimination automatique des doublons SELECT num FROM Producteurs UNION SELECT num FROM Buveurs
Intersection (norme SQL2 !) SELECT num FROM Producteurs INTERSECT SELECT num FROM Buveurs
Différence (norme SQL2 !) SELECT num FROM Buveurs MINUS (ou EXCEPT)SELECT num FROM Producteurs
Recherche des données
![Page 25: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/25.jpg)
25
Fonctions 5 fonctions prédéfinies : COUNT, SUM, MIN, MAX,
AVG Principe :
S'applique à l'ensemble des valeurs d'une colonne d'une relation
Produit une valeur unique Pour une requête sans partionnement (plus tard) :
uniquement dans le SELECT, jamais dans le WHERE Ne pas mélanger dans le SELECT les fonctions et les
attributs simples !
Recherche des données
![Page 26: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/26.jpg)
26
Exemples avec fonctions "Donner la moyenne des degrés de tous les vins"
SELECT Avg(degre)
FROM Vins
"Donner la quantité totale commandée par le buveur Bac"
SELECT Sum (qte)
FROM Commandes, Buveurs
WHERE Buveurs.nom= 'Bac' AND Buveurs.num=Commandes.nb
Recherche des données
Toute ressemblance avec des personnes existant ou ayant existé ne serait évidemment que purement fortuite et involontaire
![Page 27: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/27.jpg)
27
Exemples avec fonctions (2)
"Nombre de crus différents" SELECT COUNT(DISTINCT cru)
FROM Vins
"Nombre de vins" SELECT COUNT (*)
FROM Vins
Recherche des données
![Page 28: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/28.jpg)
28
Exemples avec fonctions (3) " Vins dont le degré est supérieur à la moyenne des degrés des vins"
SELECT * FROM Vins WHERE degre > (
SELECT AVG(degre)FROM Vins)
" Numéros de commande où la quantité commandée a été totalement expédiée"
SELECT ncde FROM Commandes CWHERE qte = (
SELECT SUM(L.qte)FROM Livraisons LWHERE L.ncde = C.ncde
)
Recherche des données
L’alias « C » est visible dans
le bloc imbriqué
![Page 29: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/29.jpg)
29
Partitionnement Principe
partitionnement horizontal d'une relation, selon les valeurs d'un attribut ou d'un groupe d'attributs qui est spécifié dans la clause GROUP BY
la relation est (logiquement) fragmentée en groupes de tuples, où tous les tuples de chaque groupe ont la même valeur pour l'attribut (ou le groupe d'attributs) de partitionnement
Fonctions sur les groupes Restrictions sur les groupes
application possible d'un critère de restriction sur les groupes obtenus
clause HAVING
Recherche des données
![Page 30: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/30.jpg)
30
Exemples de partitionnement " Donner, pour chaque cru, la moyenne des degrés des vins de ce cru …"
SELECT cru, AVG(degre) FROM Vins GROUP BY cru
" … avec un tri par degré décroissant" SELECT cru, AVG(degre) FROM Vins GROUP BY cruORDER BY 2 DESC
" … uniquement si ce cru concerne plus de 3 vins" SELECT cru, AVG(degre) FROM Vins GROUP BY cruHAVING COUNT(*)>=3ORDER BY 2 DESC
Recherche des données
![Page 31: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/31.jpg)
31
Calcul de la partition
Trier la relation selon les attributs de groupement
Créer une sous-relation pour chaque paquet ayant même valeur sur l'attribut sur l'ensemble des attributs de groupement, ici « cru »
Appliquer la clause SELECT sur chaque partition (dans notre exemple la valeur de cru et la moyenne des degrés sur la partition
Unifier les résultats
Appliquer la restriction du HAVING
Recherche des données
Vins cru degre
Pommard 12
Tavel 11
Pommard 13
Tavel 12
Tavel 13
Vins cru degre
Pommard 12
Pommard 13
Tavel 11
Tavel 12
Tavel 13
Vins cru degre
Pommard 12,5
Tavel 12
et
et
initiale
![Page 32: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/32.jpg)
32
Exemple de requête erronée
SELECT cru, num, AVG(degre)
FROM Vins
GROUP BY cru Résultat « attendu »
Problème Num est multivalué / cru il n’y a pas une valeur par case (pas en première forme
normale)
Recherche des données
cru num AVG(degre)
Pommard {1, 3, 6, 10} 12,5
Tavel {5, 7} 12,0
Gamay {2, 8, 11} 11,0
![Page 33: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/33.jpg)
33
Prédicats :ALL, ANY, EXISTS
ALL Teste si la valeur d’un attribut satisfait un critère
de comparaison avec tous les résultats d’une sous-requêteSELECT B.num, B.nom
FROM Buveurs B, Commandes C
WHERE B.num = C.nb
AND C.qte >= ALL(
SELECT qte
FROM Commandes)
Recherche des données
![Page 34: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/34.jpg)
34
Prédicats (2)
ANY : Teste si la valeur d’un attribut satisfait un critère
de comparaison avec au moins un résultat d’une sous-requête
SELECT B.nb, B.nom FROM Buveurs B, Commandes C WHERE B.nb = C.nb AND C.qte > ANY (
SELECT qte FROM Commandes )
Recherche des données
![Page 35: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/35.jpg)
35
Prédicats (3)
EXISTS : Teste si la réponse à une sous-requête est vide "Viticulteurs ayant produit au moins un vin"
SELECT P.*
FROM Producteurs P
WHERE EXISTS (
SELECT R.*
FROM Recoltes R
WHERE P.num=R.nprod)
Recherche des données
![Page 36: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/36.jpg)
36
Division avec prédicat EXISTS "Quels sont les viticulteurs
ayant produit tous les vins (ceux connus de la base de données)?"
Paraphrase en français : "Un viticulteur est
sélectionné s'il n'existe aucun vin qui n'ait pas été produit par ce producteur"
=> Double négation
SELECT P.*FROM Producteurs PWHERE NOT EXISTS (
SELECT V.* FROM Vins VWHERE NOT EXISTS (
SELECT R.* FROM Recoltes RWHERE P.num=R.nprodAND R.nvin=V.num )
)
Recherche des données
![Page 37: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/37.jpg)
37
Division sans EXISTSSELECT P.*
FROM Producteurs P
WHERE P.num IN (
SELECT nprod
FROM Recoltes
GROUP BY nprod
HAVING COUNT(*) = (
SELECT COUNT(*)
FROM Vins) )
![Page 38: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/38.jpg)
38
Synthèse Recherche des données
6 SELECT <liste et/ou expressions attributs Aj et/ou fonctions sur Attributs Ap>
Projection de l’ensemble obtenu en (5) sur les Aj, calcul des expressions, calcul des fonctions (appliquées aux groupes s’il y en a) sur Ap
1 FROM <liste de relations Ri> Produit cartésien des relations Ri
2 WHERE <Conditions sur les tuples> : C1
Sélection des tuples de (1) respectant la condition C1
3 GROUP BY <liste attributs Ak Aj> Partitionnement de l’ensemble obtenu en (2) suivant les valeurs Ak
4 HAVING <condition sur groupes -fonctions> : C2
Sélection des groupes de (3) vérifiant C2
5 ORDER BY <liste d’attributs Al ou n° ordre dans le SELECT>
Tri des tuples obtenus en (4) suivant les valeurs Al
![Page 39: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/39.jpg)
39
Synthèse (2)
Condition de recherche : WHERE (sélection de
tuples), HAVING (sélection de groupes)
Compositions de conditions élémentaires (AND, OR, NOT)
Évaluée à Vrai ou Faux
Condition élémentaire : Évaluée à Vrai ou Faux Prédicat :
Comparaison : =, <, <=, >, >=, <> Attribut/valeur Attribut/attribut
Intervalle :BETWEEN Chaîne : LIKE Nullité : IS NULL Appartenance : IN Quantification : EXISTS,
ANY, ALL
Recherche des données
![Page 40: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/40.jpg)
40
Exemple complet
"Donnez par ordre croissant le nom et la somme des quantités commandées par des buveurs bordelais, uniquement si chaque commande est d'une quantité strictement supérieure à 20 litres."
SELECT B.nom, Sum(C.qte) FROM Buveurs B, Commandes C WHERE B.num=C.nb AND B.ville = 'Bordeaux' GROUP BY B.num, B.nom HAVING MIN(C.qte) > 20 ORDER BY B.nom
Recherche des données
![Page 41: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/41.jpg)
41
Mise à jour
Insertion Suppression Modification
Mises à jour
![Page 42: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/42.jpg)
42
Insertion Insertion d’un seul tuple
INSERT INTO Vins VALUES (100, 'Jurançon', 1979, 12)INSERT INTO Vins (num, cru) VALUES (200, 'Gamay')
Insertion d’un ensemble de tuples CREATE TABLE BORDEAUX(num Integer, annee Integer, degre
number(4,2)) INSERT INTO BORDEAUX
SELECT num, annee, degreFROM VinsWHERE cru = 'Bordeaux'
CREATE TABLE BORDEAUX ASSELECT num, annee, degreFROM VinsWHERE cru = 'Bordeaux'
Mises à jour
![Page 43: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/43.jpg)
43
Suppression "Supprimer tous les tuples de Vins"
DELETE FROM Vins ou TRUNCATE TABLE Vins "Supprimer le vin de numéro 150"
DELETE FROM Vins WHERE num = 150
"Supprimer les vins de degré <9 ou >12" DELETE FROM VinsWHERE degre < 9 OR degre > 12
"Supprimer les commandes passées par Belaïd" DELETE FROM CommandesWHERE nb IN (
SELECT numFROM BuveursWHERE nom= ‘Belaïd')
Mises à jour
![Page 44: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/44.jpg)
44
Modification « Le producteur 150 habite dans le sud ouest »
UPDATE Producteurs SET region = ‘Sud Ouest'WHERE num = 150
« Les degrés des Gamays augmentent de 10 % » UPDATE VinsSET degre = degre * 1.1WHERE cru = 'Gamay'
« Le buveur ‘Bac’ augmente ses commandes de 10 unités »UPDATE CommandesSET qte = qte + 10WHERE nb IN (
SELECT numFROM BuveursWHERE nom='Bac')
Mises à jour
![Page 45: 107 SQL Structured Query Language INT Management](https://reader036.vdocuments.mx/reader036/viewer/2022081512/551d9d8e497959293b8c33b3/html5/thumbnails/45.jpg)
45
Traitement d’une requête SQL SELECT nom, prenom
FROM viticulteursWHERE region = ‘Sud ouest’
Analyse Syntaxique
Vérification
Optimisation
Génération d'un plan d'exécution
Forme exécutable de la requête
ExécutionBD
DD
SchémasDroits
VuesPlacement, indexCIStatistiques