Cours n 4 Le langage de manipulation des données (LMD)



Documents pareils
Le langage SQL Rappels

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Les bases de données

1 Introduction et installation

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Langage SQL : créer et interroger une base

Le Langage SQL version Oracle

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

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

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

16H Cours / 18H TD / 20H TP

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

SQL Historique

Cours 4 : Agrégats et GROUP BY

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 cours 4 Construction de requêtes en SQL. Catalin Dima

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

MySQL / SQL EXEMPLES

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

Information utiles. webpage : Google+ : digiusto/

Bases de données Outils de gestion

Bases de données relationnelles

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

Systèmes de Gestion de Bases de Données

Bases de données cours 1

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

MODE OPERATOIRE OPENOFFICE BASE

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI

SQL MAP. Etude d un logiciel SQL Injection

INTRODUCTION : Données structurées et accès simplifié

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Vincent Augusto

Structure fonctionnelle d un SGBD

Introduction aux Bases de Données

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

Bases de Données. Plan

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

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

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

SOMMAIRE. Travailler avec les requêtes... 3

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

Devoir Data WareHouse

FileMaker 13. Guide de référence SQL

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Optimisation SQL. Quelques règles de bases

Base de données relationnelle et requêtes SQL

Présentation du module Base de données spatio-temporelles

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Bases de Données Avancées

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

Introduction aux Bases de Données 2004/2005

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

Pratique et administration des systèmes

Bases de données avancées Introduction

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Administration des bases de données. Jean-Yves Antoine

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Mejdi BLAGHGI & Anis ASSÈS

CESI Bases de données

Master I Génie Logiciel

TD n 10 : Ma première Base de Données

Bases de données élémentaires Maude Manouvrier

PHP 5. La base de données MySql. A. Belaïd 1

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

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

Bases de données et sites WEB Licence d informatique LI345

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

Créer le schéma relationnel d une base de données ACCESS

Bases de données multidimensionnelles et mise en œuvre dans Oracle

Bases de données - Modèle relationnel

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Bases de données avancées

INTRODUCTION AU DATA MINING

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

IBM System i. DB2 Web Query for System i : le successeur de Query/400? Oui, mais bien plus!!!

S8 - INFORMATIQUE COMMERCIALE

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

Les Entrepôts de Données

ArcGIS 10.1 for Server

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

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

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

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

Pour les débutants. langage de définition des données

OpenPaaS Le réseau social d'entreprise

Rappel sur les bases de données

SUPPORT SQL. Thierry GRANDADAM

Transcription:

Cours n 4 Le langage de manipulation des données (LMD) Chantal Reynaud Université Paris X - Nanterre UFR SEGMI - Licence MIAGE Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 1

Plan I. Introduction II. Recherche de base (SELECT dans une seule table) Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 2

Partie I. Introduction I. Le langage SQL : historique et fonctions II. SQL et ORACLE II.1. Architecture du SGBDR Oracle II.2. SQL*PLUS ou l utilisation interactive de SQL sous Oracle II.3. Conventions générales Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 3

I. Le langage SQL SQL signifie «Structured Query Language» ou Langage d interrogation structuré. SQL est un langage complet de gestion de bases de données relationnelles. Il a été conçu par IBM dans les années 70 et est devenu le langage standard des SGBDR. SQL a été normalisé dès 1986 mais les premières normes, très incomplètes, ont été ignorées des éditeurs de SGBD. La norme actuelle SQL-2 (appelée aussi SQL-92) date de 1992. SQL-3 est en cours d homologation. C est à la fois : * un langage d interrogation de la base * un langage de manipulation des données * un langage de définition des données * un langage de contrôle de l accès aux données. SQL est utilisé par les principaux SGBDR : DB2, Oracle, Informix, Ingres, SQLServer, ACCESS. Chaque SGBD a cependant sa propre variante du langage. Ce cours présente un noyau de commandes disponibles sur l ensemble de ces SGBDR et leur implantation dans Oracle version 8.i. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 4

