Exercices sur les fonctions qui divergent d Oracle



Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Devoir Data WareHouse

Le langage SQL Rappels

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Bases de données relationnelles

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

FileMaker 13. Guide de référence SQL

Historisation des données

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Présentation Windows Azure Hadoop Big Data - BI

Le Langage De Description De Données(LDD)

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de Données relationnelles et leurs systèmes de Gestion

Le Langage SQL version Oracle

Langage SQL : créer et interroger une base

TP Contraintes - Triggers

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Partie 0 : Gestion des tablespace et des utilisateurs... 3

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

A QUOI SERVENT LES BASES DE DONNÉES?

Corrigés détaillés des exercices

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Cours SQL. Base du langage SQL et des bases de données

SQL Historique

Compétences Business Objects

Introduction aux Bases de Données 2004/2005

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Cours Bases de données 2ème année IUT

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

TP3 : Creation de tables 1 seance

Paginer les données côté serveur, mettre en cache côté client

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Notes de cours : bases de données distribuées et repliquées

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Systèmes de Gestion de Bases de Données

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

1 Introduction et installation

MySQL / SQL EXEMPLES

Introduction au Système de Gestion de Base de Données et aux Base de Données

Auto-évaluation Oracle: cours de base

PHP 4 PARTIE : BASE DE DONNEES

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

1. Base de données SQLite

Administration de Bases de Données : Optimisation

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

A QUOI SERVENT LES BASES DE DONNÉES?

Création et Gestion des tables

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Encryptions, compression et partitionnement des données

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Le langage SQL (première partie) c Olivier Caron

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Les BASES de DONNEES dans WampServer

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

CREATION WEB DYNAMIQUE

Optimisation SQL. Quelques règles de bases

Département Génie Informatique

Retour d'expérience migration Oracle vers PostgreSQL. Vincent Moreau Adeo Services

Bases de données Cours 4 : Le langage SQL pour ORACLE

Master Exploration Informatique des données DataWareHouse

Partie II Cours 3 (suite) : Sécurité de bases de données

Oracle 11g - Dataguard

Les Utilisateurs dans SharePoint

Olivier Mondet

Cours 4 : Agrégats et GROUP BY

BD51 BUSINESS INTELLIGENCE & DATA WAREHOUSE

Les bases de données

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

1/ Présentation de SQL Server :

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de Données Avancées PL/SQL

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Oracle Le langage procédural PL/SQL

Réplication logique avec PostgreSQL 9.4

2 Serveurs OLAP et introduction au Data Mining

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Installation d'un serveur FTP géré par une base de données MySQL

Gestion des utilisateurs et de leurs droits

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Gestion de base de données

Sybase Adaptive Server Enterprise 15

Oracle. SQL 2 & SQL*Plus. Auteur : Clotilde Attouche. Version 1.1. Du 6 Mars 2010

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

420-PK6-SL Banques de données Avancées UTILISATEURS

Mysql. Les requêtes préparées Prepared statements

Transcription:

Exercices sur les fonctions qui divergent d Oracle Toutes les questions devront être réalisées sous ORACLE et Postgres a) Manipulations ex_1.sql, out_1.sql Décrivez la structure détaillée des tables de votre base. emacs ex_1.sql \d+ out_1.sql \d+ ex_2.sql, out_2.sql Décrivez la structure de la table étudiants. emacs ex_2.sql \d etudiants ; out_2.sql \d etudiants ; b) fonction DECODE ex_3.sql, out_3.sql Listez pour chaque étudiant, le nom, le prénom et un champ appelé qui aura pour alias CALC et qui sera obtenu comme suit : Si le nom est par exemple SPANNAGEL et le prénom est loïc, le champ CALC sera SIX_L. Partant du fait qu il y a 6 caractères ou plus dans le nom, le champ CALC commence par SIX. Si le nom est par exemple SAIDI et le prénom est mouhssine, le champ CALC sera CINQ_M. Le résultat est à ordonner selon le champ CALC. SELECT nom, prenom, note, CASE WHEN note >= 11 and note <= 13 THEN 'ASSEZ_BIEN' WHEN note >= 14 and note <= 17 THEN 'BIEN' WHEN note >= 18 and note <= 20 THEN 'EXCELLENT'END as "CMT" from etudiants, obtenir_note where etudiants.identif = obtenir_note.identif order by note, nom, prenom; \w ex_3.sql \g out_3.sql

