SQL. LIF4 - Initiation aux Bases de données : SQL - 1. Exemple. Interrogation simple. mot clé DISTINCT. Exemple 2

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 Rappels

Le Langage SQL version Oracle

1 Introduction et installation

Les bases de données

Langage SQL : créer et interroger une base

16H Cours / 18H TD / 20H TP

Introduction au Système de Gestion de Base de Données et aux Base de 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

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

INTRODUCTION AU DATA MINING

TP Contraintes - Triggers

Optimisation SQL. Quelques règles de bases

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

SQL Historique

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

Bases de Données. Plan

Bases de données avancées Introduction

Le Langage De Description De Données(LDD)

TP Bases de données réparties

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

Vincent Augusto

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

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 relationnelles

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 réparties: Fragmentation et allocation

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

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

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

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

FileMaker 13. Guide de référence SQL

MODE OPERATOIRE OPENOFFICE BASE

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

Bases de données - Modèle relationnel

MySQL / SQL EXEMPLES

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

Bases de données et sites WEB

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

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

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

Olivier Mondet

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

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

A QUOI SERVENT LES BASES DE DONNÉES?

Cours: Les Jointures 1

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

données en connaissance et en actions?

Introduction aux Bases de Données 2004/2005

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

Bases de données cours 1

Systèmes de Gestion de Bases de Données

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

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

Structure fonctionnelle d un SGBD

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

SUPPORT SQL. Thierry GRANDADAM

Bases de données Outils de gestion

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

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

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

Les bases de l optimisation SQL avec DB2 for i

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

UML et les Bases de Données

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

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

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

Création de Sous-Formulaires

CORRIGÉ GEDOC SA. Proposition de barème sur 70 points

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

Comprendre les bases de données

Cours Bases de données

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

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

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

Évaluation et optimisation de requêtes

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

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

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

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

IFT3030 Base de données. Chapitre 1 Introduction

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Mejdi BLAGHGI & Anis ASSÈS

Présentation Windows Azure Hadoop Big Data - BI

Les bases fondamentales du langage Transact SQL

Transcription:

SQL LIF4 - Initiation aux Bases de données : SQL - 1 E.Coquery emmanuel.coquery@liris.cnrs.fr http ://liris.cnrs.fr/ ecoquery Un langage concret interagir avec le modèle relationnel : Un langage de manipulation de données. Un langage de description de données. Un langage pour administrer la base, gérer les contrôles d accès. Origine : IBM, dans les années 70. Standards : SQL-87 : 1987 (ISO) SQL-2 : 1992 (ANSI) SQL-3 : 1999 SQL-2003 SQL-2006 Différences avec la théorie : possibilités de doublons ; possibilité d ordonner le résultat des requêtes ; notion de valeur non définie. Interrogation simple FROM nom table ; Récupérer les valeurs contenus dans la table nom table, en ne gardant que les attributs att1, att2,... En algèbre relationnelle : π att1,att2,...(nom table) En calcul relationnel tuple : {t.att 1, t.att 2, nom table(t)} Donner le nom et la fonction de chaque employé :,Fonction ; π Nom,Fonction (Employe) {t.nom, t.fonction Employe(t)} On peut remplacer att 1, att 2,... par * pour utiliser tous les attributs. 2 mot clé DISTINCT Donner les informations sur chaque employé : SELECT * ; Employe {t.nom, t.num, t.fonction, t.num sup, t.embauche, t.salaire, t.num Dept Employe(t)} Le mot clé DISTINCT permet d éliminer les doublons dans le résultat. : Donner les différentes fonctions occupées dans l entreprise : SELECT DISTINCT Fonction ;