II. SQL et Oracle Architecture du SGBDR Oracle Couche externe SQL Noyau SQL*PLUS SQL*FORMS SQL*REPORT SQL*DBA Server Manager PRO* Couche réseau SQL*Net B.D. Diction -naire Base d info Bases de données distantes et réparties Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 5

II. SQL - Conventions générales Une base de données est un ensemble de tables gérées par un SGBD qui peuvent avoir été créées par différents utilisateurs. Lorsqu un utilisateur nomme une table, il s agit d une table lui appartenant. Pour accéder à une table appartenant à un autre utilisateur, il faut préfixer le nom de la table par le nom de l utilisateur et en avoir le droit. Création d une table «client» par différents utilisateurs Toto Titi Toto.client Titi.client Toto Interrogation de la table client Select * from client Select * from Titi.client Toto.client Titi.client Table (1,1) appartient (0,n) Utilisateur (1,n) est composée de (1,1) Colonne Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 6

Partie II. Recherche de base (SELECT dans une seule table) I. Les opérations de projection d une table II. Les opérations de sélection dans une table III. Le tri des tuples IV. Fonctions et expressions V. Requêtes sur les groupes Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 7

La recherche de base ou interrogation SELECT FROM WHERE GROUP BY HAVING ORDER BY... Obligatoires Ordre des clauses à respecter. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 8

II.1. Les opérations de projection d une table - Choix des attributs SELECT nom(s) de colonne FROM nom_table; a) SELECT * FROM STAGIAIRE; b) SELECT Nom-St FROM STAGIAIRE; c) SELECT Num-St, Nom-St FROM STAGIAIRE; d) SELECT Nom-St AS nom FROM STAGIAIRE; e) SELECT Nom-St nom FROM STAGIAIRE; f) SELECT Nom-St AS 'nom de stagiaire' FROM STAGIAIRE; * signifie que toutes les colonnes de la table sont sélectionnées. Le nom complet d une colonne d une table est le nom de la table suivi d un point et du nom de la colonne. Ex : STAGIAIRE.Nom-St. Le nom de la table peut être omis quand il n y a pas d ambiguïté. L ordre des attributs dans la table résultat sera l ordre d apparition dans le SELECT ou l ordre dans la table si * Par défaut, les attributs de la table résultat portent le même nom que les attributs de la table d origine sauf si ce nom est redéfini : SELECT nom_colonne [AS] nom_redéfini FROM nom_table; Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 9

II.1. Les opérations de projection d une table Empêcher les répétitions de lignes SELECT DISTINCT nom(s) de colonne FROM nom_table; SELECT Type-Stage FROM STAGE; Type-Stage TP TP TP TP TP Cours TP Démonstration Démonstration SELECT DISTINCT Type-Stage 'nature du stage' FROM STAGE; nature du stage TP Cours Démonstration Remarque : Si on indique plusieurs noms de tables derrière le FROM, on obtient un produit cartésien. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 10

II.1. Les opérations de sélection dans une table Les éléments de la clause WHERE La clause WHERE permet de spécifier quelles sont les lignes à sélectionner dans une table ou dans le produit cartésien de plusieurs tables. Elle est suivie d un prédicat, c est-àdire une expression logique prenant la valeur vrai ou faux et qui sera évalué pour chaque ligne. Les lignes pour lesquelles le prédicat est évalué à vrai sont sélectionnées. Les expressions logiques peuvent être composées d une suite de conditions combinées entre elles par les opérateurs AND, OR, NOT. L opérateur AND est prioritaire par rapport à l opérateur OR. Des parenthèses peuvent être utilisées pour imposer une priorité dans l évaluation du prédicat, ou simplement pour rendre plus claire l expression logique. L opérateur NOT placé devant un prédicat en inverse le sens. Les différentes formes d expressions logiques : comparaison à une valeur, comparaison à une fourchette de valeurs, comparaison à une liste de valeurs, comparaison à un filtre, test sur l indétermination d une valeur, test tous ou au moins un, test existentiel, test d unicité Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 11

