BDD4 : Langage SQL. 1 Introduction. 2 Bloc de qualication. Langage SQL Cours - Bases de données 4

Documents pareils
1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1 Introduction et installation

Langage SQL : créer et interroger une base

Le langage SQL Rappels

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

SQL Historique

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

16H Cours / 18H TD / 20H TP

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

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

MODE OPERATOIRE OPENOFFICE BASE

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

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

Les bases de données

MySQL / SQL EXEMPLES

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

Bases de données avancées Introduction

Le Langage SQL version Oracle

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

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

TP3 : Creation de tables 1 seance

Information utiles. webpage : Google+ : digiusto/

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours 4 : Agrégats et GROUP BY

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

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

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

Bases de données relationnelles

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Vincent Augusto

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

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

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

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

Bases de Données. Plan

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Systèmes de Gestion de Bases de Données

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

Chapitre 11 Bases de données

Les BASES de DONNEES dans WampServer

Compte-rendu de projet de Système de gestion de base de données

Optimisation SQL. Quelques règles de bases

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

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

Bases de données élémentaires Maude Manouvrier

Année Universitaire 2009/2010 Session 2 de Printemps

INTRODUCTION AU DATA MINING

Modélisation de bases de données : Le modèle relationnel

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Le Langage De Description De Données(LDD)

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

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

Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

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

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

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Les bases fondamentales du langage Transact SQL

TP Bases de données réparties

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

Bases de données Outils de gestion

Structured Query Language

Bases de données - Modèle relationnel

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Introduction à JDBC. Accès aux bases de données en Java

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

1 Modélisation d une base de données pour une société de bourse

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

CREATION WEB DYNAMIQUE

Introduction aux Bases de Données 2004/2005

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

Cours Bases de données

Ecole Polytechnique de Louvain INGI Fichiers et bases de données

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

Cours: Les Jointures 1

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

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

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

SQL Server et Active Directory

Base de données relationnelle et requêtes SQL

1. Base de données SQLite

Introduction aux Bases de Données

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

PostgreSQL. Formations. Calendrier... 14

Exercices et solutions

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

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

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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

Objectif. Participant. Prérequis. Oracle BI Suite EE 10g R3 - Développer des référentiels. 5 Jours [35 Heures]

Recherche dans un tableau

FileMaker 13. Guide de référence SQL

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Transcription:

