Partie2: Introduction à SQL LANGAGE DE REQUETES RELATIONNEL CHAPITRE 4: INTERROGATION DES BASES DE DONNÉES.

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Manipulation des données dans SQL
Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Bases de données : modèlisation et SGBD
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
LMD: Langage de Manipulation de Données
AYARI Mejdi Formation 2121 * ISD * 1 tructured uery Anguage 2006.
Contrôles d'accès aux données
L’utilisation des bases de données
BASE DE DONNEES RELATIONNELLES
LE LANGAGE SQL Langage de manipulation de données (LMD)
Les fonctions de groupes Gestion des transactions
Bases de données et SGBD relationnels
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
SQL partie3: Langage de définition des données
Bases de Données Avancées - TP2: SQL
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Maria Berger - Maîtrise d'AES
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Chapitre 5 : Le langage SQL
SQL Partie 1.
SQL partie 3. SQL est un langage de définition de données SQL est un langage de définition de données (LDD), c'est-à-dire qu'il permet de créer des tables.
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
SQL (deuxième partie) Langage de manipulation de données (LMD) Chap 4.6 p 107.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Sélection de colonnes (la projection)
SQL : Langage de Manipulation des données
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
 Le langage SQL Introduction SQL : Strutured Query Language, est un langage de requête, que l'on retrouve dans divers SGBDR (Access de Microsoft, MySQL,
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Complément sous-requêtes
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Bases de données – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
Le langage SQL LA Plan 1. Introduction Rappels sur le modèle relationnel Les caractéristiques du langage SQL 2. Le Langage d'Interrogation des.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
Bases de données : modèlisation et SGBD Séance 3.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Langages d’interrogation et de manipulation. N. ChaignaudGM4 - Base de données2 1. Algèbre relationnelle  Ensemble d’opérations permettant de manipuler.
Langage de manipulation de données (LMD)
Structured Query Language
Manipulation D’Une Base De Données
Transcription de la présentation:

Partie2: Introduction à SQL LANGAGE DE REQUETES RELATIONNEL CHAPITRE 4: INTERROGATION DES BASES DE DONNÉES

Le langage SQL SQL = Structured Query Langage Langage standard - 4ème génération (SQL89, SQL2, SQL3) Langages de requêtes SQL pour BdD relationnelles  LANGAGE DE DESCRIPTION DE DONNÉES (LDD)  Création de tables, contraintes, modification, …  LANGAGE DE MANIPULATION DE DONNÉES (LMD)  Interrogation/Modification de la BdD

SQL L ANGAGE DE D ESCRIPTION DE D ONNÉES Instructions: CREATE, DROP, ALTER TABLE L ANGAGE DE M ANIPULATION DE D ONNÉES Instructions: SELECT, INSERT, DELETE, UPDATE

DÉFINITION DES DONNÉES LDD DÉFINITION DU SCHEMA DE LA BDD Introduction à SQL

Création de table Une table (relation en algèbre relationnelle) se créé par l’instruction CREATE TABLE CREATE TABLE nom_table (nom_col1type_col1[contrainte1] [, nom_col2type_col2[contrainte2] … ] );

Contraintes sur les colonnes PRIMARY KEY Clé primaire de la table. Pour désigner plus d’une colonne, on l’utilise comme une clause PRIMARY KEY(col1, col2, …) à côté des définitions de colonnes NOT NULL Doit avoir une valeur pour chaque enregistrement UNIQUE Chaque enregistrement doit avoir une valeur différente CHECK condition La valeur doit respecter une condition donnée

