SlideShare une entreprise Scribd logo
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ées
2.1 Définition de table
a) Création de table
Syntaxe :
CREATE TABLE nom_table
(nom_colonne type_colonne [DEFAULT expression] [contrainte de colonne],…n,
[Contrainte de table])
Avec
Contrainte 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 l'ajout de nouvelles colonnes, l'ajout de contraintes d'intégrité, la modification de
colonne, l'activation, désactivation et suppression de contraintes d'intégrité.
Syntaxe :
ALTER TABLE nom_table
ADD {
      {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 bien
ALTER TABLE produit
   DOP PRIMARY KEY CASCADE;

c) Suppression de tables
Syntaxe :
DROP TABLE nom_table
[CASCADE CONSTRAINTS]
L'instruction CASCCADE CONSTRANT supprime toutes les contraintes d'inté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 d'une table :
Syntaxe :
TRUNCATE TABLE nom_table
  [{DROP | REUSE} STORAGE]

Exemple :
TRUNCATE TABLE produit
  REUSE STORAGE

2.2 Définition d'index
a) Création d'index
Syntaxe :
CREATE INDEX nom_index
 ON table (colonne [ASC | DESC] [, colonne [ASC | DESC]]…)

Exemple :
CREATE INDEX ind_fourn
 ON fournisseur (nom DESC, ville);

b) Suppression d'index
Syntaxe :
DROP INDEX nom_index

Exemple :
DROP INDEX ind_fourn;

2.3 Définition de vues
a) Création d'une vue
Syntaxe :
CREATE [OR REPLECE] VIEW nom_vue
AS requête
[WITH CHECK OPTION [CONSTRAINT contrainte]]

L'option WITH CHECK OPTION force la mise à jour des données à travers la vue à
respecter la condition de la clause WHERE dans l'instruction 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 OPTION

b) Suppression d'une vue
Syntaxe :
DROP VIEW nom_vue

Exemple :
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 et
suppression).
3.1 Consultation de données
Syntaxe :
SELECT [ALL | DISTINCT] liste_de_sélection
FROM 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 simple
Syntaxe :
SELECT liste_de_selection
FROM liste_de_tables

Exemples :
• SELECT nom, ville
  FROM fournisseur;
• SELECT *
  FROM fournisseur;

b) Consultation avec qualification
La qualification se fait à l'aide de la clause WHERE
Syntaxe :
WHERE condition
Trois 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] NULL

Exemples :
• 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 n'importe 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 : c'est une jointure dont a condition est une comparaison d'égalité de
        deux colonnes appartenant à deux tables différents.

                                               5
─ θ-jointure : c'est une jointure dont la condition est une comparaison autre que
       l'éalité de deux colonnes appartenant à deux tables différents.
       ─ Jointure multiple : c'est 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 : c'est une jointure d'une 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 : c'est 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 n'est 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 à l'une 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 faire
des traitements spécifiques sur ces groupes.
Syntaxe :
GROUP BY liste_de_groupes

Exemples :
- le nombre de ligne par commande :
SELECT numcde, COUNT(*)
FROM ligne_cde
GROUP BY numcde;

- le montant de chaque de chaque commande :
SELECT numcde, SUM(Y.prixunit * qtecmde)
FROM ligne_cde X, produit Y
WHERE X.codeproduit=Y.codeproduit
GROUP BY numcde ;
• HAVING : liée à GROUP BY et permet de une restriction portant sur un groupe de lignes.
Syntaxe :
HAVING condition

Exemple :
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 Y
WHERE X.codeproduit=Y.codeproduit
GROUP BY numcde
HAVING 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 fournisseur
ORDER BY ville, nom;
Ou bien
SELECT *
FROM fournisseur
ORDER BY 5, 2;

3.2 Opérateurs ensemblistes
a) Union
Syntaxe :
Requête_select UNION [ALL] requête_select [UNION [ALL] requête_select...]

b) Intersection
Syntaxe :
requête_select INTERSECT requête_select

c) Différence
Syntaxe :
requête_select MINUS requête_seect

                                               7
3.3 La mise à jour de données
a) 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_select
Exemple :
INSERT INTO fourn_view
SELECT numfourn, nom, ville
FROM fournisseur
WHERE ville=’casa’ ;

b) Modification de données
Syntaxe :
• 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 fournisseur
SET ville=’Rabat’
WHERE numfour=1 ;