BDD4 : Langage SQL 1 Introduction Conjointement à la dénition des bases de données relationnelles, un langage spécique permettant à l'utilisateur d'eecteur des requêtes sur une base a été développé. Ce langage est nommé SQL pour Structured Query Language. Il existe de nombreux gestionnaires de base de données, diérents par bien des aspects mais permettant tous de comprendre les requêtes écrites dans ce langage. SQL a été standardisé par l'ansi en 1986 puis par l'iso en 1989, 1992, 1999, 2003 et 2008. Ces standards successifs ont étendu les capacités du langage. En plus de ces standards, SQL possède de nombreux dialectes spéciques à chaque SGBD. En eet, le développement des SGBD s'est déroulé en parallèle, voire a précédé la standardisation de la norme SQL. En conséquence, seul un sous-ensemble de la norme est supporté par la grande majorité des SGBD (en particulier les SGBD open-source). Ce sous-ensemble correspond en fait à la norme SQL-92. C'est donc cette version de la norme SQL que nous allons présenter ici. On peut distinguer dans SQL trois sous-langages particuliers : le langage de manipulation de données (DML pour Data Manipulation Language), qui permet d'obtenir des informations et de les mettre à jour ; le langage de description de données (DDL pour Data Description Language), qui permet de créer des relations, de modier leur schéma etc. le langage de contrôle des données (DCL pour Data Control Language) qui permet de restreindre l'accès des données. Lors des travaux pratiques, nous utiliserons une application fournissant une interface graphique pour eectuer nos requêtes : SQLite Admin. Nous supposerons dans ce cours pour traiter des exemples que nous gérons une chaîne de locations de véhicules. Nous disposerons donc de deux tables Agence et Vehicule dont les schémas relationnels sont : Agence : (id_agence,n), (ville,s), (dep,n) Vehicule : (id_vehicule,n), (marque,s), (modele,s), (couleur,s), (km,n), (neige,b), (id_agence,n) 2 Bloc de qualication La structure de base est le bloc de qualication introduit par le mot-clé SELECT SELECT Ai,..., An colonnes et agrégations relation WHERE F assertion GROUP BY A regroupement HAVING H assertion ORDER BY T tri ; nit la requête Les clauses GROUP BY, ORDER BY et HAVING et WHERE sont optionnelles. Nous pouvons détailler la sémantique des clauses FROM, WHERE et SELECT : SELECT désigne les attributs des n-uplets (ou enregistrements) qui doivent apparaître dans la solution (Quelles colonnes je veux?). FROM permet de préciser quelles sont la ou les relations sur lesquelles on pose la requête ` (Dans quelles tables?) ; WHERE permet de poser une assertion qui doit être vériée par les lignes de la table solution (Quels critères?) ; Informatique 1/ 6 Lyc. J. Perrin (13)

Les trois dernières clauses nous font sortir du calcul et de l'algèbre relationnelle : La clause GROUP BY dénit comment regrouper des n-uplets (agrégation) La clause HAVING impose une condition sur les groupes (i.e. permet d'éliminer l'intégralité d'un groupe, en se basant sur la valeur d'un agrégat calculé sur ce groupe). La clause ORDER BY dénit les critères de tris des résultats. Le bloc de qualication simple (ne contenant que les clauses SELECT, FROM et WHERE) est donc une combinaison d'une projection et d'une sélection éventuellement appliquée à une jointure. 3 Opérations sur une seule table 3.1 Projection Une projection simple aura en particulier comme syntaxe : SELECT Ai,..., Ap ; Remarquons que l'on peut obtenir avec une projection des n-uplets identiques, en particulier si on ne sélectionne pas la clé primaire parmi les colonnes de la projection. Pour éviter cela, on peut utiliser le mot clé DISTINCT placé après SELECT. Exercice 1 : Donner la requête SQL qui renvoie la liste des véhicules en achant leur marque et leur modèle 3.2 Sélection SELECT * WHERE F ; Ici, * désigne l'ensemble des colonnes de la relation R. F est une expression logique permettant de sélectionner les colonnes. L'expression logique peut contenir des constantes et des noms de colonnes de la relation R. On la construit avec les opérateurs suivants : <, <=, =, >=, >, <> ; AND, OR, NOT ; IN, par exemple IN ('Peugeot', 'Renault') ; Exercice 2 : Donner la requête SQL qui renvoie la liste des véhicules ayant plus de 30000 km. Informatique 2/ 6 Lyc. J. Perrin (13)

Exercice 3 : Donner la requête SQL qui renvoie la liste des véhicules ayant entre 10000 et 50000 km, et dont la marque commence est Peugeot ou la couleur est verte. On achera la marque, le modèle, le kilométrage et la couleur de chaque véhicule. 3.3 En-têtes de colonnes L'entête des colonnes de la table résultat d'une requête est soit le nom de l'attribut correspondant, soit une expression de calcul contenant le nom d'un attribut. Pour une meilleure présentation, on peut changer le nom des colonnes de la table résultat en utilisant le mot-clé AS SELECT col1 AS 'Nouveau nom 1', col2 AS 'Nouveau nom 2'... ; L'entête du résultat aché portera les noms Nouveau nom 1 et Nouveau nom 2 au lieu de col1 et col2. Exercice 4 : Donner la requête SQL qui renvoie la liste des véhicules dont le modèles est une Renault en achant la marque, le modèle et le kilométrage avec des colonnes dont le nom est donné par la liste précédente. 3.4 Tris de données Pour fournir un résultat trié suivant certaines colonnes, il existe une clause particulière, la clause ORDER BY. ORDER BY liste des attributs où chaque élément de la liste est un attribut suivi de ASC (ordre ascendant) ou DESC (ordre descendant). Par défaut, c'est ASC qui est utilisé. Exercice 5 : Donner la requête SQL pour demander quel la liste des véhicules triés par kilométrage décroissant puis par marque croissante (dans l'ordre alphabétique) : Informatique 3/ 6 Lyc. J. Perrin (13)

4 Opérations sur plusieurs tables 4.1 Sélection sur plusieurs tables SELECT A1,..., Ap 1, R2,..., Rk WHERE F ; Si l'on considère t1,..., tk des nuplet-s respectifs de R1,..., Rk, le n-uplet (t1,..., tk) sera qualié s'il satisfait la formule logique F. La table résultat sera obtenue en eectuant une projection de (t1,..., tk) sur A1,..., Ap. La requête est donc semblable à π A1,...,A p (σ F (R 1... R k )) Dans le cas d'attributs provenant de tables diérentes et portant le même nom, on les distingue en les préxant par le nom de la relation. Exercice 6 : Donner la requête SQL pour donner les marques et modèles des véhicules disponibles à l'agence d'arles 4.2 Jointures La seule jointure au programme est la jointure symétrique. Il s'agit de créer une jointure selon des critères d'égalité. On peut donc voir la jointure comme la composition d'un produit cartésien et d'une sélection. On utilise la syntaxe JOIN...ON... : R JOIN S ON F R JOIN S ON F établit la jointure de R et S sur le critère F (qui est une expression logique). Le résultat de cette expression est évidemment une relation. On peut donc l'utiliser dans une sélection. Exercice 7 : Donner la requête SQL pour donner les modèles des véhicules disponibles à l'agence d'arles. Exercice 8 : Donner la requête SQL pour donner la liste des véhicules dont le kilométrage est inférieur ou égal à 30 000 km et qui sont disponibles dans une agence du département 13. 5 Fonctions d'agrégation Les opérateurs d'agrégation permettent d'eectuer des opérations sur certaines colonnes d'une relation. On retrouve dans SQL les mêmes opérateurs qu'en algèbre relationnelle étendue : Informatique 4/ 6 Lyc. J. Perrin (13)

SUM qui permet de sommer une colonne contenant des valeurs numériques AVG qui permet de moyenner une colonne contenant des valeurs numériques MIN et MAX qui retourne respectivement la plus petite et la plus grande valeur d'une colonne COUNT retourne le nombre de valeurs d'une colonne. Si l'on note OP1, OP2,..., OPk des opérateurs d'agrégations, la syntaxe de leur utilisation est la suivante : SELECT OP1(Ai),...,OPk(Aj) WHERE F ; Seul l'opérateur COUNT peut s'utiliser avec * : COUNT(*) permet de compter tous les n-uplets résultant d'une requête. Exercice 9 : Donner la requête SQL pour donner le kilométrage moyen de tous les véhicules. Exercice 10 :Combien de véhicules sont disponibles à l'agence de Marseille? 6 Groupement de données et sélection par agrégation Lorsqu'on souhaite utiliser une fonction d'agrégation dans une sélection, le seul bloc WHERE est insusant. On utilise alors le bloc GROUP BY... HAVING... : SELECT colonne1, OP(colonne2) GROUP BY colonne1 HAVING fonction(colonne2) operateur valeur Cela permet donc de ne garder que les colonnes de la table R en groupant les lignes qui ont des valeurs identiques sur la colonne colonne1 et que la condition de HAVING soit respectée. Exercice 11 : Donner la requête SQL qui ache le nombre de véhicules de chaque marque, en ne gardant que les marques pour lesquelles on possède plus de 5 véhicules. Informatique 5/ 6 Lyc. J. Perrin (13)

Exercice 12 : Donner la requête SQL pour acher la liste des ville des agences (on suppose que chaque ville ne contient qu'une seule agence) avec le nombre de véhicules disponibles dans chaque agence, en ne gardant que les agences qui disposent d'au moins 6 véhicules. Les résultats seront triés par ordre décroissant du nombre de véhicules total. 7 Sous-requêtes Le résultat d'une requête est une table. On peut donc mettre le résultat d'une requête après un FROM, ou utiliser le résultat d'une fonction d'agrégation obtenue par une requête dans une clause WHERE. Cette technique, très puissante, s'appelle une sous-requête. Exercice 13 :Donner la requête SQL achant la marque et le modèle du véhicule noir ayant le plus grand kilométrage. Exercice 14 :Donner la requête SQL achant le véhicule ayant le deuxième kilométrage le plus élevé du parc automobile. Informatique 6/ 6 Lyc. J. Perrin (13)