Exemple de création de table CREATE TABLE Etudiant ( Matricule INT PRIMARY KEY, Nom VARCHAR(30) NOT NULL, Prénom VARCHAR(30) NOT NULL DateNais date, Résidence VARCHAR(30), Spécialité VARCHAR(10) CHECK (type IN (‘Tcommun’, ‘management’, ‘comptabilité’,’autres’) );

Suppression & renommage d’une table Une table est supprimée par l’instruction DROP TABLE DROP TABLE nom_table; Une table est renommée par l’instruction RENAME TABLE RENAME TABLE ancien_nom TO nouveau_nom;

Modification d’une table Le contenu d’une table peut être modifié par l’instruction ALTER TABLE ALTER TABLE nom_table modification1, modification 2…; Les modifications portent sur des ajouts, suppressions ou remplacements de colonnes avec pour syntaxe : ADD (nom_col type_col [contrainte]) DROP nom_col MODIFY nom_col type_col [contrainte]

Exemple de modification de table ALTER TABLE ETUDIANT ADD (Université VARCHAR(30)), MODIFY Nom VARCHAR(20) NOT NULL, DROP DateNais;

LANGAGE DE MANIPULATION DES DONNÉES LMD Introduction à SQL

Insertion d’enregistrement (TUPLE) Un enregistrement (tuple en algèbre relationnelle) s’insère dans une table par l’instruction INSERT INTO INSERT INTO nom_table[(nom_col1, nom_col2, …)] VALUES (val1, val2, …) [(val3, val4, …)]; Exemple : INSERT INTO ETUDIANT VALUES (1, ‘ Hamidi’, ‘Omar’, 19/08/1989, ‘alger’, ‘autre’), (2, ‘ Achouri’, ‘Karim’, 12/08/1988, ‘Ourgla’, ‘Tcommun’),

Suppression d’enregistrement Un ou plusieurs enregistrements se suppriment par l’instruction DELETE DELETE FROM nom_table WHERE conditions; conditions exprime un ensemble de condition pour sélectionner (à la manière de l’opérateur relationnel de sélection) les enregistrements à effacer. Exemple : DELETE FROM Client WHERE nom = ‘ Messoudi’;

Modification d’enregistrement Un ou plusieurs enregistrements se modifient par l’instruction UPDATE UPDATE nom_table SET nom_col1 = expr1 [, nom_col2 = expr2]… WHERE conditions; conditions exprime un ensemble de condition pour sélectionner les enregistrements à modifier et les clauses SET indiquent les modifications à effectuer. Exemple : UPDATE Client SET spécialité = ‘comptabilité’ WHERE nom = ‘ Hamidi ’;

Requête SELECT Une requête d’interrogation de la BdD s’écrit à l’aide de l’instruction SELECT ….Consultation SELECT [DISTINCT] table1.attr1 [, table2.attr2]… | expr FROM table1 [, table2]… [WHERE condition] [ORDER BY expr [DESC]] [GROUP BY expr] [HAVING expr]

Tables des exemples - ÉTUDIANT matriculeNomPrénomAnnéeNaisrésidenceUniversité 0012/06BetoucheMalek1990AlgerESC 0045/07TrabelssiIsmail1988boumerdesUSTHB 0124/05GuessoumLila1989MedeaESC 0166/07BouchardiAhmed1992MascaraIni 0485/07DilmiAhmed1991AdrarESC 0120/08ZiadiMounir1988AlgerUSTHB 0225/08OthmaniDjamila1990BlidaINI ÉTUDIANT

Interrogation de la BdD Projection Sélection

Requêtes de projection L’ensemble des enregistrements d’une table est désigné par le symbole *. SELECT * FROM ETUDIANT; Une projection se réalise en précisant les colonnes à conserver. SELECT Etudiant.prenom, Etudiant.nom FROM Etudiant; DISTINCT ne conserve pas les doublons. SELECT DISTINCT Etudiant.prenom, Etudiant.nom FROM Etudiant;

Projection sur plusieurs champs SELECT Nom, Prénom, Université FROM ÉTUDIANT La liste des étudiants avec l’Université où ils sont inscrits NomPrénomUniversité BetoucheMalekESC TrabelssiIsmailUSTHB GuessoumLilaESC BouchardiAhmedI ni DilmiAhmedESC DilmiMounirUSTHB OthmaniDjamilaINI

Requêtes de sélection Les conditions d’une sélection s’expriment après la clause WHERE SELECT * FROM Etudiant WHERE nom=‘ Messoudi ’; Plusieurs conditions peuvent être exprimées et combinées par les opérateurs logiques OR et AND SELECT * FROM Etudiant WHERE spécialité=‘autre’ AND ((nom=« Messoudi ») OR (nom=« Hamidi »));

Sélection – Exemples avec 2 critères (OU et ET) SELECT * FROM ÉTUDIANT WHERE [ AnnéeNais = 1991 ] AND [ Université = "ESC" ] SELECT * FROM ÉTUDIANT WHERE Résidance = ‘ boumerdes"] OR [ Université = « INI"] matriculeNomPrénomAnnéeNaisrésidenceUniversité 0485/07DilmiAhmed1991AdrarESC matriculeNomPrénomAnnéeNaisrésidenceUniversité 0045/07TrabelssiIsmail1988boumerdesUSTHB 0225/08OthmaniDjamila1990BlidaINI 0166/07BouchardiAhmed1992MascaraIni

Expression des conditions Opérateurs simples de comparaison =, !=,, = Autres opérateurs expr1 BETWEEN expr2 AND expr3 Ex : salaire BETWEEN 5000 AND expr1 IN (expr2, expr3, …) Ex : nom IN (« Messi », « Hamidi») expr1 LIKE chaîne Ex : nom LIKE H%

Ordre du résultat Le résultat d’une requête peut être trié selon les valeurs d’une ou plusieurs colonne(s). SELECT * FROM Etudiant ORDER BY Annéenais; Par ordre croissant : SELECT * FROM Etudiant ORDER BY nom, prenom DESC; Par ordre décroissant (ici le tri est d’abord fait par le nom puis par le prenom pour les enregistrements de même nom) :

Jointure Une jointure s’exprime par une sélection couvrant plusieurs tables Il suffit de tester l’égalité d’attributs de 2 tables différentes SELECT * FROM Vehicule, Proprietaire WHERE Vehicule.proprietaire = Proprietaire.numero;

Interrogation de la BdD Jointure naturelle