II.1. Les opérations de sélection dans une table La comparaison à une valeur WHERE exp1 = exp2 WHERE exp1!= exp2 WHERE exp1 < exp2 WHERE exp1 > exp2 WHERE exp1 <= exp2 WHERE exp1 >= exp2 WHERE exp1 is NULL WHERE exp1 is not NULL Exp2 peut être une constante. Les chaînes de caractères doivent apparaître sous forme d une séquence de caractères entre apostrophes. Exp2 peut être une expression obtenue par application d opérateurs (+, -, x, /) sur des noms d attributs ou des constantes exp1 is NULL est vraie si exp1 a la valeur NULL. Le prédicat exp1 = NULL est toujours faux et ne permet pas de tester si l expression a une valeur indéterminée. ) SELECT Num-St, Nom-St FROM STAGIAIRE WHERE Adr-St = 'Paris'; ) SELECT Num-Stage FROM STAGE WHERE Nb-jours > 4; ) SELECT Num-Stage FROM STAGE WHERE (Prix-jour * nb-jours) > 5000; ) SELECT Num-Stage, Libellé-Stage, Type-Stage, Num-Cat FROM STAGE HERE Type-Stage = TP AND Num-Cat = 1; ) SELECT Num-Stage, Libellé-Stage, Type-Stage, Num-Cat FROM STAGE HERE NOT(Type-Stage = TP OR Num-Cat = 1); Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 12

II.1. Les opérations de sélection dans une table La comparaison à une fourchette ou une liste de valeurs SELECT FROM WHERE Cond1 [NOT] BETWEEN val1 AND val2; SELECT Num-Stage, Libellé-Stage, Num-Cat FROM STAGE WHERE Num-Cat BETWEEN 1 AND 3; SELECT FROM WHERE Nom_colonne [NOT] IN (liste_valeurs); SELECT Num-Stage, Libellé-Stage, Num-Cat FROM STAGE WHERE Num-Cat IN (1,3); NOT IN sert à sélectionner les lignes dont l attribut dans la clause WHERE contient une valeur autre que celle de la liste MATCH est équivalent à IN MATCH UNIQUE rend la valeur vraie que si la valeur ne se trouve qu une seule fois dans la liste. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 13

II.1. Les opérations de sélection dans une table La comparaison à un filtre SELECT FROM WHERE nom_colonne [NOT] LIKE Modèle de chaîne'; Teste l égalité de deux chaînes en tenant compte des caractères jokers dans la 2ème chaîne. «_» remplace 1 caractère exactement, «%» remplace une chaîne de caractères de longueur quelconque. %objet% sélectionne sur la présence de la constante objet à n importe quelle place dans la chaîne %a_ sélectionne sur la présence d un a minuscule à l avant-dernière place %@%% sélection sur la présence de % n importe où dans la chaîne. a) SELECT Num-St, Nom-St, Prénom-St FROM STAGIAIRE WHERE Nom-St LIKE Var% ; b) SELECT Num-St, Nom-St, Prénom-St FROM STAGIAIRE WHERE Nom-St LIKE PE N ; c) SELECT Num-St, Nom-St, Prénom-St FROM STAGIAIRE WHERE Nom-St LIKE _AR% ; Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 14

