Langage SQL     1
1. Classification des commandes SQL            LDD : commandes de définition de données (créer, modifier, supprimer)     ...
CREATE TABLE commande  ( numcde NUMBER CONSTRAINT pk_numc PRIMARY KEY,    datecde DATE,    numfour NUMBER CONSTRAINT fk_nu...
d) Suppression de lignes dune table :Syntaxe :TRUNCATE TABLE nom_table  [{DROP | REUSE} STORAGE]Exemple :TRUNCATE TABLE pr...
3. Langage de manipulation de données :Permet la consultation de données et la mise à jour de données (insertion, modifica...
─ θ-jointure : cest une jointure dont la condition est une comparaison autre que       léalité de deux colonnes appartenan...
c) Groupement de données et condition de groupement :• GROUP BY : permet de grouper des lignes de données aillant des vale...
3.3 La mise à jour de donnéesa) Insertion de données externes• Insertion de données externes :Syntaxe :INSERT INTO {table ...
Prochain SlideShare
Chargement dans…5
×

SQL partie III

1 604 vues

Publié le

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 604
Sur SlideShare
0
Issues des intégrations
0
Intégrations
236
Actions
Partages
0
Téléchargements
102
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

SQL partie III

  1. 1. Langage SQL 1
  2. 2. 1. Classification des commandes SQL  LDD : commandes de définition de données (créer, modifier, supprimer)  LMD : commandes de manipulation de données (extraire et mise à jour)  Commandes de contrôle de données.2. Langage de définition de données2.1 Définition de tablea) Création de tableSyntaxe :CREATE TABLE nom_table(nom_colonne type_colonne [DEFAULT expression] [contrainte de colonne],…n,[Contrainte de table])AvecContrainte de colonne :=[CONSTRAINT nom_contrainte]{[NOT] NULL | {UNIQUE | PRIMARY KEY}| REFERENCES table [(colonne)][ON DELETE CASCADE ] | CHECK (condition)}Contrainte de table :=[CONSTRAINT nom_contrainte]{{UNIQUE | PRIMARY KEY}(colonne[,colonne]…)| FOREIGN KEY (colonne[,colonne]…)| REFERENCES table [(colonne[, colonne]... )][ON DELETE CASCADE ] | CHECK (condition)}Les principaux types de données sont : CHAR, VARCHAR, NUMBER et DATE.Exemples :CREATE TABLE produit (codeproduit NUMBER CONSTRAINT pk_prod PRIMARY KEY, designation CHAR(20) CONSTRAINT nn_des NOT NULL, prixunit NUMBER(7,2) );CREATE TABLE fournisseur ( numfour NUMBER CONSTRAINT pk_numf PRIMARY KEY, nom CHAR(20) CONSTRAINT nn_nom NOT NULL, adresse CHAR(80), codpostal NUMBER(5) CHECK (codpostal BETWEEN 10000 AND 90000), ville CHAR(20)); 2
  3. 3. CREATE TABLE commande ( numcde NUMBER CONSTRAINT pk_numc PRIMARY KEY, datecde DATE, numfour NUMBER CONSTRAINT fk_numf REFERENCES fournisseur (numfour) );CREATE TABLE ligne_cde (codeproduit NUMBER CONSTRAINT fk_cdprod REFERENCES produit(codeproduit), numcde NUMBER CONSTRAINT fk_numcde REFERENCES commande(numcde), numligne Number, qtecmde NUMBER CONSTRAINT chek_qte CHEK(qtecmde > 0) PRIMARY KEY ( codeproduit, numcde) );CREATE TABLE adr_fourn(nom,adr1,adrs2) AS SELECT nom, adresse, codpostal | | , | | ville;b) Modification des structures des tables :Concerne lajout de nouvelles colonnes, lajout de contraintes dintégrité, la modification decolonne, lactivation, désactivation et suppression de contraintes dintégrité.Syntaxe :ALTER TABLE nom_tableADD { {colonne | contrainte de table} | ({colonne | contrainte de table} [, {colonne | contrainte de table}…)] }| MODIFY {colonne | (colonne [, colonne]…)}| DROP {PRIMARY KEY | UNIQUE (colonne [, colonne]…) | CONSTRAINT contrainte} [CASCADE]Exemples :ALTER TABLE fournisseur ADD remarque CHAR (80), MODIFY ville CHAR(30);ALTER TABLE produit DROP CONSTRAINT pk_prod CASCADE;Ou bienALTER TABLE produit DOP PRIMARY KEY CASCADE;c) Suppression de tablesSyntaxe :DROP TABLE nom_table[CASCADE CONSTRAINTS]Linstruction CASCCADE CONSTRANT supprime toutes les contraintes dintégritéréférentielles liées aux clés unique ou primaires de la table à supprimer.Exemple :DROP TABLE adr_fourn; 3
  4. 4. d) Suppression de lignes dune table :Syntaxe :TRUNCATE TABLE nom_table [{DROP | REUSE} STORAGE]Exemple :TRUNCATE TABLE produit REUSE STORAGE2.2 Définition dindexa) Création dindexSyntaxe :CREATE INDEX nom_index ON table (colonne [ASC | DESC] [, colonne [ASC | DESC]]…)Exemple :CREATE INDEX ind_fourn ON fournisseur (nom DESC, ville);b) Suppression dindexSyntaxe :DROP INDEX nom_indexExemple :DROP INDEX ind_fourn;2.3 Définition de vuesa) Création dune vueSyntaxe :CREATE [OR REPLECE] VIEW nom_vueAS requête[WITH CHECK OPTION [CONSTRAINT contrainte]]Loption WITH CHECK OPTION force la mise à jour des données à travers la vue àrespecter la condition de la clause WHERE dans linstruction SELECT qui définit la vue.Exemple :CREATE VIEW fourn_view (numfourn, nomfourn, villefourn) AS SELECT numfour, nom, ville FROM fournisseur WHERE ville=casa WITH CHECK OPTIONb) Suppression dune vueSyntaxe :DROP VIEW nom_vueExemple :DROP VIEW fourn_view; 4
  5. 5. 3. Langage de manipulation de données :Permet la consultation de données et la mise à jour de données (insertion, modification etsuppression).3.1 Consultation de donnéesSyntaxe :SELECT [ALL | DISTINCT] liste_de_sélectionFROM liste_de_tables[WHERE condition][GROUP BY liste_expression [HAVING condition]][{UNION | UNION ALL | INTERSECT | MINUS}commande SELECT][ORDER BY] {expression | position}[ASC | DESC] [, {expression | position} [ASC | DESC]…]a) Consultation simpleSyntaxe :SELECT liste_de_selectionFROM liste_de_tablesExemples :• SELECT nom, ville FROM fournisseur;• SELECT * FROM fournisseur;b) Consultation avec qualificationLa qualification se fait à laide de la clause WHERESyntaxe :WHERE conditionTrois types de conditions : comparaison, jointure et sous_requête• Conditions de comparaison : expression opérateur_relationnel expression expression [NOT] BETWEEN expression AND expression expression [NOT] IN (liste_de_valeurs) colonne [NOT] LIKE "chaîne" (% et _) colonne IS [NOT] NULLExemples :• Les fornisseurs dont le nom se termine par mi : SELECT * FROM fournisseur WHERE nom LIKE %mi;Le symbole % : remplace une chaîne de caractères de nimporte quel nombre (même vide).• Les fournisseurs dont le nom comprend la chaîne de caractères o_i à partir de la deuxième position. SELECT * FROM fournisseur WHERE nom LIKE _o_i;Le symbole _ : remplace un seul caractère.• Conditions de jointure : ─ Léqui-jointure : cest une jointure dont a condition est une comparaison dégalité de deux colonnes appartenant à deux tables différents. 5
  6. 6. ─ θ-jointure : cest une jointure dont la condition est une comparaison autre que léalité de deux colonnes appartenant à deux tables différents. ─ Jointure multiple : cest une jointure qui met en relation plusieurs colonnes de plusieurs tables. Exemple : • Equi-jointure : les fournisseurs de casa qui ont passé une commande entre les dates du ‘01/01/2000’ et la date courante : SELECT DISTINCT fournisseur.numfour, nom, adresse, datecde FROM fournisseur, commande WHERE fournisseur.numfour=commande.numfour AND ville=’casa’ AND datecde BETWEEN ‘01/01/1993’ AND SYSDATE; • Jointure multiple : les produits qui n’ont pas été commandé entre la date 01/01/1993 et la date courante : SELECT produit.codeproduit, produit.designation FROM produit, commande, ligne_cde WHERE commande.numcde=ligne_cde.numcde AND produit.codeproduit<>ligne_cde.codeproduit AND commande.datecde BETWEEN ’01/01/1993’ AND SYSDATE; ─ Autojointure : cest une jointure dune table avec elle-même. Exemple : Les couples de fournisseurs qui ont la même ville : SELECT X.numfour, X.ville, Y.numfour, Y.ville FROM fournisseur X, fournisseur Y WHERE X.ville=Y.ville ; ─ Jointure externe : cest une jointure qui favorise une table par rapport à une autre. Ainsi les lignes de la table dominante seront affichées même si la condition nest pas réalisée. Exemple : Les fournisseurs de casa qui ont passé ou non une ou plusieurs commandes entre les dates de ‘01/01/1993’ et la date courante : SELECT X.numfour, nom, adresse, numcde FROM fournisseur X, commande Y WHERE X.numfour=Y.numfour(+) AND ville=casa AND Y.datecde BETWEEN ’01/01/1993’ AND SYSDATE;• Conditions de sous-requête : Syntaxe : -WHERE expression opérateur_de_comparaison {ALL | ANY | SOME} (reqête select) - WHERE colonne [NOT] IN (requête select) -WHERE [NOT] EXISTS (requête select) ALL : la condition est vraie si la comparaison est vraie pour chacune des valeurs retournées ANY=SOME : la condition est vraie si la comparaison est vraie pour au moins une des valeurs retournées IN : la condition est vraie si la valeur de colonne est es égale à lune des valeurs retournées par la sous-requête EXISTS : retourne vraie si lévaluation de la sous-requête donne lieu à une ou plusieurs lignes et faux sinon. 6
  7. 7. c) Groupement de données et condition de groupement :• GROUP BY : permet de grouper des lignes de données aillant des valeurs comunnes et fairedes traitements spécifiques sur ces groupes.Syntaxe :GROUP BY liste_de_groupesExemples :- le nombre de ligne par commande :SELECT numcde, COUNT(*)FROM ligne_cdeGROUP BY numcde;- le montant de chaque de chaque commande :SELECT numcde, SUM(Y.prixunit * qtecmde)FROM ligne_cde X, produit YWHERE X.codeproduit=Y.codeproduitGROUP BY numcde ;• HAVING : liée à GROUP BY et permet de une restriction portant sur un groupe de lignes.Syntaxe :HAVING conditionExemple :La somme de toues les comandes dont le nombre de lignes est supérieur à 4 :SELECT numcde, SUM(Y.prixunit * qtecmde)FROM ligne_cde X, produit YWHERE X.codeproduit=Y.codeproduitGROUP BY numcdeHAVING COUNT(numligne) > 4;d) Tri du résultat (order by colonne)Syntaxe :ORDER BY colonne | position [ASC | DESC]Exemple :Les fournisseurs par ordre de ville et nom :SELECT *FROM fournisseurORDER BY ville, nom;Ou bienSELECT *FROM fournisseurORDER BY 5, 2;3.2 Opérateurs ensemblistesa) UnionSyntaxe :Requête_select UNION [ALL] requête_select [UNION [ALL] requête_select...]b) IntersectionSyntaxe :requête_select INTERSECT requête_selectc) DifférenceSyntaxe :requête_select MINUS requête_seect 7
  8. 8. 3.3 La mise à jour de donnéesa) Insertion de données externes• Insertion de données externes :Syntaxe :INSERT INTO {table | vue} [(liste_de_colonnes)]VALUES (liste_de_valeurs)Exemple :INSERT INTO fournisseur( 1, ‘fahmi’, ’20 rue alkods’, 20000, ’Casablanca’) ;• Insertion de données internes :Syntaxe :INSERT INTO nom_table [(liste_de_selection)] requête_selectExemple :INSERT INTO fourn_viewSELECT numfourn, nom, villeFROM fournisseurWHERE ville=’casa’ ;b) Modification de donnéesSyntaxe :• UPDATE {table | vue} SET colonne = expression,…• UPDATE {table | vue} SET (liste_colonne)=(requête_select) [WHERE condition]• UPDATE {table | vue} SET (liste_colonne) = (requête_select), colonne=expression,… [WHERE condition]Exemple :UPDATE fournisseurSET ville=’Rabat’WHERE numfour=1 ;c) Suppression de données :Syntaxe :DELETE FROM {table | vue}[WHERE condition]Exemple :DELETE FROM fournisseurWHERE ville=’Rabat’ ; 8

×