c) Suppression de données :
Syntaxe :
DELETE FROM {table | vue}
[WHERE condition]

Exemple :
DELETE FROM fournisseur
WHERE ville=’Rabat’ ;




                                            8

Contenu connexe

En vedette

Informatique s3
Informatique s3Informatique s3
Informatique s3
FSJEST13
 
Meris formation-methodes-d-analyse-merise
Meris formation-methodes-d-analyse-meriseMeris formation-methodes-d-analyse-merise
Meris formation-methodes-d-analyse-meriseCERTyou Formation
 
Al2istimta3 bi al3amal
Al2istimta3 bi al3amalAl2istimta3 bi al3amal
Al2istimta3 bi al3amal
yassine kchiri
 
Collaboration as it really is, Working together, alone
Collaboration as it really is, Working together, aloneCollaboration as it really is, Working together, alone
Collaboration as it really is, Working together, alone
Marc Buyens
 
Collaboration as it really is - Working together, alone
Collaboration as it really is - Working together, aloneCollaboration as it really is - Working together, alone
Collaboration as it really is - Working together, alone
Marc Buyens
 
Uml examen
Uml  examenUml  examen
Uml examen
Majid CHADAD
 
Cours Base de Données
Cours Base de DonnéesCours Base de Données
Cours Base de Données
yassine kchiri
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
rezgui mohamed
 
INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE HINDOUSSATI
 
Sql
SqlSql
Sql
krymo
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
Lara L' Impératrice
 
SGBDR - MySQL
SGBDR - MySQLSGBDR - MySQL
SGBDR - MySQL
Musatge
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
Yassine Badri
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
Yassine Badri
 
12 Principles of Collaboration
12 Principles of Collaboration12 Principles of Collaboration
12 Principles of Collaboration
Jacob Morgan
 
Alone Together
Alone TogetherAlone Together
Alone Together
Estela Dominguez Halpern
 
Collaboration PowerPoint slides
Collaboration PowerPoint slidesCollaboration PowerPoint slides
Collaboration PowerPoint slides
eisolomon
 
Group and Team
Group and Team Group and Team
Group and Team
metnashikiom2011-13
 

En vedette (20)

Informatique s3
Informatique s3Informatique s3
Informatique s3
 
Meris formation-methodes-d-analyse-merise
Meris formation-methodes-d-analyse-meriseMeris formation-methodes-d-analyse-merise
Meris formation-methodes-d-analyse-merise
 
Al2istimta3 bi al3amal
Al2istimta3 bi al3amalAl2istimta3 bi al3amal
Al2istimta3 bi al3amal
 
Collaboration as it really is, Working together, alone
Collaboration as it really is, Working together, aloneCollaboration as it really is, Working together, alone
Collaboration as it really is, Working together, alone
 
Collaboration as it really is - Working together, alone
Collaboration as it really is - Working together, aloneCollaboration as it really is - Working together, alone
Collaboration as it really is - Working together, alone
 
Uml examen
Uml  examenUml  examen
Uml examen
 
Serie de TD 3 POO
Serie de TD 3 POOSerie de TD 3 POO
Serie de TD 3 POO
 
Cours Base de Données
Cours Base de DonnéesCours Base de Données
Cours Base de Données
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE
 
Sql
SqlSql
Sql
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
 
SGBDR - MySQL
SGBDR - MySQLSGBDR - MySQL
SGBDR - MySQL
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
12 Principles of Collaboration
12 Principles of Collaboration12 Principles of Collaboration
12 Principles of Collaboration
 
Alone Together
Alone TogetherAlone Together
Alone Together
 
Collaboration PowerPoint slides
Collaboration PowerPoint slidesCollaboration PowerPoint slides
Collaboration PowerPoint slides
 
Group and Team
Group and Team Group and Team
Group and Team
 

Similaire à SQL partie III

Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
SiwarAbbes1
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
SamirAwad14
 
SQL-ORACLE.pptx
SQL-ORACLE.pptxSQL-ORACLE.pptx
SQL-ORACLE.pptx
SamirAwad14
 
Presentation sql
Presentation sqlPresentation sql
Presentation sql
maaroufi amine
 
Cours BASE de DONNES.pdf
Cours BASE de DONNES.pdfCours BASE de DONNES.pdf
Cours BASE de DONNES.pdf
ManelHamdi7
 
