Exercice SQL.doc

Le recours au langage SQL fonde l'usage d'un raisonnement partant de l'
expression du résultat à obtenir. Son apprentissage ..... PROPOSITION DE
CORRIGE.

Part of the document


Exercice SQL

Exercice 1 :
create table METEO (
Nom_ville varchar2(13) constraint METEO _Nom_Ville_NN NOT NULL,
Date_Exemple DATE Not_null,
TEMPERATURE_Min number(3,1),
TEMPERATURE_mid number(3,1),
PRECIP number(5,1)
);
Exercice 2 :
create table PERSONNEL (
Prenom varchar2(13) constraint PERSONNEL_Prenom_NN NOT
NULL,
Nom varchar2(13) constraint PERSONNEL_Nom_NN NOT NULL,
Titre varchar2(15),
Id varchar2(5) PRIMARY KEY,
Salaire number(6,2),
Departement varchar2(10) constraint PERSONNEL_Departement_NN NOT
NULL,
);
Exercice 3 :
create table RIVIERES (
Nom varchar2(20) PRIMARY KEY,
Longueur number(4) constraint RIVIERES_Longueur_CK
CHECK (Longueur between 100 and 4200),
Debit varchar2(20) constraint RIVIERES_Debit_NN NOT NULL
);
Exercice 4 :
ALTER table EMP add Performance Varchar(15) constraint EMP_Performance_ck
check (Performance in ("satisfaisante", "Excellente", "Insuffisante")) ;
Exercice 5 :
ALTER table Clients MODIFY (Adresse Varchar2(25)) ;
Exercice 6 :

ALTER TABLE Rivières DROP Constraint RIVIERES_Debit_NN ;


Exercice 7 :

Create table classe (
Code_Cours varchar2(5)
Code_Classe varchar2(4)
Salle_de_Classe varchar2(5)
Enseignant varchar2(25)
Effectif_Max number(2) Constraint classe_effectif_max_ck
(Effectif_Max between 10 and 30),
Constraint classe_code_
1) ALTER TABLE ADD Assistant_Enseignant varchar2(15) ;
2) ALTER TABLE MODIFY Assistant_Enseignant varchar2(25) ;
3) ALTER table classedrop constraint Effectif_Max_ck;
Exercice 8 : Cas Grossiste en boulangerie

1) MRD

CATEGORIE(#Code de la catégorie, Nom de la catégorie, Taux de remise)
PRODUITS (#Référence du produit, Désignation du produit, Prix unitaire)
CLIENTS (#N°Client, Raison sociale, @, Téléphone, # Code Postal)
FACTURES (#N° Facture, Date de facturation, # N° Client)
VILLES (#Code Postal, Nom de la ville)
Lignes-Factures(# PRODUITS, # FACTURES, Quantité)
2) Langage SQL
Liste des clients :
Create table CLIENTS(
N° Client int(5) NOT NULL,
Raison sociale varchar(20)
Adresse varchar(20)
Code Postal varchar(5)
Téléphone varchar(10) ;
Constraint

Exercice 9 :
Employés (Num nom, fonction, N_supérieur, embauche, salaire, commision , #
N Dépt)
Département (N Dépt, nom Dept, lieu)
1) Insert into Employés values ('BARA', '24831','administratif', '16712',
'10/9/88','15000','30') ;
2) Delete from Employés where nom='Lefèvre' ;
3) 3) Select Count (*) from Employés where fonction ='Ingénieur' ;
4) Select Nom from Employés where commission is not null ;
Where commission > 0;
5) Select nom from Employés where month(embauche)=5;
6) Update Employés set N Dépt=20 where nom='SIMON';
7) Select nom from Employés, département where Employés.N-
Dépt=Département.n-Dépt
And Lieu ='Rennes'
8) Créer une vue de nom vendeurs qui affiche le nom des commerciaux
Create view Vendeurs as select nom from employés where fonction
='commercial' with check option;
Select * from Vendeurs;
9) Créer une vue de nom Dirigeant qui affiche le nom et fonction du
personnel de la direction (Directeur & Administration
Create view Dirigeant as select nom, fonction, from employé,
département
Where employés.N-Dépt=Département.N-Dépt
And nom-Dépt='Direction' ;
Select * from dirigeant ;
10) Mettre à jour la vue Vendeurs pour afficher les ingénieurs
Update Vendeurs set fonction ='ingénieur' ;
Create view or replace vendeurs as select...
11) Parmi les commerciaux, quels sont ceux qui gagnent plus de 15000E ?
Select nom FROM Employé
Where fonction='commerciaux'
And Salaire > 15000E


Exercice 3 :
1) Alter user Amstrong identified by span23;
2) Create user Galvani identified by ght45k;
3) Grant select insert on ARTICLES to Amstrong, Galvani;
Grant select insert on INVENTAIRES to Amstrong, Galvani;
4) Revoke select on scott.inventaires from Amstrong;
Revoke select on scott.articles from Amstrong;
Revoke create table, create view from Amstrong;
5) Drop user Amstrong CASCADE;
Exercice 4:
1) Select nom, fonction, salaire from Employés where (Fonction,salaire)
in (select from Employé where num_salarié="16712")
2) Select nom_dept from departement where n_dept=(select n_dept from
employés where num = 25935);
3) Select nom, salaire from employés where n_dept in (select n_dept from
employés where nom="simon");
4) Select nom from employés where n_dept=any (select n_dept from
departement);
5) Select nom from employés where salaire