SQL DML SELECT. SELECT DISTINCT ROUND(largeur * hauteur, 1) AS surfarr FROM t_peinture;



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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

Langage SQL : créer et interroger une base

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

Optimisation SQL. Quelques règles de bases

Cours 4 : Agrégats et GROUP BY

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

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

Devoir Data WareHouse

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

Introduction aux Bases de Données 2004/2005

Le Langage SQL version Oracle

1 Introduction et installation

Les bases fondamentales du langage Transact SQL

Systèmes de Gestion de Bases de Données

FileMaker 13. Guide de référence SQL

MySQL / SQL EXEMPLES

SQL Historique

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

Oracle Le langage procédural PL/SQL

16H Cours / 18H TD / 20H TP

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

MODE OPERATOIRE OPENOFFICE BASE

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

Vincent Augusto

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Présentation Windows Azure Hadoop Big Data - BI

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

Optimisations des SGBDR. Étude de cas : MySQL

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

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

Le Langage De Description De Données(LDD)

Bases de données relationnelles

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Créer une base de données

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

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

Les bases de l optimisation SQL avec DB2 for i

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

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

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

Business Activity Monitoring Guide de référence du serveur

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

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

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

Session S12 Les bases de l optimisation SQL avec DB2 for i

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

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

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

5 - SQL - Bases de 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

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

«Un tableau de bord médical en temps- réel à moindre coût»

Mejdi BLAGHGI & Anis ASSÈS

La présente publication est protégée par les droits d auteur. Tous droits réservés.

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

Excel avancé. Frédéric Gava (MCF)

Oracle : SQL. Denis Roegel roegel@loria.fr IUT Nancy / Introduction 2

Base de données relationnelle et requêtes SQL

Les bases de données

COURS SQL. SQL*Plus PL/SQL

INTRODUCTION AU DATA MINING

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Les dates SAS expliquées à ma fille

SQL Server 2000, Analysis Services et DTS

Manuel Viadeis CRM Connecteur intégration L100 étendue.

Utilitaires méconnus de StrataFrame

A QUOI SERVENT LES BASES DE DONNÉES?

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

Historisation des données

Bases de données élémentaires Maude Manouvrier

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

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

TP 8: LES OPERATEURS ENSEMBLISTES

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

BASE DE DONNÉES UNIVERSELLE

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

Évaluation et optimisation de requêtes

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

Corrigés détaillés des exercices

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

Chapitre 5 : Les procédures stockées PL/SQL

Quelques aspects du Relationnel-Objet du SGBD Oracle

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Administration de Bases de Données : Optimisation

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

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

Optimisation de MySQL

Mysql avec EasyPhp. 1 er mars 2006

Utiliser un tableau de données

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

1. Introduction Création d'une requête...2

Transcription:

SELECT pour des requêtes d extraction sur une table Syntaxe générale : Entre [ ] : des valeurs optionnelles Entre { } : une liste de valeur obligatoires possibles De part et d autre de : une valeur parmi celles proposées SELECT [ DISTINCT ALL ] { * liste_de_colonnes } FROM nom_de_table [ WHERE critères_de_selection ] [ GROUP BY liste_de_colonnes_de_regroupement ] [ HAVING critères_de_selection_après_groupement ] [ ORDER BY liste_de_colonnes_de_tri ] ; Clause SELECT, choisir les colonnes à afficher Ex. : Afficher toutes les colonnes de la table membre SELECT * Ex. : Afficher [ne pas supprimer les doublons, valeur par défaut] les colonnes nom et prenom de la table membre SELECT [ALL] nom, prenom FROM t_membre ; Ex. : Afficher les valeurs différentes des colonnes (supprimer les doublons) qui suivent (ici paysorigine)de la table membre SELECT DISTINCT paysorigine FROM t_membre ; Ex. : Afficher les datenais de la table membre et renommer cette colonne en Date_Naissance SELECT datenais AS Date_Naissance Ex. : Afficher les colonnes nom et prenom de la table membre, avec, comme 3eme colonne, une valeur constante chaîne de caractères un_membre SELECT nom, prenom, un_membre FROM t_membre ; Ex. : Afficher les différentes valeurs de largeur*hauteur, renommé surface, à partir de peinture SELECT DISTINCT ( largeur * hauteur ) AS surface FROM t_peinture ; Ex. : Afficher dans une colonne nommée nomprenom, la concaténation 1 de nom, un espace et prenom, à partir de membre SELECT nom prenom AS nomprenom FROM t_membre ; Ex. : Afficher dans une colonne nommée nommaj, les différentes valeurs de nom et les afficher en majuscule, à partir de membre SELECT DISTINCT UPPER(nom) AS nommaj 1 La concaténation utilise parfois le symbole + (SQL Server, par exemple) PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 1/8