SELECT nom, prenom, note, decode(note,11,'assez_bien', 12,'ASSEZ_BIEN', 13,'ASSEZ_BIEN', 14,'BIEN', 15,'BIEN', 16,'BIEN', 17,'BIEN', 18,'EXCELLENT', 19,'EXCELLENT', 20,'EXCELLENT') as "CMT" from etudiants, obtenir_note where etudiants.identif = obtenir_note.identif order by note, nom, prenom; ex_4.sql, out_4.sql Affichez le nom, le prénom, la note, ainsi qu un champ commentaire qui aura pour alias CMT (qui sera défini par la règle qui suit) pour les étudiants ayant obtenus des notes dans n importe quel examen (il suffit que l étudiant figure dans la table obtenir_note). Le résultat est à ordonner par note, puis nom, puis prénom. Si 11 <= Note <= 13 => Le commentaire est: ASSEZ_BIEN Si 14 <= Note <= 17 => Le commentaire est: BIEN Si 18 <= Note <= 20 => Le commentaire est: EXCELLENT SELECT nom, prenom, CASE WHEN length(nom) = 1 THEN 'UN_' WHEN length(nom) = 2 THEN 'DEUX_' WHEN length(nom) = 3 THEN 'TROIS_' WHEN length(nom) = 4 THEN 'QUATRE_' WHEN length(nom) = 5 THEN 'CINQ_' ELSE 'SIX_'END UPPER(substr(prenom,1,1)) as "CALC" from etudiants order by "CALC"; \w ex_4.sql \g out_4.sql SELECT nom, prenom, decode( length(nom),1,'un_', 2,'DEUX_', 3,'TROIS_', 4,'QUATRE_', 5, 'CINQ_', 'SIX_') UPPER(substr(prenom,1,1)) "CALC" from etudiants order by "CALC";

c) fonction NVL (modifier dans le script pour que la requête marche) ex_5.sql, out_5.sql Donnez la liste des étudiants (identifiant, nom, prénom) qui n ont jamais eu (obtenu) un zéro tout examens confondus, en mettant le commentaire «absent» si l étudiant n a pas de note pour cette exam. Ordonnez le résultat par l identifiant étudiant. select e.identif, e.nom, e.prenom, COALESCE(TO_CHAR(o.note, '99'), 'Absent') from etudiants e, obtenir_note o where e.identif = o.identif and o.note <> 0 order by e.identif; select e.identif, e.nom, e.prenom, NVL(TO_CHAR(o.note, '99'), 'Absent') from etudiants e, obtenir_note o where e.identif = o.identif and o.note <> 0 order by e.identif; ex_6.sql, out_6.sql Donnez la moyenne obtenue par les étudiants, sachant que celle-ci est égale au rapport de la somme des notes obtenues aux examens par le nombre d examens passés par cet étudiant. Ordonner le résultat par l identifiant étudiant. select e.identif,sum(coalesce(obn.note,0))/count(coalesce (obn.note,1)) as "MOY" from examens ex,obtenir_note obn,etudiants e where e.identif = obn.identif and obn.code_exam = ex.code_exam group by e.identif; select e.identif,sum(nvl(obn.note,0))/count(nvl(obn.note,1)) from examens ex,obtenir_note obn,etudiants e where e.identif = obn.identif and obn.code_exam = ex.code_exam group by e.identif;

d) fonctions ADD_MONTHS / ADD_DAYS ex_7.sql, out_7.sql Le directeur de l école vous demander de lui faire des statistiques sur les examens. Il aimerait reculer les examens de 6mois. En affichant le libelle exam et le champ «Stat» qui va contenir votre calcul. Pas de function ADD_MONTHS sous postgres on suppose alors qu un mois fait 30 jours D ou Select LIBELLE_EXAM, TO_DATE(DATE_EXAM, 'MM/DD/YYYY')+180 "Stat" from examens; \w ex_7.sql \g out_7.sql Select LIBELLE_EXAM, add_months(to_date(date_exam, 'MM/DD/YYYY'), 6) "Stat" from examens; e) fonction TO_CHAR (formatage de sortie) ex_8.sql, out_8.sql Déplacer tous les cours de 10 jours et afficher le code cours, la date a laquelle il se déroulera et l heure sous la forme : Le cours 9 a lieu le Lundi 13 Mai 2002 de 09:00 heure a 12:00 heure. Select 'Le cours ' code_cours 'a lieu le ' to_char(to_date(date_cours, 'DD/MM/YYYY')+ 10, 'fmday dd Month yyyy "de" ') heure_deb 'heure a ' heure_fin 'heure.' from cours; Select 'Le cours ' code_cours 'a lieu le ' to_char(to_date(date_cours, 'DD/MM/YYYY')+ 10, 'fmday dd Month yyyy "de" ') heure_deb 'heure a ' heure_fin 'heure.' from cours;

