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



Documents pareils
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

Le Langage SQL version Oracle

Langage SQL : créer et interroger une base

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

SQL Historique

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

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

1 Introduction et installation

16H Cours / 18H TD / 20H TP

Le langage SQL Rappels

MySQL / SQL EXEMPLES

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

Le Langage De Description De Données(LDD)

Bases de données relationnelles

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

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

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 relationnelles et leurs systèmes de Gestion

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

Mejdi BLAGHGI & Anis ASSÈS

MODE OPERATOIRE OPENOFFICE BASE

FileMaker 13. Guide de référence SQL

Bases de Données. Plan

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Systèmes de Gestion de Bases de Données

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

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

Introduction aux Bases de Données 2004/2005

Les bases de données

Olivier Mondet

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

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

Cours: Administration d'une Base de Données

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

Devoir Data WareHouse

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

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

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Optimisation SQL. Quelques règles de bases

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

Les bases de données Page 1 / 8

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

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

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

Bases de données Outils de gestion

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

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

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

Vincent Augusto

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

Création et Gestion des tables

Bases de données élémentaires Maude Manouvrier

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Chapitre 1 : Introduction aux bases de données

Encryptions, compression et partitionnement des données

TP Bases de données réparties

Base de données relationnelle et requêtes SQL

Les bases fondamentales du langage Transact SQL

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

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

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

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

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

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Bases de données relationnelles & SQL

Les BASES de DONNEES dans WampServer

Introduction aux Bases de Données

Bases de données et sites WEB

Cours: Les Jointures 1

SQL Server ressource SOMMAIRE

1/ Présentation de SQL Server :

CREATION WEB DYNAMIQUE

Gestion des utilisateurs et de leurs droits

Bases de Données Avancées

SUPPORT SQL. Thierry GRANDADAM

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

Le modèle de données

Utiliser Access ou Excel pour gérer vos données

Bases de données avancées

Cours 4 : Agrégats et GROUP BY

A QUOI SERVENT LES BASES DE DONNÉES?

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

Création de Sous-Formulaires

Bases de données cours 1

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

LE LANGAGE SQL2 1. INTRODUCTION

Quelques aspects du Relationnel-Objet du SGBD Oracle

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

Structured Query Language

Transcription:

Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un groupe d'utilisateurs travaillant en parallèle un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Système de Gestion de Bases de Données (SGBD) l'interface entre la base de données et les utilisateurs ou leurs programmes. un logiciel qui permet de : décrire, modifier, interroger, administrer les données d'une base de données. 1

Les objectifs du modèle relationnel : proposer des schémas de données faciles à utiliser, mettre à la disposition des utilisateurs des langages, optimiser les accès à la base de données, améliorer l'intégrité et la confidentialité, Dans un modèle relationnel : Les données sont organisées sous forme de tables à deux dimensions, encore appelées relations, les données sont manipulées par des opérateurs de l'algèbre relationnelle, l'état cohérent de la base est défini par un ensemble de contraintes d'intégrité. Relation entre les principales tables Absysnet table : structure de données formée de colonnes et de lignes enregistrement : collection de champs dont l'unité repose sur une ou plusieurs relations ligne champ : plus petit élément d'information (insécable) intersection d'une colonne et d'une ligne les clés : clé primaire : identifiant unique d'un enregistrement dans une table clé étrangère : attribut correspondant à la clé primaire d'une autre table (définit la relation) 2

chaines de caractères (alphanumérique) : longueur fixe : CHAR(n) longueur variable avec limite: VARCHAR(n) chaines numériques entier : INTEGER, SMALLINT, BIGINT flottant non précis: REAL, DOUBLE PRECISION flottant précis : NUMERIC valeurs de dates et heures : DATE autres : Text, booleen... Contient l'ensemble des instructions nécessaires à la spécification et à l'utilisation d'une base de données relationnelle. C est un langage normalisé Il associe des mots clés et des clauses pour trouver et visualiser quasiment toutes les informations possibles C est un langage très puissant, complexe mais qui peut être dangereux!! Il est à la fois : un langage d'interrogation de données (LID) : SELECT; un langage de manipulation de données (LMD) : UPDATE, INSERT, DELETE ; un langage de définition des données (LDD) : ALTER, CREATE, DROP; un langage de contrôle des données et des utilisateurs (LCD) : GRANT, REVOKE. 3