Ex. : Afficher les différentes valeurs de largeur*hauteur arrondi à 1 décimale, renommé surfarr, à partir de peinture. SELECT DISTINCT ROUND(largeur * hauteur, 1) AS surfarr Ex. : Afficher les colonnes nom, prenom et extraire l année de la date de naissance et la renommer anneenaissance, à partir de peinture SELECT nom, prenom, EXTRACT (YEAR FROM datenais) AS anneenaissance Ex. : Afficher les colonnes id_activ, intitule_activ et selon le cas, afficher une affaire si tarif1_activ < 15 ou prix moyen si tarif1_activ < 15 sinon cher renommer cette colonne indicetarif, à partir de activite.. SELECT id_activ, intitule_activ, CASE WHEN tarif1_activ < 15 then une affaire WHEN tarif1_activ < 30 prix moyen ELSE cher END AS indicetarif FROM t_activite; Remarque importantes sur les fonctions appliquées sur des valeurs de colonnes Ces fonctions sont peu standardisées ; on va souvent les retrouver dans différents SGBDR nommées différemment. Fonctions bit_length, char_length, initcap, lower, upper, position, strpos, substring, substr, chaînes lpad, rpad, trim, rtrim, ltrim, replace, repeat, convert, cast, coalesce, sound,etc. Fonctions Abs, ceil, floor, log, mod, pi, power, degrees, radians, random, round, trunc, numériques sign, sqrt, etc. Fonctions dates To_char, to_date, to_number, age, current_date, now, date_part, extract Les colonnes affichées peuvent également provenir d une sous requête. SELECT numartiste, titre, prix, (SELECT AVG(prix) FROM t_oeuvre B WHERE A.numoeuvre = B.numoeuvre) AS moyenne FROM t_œuvre A; Clause FROM, choisir la table d origine des colonnes utilisées Ex. : Afficher toutes les colonnes de la table membre SELECT * Ex. : Afficher toutes les colonnes de la table membre SELECT membre.* Ex. : Afficher [tous] les noms et prénoms de la table M, surnom de la table membre SELECT M.nom, M.prenom FROM t_membre M ; Si l origine des colonnes nécessite l accès à plusieurs tables, ==> jointures PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 2/8

Clause WHERE, choisir les lignes à extraire Opérateurs de comparaison : =, <>, <, <=, >, >= Ex. : Afficher toutes les colonnes de la table membre : choisir les lignes pour lesquelles la valeur de la colonne id_memb est inférieure à 10 SELECT * FROM t_membre WHERE id_memb < 10; Ex. : Afficher toutes les colonnes de la table membre : choisir les lignes pour lesquelles la valeur de la colonne datenais est supérieure ou égal au 1 er janvier 1985 SELECT * FROM t_membre WHERE datenais >= 01/01/1985 ; Ex. : Afficher les colonnes nom et prenom de la table artiste : choisir les lignes pour lesquelles la valeur de la colonne paysorigine_artiste est égale à Italie SELECT nom, prenom FROM t_artiste WHERE lower(paysorigine) = Italie ;2 Ex. : Afficher toutes les colonnes de la table membre : choisir les lignes pour lesquelles la valeur de la colonne datenais est supérieure au 1 er janvier 1980 SELECT * FROM t_membre WHERE datenais > 01/01/1980 ; Concordance avec des modèles : LIKE, % et _, SIMILAR, [ ], [ ^ ], etc. paysorigine_artiste COMMENCE PAR es, avec n importe quoi derrière WHERE lower(paysorigine) LIKE 'es%'; paysorigine_artiste contient un. WHERE lower(paysorigine) LIKE '%un%'; paysorigine_artiste se termine par E, avec n importe quoi devant. WHERE lower(paysorigine) LIKE '_e%'; paysorigine_artiste commence par un lettre comprise entre F et M, avec n importe quoi derrière. WHERE lower(paysorigine) SIMILAR '[f-m]%'; paysorigine_artiste ne commence pas par un lettre comprise entre F et M, avec n importe quoi derrière. WHERE lower(paysorigine) SIMILAR '[^f-m]%'; 2 Dans la comparaison avec des chaînes de caractères, on utilisera des fonctions de conversion en majuscule (UPPER) ou minuscule (LOWER) afin d être sûr de la comparaison effectuée. Les SGBDR sont en général paramétrés pour, lors des comparaison, ignorer les différences majuscules/minuscules PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 3/8