Sélections (de lignes) Conditions du WHERE FROM nom table La clause WHERE spécifie les lignes à sélectionner grâce à la condition. En algèbre relationnelle : π att1,att2,...(σ condition (nom table)) En calcul relationnel tuple : {t.att 1, t.att 2, nom table(t) condition} Expressions simples : Comparaisons (=,!=, <, <=, >, >=) entre un attribut et une constante ou un autre attribut différents types de données utilisés pour les constantes : nombres : 1, 1980, 1.5 chaînes de caractères : Martin, directeur dates : 1980-06-18 le formattage des dates peut varier Combinaison d expressions via : le : AND le : OR Quels sont les employés dont la date d embauche est antérieure au 1 er janvier 1999 : WHERE Embauche < 1999-01-01 ; π Nom (σ Embauche< 1999 01 01 (Employe)) {t.nom Employe(t) t.embauche < 1999 01 01 } 2 Quels sont les employés dont la date d embauche est antérieure au 1 er janvier 1999 et touchant au moins 30000 euros de salaire : WHERE Embauche < 1999-01-01 AND Salaire >= 30000 ; π Nom (σ Embauche< 1999 01 01 (Employe)) {t.nom Employe(t) t.embauche < 1999 01 01 } Autres conditions Autre exemple L opérateur IN permet de spécifier un ensemble de valeur possibles : Quels sont les employés qui sont directeur ou ingénieur?, Fonction WHERE Fonction IN ( ingenieur, directeur ) ; L opérateur BETWEEN... AND permet de spécifier un intervalle de valeurs : Quels employés gagnent entre 25000 et 30000 euros?, Salaire WHERE Salaire BETWEEN 25000 AND 30000 ; Attention à ne pas confondre le AND du BETWEEN avec celui qui correspond au. Quels sont les employés directeur ou ingénieur, embauchés entre le 1 er janvier 1990 et le 31 décembre 1999 gagnant moins de 32000 euros?, Embauche, Fonction, Salaire WHERE Fonction IN ( ingenieur, directeur ) AND Embauche BETWEEN 1990-01-01 AND 1999-12-31 AND Salaire < 32000 ; condition, connecteur

Valeurs non définies En pratique, il est possible d avoir des valeurs non définies. Elles sont représentées par le mot clé NULL. On peut tester si une valeur n est pas définie grâce à la condition IS NULL (ou au contraire IS NOT NULL) Batiment(Num bat, Nom bat, Ent princ, Ent Sec) Les bâtiments qui n ont pas d entrée secondaire auront une valeur NULL pour l attribut Ent Sec. La requête suivante indique les bâtiments n ayant pas d entrée secondaire : SELECT * FROM Batiment WHERE Ent sec IS NULL ; Tri du résultat d une requête En pratique, il peut être intéressant de trier le résultat d un requête. FROM nom table Le résultat de la requête est trié par ordre croissant sur l attribut att i En cas d égalité entre deux lignes au niveau de l attribut att i, on utilise l attribut att j, etc... Dans un ORDER BY, il est possible de faire suivre le nom d un attribut par ASC ou DESC pour indiquer un ordre croissant ou décroissant. Requêtes sur plusieurs tables Donner le nom des employés du département numéro 20, en triant le résultat par salaire décroissant, puis par nom (croissant) : WHERE Num dept=20 ORDER BY Salaire DESC, Nom ; FROM nom table 1, nom table 2,... Il est possible d utiliser plusieurs tables dans une requête. Cela correspond à effectuer un produit cartésien entre les différentes tables. Si un attribut est présent dans plusieurs tables utilisées, on doit l écrire nom table.att Jointures En SQL, la jointure s exprime comme une sélection sur le produit cartésien. Jointure naturelle sur les relations R(A 1, A 2, B 1, B 2 ) et S(C 1, C 2, B 1, B 2 ) peut s exprimer par : SELECT A 1, A 2, R.B 1, S.B 2, C 1, C 2 FROM R, S WHERE R.B 1 =S.B 1 AND R.B 2 =S.B 2 Batiment(Num bat, Nom bat, Ent princ, Ent Sec) Departement(Num dept, Nom dept, Num bat) Donner les départements avec leur bâtiments : Departement Batiment SELECT Num dept, Nom dept, Batiment.Num bat, Nom bat, Ent princ, Ent sec FROM Departement, Batiment WHERE Departement.Num bat = Batiment.Num bat ; Une notation similaire peut être utilisée pour renommer les attributs dans le SELECT.

