Informatique Chapitre 16: Introduction aux bases de données 11/02/2015
1 Qu est ce qu une base de données 2 Le tiers applicatif 3 Le vocabulaire des bases de données 4 Algèbre relationnelle 5 Langage SQL Informatique Chapitre 16 2
Introduction Les bases de données sont des outils de plus en plus fréquemment utilisés. Elles permettent de stocker des données nombreuses dans un seul ensemble bien structuré,en général sur un serveur (ordinateur relié à un réseau, internet par exemple), persistant et en vue de son utilisation localement ou à distance. Le serveur reçoit des requêtes des utilisateurs (les clients) pour : Créer/modifier la base de données (seulement les administrateurs) Interroger la base de données (tous les utilisateurs autorisés) Informatique Chapitre 16 3
Introduction Les bases de données sont des outils de plus en plus fréquemment utilisés. Elles permettent de stocker des données nombreuses dans un seul ensemble bien structuré,en général sur un serveur (ordinateur relié à un réseau, internet par exemple), persistant et en vue de son utilisation localement ou à distance. Le serveur reçoit des requêtes des utilisateurs (les clients) pour : Créer/modifier la base de données (seulement les administrateurs) Interroger la base de données (tous les utilisateurs autorisés) Informatique Chapitre 16 3
Introduction Les bases de données sont des outils de plus en plus fréquemment utilisés. Elles permettent de stocker des données nombreuses dans un seul ensemble bien structuré,en général sur un serveur (ordinateur relié à un réseau, internet par exemple), persistant et en vue de son utilisation localement ou à distance. Le serveur reçoit des requêtes des utilisateurs (les clients) pour : Créer/modifier la base de données (seulement les administrateurs) Interroger la base de données (tous les utilisateurs autorisés) Informatique Chapitre 16 3
Introduction Les bases de données sont des outils de plus en plus fréquemment utilisés. Elles permettent de stocker des données nombreuses dans un seul ensemble bien structuré,en général sur un serveur (ordinateur relié à un réseau, internet par exemple), persistant et en vue de son utilisation localement ou à distance. Le serveur reçoit des requêtes des utilisateurs (les clients) pour : Créer/modifier la base de données (seulement les administrateurs) Interroger la base de données (tous les utilisateurs autorisés) Informatique Chapitre 16 3
Introduction Les bases de données sont des outils de plus en plus fréquemment utilisés. Elles permettent de stocker des données nombreuses dans un seul ensemble bien structuré,en général sur un serveur (ordinateur relié à un réseau, internet par exemple), persistant et en vue de son utilisation localement ou à distance. Le serveur reçoit des requêtes des utilisateurs (les clients) pour : Créer/modifier la base de données (seulement les administrateurs) Interroger la base de données (tous les utilisateurs autorisés) Informatique Chapitre 16 3
Architecture des bases de données Nous allons voir deux types d architecture. L architecture "Client-Serveur" L architecture "Trois-tiers" Informatique Chapitre 16 4
Architecture des bases de données Nous allons voir deux types d architecture. L architecture "Client-Serveur" L architecture "Trois-tiers" Informatique Chapitre 16 4
Architecture des bases de données Nous allons voir deux types d architecture. L architecture "Client-Serveur" L architecture "Trois-tiers" Informatique Chapitre 16 4
L architecture "Client-Serveur" Chaque utilisateur est directement connecté au serveur de la base de données. Chaque utilisateur peut effectuer simultanément des opérations (consultation, recherche, modification, création de données...) FIGURE: L architecture "Client-Serveur" Informatique Chapitre 16 5
L architecture "Client-Serveur" Cette architecture est légère mais suppose que les utilisateurs connaissent la structure de la base de données. Elle peut aussi conduire à des résultats différents pour la même recherche si un autre utilisateur a modifié des données. Elle est en réalité rarement utilisée car le principe même n est pas sécurisé pour l intégrité de la base de données. Informatique Chapitre 16 6
L architecture "Client-Serveur" Cette architecture est légère mais suppose que les utilisateurs connaissent la structure de la base de données. Elle peut aussi conduire à des résultats différents pour la même recherche si un autre utilisateur a modifié des données. Elle est en réalité rarement utilisée car le principe même n est pas sécurisé pour l intégrité de la base de données. Informatique Chapitre 16 6
L architecture "Client-Serveur" Cette architecture est légère mais suppose que les utilisateurs connaissent la structure de la base de données. Elle peut aussi conduire à des résultats différents pour la même recherche si un autre utilisateur a modifié des données. Elle est en réalité rarement utilisée car le principe même n est pas sécurisé pour l intégrité de la base de données. Informatique Chapitre 16 6
L architecture "Client-Serveur" Cette architecture est légère mais suppose que les utilisateurs connaissent la structure de la base de données. Elle peut aussi conduire à des résultats différents pour la même recherche si un autre utilisateur a modifié des données. Elle est en réalité rarement utilisée car le principe même n est pas sécurisé pour l intégrité de la base de données. Informatique Chapitre 16 6
L architecture "Trois-tiers" Dans cette architecture, chaque utilisateur est directement connecté à une application qui fait le lien avec le serveur de la base de données. Cette application joue le rôle d interface entre l utilisateur (le client) et le serveur de base de données. Elle joue les rôles : de traducteur, de filtre et de "gendarme" pour controler les accès et les droits des clients. FIGURE: L architecture "Trois-tiers" Informatique Chapitre 16 7
L architecture "Trois-tiers" Dans cette architecture, chaque utilisateur est directement connecté à une application qui fait le lien avec le serveur de la base de données. Cette application joue le rôle d interface entre l utilisateur (le client) et le serveur de base de données. Elle joue les rôles : de traducteur, de filtre et de "gendarme" pour controler les accès et les droits des clients. FIGURE: L architecture "Trois-tiers" Informatique Chapitre 16 7
L architecture "Trois-tiers" Dans cette architecture, chaque utilisateur est directement connecté à une application qui fait le lien avec le serveur de la base de données. Cette application joue le rôle d interface entre l utilisateur (le client) et le serveur de base de données. Elle joue les rôles : de traducteur, de filtre et de "gendarme" pour controler les accès et les droits des clients. FIGURE: L architecture "Trois-tiers" Informatique Chapitre 16 7
L architecture "Trois-tiers" Les trois tiers sont : Le tiers utilisateur (client) Le tiers applicatif Le tiers base de données Informatique Chapitre 16 8
L architecture "Trois-tiers" Les trois tiers sont : Le tiers utilisateur (client) Le tiers applicatif Le tiers base de données Informatique Chapitre 16 8
L architecture "Trois-tiers" Les trois tiers sont : Le tiers utilisateur (client) Le tiers applicatif Le tiers base de données Informatique Chapitre 16 8
L architecture "Trois-tiers" Les trois tiers sont : Le tiers utilisateur (client) Le tiers applicatif Le tiers base de données Informatique Chapitre 16 8
Le tiers applicatif L accès à une base de donnée (BD) s effectue à l aide d un système de gestion de BD : le SGBD, qui gère le stockage en plus de l accès ; Un SGBD permet d interagir avec une BD de façon performante et transparente : l utilisateur n a pas à se préoccuper de la façon dont sont stockées les informations, ni des algorithmes employés. Ces SGBD résolvent sur demande (anglais query) des requêtes utilisant des opérateurs d algèbre relationnelle. SQL (Structured Query Language) est le langage de requêtes informatique le plus répandu pour formuler des requêtes d algèbre relationnelle. MySQL, Oracle, Sqliteman sont des SGBD (à interface graphique ou non) très utilisés. Informatique Chapitre 16 9
Le tiers applicatif L accès à une base de donnée (BD) s effectue à l aide d un système de gestion de BD : le SGBD, qui gère le stockage en plus de l accès ; Un SGBD permet d interagir avec une BD de façon performante et transparente : l utilisateur n a pas à se préoccuper de la façon dont sont stockées les informations, ni des algorithmes employés. Ces SGBD résolvent sur demande (anglais query) des requêtes utilisant des opérateurs d algèbre relationnelle. SQL (Structured Query Language) est le langage de requêtes informatique le plus répandu pour formuler des requêtes d algèbre relationnelle. MySQL, Oracle, Sqliteman sont des SGBD (à interface graphique ou non) très utilisés. Informatique Chapitre 16 9
Le tiers applicatif L accès à une base de donnée (BD) s effectue à l aide d un système de gestion de BD : le SGBD, qui gère le stockage en plus de l accès ; Un SGBD permet d interagir avec une BD de façon performante et transparente : l utilisateur n a pas à se préoccuper de la façon dont sont stockées les informations, ni des algorithmes employés. Ces SGBD résolvent sur demande (anglais query) des requêtes utilisant des opérateurs d algèbre relationnelle. SQL (Structured Query Language) est le langage de requêtes informatique le plus répandu pour formuler des requêtes d algèbre relationnelle. MySQL, Oracle, Sqliteman sont des SGBD (à interface graphique ou non) très utilisés. Informatique Chapitre 16 9
Le tiers applicatif L accès à une base de donnée (BD) s effectue à l aide d un système de gestion de BD : le SGBD, qui gère le stockage en plus de l accès ; Un SGBD permet d interagir avec une BD de façon performante et transparente : l utilisateur n a pas à se préoccuper de la façon dont sont stockées les informations, ni des algorithmes employés. Ces SGBD résolvent sur demande (anglais query) des requêtes utilisant des opérateurs d algèbre relationnelle. SQL (Structured Query Language) est le langage de requêtes informatique le plus répandu pour formuler des requêtes d algèbre relationnelle. MySQL, Oracle, Sqliteman sont des SGBD (à interface graphique ou non) très utilisés. Informatique Chapitre 16 9
Le tiers applicatif L accès à une base de donnée (BD) s effectue à l aide d un système de gestion de BD : le SGBD, qui gère le stockage en plus de l accès ; Un SGBD permet d interagir avec une BD de façon performante et transparente : l utilisateur n a pas à se préoccuper de la façon dont sont stockées les informations, ni des algorithmes employés. Ces SGBD résolvent sur demande (anglais query) des requêtes utilisant des opérateurs d algèbre relationnelle. SQL (Structured Query Language) est le langage de requêtes informatique le plus répandu pour formuler des requêtes d algèbre relationnelle. MySQL, Oracle, Sqliteman sont des SGBD (à interface graphique ou non) très utilisés. Informatique Chapitre 16 9
Le tiers applicatif En plus de l algèbre relationnelle, SQL permet l expression de fonctions (comme par exemple le minimum, le maximum, le comptage... ) que n offre pas l algèbre relationnelle ; la notion de tri (compte tenu du fait que le support théorique est la notion d ensembles et donc a priori sans ordre) Le langage SQL est également utilisé pour ajouter ou supprimer du contenu dans la base de données. Informatique Chapitre 16 10
Le tiers applicatif En plus de l algèbre relationnelle, SQL permet l expression de fonctions (comme par exemple le minimum, le maximum, le comptage... ) que n offre pas l algèbre relationnelle ; la notion de tri (compte tenu du fait que le support théorique est la notion d ensembles et donc a priori sans ordre) Le langage SQL est également utilisé pour ajouter ou supprimer du contenu dans la base de données. Informatique Chapitre 16 10
Le tiers applicatif En plus de l algèbre relationnelle, SQL permet l expression de fonctions (comme par exemple le minimum, le maximum, le comptage... ) que n offre pas l algèbre relationnelle ; la notion de tri (compte tenu du fait que le support théorique est la notion d ensembles et donc a priori sans ordre) Le langage SQL est également utilisé pour ajouter ou supprimer du contenu dans la base de données. Informatique Chapitre 16 10
Le tiers applicatif En plus de l algèbre relationnelle, SQL permet l expression de fonctions (comme par exemple le minimum, le maximum, le comptage... ) que n offre pas l algèbre relationnelle ; la notion de tri (compte tenu du fait que le support théorique est la notion d ensembles et donc a priori sans ordre) Le langage SQL est également utilisé pour ajouter ou supprimer du contenu dans la base de données. Informatique Chapitre 16 10
Le tiers applicatif On peut utiliser un logiciel spécifique comme sqliteman disponible sous différentes plateformes. FIGURE: Sqliteman Informatique Chapitre 16 11
Le tiers applicatif On peut aussi utiliser avec python la librairie sqlite3. FIGURE: Sqlite3 sous Pyzo Informatique Chapitre 16 12
Le tiers applicatif Nous avons déjà parlé de Sqliteman Les requêtes sont formulées en SQL une fois la BD ouverte. Les résultats peuvent être exportés. On peut aussi travailler dans un programme python sous Pyzo en important la librairie sqlite3. Informatique Chapitre 16 13
Exemple d utilisation de sqlite3 Utilisation de sqlite3 import sqlite3 base = sqlite3.connect( mabd.db ) curseur = base.cursor() res=curseur.execute(""" SELECT nom FROM client """) for x in res: print x base.close() Informatique Chapitre 16 14
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Utilisation de sqlite3 On importe sqlite3 On se connecte à la BD en mettant le nom du fichier contenant la BD La première chose à faire après s être connecté à une base est de créer un curseur. Il s agit d une sorte de zone tampon entre notre programme et la base : curseur = base.cursor() pour exécuter une requête on utilise curseur.execute("""la requete en SQL """) On ferme la base : base.close() Informatique Chapitre 16 15
Le vocabulaire des bases de données Base de données : ensemble structuré d informations. Une base est constituée d une ou plusieurs tables. Chaque table est constituée de champs. Tables : liste d enregistrements présentés sous forme de tableau. Champs : contient les informations sur chaque enregistrement d une table (Titre des colonnes du tableau). Exemple : la base de données communes-regions-departements, avec les tables communes, regions et departement et les champs associés. Informatique Chapitre 16 16
Le vocabulaire des bases de données Base de données : ensemble structuré d informations. Une base est constituée d une ou plusieurs tables. Chaque table est constituée de champs. Tables : liste d enregistrements présentés sous forme de tableau. Champs : contient les informations sur chaque enregistrement d une table (Titre des colonnes du tableau). Exemple : la base de données communes-regions-departements, avec les tables communes, regions et departement et les champs associés. Informatique Chapitre 16 16
Le vocabulaire des bases de données Base de données : ensemble structuré d informations. Une base est constituée d une ou plusieurs tables. Chaque table est constituée de champs. Tables : liste d enregistrements présentés sous forme de tableau. Champs : contient les informations sur chaque enregistrement d une table (Titre des colonnes du tableau). Exemple : la base de données communes-regions-departements, avec les tables communes, regions et departement et les champs associés. Informatique Chapitre 16 16
Le vocabulaire des bases de données Base de données : ensemble structuré d informations. Une base est constituée d une ou plusieurs tables. Chaque table est constituée de champs. Tables : liste d enregistrements présentés sous forme de tableau. Champs : contient les informations sur chaque enregistrement d une table (Titre des colonnes du tableau). Exemple : la base de données communes-regions-departements, avec les tables communes, regions et departement et les champs associés. Informatique Chapitre 16 16
Le vocabulaire des bases de données Base de données : ensemble structuré d informations. Une base est constituée d une ou plusieurs tables. Chaque table est constituée de champs. Tables : liste d enregistrements présentés sous forme de tableau. Champs : contient les informations sur chaque enregistrement d une table (Titre des colonnes du tableau). Exemple : la base de données communes-regions-departements, avec les tables communes, regions et departement et les champs associés. Informatique Chapitre 16 16
Le vocabulaire des bases de données La table est définie par son nom et sa relation : la relation est l ensemble des champs qui la constituent (Nom, Adresse, CP, Ville etc...). Amis Champs Nom Adresse CP Ville On dit que son schéma relationnel est : S=((Nom,texte),(Adresse,texte),(CP,entier),(Ville,texte)) Informatique Chapitre 16 17
Le vocabulaire des bases de données Chaque table va regrouper des contacts, n-uplets de valeurs. Ils ont appelés enregistrement. On peut représenter une table sous la forme d un tableau : les lignes représentent les enregistrements (Personnes du carnet d adresse...) et les colonnes représentent les informations sur chaque individu (Nom, Adresse,...) Amis Champs Nom Adresse CP Ville Enregistrement 1 Fifi rue du Truc 75001 Paris Enregistrement 2 Riri rue du Machin 13003 Marseille Enregistrement 3 Toto rue du Bidule 31000 Toulouse Chaque enregistrement est constitué de 4 attributs ayant chacun un domaine (type). Informatique Chapitre 16 18
Le vocabulaire des bases de données Requête : Interrogation(s) destinée(s) à extraire des informations d une base de données en fonction de critères de recherche. Exemple : Quel est le nom et le numéro de téléphone des clients habitant Paris et n ayant pas commandé depuis plus de 3 mois. Liaison, association : lien que l on peut créer entre champs de tables différentes. Informatique Chapitre 16 19
Le vocabulaire des bases de données Requête : Interrogation(s) destinée(s) à extraire des informations d une base de données en fonction de critères de recherche. Exemple : Quel est le nom et le numéro de téléphone des clients habitant Paris et n ayant pas commandé depuis plus de 3 mois. Liaison, association : lien que l on peut créer entre champs de tables différentes. Informatique Chapitre 16 19
Le vocabulaire des bases de données Clé : un ou plusieurs attributs donnant accès à un unique élément dans une table (par exemple : Nom, Prénom, Adresse...). On parle de clé composite s il y a plusieurs attributs nécessaires pour identifier un élément. Clé primaire : clé choisie parmi toutes les clés possibles. On fait en sorte qu elle soit la plus simple possible. Exemple : un numéro permet d identifier à coup sûr un seul étudiant alors qu un nom peut identifier plusieurs étudiants (cas d homonymes). Parfois identifiée avec le dessin d une petite clef dans une représentation graphique de bdd! Informatique Chapitre 16 20
Le vocabulaire des bases de données Clé : un ou plusieurs attributs donnant accès à un unique élément dans une table (par exemple : Nom, Prénom, Adresse...). On parle de clé composite s il y a plusieurs attributs nécessaires pour identifier un élément. Clé primaire : clé choisie parmi toutes les clés possibles. On fait en sorte qu elle soit la plus simple possible. Exemple : un numéro permet d identifier à coup sûr un seul étudiant alors qu un nom peut identifier plusieurs étudiants (cas d homonymes). Parfois identifiée avec le dessin d une petite clef dans une représentation graphique de bdd! Informatique Chapitre 16 20
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Le vocabulaire des bases de données Attributs d un champ : outre son nom, un champ peut avoir différentes caractéristiques : type : selon l information qu il doit contenir, un champ peut être de type numérique, texte, date, booléen (oui/non)... longueur : exprimée en nombre de caractères auto incrément : (pour les champs de type numérique seulement) la donnée est créée automatiquement à chaque saisie saisie requise (oui/non) : si oui, la saisie d une information dans le champ est obligatoire valeur par défaut : valeur affectée à un champ si rien n y est saisi. Informatique Chapitre 16 21
Définition de l algèbre relationnelle L algèbre relationnelle est une algèbre permettant de traiter les requêtes et de donner des moyens d optimiser celle-ci, quelle que soit leur formulation originelle. C est une formulation mathématique qui tire sa source de notions ensemblistes vues en maths. Il faut garder à l esprit que la transformation et l optimisation d une requête en langage d algèbre relationnelle sont effectuées par le tiers applicatif en général, et qu on n a aucune idée de ce qu est la requête finale effectivement envoyée par ce dernier! Informatique Chapitre 16 22
Notations ensemblistes : union, intersection, différence Exemple : livre 1 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le père Goriot Honoré de Balzac 1 Informatique Chapitre 16 23
Notations ensemblistes : union, intersection, différence Exemple : livre 1 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 Madame Bovary Gustave Flaubert 1 Le père Goriot Honoré de Balzac 1 Informatique Chapitre 16 24
Notations ensemblistes : union, intersection, différence livre 1 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le père Goriot Honoré de Balzac 1 Informatique Chapitre 16 25
Notations ensemblistes : union, intersection, différence Exemple : livre 1 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Informatique Chapitre 16 26
Notations ensemblistes : union, intersection, différence livre 1 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le père Goriot Honoré de Balzac 1 Informatique Chapitre 16 27
Notations ensemblistes : union, intersection, différence Exemple : livre 1 livre 2 Titre Auteur Tome Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 Informatique Chapitre 16 28
Notations ensemblistes : union, intersection, différence Que donnerait livre 2 livre 1? livre 1 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le Comte de Monte-Cristo Alexandre Dumas 1 Le Comte de Monte-Cristo Alexandre Dumas 2 livre 2 Titre Auteur Tome Madame Bovary Gustave Flaubert 1 Le père Goriot Honoré de Balzac 1 Informatique Chapitre 16 29
L algèbre relationnelle : opérateurs spécifiques On en compte cinq principaux : la projection notée π ou ; la sélection (ou restriction) notée σ ; le produit cartésien ; deux opérateurs ensemblistes déjà vus : l union et l intersection. un opérateur de renommage noté ρ et efin trois opérateurs composés : la jointure ; la sélection (ou restriction) notée σ ; la division ; la différence. Informatique Chapitre 16 30
La projection π Elle consiste à éliminer les attributs non désirés et les doublons. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C Π cru,région Π(Vins) Cru Région Volnay Bourgogne Chenas Beaujolais Julienas Beaujolais On parle de la projection d une relation sur les attributs. Informatique Chapitre 16 31
La projection π Elle consiste à éliminer les attributs non désirés et les doublons. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C Π cru,région Π(Vins) Cru Région Volnay Bourgogne Chenas Beaujolais Julienas Beaujolais On parle de la projection d une relation sur les attributs. Informatique Chapitre 16 31
La projection π Elle consiste à éliminer les attributs non désirés et les doublons. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C Π cru,région Π(Vins) Cru Région Volnay Bourgogne Chenas Beaujolais Julienas Beaujolais On parle de la projection d une relation sur les attributs. Informatique Chapitre 16 31
La projection π Elle consiste à éliminer les attributs non désirés et les doublons. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C Π cru,région Π(Vins) Cru Région Volnay Bourgogne Chenas Beaujolais Julienas Beaujolais On parle de la projection d une relation sur les attributs. Informatique Chapitre 16 31
La selection σ Elle consiste à récupérer les enregistrements répondant à certaines conditions ou critères. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C σ Mill>=1986 Vins Cru Mill Région Qualité Julienas 1986 Beaujolais C Informatique Chapitre 16 32
La selection σ Elle consiste à récupérer les enregistrements répondant à certaines conditions ou critères. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C σ Mill>=1986 Vins Cru Mill Région Qualité Julienas 1986 Beaujolais C Informatique Chapitre 16 32
La selection σ Elle consiste à récupérer les enregistrements répondant à certaines conditions ou critères. Vins Cru Mill Région Qualité Volnay 1983 Bourgogne A Volnay 1979 Bourgogne B Chenas 1983 Beaujolais A Julienas 1986 Beaujolais C σ Mill>=1986 Vins Cru Mill Région Qualité Julienas 1986 Beaujolais C Informatique Chapitre 16 32
La jointure Elle consiste à composer des relations (tables) différentes ayant un domaine commun. Il faut préciser, car ce critère de fusion n est pas forcément évident. On parle de critère de jointure. On parle de jointure naturelle (NATURAL JOIN) si les attributs de chaque table ont le même nom, ou de théta-jointure sinon. Informatique Chapitre 16 33
La jointure Vins Cru Mill Qualité Volnay 1983 A Volnay 1979 B Chablis 1983 A Julienas 1986 C Reg Cru Région QualMoy Volnay Bourgogne A Chablis Bourgogne A Chablis Californie B donne VinsReg Cru Mill Qualité Région QualMoy Volnay 1983 A Bourgogne A Volnay 1979 B Bourgogne A Chablis 1983 A Bourgogne A Chablis 1983 A Californie B Informatique Chapitre 16 34
La jointure Vins Cru Mill Qualité Volnay 1983 A Volnay 1979 B Chablis 1983 A Julienas 1986 C Reg Cru Région QualMoy Volnay Bourgogne A Chablis Bourgogne A Chablis Californie B donne VinsReg Cru Mill Qualité Région QualMoy Volnay 1983 A Bourgogne A Volnay 1979 B Bourgogne A Chablis 1983 A Bourgogne A Chablis 1983 A Californie B Informatique Chapitre 16 34
Exercice stock Caisse Fruits Pommes Bananes 1 10 3 7 2 7 3 3 3 8 7 1 Question A quoi correspond la selection suivante : σ Fruits Pommes+Bananes (stock) Que renvoie-t-elle sur cet exemple? Informatique Chapitre 16 35
La division cartésienne Permet de trouver tous les éléments ayant un attribut commun. sno pno s1 s1 s1 s1 s2 s2 s3 s4 s4 p1 p2 p3 p4 p1 p2 p2 p2 p4 pno p2 B1 A Que renvoie A/B1, A/B2 et A/B3? pno p2 p4 B2 pno p1 p2 p4 B3 Informatique Chapitre 16 36
La division sno s1 s2 s3 s4 A/B1 sno s1 s4 A/B2 sno s1 A/B3 Informatique Chapitre 16 37
Le produit cartésien élève Nom-élève Dupont Martin Bernard enseignant Nom-enseignant Durand Petit élève enseignant Nom-élève Nom-enseignant Dupont Durand Martin Durand Bernard Durand Dupont Petit Martin Petit Bernard Petit Informatique Chapitre 16 38
Une opération super pratique (mais plus complexe) : les agrégats L opération d agrégation consiste à effectuer des opérations sur des groupements d enregistrements (agrégat) possédant une propriété commune. Les cinq opérations au programme sont le minimum d un agrégat, le maximum, la somme, la moyenne et le comptage. relevé Classe Elève Note MPSI Dupont 17,5 PCSI Martin 7,75 MPSI Bernard 9,25 PCSI Robert 14,0 PCSI Dubois 11,5 Classeγmoyenne(Note)(relevé) Classe moyenne(note) MPSI 13,38 PCSI 11,08 Informatique Chapitre 16 39
Une opération super pratique (mais plus complexe) : les agrégats L opération d agrégation consiste à effectuer des opérations sur des groupements d enregistrements (agrégat) possédant une propriété commune. Les cinq opérations au programme sont le minimum d un agrégat, le maximum, la somme, la moyenne et le comptage. relevé Classe Elève Note MPSI Dupont 17,5 PCSI Martin 7,75 MPSI Bernard 9,25 PCSI Robert 14,0 PCSI Dubois 11,5 Classeγmoyenne(Note)(relevé) Classe moyenne(note) MPSI 13,38 PCSI 11,08 Informatique Chapitre 16 39
SQL : Interrogation de base de données SELECT est la principale commande du langage SQL. Elle permet d interroger la base de données, sur une ou plusieurs tables. Une commande SQL se compose de clauses. Dans la commande SELECT, la clause FROM permet d indiquer les tables concernées. Le résultat de la requête est limité aux colonnes indiquées par la clause SELECT, et aux lignes qui respectent la condition exprimée par la clause WHERE. La commande SELECT permet de réaliser les opérations d algèbre relationnelle suivantes : sélection, projection, produit cartésien, jointure. Le résultat d une commande SELECT se présente sous la forme d un tableau. Informatique Chapitre 16 40
SQL : Interrogation de base de données SELECT est la principale commande du langage SQL. Elle permet d interroger la base de données, sur une ou plusieurs tables. Une commande SQL se compose de clauses. Dans la commande SELECT, la clause FROM permet d indiquer les tables concernées. Le résultat de la requête est limité aux colonnes indiquées par la clause SELECT, et aux lignes qui respectent la condition exprimée par la clause WHERE. La commande SELECT permet de réaliser les opérations d algèbre relationnelle suivantes : sélection, projection, produit cartésien, jointure. Le résultat d une commande SELECT se présente sous la forme d un tableau. Informatique Chapitre 16 40
SQL : Interrogation de base de données SELECT est la principale commande du langage SQL. Elle permet d interroger la base de données, sur une ou plusieurs tables. Une commande SQL se compose de clauses. Dans la commande SELECT, la clause FROM permet d indiquer les tables concernées. Le résultat de la requête est limité aux colonnes indiquées par la clause SELECT, et aux lignes qui respectent la condition exprimée par la clause WHERE. La commande SELECT permet de réaliser les opérations d algèbre relationnelle suivantes : sélection, projection, produit cartésien, jointure. Le résultat d une commande SELECT se présente sous la forme d un tableau. Informatique Chapitre 16 40
SQL : Interrogation de base de données SELECT est la principale commande du langage SQL. Elle permet d interroger la base de données, sur une ou plusieurs tables. Une commande SQL se compose de clauses. Dans la commande SELECT, la clause FROM permet d indiquer les tables concernées. Le résultat de la requête est limité aux colonnes indiquées par la clause SELECT, et aux lignes qui respectent la condition exprimée par la clause WHERE. La commande SELECT permet de réaliser les opérations d algèbre relationnelle suivantes : sélection, projection, produit cartésien, jointure. Le résultat d une commande SELECT se présente sous la forme d un tableau. Informatique Chapitre 16 40
SQL : Interrogation de base de données SELECT est la principale commande du langage SQL. Elle permet d interroger la base de données, sur une ou plusieurs tables. Une commande SQL se compose de clauses. Dans la commande SELECT, la clause FROM permet d indiquer les tables concernées. Le résultat de la requête est limité aux colonnes indiquées par la clause SELECT, et aux lignes qui respectent la condition exprimée par la clause WHERE. La commande SELECT permet de réaliser les opérations d algèbre relationnelle suivantes : sélection, projection, produit cartésien, jointure. Le résultat d une commande SELECT se présente sous la forme d un tableau. Informatique Chapitre 16 40
SQL : Interrogation de base de données Syntaxe générale SELECT champs FROM tables WHERE condition-de-recherche GROUP BY champs HAVING critère-du-groupe ORDER BY champs ; Informatique Chapitre 16 41
SQL : Interrogation de base de données La clause FROM est obligatoire, les clauses WHERE, GROUP BY, HAVING, ORDER BY sont facultatives. Les champs d une liste sont séparés par une virgule (commande SELECT, clauses GROUP BY et ORDER BY). La notation " table.champ " (par exemple : employe.profession) peut être utilisée pour faire référence à un champ dont le nom existe dans plus d une table. La commande se termine par un point-virgule, comme toutes les commandes SQL. Informatique Chapitre 16 42
SQL : Interrogation de base de données La clause FROM est obligatoire, les clauses WHERE, GROUP BY, HAVING, ORDER BY sont facultatives. Les champs d une liste sont séparés par une virgule (commande SELECT, clauses GROUP BY et ORDER BY). La notation " table.champ " (par exemple : employe.profession) peut être utilisée pour faire référence à un champ dont le nom existe dans plus d une table. La commande se termine par un point-virgule, comme toutes les commandes SQL. Informatique Chapitre 16 42
SQL : Interrogation de base de données La clause FROM est obligatoire, les clauses WHERE, GROUP BY, HAVING, ORDER BY sont facultatives. Les champs d une liste sont séparés par une virgule (commande SELECT, clauses GROUP BY et ORDER BY). La notation " table.champ " (par exemple : employe.profession) peut être utilisée pour faire référence à un champ dont le nom existe dans plus d une table. La commande se termine par un point-virgule, comme toutes les commandes SQL. Informatique Chapitre 16 42
SQL : Interrogation de base de données Clause SELECT Cette clause permet d indiquer les colonnes qui doivent apparaître dans le résultat. Ces colonnes peuvent être : des champs de tables (les tables impliquées doivent apparaître dans la clause FROM) des fonctions mathématiques d agrégation (somme, moyenne, maximal, minimal, compte) appliquées à l ensemble des valeurs de la colonne des expressions mathématiques construites à partir de champs, de fonctions d agrégation, et d opérateurs mathématiques Informatique Chapitre 16 43
SQL : Interrogation de base de données Clause SELECT Cette clause permet d indiquer les colonnes qui doivent apparaître dans le résultat. Ces colonnes peuvent être : des champs de tables (les tables impliquées doivent apparaître dans la clause FROM) des fonctions mathématiques d agrégation (somme, moyenne, maximal, minimal, compte) appliquées à l ensemble des valeurs de la colonne des expressions mathématiques construites à partir de champs, de fonctions d agrégation, et d opérateurs mathématiques Informatique Chapitre 16 43
SQL : Interrogation de base de données Clause SELECT Cette clause permet d indiquer les colonnes qui doivent apparaître dans le résultat. Ces colonnes peuvent être : des champs de tables (les tables impliquées doivent apparaître dans la clause FROM) des fonctions mathématiques d agrégation (somme, moyenne, maximal, minimal, compte) appliquées à l ensemble des valeurs de la colonne des expressions mathématiques construites à partir de champs, de fonctions d agrégation, et d opérateurs mathématiques Informatique Chapitre 16 43
SQL : Interrogation de base de données Clause SELECT Cette clause permet d indiquer les colonnes qui doivent apparaître dans le résultat. Ces colonnes peuvent être : des champs de tables (les tables impliquées doivent apparaître dans la clause FROM) des fonctions mathématiques d agrégation (somme, moyenne, maximal, minimal, compte) appliquées à l ensemble des valeurs de la colonne des expressions mathématiques construites à partir de champs, de fonctions d agrégation, et d opérateurs mathématiques Informatique Chapitre 16 43
SQL : Interrogation de base de données Exemple de clauses SELECT SELECT nom, prenom FROM clients ; nom et prénom des clients SELECT MAX(prixHT) FROM produits ; prix HT du produit le plus cher SELECT COUNT(*) FROM produits ; nombre de produits SELECT prixht, prixht x 1.2 FROM produits ; prix des produits, HT et TTC (avec TVA de 20%) Informatique Chapitre 16 44
SQL : Interrogation de base de données Exemple de clauses SELECT SELECT nom, prenom FROM clients ; nom et prénom des clients SELECT MAX(prixHT) FROM produits ; prix HT du produit le plus cher SELECT COUNT(*) FROM produits ; nombre de produits SELECT prixht, prixht x 1.2 FROM produits ; prix des produits, HT et TTC (avec TVA de 20%) Informatique Chapitre 16 44
SQL : Interrogation de base de données Exemple de clauses SELECT SELECT nom, prenom FROM clients ; nom et prénom des clients SELECT MAX(prixHT) FROM produits ; prix HT du produit le plus cher SELECT COUNT(*) FROM produits ; nombre de produits SELECT prixht, prixht x 1.2 FROM produits ; prix des produits, HT et TTC (avec TVA de 20%) Informatique Chapitre 16 44
SQL : Interrogation de base de données Exemple de clauses SELECT SELECT nom, prenom FROM clients ; nom et prénom des clients SELECT MAX(prixHT) FROM produits ; prix HT du produit le plus cher SELECT COUNT(*) FROM produits ; nombre de produits SELECT prixht, prixht x 1.2 FROM produits ; prix des produits, HT et TTC (avec TVA de 20%) Informatique Chapitre 16 44
SQL : Interrogation de base de données Exemple de clauses SELECT SELECT nom, prenom FROM clients ; nom et prénom des clients SELECT MAX(prixHT) FROM produits ; prix HT du produit le plus cher SELECT COUNT(*) FROM produits ; nombre de produits SELECT prixht, prixht x 1.2 FROM produits ; prix des produits, HT et TTC (avec TVA de 20%) Informatique Chapitre 16 44
SQL : Interrogation de base de données Fonctions d agrégation : Ces fonctions permettent d agréger un ensemble de lignes pour les regrouper sur une seule ligne. Sur cette ligne, le résultat d une fonction d agrégation est calculé à partir des données de l ensemble des lignes de l agrégat. Exemple avec la table bulletin : Matière Note Mathématiques 15 Physique 14 SI 16 Informatique Chapitre 16 45
SQL : Interrogation de base de données Fonction Signification Exemple Résultat SUM () somme SELECT SUM(note) FROM bulletin ; AVG () moyenne SELECT AVG(note) FROM bulletin ; MAX () maximum SELECT MAX(note) FROM bulletin ; MIN () minimum SELECT MIN(note) FROM bulletin ; COUNT() nombre de lignes de l agrégat SELECT COUNT(*) FROM bulletin ; 45 15 16 14 3 Informatique Chapitre 16 46
SQL : Interrogation de base de données Opérateurs mathématiques utilisables avec SELECT + Addition Soustraction Multiplication / Division Informatique Chapitre 16 47
SQL : Interrogation de base de données Le mot-clé DISTINCT Permet d éviter d obtenir 2 (ou plus) lignes identiques dans le résultat de la requête. Exemple : SELECT DISTINCT ville FROM clients ; affiche la colonne ville de la table clients. Une ville n apparaîtra qu une seule fois. Le mot-clé AS Permet de nommer une colonne. Exemple : SELECT COUNT(*) AS nombreclients FROM clients ; nombreclients pourrait être utilisé pour compléter la requête. Informatique Chapitre 16 48
SQL : Interrogation de base de données Le mot-clé DISTINCT Permet d éviter d obtenir 2 (ou plus) lignes identiques dans le résultat de la requête. Exemple : SELECT DISTINCT ville FROM clients ; affiche la colonne ville de la table clients. Une ville n apparaîtra qu une seule fois. Le mot-clé AS Permet de nommer une colonne. Exemple : SELECT COUNT(*) AS nombreclients FROM clients ; nombreclients pourrait être utilisé pour compléter la requête. Informatique Chapitre 16 48
SQL : Interrogation de base de données Le mot-clé DISTINCT Permet d éviter d obtenir 2 (ou plus) lignes identiques dans le résultat de la requête. Exemple : SELECT DISTINCT ville FROM clients ; affiche la colonne ville de la table clients. Une ville n apparaîtra qu une seule fois. Le mot-clé AS Permet de nommer une colonne. Exemple : SELECT COUNT(*) AS nombreclients FROM clients ; nombreclients pourrait être utilisé pour compléter la requête. Informatique Chapitre 16 48
SQL : Interrogation de base de données Clause FROM Table(s) sur laquelle (lesquelles) s applique(nt) les autres clauses. Dans le cas de plusieurs tables, elles sont séparées par une virgule. Exemple : SELECT * FROM étudiants, matières ; Informatique Chapitre 16 49
SQL : Interrogation de base de données Clause WHERE Le résultat d une commande SELECT comportant une clause WHERE est limité aux lignes pour lesquelles la condition de recherche est vérifiée. Informatique Chapitre 16 50
SQL : Interrogation de base de données Condition simple opérande1 opérateur opérande2 Un opérande peut être une valeur constante, un champ, une expression, une sous-requête. L opérateur peut être un opérateur de comparaison parmi : = Egal à > Plus grand que < Plus petit que >= Plus grand ou égal à <= Plus petit ou égal à <> Différent de Informatique Chapitre 16 51
SQL : Interrogation de base de données Ces opérateurs peuvent s appliquer à tout type de données : numérique, texte, date. Pour des données de type texte, la comparaison se fait à partir de l ordre alphanumérique, en utilisant le codage utilisé par le SGBD pour le texte. Un texte doit être encadré d apostrophes ( ), par exemple : nom = Martin Exemples : prix > 500 prix * quantite > 500 prix > (SELECT AVG(prix) FROM produits) prix supérieur à la moyenne des prix Informatique Chapitre 16 52
SQL : Interrogation de base de données Ces opérateurs peuvent s appliquer à tout type de données : numérique, texte, date. Pour des données de type texte, la comparaison se fait à partir de l ordre alphanumérique, en utilisant le codage utilisé par le SGBD pour le texte. Un texte doit être encadré d apostrophes ( ), par exemple : nom = Martin Exemples : prix > 500 prix * quantite > 500 prix > (SELECT AVG(prix) FROM produits) prix supérieur à la moyenne des prix Informatique Chapitre 16 52
SQL : Interrogation de base de données Ces opérateurs peuvent s appliquer à tout type de données : numérique, texte, date. Pour des données de type texte, la comparaison se fait à partir de l ordre alphanumérique, en utilisant le codage utilisé par le SGBD pour le texte. Un texte doit être encadré d apostrophes ( ), par exemple : nom = Martin Exemples : prix > 500 prix * quantite > 500 prix > (SELECT AVG(prix) FROM produits) prix supérieur à la moyenne des prix Informatique Chapitre 16 52
SQL : Interrogation de base de données Définition d une jointure La jointure est une opération qui revient à effectuer un produit cartésien des enregistrements de deux tables suivi d un filtrage qui consiste à ne conserver dans le produit cartésien que les enregistrements pour lesquels les valeurs de certains champs dans l une et l autre des deux tables initiales satisfont le critère de jointure choisi. Le critère le plus simple est l égalité de deux champs pris dans l une et l autre table. Le résultat de l opération est une nouvelle table. Cette définition fait appel à des notions théorique d algèbre relationnelle... Informatique Chapitre 16 53
SQL : Interrogation de base de données Une jointure est le plus souvent définie avec une condition d égalité entre deux champs de deux tables différentes. Exemple : SELECT * FROM clients, commandes WHERE clients.codeclient = commandes.codeclient ; sélectionne tous les clients ayant passé une commande et retourne la colonne clients et la colonne commande qui sont dans deux tables différentes. On a joint les deux colonnes qui étaient dans deux tables différentes! Informatique Chapitre 16 54
SQL : Interrogation de base de données Une jointure est le plus souvent définie avec une condition d égalité entre deux champs de deux tables différentes. Exemple : SELECT * FROM clients, commandes WHERE clients.codeclient = commandes.codeclient ; sélectionne tous les clients ayant passé une commande et retourne la colonne clients et la colonne commande qui sont dans deux tables différentes. On a joint les deux colonnes qui étaient dans deux tables différentes! Informatique Chapitre 16 54
SQL : Interrogation de base de données Conditions combinées Combinaison de plusieurs conditions simples avec les opérateurs AND, OR, NOT Exemples : sexe = masculin AND age > 20 NOT (sexe = masculin AND age > 20) age < 20 OR age > 50 (sexe = masculin AND age > 20) OR (sexe = féminin AND age > 18) Informatique Chapitre 16 55
SQL : Interrogation de base de données Autre opérateurs : BETWEEN, IN, LIKE, IS NULL, IS NOT NULL Opérateur Exemples Remarques BETWEEN age BETWEEN 20 AND 50 IN ville IN ( bordeaux, lyon, lille ) LIKE telephone LIKE 05% Comme un schéma décrit avec des caractères joker : telephone LIKE 06.... Entre une plage de valeurs Dans un ensemble de valeurs Comme un schéma décrit avec des caractères joker : telephone LIKE 06.... % pour un ensemble quelconque de caractères, _ pour un caractère quelconque Informatique Chapitre 16 56
SQL : Interrogation de base de données Autre opérateurs : BETWEEN, IN, LIKE, IS NULL, IS NOT NULL Opérateur Exemples Remarques IS NULL email IS NULL Champ vide. Attention, un champ avec la valeur 0 n est pas considéré vide. IS NULL NOT email IS NOT NULL Champ non vide. Remarque : l opérateur IN peut être utilisé pour effectuer une comparaison avec le(s) résultat(s) d une sous-requête. Informatique Chapitre 16 57
SQL : Interrogation de base de données Clause GROUP BY Permet d effectuer des regroupements (agrégats) de lignes. Dans le résultat de la requête, chaque regroupement est représenté par une ligne unique. Un regroupement est formé par l ensemble des lignes qui ont la même valeur pour le(s) champ(s) spécifié(s) dans la clause. Cette clause est fréquemment utilisé en conjonction avec des fonctions d agrégation dans la clause SELECT. Ces fonctions sont alors calculées par regroupement, alors qu elles sont calculées pour l ensemble des lignes si il n y a pas de clause GROUP BY. Exemple : SELECT ville, COUNT(*) FROM clients GROUP BY ville ; affiche toutes les villes apparaissant dans la colonne ville de la table clients, avec pour chacune le nombre de clients dans cette ville. Informatique Chapitre 16 58
SQL : Interrogation de base de données Clause GROUP BY Permet d effectuer des regroupements (agrégats) de lignes. Dans le résultat de la requête, chaque regroupement est représenté par une ligne unique. Un regroupement est formé par l ensemble des lignes qui ont la même valeur pour le(s) champ(s) spécifié(s) dans la clause. Cette clause est fréquemment utilisé en conjonction avec des fonctions d agrégation dans la clause SELECT. Ces fonctions sont alors calculées par regroupement, alors qu elles sont calculées pour l ensemble des lignes si il n y a pas de clause GROUP BY. Exemple : SELECT ville, COUNT(*) FROM clients GROUP BY ville ; affiche toutes les villes apparaissant dans la colonne ville de la table clients, avec pour chacune le nombre de clients dans cette ville. Informatique Chapitre 16 58
SQL : Interrogation de base de données Clause GROUP BY Permet d effectuer des regroupements (agrégats) de lignes. Dans le résultat de la requête, chaque regroupement est représenté par une ligne unique. Un regroupement est formé par l ensemble des lignes qui ont la même valeur pour le(s) champ(s) spécifié(s) dans la clause. Cette clause est fréquemment utilisé en conjonction avec des fonctions d agrégation dans la clause SELECT. Ces fonctions sont alors calculées par regroupement, alors qu elles sont calculées pour l ensemble des lignes si il n y a pas de clause GROUP BY. Exemple : SELECT ville, COUNT(*) FROM clients GROUP BY ville ; affiche toutes les villes apparaissant dans la colonne ville de la table clients, avec pour chacune le nombre de clients dans cette ville. Informatique Chapitre 16 58
SQL : Interrogation de base de données Clause GROUP BY Remarque : une erreur courante est d inclure dans la clause SELECT des champs susceptibles d avoir des valeurs différentes à l intérieur d un regroupement. Ainsi, le requête suivante n est pas valide : SELECT ville, codepostal, COUNT(*) FROM clients GROUP BY ville ; car pour un regroupement de ville, le champ codepostal peut avoir différentes valeurs. On peut en revanche écrire : SELECT ville, codepostal, COUNT(*) FROM clients GROUP BY ville, codepostal ; Informatique Chapitre 16 59
SQL : Interrogation de base de données Clause GROUP BY Remarque : une erreur courante est d inclure dans la clause SELECT des champs susceptibles d avoir des valeurs différentes à l intérieur d un regroupement. Ainsi, le requête suivante n est pas valide : SELECT ville, codepostal, COUNT(*) FROM clients GROUP BY ville ; car pour un regroupement de ville, le champ codepostal peut avoir différentes valeurs. On peut en revanche écrire : SELECT ville, codepostal, COUNT(*) FROM clients GROUP BY ville, codepostal ; Informatique Chapitre 16 59
SQL : Interrogation de base de données Clause HAVING Clause équivalente à la clause WHERE, mais la condition s applique ici sur les résultats des regroupement (la condition de la clause WHERE s applique sur les lignes). Seuls les regroupements respectant cette condition apparaîtront dans le résultat de la requête. La clause HAVING est donc toujours associée à la clause GROUP BY. Exemple : SELECT ville, COUNT(*) FROM clients GROUP BY ville HAVING COUNT(*) > 10 ; Par rapport à l exemple de la clause GROUP BY, seules les villes pour lesquelles il y a plus de 10 clients seront affchées. Informatique Chapitre 16 60
SQL : Interrogation de base de données Clause ORDER BY Permet d indiquer le ou les champ(s) utilisé(s) pour trier les lignes du résultat de la requête. Si plus d un champ est utilisé, le deuxième champ servira pour ordonner les lignes pour lesquelles le premier champ est identique. Même principe pour les champs suivants. Par défaut, c est l ordre croissant qui est utilisé. Pour obtenir un ordre décroissant, utiliser le mot-clé DESC. Exemples : SELECT nom, prenom, adresse, pays FROM clients ORDER BY nom, prenom ; par ordre alphabétique croissant des noms, puis prénoms pour les homonymes SELECT reference, prixht FROM produits ORDER BY prixht DESC ; Référence et prix HT des produits par prix décroissant Informatique Chapitre 16 61
SQL : Manipulation des données Les commandes INSERT, UPDATE, DELETE, permettent respectivement l ajout, la mise à jour et la suppression d un ou plusieurs enregistrements d une table. Informatique Chapitre 16 62
SQL : Manipulation des données La commande INSERT : Syntaxe 1 : INSERT INTO table (champ1, champ2,...) VALUES (val1, val2,...) ; La liste des champs est facultative. Si elle n apparaît pas, les valeurs seront affectées aux champs de la table dans l ordre dans lequel ces champs sont enregistrés dans la table. Exemples : INSERT INTO clients (nom, prenom, ville) VALUES ( Pré, Thierry, Paris ) ; INSERT INTO clients VALUES ( Pré, Thierry, 06.08.07.15.25, Paris ) ; Informatique Chapitre 16 63
SQL : Manipulation des données La commande INSERT : Syntaxe 2 : INSERT INTO table (champ1, champ2,...) SELECT... C est le résultat d une commande SELECT qui est ajouté dans la table. Ce résultat peut être constitué d une ou plusieurs lignes. Ici aussi la liste des champs est facultative. Exemple : INSERT INTO commande (numcommande, nomclient, prenomclient) SELECT 23568, nom, prenom FROM clients WHERE numclient = 1005 ; Informatique Chapitre 16 64
SQL : Manipulation des données La commande UPDATE : Syntaxe 1 : UPDATE table SET champ1 = expr1, champ2 = expr2,... WHERE condition Exemple : UPDATE produits SET prix = prix * 1,1 WHERE codefournisseur = 123456 augmentation de 10% des produits d un fournisseur Informatique Chapitre 16 65
SQL : Manipulation des données La commande UPDATE : Syntaxe 1 : UPDATE table SET champ1 = expr1, champ2 = expr2,... WHERE condition Exemple : UPDATE produits SET prix = prix * 1,1 WHERE codefournisseur = 123456 augmentation de 10% des produits d un fournisseur Informatique Chapitre 16 65
SQL : Manipulation des données La commande UPDATE : Syntaxe 2 : UPDATE table SET (champ1, champ2,... ) = (SELECT... ) WHERE condition La commande SELECT ne doit fournir qu une seule ligne. La ou les valeurs de cette ligne seront utilisées pour toutes les lignes mises à jour. Informatique Chapitre 16 66
SQL : Manipulation des données La commande UPDATE : Syntaxe 2 : Exemple : UPDATE factures SET (date) = (SELECT MAX(datelivraison) FROM detailcommandes WHERE numcommande = 123) WHERE numcommande = 123 ; ATTENTION : dans la commande UPDATE, la clause WHERE est facultative, mais si elle est omise ce sont toutes les lignes de la table qui seront affectées. Informatique Chapitre 16 67
SQL : Manipulation des données La commande DELETE : Syntaxe : DELETE FROM table WHERE condition ATTENTION : la clause WHERE est facultative, mais si elle est omise ce sont toutes les lignes de la table qui seront supprimées! Exemple : DELETE FROM commandes WHERE datecommande < 01/01/13 ; Informatique Chapitre 16 68