III. Le tri des tuples L ordre dans lequel les lignes d une table résultat apparaissent est indéterminé. Pour trier les lignes dans un ordre déterminé, il faut utiliser la clause ORDER BY. SELECT FROM ORDER BY num_colonne1 [DESC], num_colonne2 [DESC],... ; On peut trier selon la valeur d un ou de plusieurs attributs. Les attributs selon lesquels le tri est demandé doivent obligatoirement faire partie de la clause SELECT. L option facultative DESC donne un tri par ordre décroissant. Par défaut, l ordre est croissant. Le tri se fait d abord selon le premier attribut, puis les lignes ayant la même valeur pour ce premier attribut sont triées selon le 2ème attribut, etc. Les valeurs nulles sont toujours en tête. a) SELECT Num-Stage, Libellé-Stage FROM STAGE ORDER BY Num-Stage; b) SELECT Num-Stage, Libellé-Stage FROM STAGE ORDER BY 1; c) SELECT Num-Stage, Libellé-Stage, Nom-Cat FROM STAGE WHERE NOT(Type-Stage = Cours ) ORDER BY Num-Cat, Num-Stage DESC; Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 15

IV. Fonctions et expressions Les différentes fonctions disponibles sous Oracle Fonctions arithmétiques Fonctions chaînes de caractères Fonctions Date Fonctions de conversion Fonctions diverses Fonctions de groupe Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 16

IV. Fonctions et expressions Les fonctions de groupe Un groupe est un ensemble de tuples d une table pour lesquels la valeur d un attribut est constante. Les fonctions de groupe effectuent un calcul sur l ensemble des valeurs d un attribut pour un groupe de tuples. Il existe 5 fonctions de groupe (7 sous Oracle) : COUNT, SUM, AVG, MIN, MAX (+ VAR, STDEV sous Oracle) Une fonction peut apparaître dans une clause SELECT, elle sera affichée comme un attribut ou une expression MAIS, en l absence de clause GROUP BY, on ne peut mettre ensemble des fonctions de groupe et des attributs dans un même SELECT. a) SELECT AVG(Nb-jours) Durée_moyenne FROM STAGE; b) SELECT AVG(Poids-Art) pmoyen, MAX(PV-Art - PA-Art) Margemax FROM ARTICLE COUNT(*) compte les lignes de la table résultat (toutes, même celles dont la valeur est NULL) COUNT(distinct attribut) compte le nombre de valeurs différentes prise par l attribut Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 17

V. Requêtes sur les groupes La clause Group by Elle réarrange la table résultat en un nombre minimum de groupes, tels que, à l intérieur de chaque groupe, l attribut spécifié possède la même valeur pour chaque tuple. Cette clause n affecte pas l organisation physique de la table. Lorsqu on spécifie une clause GROUP BY, les fonctions de groupe sont calculées pour chaque groupe. Cette clause permet l affichage de l attribut commun aux tuples d un groupe, suivi de l affichage de la valeur des fonctions appliquées au groupe. On peut ajouter une clause WHERE qui sélectionne les tuples SELECT Nom-Cat, AVG(Nb-jours) FROM STAGE GROUP BY Nom-Cat; SQL fait des groupes d après la valeur de Nom-Cat, puis, pour chaque valeur de Nom-Cat, calcule la moyenne de l attribut Nb-jours. Il affiche les valeurs de Nom-Cat correspondant à chaque groupe et la moyenne associée. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 18

V. Requêtes sur les groupes La clause Having Cette clause est l équivalent du WHERE appliquée aux groupes. Elle ne peut exister qu avec une clause GROUP BY. Pratiquement, le critère spécifié dans le HAVING porte sur la valeur d une fonction calculée dans un groupe. a) SELECT Nom-Cat, AVG(Nb-jours) FROM STAGE GROUP BY Nom-Cat HAVING AVG(Nb-jours) > 4; b) SELECT Nom-Cat, AVG(Nb-jours) FROM STAGE WHERE Type-Stage = TP GROUP BY Nom-Cat HAVING AVG(Nb-jours) > 4; Attention : 1) En présence d un GROUP BY, tout attribut dans la clause SELECT doit figurer dans la clause GROUP BY. 2) Une fonction de groupe ne se trouver que dans les clauses SELECT ou HAVING. Cours de Systèmes de Gestion de Données - IUP MIAGE 2003/2004 19