Renommages Il est parfois utile de renommer des tables : FROM nom table 1 nouveau nom 1, nom table 2 nouveau nom 2,... Indication des renommage dans le FROM. Les anciens noms indiqués dans le FROM ne peuvent pas être utilisés dans les autres parties de la requête. Utile lorsque l on veut effectuer des jointures ou des produits cartésiens d une table avec elle-même. Schema : Donner les noms et la fonction des employés avec le nom de leur supérieur hiérarchique. π Nom,Superieur,Fonction (σ Num=Num sup ( π Nom,Num sup,fonction (Employe) π Superieur,Num (ρ Nom/Superieur (Employe)))) SELECT Employe.Nom, Employe.Fonction, Chef.Nom Superieur, Employe Chef WHERE Chef.Num = Employe.Num sup ; 2 Sous-requêtes Schema : Quels sont les employés, donnés avec leur salaire, qui gagnent moins que Bellot? SELECT Employe.Nom, Employe.Salaire, Employe bel WHERE Employe.Salaire < bel.salaire AND bel.nom = Bellot ; Il est possible d utiliser le résultat d une requête dans une autre requête. Augmentation de la puissance d expression du langage. Les sous-requêtes sont utilisables dans les parties WHERE FROM (à condition de renommer le résultat) SELECT (à condition que pour chaque ligne sélectionnée par la requête principale, on ne selectionne qu une ligne dans la sous-requête). En cas de conflit sur les nom, c est la déclaration la plus proche qui est utilisée. : Sous-requête liée à la requête principale Si la sous-requête renvoie un résultat simple sur une ligne : Quels sont les employés ayant la même fonction que Jones? WHERE Fonction = (SELECT Fonction WHERE Nom= Jones ) ; Quels sont les employés qui ne travaillent pas dans le même département que leur supérieur? Emp WHERE Num dept!= (SELECT Num dept WHERE Emp.Num sup = Num);

Sous-requêtes renvoyant plusieurs lignes Opérateurs permettant d utiliser de telles sous-requêtes : a IN (sous requete) vrai si a apparaît dans le résultat de sous requete. a ANY (sous requete) où peut être {=, <, >, <=,>=} vrai si il existe un b parmi les lignes renvoyées par sous requete tel que a b soit vrai. a ALL (sous requete) où peut être {=, <, >, <=,>=} vrai si pour toutes les lignes b renvoyées par sous requete, a b est vrai. EXISTS (sous requete) vrai si le résultat de sous requete n est pas vide. Quels sont les employés, donnés avec leur salaire, gagnant plus que tous les employés du département 20?, Salaire WHERE Salaire > ALL (SELECT Salaire WHERE Num dept = 20) ; 2 Sous-requête avec un résultat à plusieurs colonnes Quels sont les employés qui ont un subalterne? Chef WHERE EXISTS ( WHERE Employe.Num sup = Chef.Num) ; On peut utiliser la notation (a, b,...) pour former un n-uplet à comparer avec le résultat de la sous-requête : Quels sont les employés ayant même fonction et même supérieur que Bellot? WHERE (Fonction, Num sup) = (SELECT Fonction, Num sup WHERE Nom= Bellot ) ; Sous-requêtes imbriquées Il est possible d imbriquer les sous-requêtes : Donner le nom et la fonction des employés du département 20 ayant même fonction qu une personne du département de Dupont., Fonction WHERE Num dept = 20 AND fonction IN (SELECT Fonction WHERE Num dept = (SELECT Num dept WHERE Nom = Dupont )) ;