f) Tables virtuelles ex_9.sql, out_9.sql Affichez les promotion(s) (tous les champs) qui ont le plus grand nombre d examens à l année pour toutes matières confondues. Ordonnez de manière dégressive le résultat par code promo. Select promotions.* from promotions, (Select code_promo from est_suivi_par group by est_suivi_par.code_promo having sum(nbr_exam_an) = (select max(xx.su) from (select sum(nbr_exam_an) as su from est_suivi_par group by code_promo) as xx )) as tt where tt.code_promo = promotions.code_promo order by promotions.code_promo desc; \w ex_9.sql \g out_9.sql select * from promotions where code_promo IN (select code_promo from est_suivi_par having sum(nbr_exam_an) = (select max(sum(nbr_exam_an)) from est_suivi_par group by code_promo) group by code_promo) order by code_promo DESC; ex_10.sql, out_10.sql Donnez le nombre moyen d'examens prévus par matière toutes promotions confondues. Affichez le code matière et utilisez l'alias NPEX pour le champ Calculé, le résultat est à ordonner par matière (code matière). select xx.code_mat, avg(xx.npex) as "NPEX" from etudiants, (select code_grp, code_mat,count(code_exam) as NPEX from planifier group by code_mat, code_grp) as xx where etudiants.code_grp = xx.code_grp group by xx.code_mat order by xx.code_mat; \w ex_10.sql \g out_10.sql select xx.code_mat, avg(xx.npex) as "NPEX" from etudiants, (select code_grp, code_mat,count(code_exam) as NPEX from planifier group by code_mat, code_grp) xx where etudiants.code_grp = xx.code_grp group by xx.code_mat order by xx.code_mat;

g) Implémentation de séquences dans une table. ex_11.sql, out_11.sql Créez la table PRFDS, qui est une copie de la table Professeurs avec une colonne supplémentaire DDE correspondant à la date d embauche, celle-ci sera par défaut initialisée à la date du jour (une seule requête). En fichier de sortie, afficher tous les enregistrements de la table PRFDS create table "PRFDS" as (select code_prof, nom_prof, type, email_prf, current_date as "DDE" from professeurs ); ou ce qui est identique : create table "PRFDS" as (select p.*, current_date as "DDE" from professeurs p ); select * from "PRFDS" ; \g out_11.sql Idem ex_12.sql, out_12.sql Puis créez une séquence SQ_PRF allant de 100 à 1000, s'incrémentant de 10. Afficher tous les champs de votre séquence en fichier de sortie. create sequence "SQ_PRF" increment 10 minvalue 100 maxvalue 1000 start 100; select * from "SQ_PRF" ; \g out_12.sql idem ex_13.sql, out_13.sql A la fin modifiez la table PRFDS pour qu à chaque fois que l'on insère une donnée dans la table, la clef primaire utilise la séquence comme valeur. En fichier de sortie décrivez la structure de la table PRFDS. alter table "PRFDS" alter column code_prof set default nextval('"sq_prf"'); out_13.sql \d "PRFDS" alter table "PRFDS" alter column code_prof set default SQ_PRF.nextval();

ex_14.sql, out_14.sql Créez la table ETUD, qui est une copie de la table étudiants. En fichier de sortie afficher tous les enregistrements de la table ETUD create table "ETUD" as (select * from etudiants); out_13.sql Select * from "ETUD"; IDEM ex_15.sql, out_15.sql Puis créez une séquence SQ_ETUD allant de 200 a 1000, s'incrémentant de 4. Afficher tous les champs de votre séquence en fichier de sortie. create sequence "SQ_ETUD" increment 4 minvalue 200 maxvalue 1000 start 200; en sortie select * from "SQ_ETUD" ; \g out_12.sql Idem ex_16.sql, out_16.sql A la fin modifiez la table ETUD pour qu à chaque fois que l'on insère une donnée dans la table, la clef primaire utilise la séquence comme valeur. En fichier de sortie décrivez la structure de la table ETUD. alter table "ETUD" alter column code_etud set default nextval('"sq_etud"'); out_16.sql \d "ETUD" alter table "PRFDS" alter column code_prof set default SQ_ETUD.nextval();

h) Clause LIMIT nbr OFFSET start ex_17.sql, out_17.sql Afficher les étudiants (identif, nom, prénom) classés par groupe (code groupe) puis par identifiant et limitez le résultat a l affichage de la ligne 10 à la ligne 15 SELECT identif, nom, prenom, code_grp from etudiants order by code_grp, identif limit 5 OFFSET 9 ; \g out_17.sql Existe pas