Utilisation des listes de valeurs : IN, NOT IN Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la colonne paysorigine_artiste est l une des valeurs France ou Italie. WHERE lower(paysorigine) IN ( france, italie ); Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la colonne paysorigine_artiste N EST PAS l une des valeurs France ou Italie. WHERE lower(paysorigine) NOT IN ( france, italie ); Intervalles : BETWEEN... AND, NOT BETWEEN AND Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la colonne annee_oeuvre est comprise entre 1800 et 1900 WHERE annee BETWEEN 1800 AND 1900; Les connecteurs logiques pour combiner des critères : AND, OR Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la colonne annee_oeuvre est supérieure ou égal à 1800 ET inférieure ou égal à 1900 (= comprise entre 1800 et 1900, les bornes sont comprises) WHERE annee >= 1800 AND annee <= 1900; Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la valeur de la colonne annee_oeuvre est inférieure à 1800 OU supérieure à 1900 WHERE annee < 1800 OR annee > 1900; Opérateur de négation d une condition : NOT Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la condition annee_oeuvre comprise entre 1800 et 1900 N EST PAS VRAIE. WHERE NOT (annee >= 1800 AND annee <= 1800); Ex. : Afficher toutes les colonnes de la table artiste : choisir les lignes pour lesquelles la condition (paysorigine = Italie ) N EST PAS VRAIE, WHERE NOT (lower(paysorigine) = italie ); PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 4/8

Valeurs non renseignées : IS NULL, IS NOT NULL Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la valeur de la colonne annee_oeuvre est renseignée (= n est pas nulle) WHERE annee IS NOT NULL; Ex. : Afficher toutes les colonnes de la table oeuvre : choisir les lignes pour lesquelles la valeur de la colonne annee_oeuvre N EST PAS renseignée (= est nulle) WHERE annee IS NULL; Clause GROUP BY, colonnes et fonctions d agrégation Dès que GROUPER PAR ==> GROUP BY + colonnes de regroupement Compter en totalité, compter par : COUNT, DISTINCT Ex. : Afficher le nombre de lignes de la table membre après avoir choisi les lignes pour lesquelles la valeur de la colonne id_memb est inférieure à 50 SELECT COUNT(*) FROM t_membre WHERE id_memb < 50; Ex. : Afficher le nombre de lignes de la table oeuvre pour lesquelles la valeur de la colonne annee_œuvre N EST PAS NULLE SELECT COUNT(annee) FROM t_oeuvre; Ex. : Afficher le nombre de lignes de la table artiste pour lesquelles la valeur de la colonne paysorigine_artiste EST DIFFERENTE (=nombre de valeurs différentes de paysorigine_artiste) SELECT COUNT(DISTINCT paysorigine) FROM t_artiste; Ex. : Afficher le nombre de lignes de la table artiste PAR valeur de paysorigine SELECT paysorigine, COUNT(*) FROM t_artiste GROUP BY paysorigine; Calculer la somme en totalité, la somme par : SUM, DISTINCT Ex. : Afficher la somme des valeurs numériques de la colonne largeur_peinture à partir de la table oeuvre SELECT SUM(largeur) as LargeurTotale Ex. : Afficher la somme des valeurs numériques de la colonne largeur_peinture à partir de la table œuvre par valeur différente de hauteur_peinture SELECT hauteur, SUM(largeur) as LargeurTotale FROM t_peinture GROUP BY hauteur; PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 5/8

