• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SQL partie III
 

SQL partie III

on

  • 1,416 views

 

Statistics

Views

Total Views
1,416
Views on SlideShare
1,186
Embed Views
230

Actions

Likes
0
Downloads
71
Comments
0

2 Embeds 230

http://www.com-dev.net 200
http://com-dev.net 30

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SQL partie III SQL partie III Document Transcript

    • Langage SQL 1
    • 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
    • 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
    • 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
    • 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
    • ─ θ-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
    • 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
    • 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