SQL.pdf
SQL.pdfSQL.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
RihabBENLAMINE
 
GSI_Chap4-BTS-requêtes_2016
GSI_Chap4-BTS-requêtes_2016GSI_Chap4-BTS-requêtes_2016
GSI_Chap4-BTS-requêtes_2016
ecogestionblog
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
Olivier Le Goaër
 
PL LSQL.pptx
PL LSQL.pptxPL LSQL.pptx
PL LSQL.pptx
MaNl13
 
Introduction_R.pdf
Introduction_R.pdfIntroduction_R.pdf
Introduction_R.pdf
JeanPhilippeTurcotte5
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQL
Mohammed Jaafar
 
QuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdfQuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdf
Moez Moezm
 
Chapitre5.pdf
Chapitre5.pdfChapitre5.pdf
Chapitre5.pdf
Moez Moezm
 
Initiation_Access23DelafuigureInternationnal
Initiation_Access23DelafuigureInternationnalInitiation_Access23DelafuigureInternationnal
Initiation_Access23DelafuigureInternationnal
Achrafarc
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sql
Hanfi Akram
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
Microsoft Technet France
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
ImaneZoubir1
 

Similaire à SQL partie III (20)

Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
 
SQL-ORACLE.pptx
SQL-ORACLE.pptxSQL-ORACLE.pptx
SQL-ORACLE.pptx
 
Presentation sql
Presentation sqlPresentation sql
Presentation sql
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
Cours BASE de DONNES.pdf
Cours BASE de DONNES.pdfCours BASE de DONNES.pdf
Cours BASE de DONNES.pdf
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
GSI_Chap4-BTS-requêtes_2016
GSI_Chap4-BTS-requêtes_2016GSI_Chap4-BTS-requêtes_2016
GSI_Chap4-BTS-requêtes_2016
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
PL LSQL.pptx
PL LSQL.pptxPL LSQL.pptx
PL LSQL.pptx
 
Introduction_R.pdf
Introduction_R.pdfIntroduction_R.pdf
Introduction_R.pdf
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQL
 
QuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdfQuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdf
 
Chapitre5.pdf
Chapitre5.pdfChapitre5.pdf
Chapitre5.pdf
 
Initiation_Access23DelafuigureInternationnal
Initiation_Access23DelafuigureInternationnalInitiation_Access23DelafuigureInternationnal
Initiation_Access23DelafuigureInternationnal
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sql
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 

Plus de yassine kchiri

Al2istimta3 bi al3amal
Al2istimta3 bi al3amalAl2istimta3 bi al3amal
Al2istimta3 bi al3amalyassine kchiri
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3yassine kchiri
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2yassine kchiri
 
Correction du TD architecture
Correction du TD architectureCorrection du TD architecture
Correction du TD architecture
yassine kchiri
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données
yassine kchiri
 

Plus de yassine kchiri (7)

Al2istimta3 bi al3amal
Al2istimta3 bi al3amalAl2istimta3 bi al3amal
Al2istimta3 bi al3amal
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2
 
Correction du TD architecture
Correction du TD architectureCorrection du TD architecture
Correction du TD architecture
 
Smi5 cours partie2
Smi5 cours partie2Smi5 cours partie2
Smi5 cours partie2
 
Smi5 cours partie1
Smi5 cours partie1Smi5 cours partie1
Smi5 cours partie1
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données
 

Dernier

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
mohammadaminejouini
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
Morzadec Cécile
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
MustaphaZhiri
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
Txaruka
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 
Margaux Laurens - Neel.pptx
Margaux        Laurens     -     Neel.pptxMargaux        Laurens     -     Neel.pptx
Margaux Laurens - Neel.pptx
Txaruka
 

Dernier (7)

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 
Margaux Laurens - Neel.pptx
Margaux        Laurens     -     Neel.pptxMargaux        Laurens     -     Neel.pptx
Margaux Laurens - Neel.pptx
 