permet d'indiquer quelles colonnes, ou quelles expressions doivent être retournées par l'interrogation Syntaxe: SELECT * FROM nom_table ; ou SELECT nom_col1, nom_col2,.. FROM nom_table ; Exemples : Liste de tous les n commandes SELECT aadnaqfrom adquis; Liste de tous les n registres (n inventaires) SELECT * FROM conreg; * : tous les champs (colonnes) de la table nom_col1, nom_col2, : limite la sélection à certaines colonnes DISTINCT : suppression des doublons modification de la casse UPPER(chaine), LOWER(chaine) extraction de sous-chaine SUBSTR(chaine, départ, longueur) position de sous-chaine INSTR(chaine, départ, longueur) fonctions sur les chaines TRIM RTRIM LTRIM : enlève les blancs autour de la chaine (ou un autre caractère) fonctions de dates TO_CHAR : TO_CHAR(date, FORMAT ) ; transformation date en caractères suivant le FORMAT (exemple : DD/MM/YYYY ) SYSDATE : avoir la date et l heure du système 4

COUNT compte les lignes d une table ou d un groupe de lignes SUM total des valeurs d'une colonne numérique pour un nombre de lignes donné MIN et MAX retourne la valeur minimale/maximale d'une colonne dans un groupe de lignes une fonction d'agrégation ne renvoie qu'une seule valeur!! GROUP BY Regroupement ORDER BY Toujours citer en dernier Trier -ASC : ordre ascendant (par défaut) - DESC : ordre descendant HAVING (avec un regroupement) donne la liste des tables participant à l'interrogation. Il est possible de lancer des interrogations utilisant plusieurs tables à la fois. Liste des lecteurs par ordre alphabétique select leapel, lenomb, lefreg from lector order by leapel, lenomb Nombre de prêts actifs select count(prbarc) from presta; 5

Liste des lecteurs par ordre alphabétique avec le nom en majuscule et leur date d inscription select upper(leapel),initcap(lenomb), to_char(lefreg,'dd/mm/yyyy') from lector order by upper(leapel),initcap(lenomb) Nombre de lecteurs par type de lecteur select count(lenlec), lecolp from lector group by lecolp poser une condition sur les lignes via des opérateurs logiques comparaison : 6 opérateurs : =, <> ou!=, <, >, <=, >= BETWEEN/ NOT BETWEEN valeur1 AND valeur2 : rechercher des valeurs à l intérieur d une plage, bornes incluses(entre et ) IN / NOT IN (ensemble_valeurs) : comparer une valeur à une liste de valeurs spécifiées (dans) IS NULL/IS NOT NULL : savoir si la valeur est null(vide, non définie) ou pas (renseignée) LIKE / NOT LIKE : comparer une valeur ressemblant au modèle donné(comme). caractères jokers : _ remplace 1 caractère exactement % remplace une chaîne de caractères de longueur quelconque, y compris de longueur nulle conditions multiples : OR et AND condition1 AND condition2 vrai si les 2 conditions sont vérifiées condition1 OR condition2 vrai si l une des 2 expressions est vérifiée Priorité du AND sur le OR Utilisation des parenthèses est conseillée 6

Liste des exemplaires qui ne sont jamais sortis : select contit, cobarc, cococl, cosign, cococs, cofrec, conpre from copias where conpre=0 Liste des exemplaires les plus empruntés : select conpre, cobarc from copias where conpre >10 order by conpre desc Nombre d exemplaires par type de document pour une succursale donnée: select cococp, count(*) from copias where cocosu like 'BUL%' group by cococp order by cococp Liste des nouveaux titres depuis la rentrée universitaire : select tintit, tititu, tiauto, tifsad from titulo wheretibase='c' and tifsad >= to_date('01/09/2013','dd/mm/yyyy') order by tifsad desc 7