Opérateurs de groupe SUM (attribut) COUNT(*) MAX(expr) MIN(expr) AVG(attribut) Renvoie la somme des valeurs de l’attribut Renvoie le nombre d’enregistrements Renvoie la valeur maximale d’une expression (qui peut être un attribut) Renvoie la valeur minimale d’une expression (qui peut être un attribut) Renvoie la moyenne des valeurs de l’attribut

Exemples d’opérateurs de groupe SELECT COUNT(*) FROM Vehicule WHERE marque=‘BMW ’; SELECT MAX(solde) FROM Client; SELECT SUM(solde) FROM Client WHERE nom = ‘Durand ’;

Groupement des résultats Par défaut les opérateurs de groupe s’appliquent sur l’ensemble des enregistrements sélectionnés L’instruction GROUP BY permet d’appliquer un opérateur à des groupes séparés d’enregistrements Par exemple, pour obtenir le nombre de vehicule de chaque marque on peut écrire : SELECT COUNT(*) FROM Vehicule GROUP BY marque;

Clause HAVING La clause HAVING réalise une sélection (à la manière du WHERE) sur les groupes à retenir. Par exemple, si on souhaite connaître le nombre de véhicules de chaque marque en ayant plus de 5, on peut écrire : SELECT COUNT(*) FROM Vehicule GROUP BY marque HAVING COUNT(*) > 5;

Sous-interrogations Un critère de recherche employé dans une clause WHERE peut être lui-même le résultat d’un SELECT Par exemple, pour connaître le nom des personnes nées le même jour que le client « Martin » on peut écrire : SELECT nom FROM Client WHERE naissance = (SELECT naissance FROM Client WHERE nom = ‘ Martin ’);

Sous-interrogations (2) Dans le cas où plusieurs enregistrements peuvent être renvoyés on peut utiliser : IN : pour tester une appartenance à l’ensemble de ce qui est renvoyé Un opérateur de comparaison (, …) suivi de ANY ou de ALL pour tester si la comparaison est vraie au moins une fois ou pour tous les enregistrements. Par exemple pour connaître le client le plus jeune on peut écrire : SELECT nom FROM Client WHERE naissance <= ALL (SELECT naissance FROM Client);

Insertion utilisant une sélection Une requête imbriquée peut-être utilisée pour réaliser des insertions. Par exemple, pour insérer dans la table 2A tous les élèves de la table 1A dont l’attribut note est supérieur à 10, on peut écrire : INSERT INTO 2A SELECT * FROM 1A WHERE note > 10; Les instructions UPDATE et DELETE peuvent aussi utiliser une requête imbriquée

Création utilisant une sélection Une requête imbriquée peut-être utilisée pour créer et remplir une table. Par exemple, pour une table 2A comprenant les colonnes nom et prenom et remplie avec tous les noms et prenoms des enregistrements d’une rable 1A, on peut écrire : CREATE TABLE 2A AS SELECT nom, prenom FROM 1A;

Introduction à SQL

En relationnel : Client(numero: int, nom: string, prenom: string, no_adresse: int) Adresse(numero: int, no_rue: int, rue: string, zip: int, ville: string) Station(nom: string, no_adresse: int) Velo(numero: int, nom_station: string) Trajet(numero: int, no_client: int, no_velo: int, date_depart: Date, heure_depart: int, station_depart: int, date_arrivee: Date, heure_arrivee: int, station_arrivee: int)

Requêtes en algèbre relationnelle l’ensemble des noms des stations ∏ {nom} (Station) le prénom du client dont le nom est « Martin » ∏ {prenom} (σ {nom=« Martin »} (Client)) les identifiants des vélos situés sur la station nommée « Gare SNCF » ∏ {numero} (σ {nom_station=« Gare SNCF »} ( Velo))

Requêtes en algèbre relationnelle le nom des personnes qui habitent à la même adresse que la station nommée « Gare SNCF » ∏ {nom} (Client |><| {no_adresse=no_adresse} (σ {nom=« Gare SNCF »} (Station))) le nom des personnes ayant utilisé le vélo numero 2 entre le 10/12/1980 et le 01/01/1990 ∏ {nom} ((σ {no_velo=2, 10/12/1980 <date_depart < 01/01/1990} (Trajet)))

Requêtes en SQL l’ensemble des noms des stations SELECT Station.nom FROM Station; le prénom du client dont le nom est « Martin » SELECT Client.prenom FROM Client WHERE (Client.nom = "martin"); les identifiants des vélos situés sur la station nommée « Gare SNCF » SELECT Velo.numero FROM Velo WHERE (Velo.nom_station = "Gare SNCF");

Requêtes en SQL le nom des personnes qui habitent à la même adresse que la station nommée « Gare SNCF » SELECT Client.nom FROM Client, Station WHERE Client.adresse = Station.no_adresse AND Station.nom = "Gare SNCF"; le nom des personnes ayant utilisé le vélo numero 2 entre deux le 10/12/1980 et le 01/01/1990 SELECT Client.nom FROM Client, Trajet WHERE Client.numero = Trajet.no_client AND Trajet.no_velo = 2 AND Trajet.date_depart>#12/10/1980# AND Trajet.date_depart<#1/1/1990#;

Des questions ?