SQL partie III

  • 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ées 2.1 Définition de table a) Création de table Syntaxe : CREATE TABLE nom_table (nom_colonne type_colonne [DEFAULT expression] [contrainte de colonne],…n, [Contrainte de table]) Avec Contrainte 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. 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 l'ajout de nouvelles colonnes, l'ajout de contraintes d'intégrité, la modification de colonne, l'activation, désactivation et suppression de contraintes d'intégrité. Syntaxe : ALTER TABLE nom_table ADD { {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 bien ALTER TABLE produit DOP PRIMARY KEY CASCADE; c) Suppression de tables Syntaxe : DROP TABLE nom_table [CASCADE CONSTRAINTS] L'instruction CASCCADE CONSTRANT supprime toutes les contraintes d'intégrité référentielles liées aux clés unique ou primaires de la table à supprimer. Exemple : DROP TABLE adr_fourn; 3
  • 4. d) Suppression de lignes d'une table : Syntaxe : TRUNCATE TABLE nom_table [{DROP | REUSE} STORAGE] Exemple : TRUNCATE TABLE produit REUSE STORAGE 2.2 Définition d'index a) Création d'index Syntaxe : CREATE INDEX nom_index ON table (colonne [ASC | DESC] [, colonne [ASC | DESC]]…) Exemple : CREATE INDEX ind_fourn ON fournisseur (nom DESC, ville); b) Suppression d'index Syntaxe : DROP INDEX nom_index Exemple : DROP INDEX ind_fourn; 2.3 Définition de vues a) Création d'une vue Syntaxe : CREATE [OR REPLECE] VIEW nom_vue AS requête [WITH CHECK OPTION [CONSTRAINT contrainte]] L'option WITH CHECK OPTION force la mise à jour des données à travers la vue à respecter la condition de la clause WHERE dans l'instruction 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 OPTION b) Suppression d'une vue Syntaxe : DROP VIEW nom_vue Exemple : DROP VIEW fourn_view; 4
  • 5. 3. Langage de manipulation de données : Permet la consultation de données et la mise à jour de données (insertion, modification et suppression). 3.1 Consultation de données Syntaxe : SELECT [ALL | DISTINCT] liste_de_sélection FROM 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 simple Syntaxe : SELECT liste_de_selection FROM liste_de_tables Exemples : • SELECT nom, ville FROM fournisseur; • SELECT * FROM fournisseur; b) Consultation avec qualification La qualification se fait à l'aide de la clause WHERE Syntaxe : WHERE condition Trois 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] NULL Exemples : • 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 n'importe 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 : c'est une jointure dont a condition est une comparaison d'égalité de deux colonnes appartenant à deux tables différents. 5
  • 6. ─ θ-jointure : c'est une jointure dont la condition est une comparaison autre que l'éalité de deux colonnes appartenant à deux tables différents. ─ Jointure multiple : c'est 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 : c'est une jointure d'une 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 : c'est 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 n'est 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 à l'une 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. c) Groupement de données et condition de groupement : • GROUP BY : permet de grouper des lignes de données aillant des valeurs comunnes et faire des traitements spécifiques sur ces groupes. Syntaxe : GROUP BY liste_de_groupes Exemples : - le nombre de ligne par commande : SELECT numcde, COUNT(*) FROM ligne_cde GROUP BY numcde; - le montant de chaque de chaque commande : SELECT numcde, SUM(Y.prixunit * qtecmde) FROM ligne_cde X, produit Y WHERE X.codeproduit=Y.codeproduit GROUP BY numcde ; • HAVING : liée à GROUP BY et permet de une restriction portant sur un groupe de lignes. Syntaxe : HAVING condition Exemple : 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 Y WHERE X.codeproduit=Y.codeproduit GROUP BY numcde HAVING 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 fournisseur ORDER BY ville, nom; Ou bien SELECT * FROM fournisseur ORDER BY 5, 2; 3.2 Opérateurs ensemblistes a) Union Syntaxe : Requête_select UNION [ALL] requête_select [UNION [ALL] requête_select...] b) Intersection Syntaxe : requête_select INTERSECT requête_select c) Différence Syntaxe : requête_select MINUS requête_seect 7
  • 8. 3.3 La mise à jour de données a) 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_select Exemple : INSERT INTO fourn_view SELECT numfourn, nom, ville FROM fournisseur WHERE ville=’casa’ ; b) Modification de données Syntaxe : • 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 fournisseur SET ville=’Rabat’ WHERE numfour=1 ; c) Suppression de données : Syntaxe : DELETE FROM {table | vue} [WHERE condition] Exemple : DELETE FROM fournisseur WHERE ville=’Rabat’ ; 8