Effectuer une jointure, consiste à relier les deux tables par l'élément commun aux deux Permettre d obtenir des résultats qui combinent les données de plusieurs tables La + simple des jointures est la jointure interne ; elle n'affiche que les lignes qui respectent le critère de jointure Syntaxe : SELECT les_cols_a_afficher FROM table1, table2 WHERE table1.col=table2.col ou SELECT les_cols_a_afficher FROM table1 INNER JOIN table2 ON table1.col=table2.col Liste des lecteurs avec leurs prêts : select lenlec, leapel, lenomb, prbarc from lector, presta where lenlec=prnlec Liste des titres qui ont été acquis il y a plus de 2 ans sur un compte budgétaire donné select tititu, tintit, aafped from titulo, adquis, adqdet where aanadq=adnadq and adntit=tintit and aafped < add_months(sysdate,-24) and adcocu like ART% order by tintit desc Compter le nombre de prêts par lecteur Select prnlec, leapel, lenomb, count(prbarc) nb_pret from presta, lector where prnlec=lenlec group by prnlec, leapel, lenomb [having count(prbarc)>10 (on ne retient que ceux qui ont plus de 10 prêts en cours)] order by leapel, lenomb 8

LEFT JOIN : retourne tous les enregistrements de la table de gauche (LEFT = gauche) même si la condition n est pas vérifiée dans l autre table. RIGHT JOIN :retourne tous les enregistrements de la table de droite (RIGHT = droite) même si la condition n est pas vérifiée dans l autre table. Remarque : ancienne syntaxe (+) Liste de tous les lecteurs avec ou sans prêt : Select lenlec, leapel, lenomb, prbarc from lector left join presta on lenlec=prnlec order by prbarc desc Liste des exemplaires avec la date de retour de prêt le cas échéant pour une cote donnée : Select cobarc, tititu, prbarc from copias left join presta on cobarc=prbarc inner join titulo on contit=tintit where cosign like'930.26%' consiste à exécuter une requête à l intérieur d une autre requête. Syntaxe : SELECT col1, col2... FROM nom_table WHERE [Expression] Opérateur (SELECT cola, colb FROM nom_table2 WHERE [Expression2] ) 9

Liste des titres qui sont communs à 2 localisations données select contit, tititu from titulo, copias where contit=tintit and cococl like '4%' and contit in ( select contit from copias where cococl like '5%') Le livre le plus emprunté select cobarc, conpre from copias where conpre=(select max(conpre) from copias) combiner le résultat de 2 requêtes ou plus UNION: mettre en commun tous les enregistrements INTERSECT (intersection): identifier les enregistrements similaires MINUS (différence) : identifier les enregistrements appartenant à un ensemble mais pas à l'autre syntaxe : requete_1 { UNION INTERSECT MINUS} requete_2 même schéma pour requete_1 et requete_2 même nombre de variables Liste d exemplaires ayants un mauvais TITN select contit from copias minus select tintit from titulo Trouver les CB qui n ont jamais été prêtés select cobarc from copias where cobarc not in (select prbarc from presta union select phbarc from prehis) and cococp='c' 10

Gaelle.perrin@upmf-grenoble.fr Liste des notices de la base CANC avec des ex. non pilonnés ou perdus select trim(tibase), tintit, trim(ticdus), trim(tititu), trim(tiauto), trim(tiedit) from titulo, copias where tintit = contit and tibase = 'N' and costat not in ('P', 'X') Liste des exemplaires en dewey select cosign, cobarc from copias where substr(cosign,4,1) in ('.',' ') and substr(cosign,1,1) between '0' and '9' 11

Liste des commandes annulées sur une période donnée select aanadq, aafped, aastat, aacosu, aafsmd from adquis where aastat='c' and aafsmd between to_date('01/06/2009','dd/mm/yyyy') and to_date('30/06/2009','dd/mm/yyyy') Liste des commandes annulées du mois précédent select trim(aacosu), trim(pvnomb), trim(aacocu), trim(adnadq), to_char(aafped,'dd/mm/yyyy'), adntit, trim(tititu), adpedi, adreci, adcanc, adfact, adesti, to_char(adfsmd,'dd/mm/yyyy') from adqdet, adquis, titulo, provee where adntit = tintit and adnadq = aanadq and aanprv = pvnprv and adcanc > 0 and (aacosu='1' or aacosu ='24') and to_char(trunc(adfsmd, 'J'),'YYYYMM')= to_char(trunc(sysdate - 1, 'J'),'YYYYMM') order by aanprv, aanadq Liste des lecteurs inactifs sur une période donnée : pas d utilisation de la bibliothèque, pas de prêt depuis 1 an select distinct leapel, lenomb, lenlec from lector left join presta on lenlec=prnlec left join prehis on lenlec=phnlec left join reserv on lenlec=renlec wherelefult< add_months(sysdate,-12) and lefubi < add_months(sysdate,-12) and prfult < add_months(sysdate,-12) and phfdev < add_months(sysdate,-12) order by leapel, lenomb 12