Calculer la moyenne en totalité, la moyenne par : AVG, DISTINCT Ex. : Afficher la moyenne des valeurs numériques de la colonne calculée à partir de la table peinture SELECT AVG(largeur_peinture * hauteur_peinture) as surfmoyenne Ex. : Afficher la moyenne des valeurs DIFFERENTES de la colonne calculée à partir de la table oeuvre SELECT AVG(DISTINCT(largeur_peinture * hauteur_peinture)) as surfmoyenne2 Ex. : Afficher la somme des valeurs de la colonne largeur_peinture à partir de la table œuvre par valeur différente de hauteur_peinture SELECT hauteur, SUM(largeur) as LargeurTotale FROM t_peinture GROUP BY hauteur; Recherche du minimum en totalité, le minimum par : MIN Ex. : Afficher la valeur la plus petite de la colonne largeur_peinture à partir de la table peinture SELECT MIN(largeur) Ex. : Afficher la valeur la plus petite de la colonne largeur_peinture à partir de la table œuvre par valeur différente de hauteur_peinture SELECT hauteur, MIN(largeur) FROM t_peinture GROUP BY hauteur; Recherche du maximum en totalité, le maximum par : MAX Ex. : Afficher la valeur la plus grande de la colonne calculée à partir de la table peinture SELECT MAX(largeur * hauteur) Ex. : Afficher la valeur la plus grande de la colonne largeur_peinture à partir de la table œuvre par valeur différente de hauteur_peinture SELECT hauteur, MAX(largeur) FROM t_peinture GROUP BY hauteur; PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 6/8

Clause HAVING, choisir les lignes après l agrégation Utilisation des opérateurs de comparaison sur les valeurs agrégées Ex. : Afficher le nombre de lignes de la table artiste par valeur de paysorigine_artiste, en ne prenant que les valeurs de paysorigine_artiste pour lesquelles le nombre d artistes est supérieur à 2. SELECT paysorigine, COUNT(*) FROM t_artiste GROUP BY paysorigine HAVING COUNT(*) > 2; Clause ORDER BY, classement final du résultat Classement croissant : ASC, pour ASCending (valeur par défaut) Classement décroissant : DESC, pour DESCending Ex. : Afficher la liste des membres classés par ordre alpha du nom, puis du prénom SELECT nom, prenom FROM t_artiste ORDER BY nom, prenom ; Ex. : Afficher le nombre de lignes de la table artiste par valeur de paysorigine_artiste, en ne prenant que les valeurs de paysorigine_artiste pour lesquelles le nombre d artistes est supérieur à 2. SELECT paysorigine, COUNT(*) AS nbartistes FROM t_artiste GROUP BY paysorigine HAVING COUNT(*) > 2 ORDER BY nbartistes DESC; PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 7/8

Complément Plusieurs requêtes SQL peuvent ensuite être assemblées : Requête1 UNION [ALL] requête2 UNION [ALL] requête3... [ORDER BY...]; Met bout à bout les résultats des différentes requêtes et supprime les doublons (DISTINCT implicite) à moins que ALL soit spécifié ; Requête1 INTERSECT [ALL] requête2; Renvoie les lignes communes aux 2 requêtes et supprime les doublons (DISTINCT implicite) à moins que ALL soit spécifié ; Requête1 EXCEPT [ALL] requête2; Renvoie les lignes de requete1 qui ne sont pas dans requete2 et supprime les doublons (DISTINCT implicite) à moins que ALL soit spécifié ; Ces opérations nécessitent que les requêtes soient UNION-COMPATIBLE, c'est-à-dire qu elles renvoient le même nombre de colonnes et que les colonnes soient d un type de données compatible. Evaluation de la performance des requêtes Les SGBD mettent à disposition des développeurs un ordre permettant d évaluer la performance d une requête. L utilisation de ce type d outil permet l optimisation de requêtes complexes afin de réduire la taille des résultats intermédiaires. Par exempple, pour PostgreSQL : EXPLAIN requête_sql ; Cependant les performances dépendent de nombreux autres critères (placement des fichiers de bases de données et journaux sur les disques, exploitation en milieu transactionnel, accès concurrents, etc.). PATDEZ-2006- SELECT pour des requêtes d extraction sur une table Page 8/8