Nombre de lecteurs TMP qui ont des prêts select count(*) from lector where lecolp = 'TMP' and lenlecin ( select prnlec from presta ) Nombre d abonnés par âge et par sexe inscrits ou réinscrits au cours de l année select count(*), letitu sexe, to_char(sysdate, 'YYYY')-to_char(lefnac, 'YYYY') age from lector where lefren between to_date('01/09/2013','dd/mm/yyyy') and to_date('31/08/2014','dd/mm/yyyy') or lefreg between to_date('01/09/2013','dd/mm/yyyy') and to_date('31/08/2014','dd/mm/yyyy') group by to_char(sysdate, 'YYYY')-to_char(lefnac, 'YYYY'), letitu order by to_char(sysdate, 'YYYY')-to_char(lefnac, 'YYYY'), letitu Traitement LEL : Sélection des exemplaires et lecteurs à traiter select trim(lenlec), trim(lenomb), trim(leapel), trim(prcolp), trim(prcol1), trim(prcol2), trim(prcol3), to_char(lefcad,'dd/mm/yyyy'), trim(learpd), trim(contit), trim(substr(tititu,1,20)), trim(prbarc), trim(prcocp), trim(prcocl), trim(prcoce), trim(cosign), trim(cosigs), to_char(prfpre,'dd/mm/yyyy HH24:MI:SS'), to_char(prfult,'dd/mm/yyyy HH24:MI:SS'), trim(prnren), round(sysdate-prfdev), trim(lecolp), to_char(sysdate,'dd/mm/yyyy HH24:MI:SS'), to_char(sysdate,'dd/mm/yyyy'), trim(prprsu), trim(prclas), trim(prorpr), trim(prcosu), trim(prcoc1), trim(prlebi),trim(prcorn), trim(prcopt), trim(prcomp), trim(prforc), trim(prcocs), trim(conpre), trim(lediso), trim(leadul) from copias, titulo, presta, lector where prbarc = cobarc and contit = tintit and prnlec = lenlec and prfdev < to_date('01/09/2011','dd/mm/yyyy') and lecolp not in ('SRV', 'PEB') order by prcosu, lenlec, contit, cobarc 13

Prêts en retard select cobarc, tititu, prnlec, lenomb, leapel from copias, titulo, presta, lector where prbarc = cobarc and contit = tintit and prnlec = lenlec and prfdev < sysdate and lecolp not in ('SRV', 'PEB') order by lecolp, leapel, lenomb, prfdev, tititu Nombre de prêts par section selon le type d exemplaire select count(prbarc),cococl, cococp from copias, presta where cobarc=prbarc group by cococl, cococp Liste des exemplaires en fin de réservation select to_char(r1.renlec) "CB lect", ltrim(substr(leapel,1,25)) "Nom lecteur", to_char(r1.rebarc) "CB exemp", ltrim(substr(cosign,1,20)) "Cote", ltrim(substr(tititu,1,50)) "Titre" from reserv r1, lector, copias, titulo where r1.recosu='1' and r1.renlec=lenlec and r1.rebarc=cobarc and contit=tintit and to_date(to_char(r1.reffin,'dd/mm/yyyy'))= to_date(to_char(sysdate,'dd/mm/yyyy')) and r1.refcom is not null and r1.rebarc not in (select r2.rebarc from reserv r2 where r2.rebarc=r1.rebarc and to_date(to_char(r2.reffin,'dd/mm/yyyy')) > to_date(to_char(sysdate,'dd/mm/yyyy')) and r2.refcom is null) order by "Nom lecteur" 14