Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données
Année universitaire I : présentation Une requête manifeste un certain besoin en informations sur la base de données. Elle sexprime soit de manière interactive en mode QBE (Query By Example), soit par la saisie dune commande dans un langage par exemple SQL (Structured Query Language).
Année universitaire Pour notre cours, nous utiliserons la base de données de la société GrosseBilla info constituée des tables suivantes : MLD correspondant : produits (code_prod, lib_prod, prix_prod, code_famille#, code_liv#) familles (code_famille, lib_famille) livreurs (code_liv, nom_liv, rue_liv, cp_liv, ville_liv)
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données 1 : la projection a) règles décriture - Toute commande SQL débute par lordre SELECT qui permet dafficher le résultat dune requête. - Les rubriques à afficher se placent derrière cet ordre et sont séparées par une virgule. - Toute relation utilisée par la requête est précédée du mot FROM. - Toute commande SQL se termine par un point virgule. b) exemple 1 : afficher la liste de tous les produits vendus select * from produits;
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données C) exemple 2 : afficher la liste des articles (uniquement le code et la désignation) select code_prod, lib_prod from produits; 2) la selection a) règle décriture Toute condition à vérifier est introduite par la clause WHERE, placée après la clause FROM. b) exemple 1 : afficher la liste des produits de la catégorie 2 select * from produits where code_famille=2;
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données C) exemple 2 : liste des articles (code, libellé) des catégories 2 et 3. select code_prod, lib_prod from produits where code_famille=2 or code_famille=3; 3) la jointure a) règles décriture - Les liens à exploiter doivent être déclarés dans la clause inner join et séparés par lopérateur =. - Lorsque des rubriques portent le même nom, on doit les faire précéder du nom de la table pour lever toute ambiguïté.
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données b) exemple : liste (codes et noms) des produits de la famille ecrans select code_prod, lib_prod, lib_famille from produits inner join familles on produits.code_famille=familles.code_famille where lib_famille="Ecrans";
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données 4) le tri a) règle décriture - la colonne permettant dordonner laffichage des résultats est précédée par la clause ORDER BY - pour chaque colonne, il faut préciser le sens de tri, ASC (ordre croissant), DESC (ordre décroissant).
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données b) exemple : liste des articles livrés par le fournisseur CHERAIN (code, nom, prix et libellé de la famille d appartenance) avec un tri dans l ordre croissant des prix. select code_prod, lib_prod, prix_prod, lib_famille from produits inner join familles on produits.code_famille=familles.code_famille inner join livreurs on produits.code_liv=livreurs.code_liv where nom_liv="CHERAIN" order by prix_prod asc;
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données 5) les fonctions a) règles décriture - Toute fonction de calcul à réaliser doit apparaître dans la clause SELECT. - Tout groupement à réaliser se traduit par la clause GROUP BY. - On utilise les fonctions de calcul suivantes en SQL : SUM, COUNT, MIN, MAX, AVG. b) exemple 1 nombre d articles de la famille « portables » select count(code_prod) as "nb portables" from produits where code_famille=2;
Année universitaire II : les requêtes SQL A : les requêtes dinterrogation de la base de données C) prix moyen dun article de la catégorie 3 select avg(prix_prod) as "prix moyen" from produits where code_famille=3;
Année universitaire II : les requêtes SQL B : les requêtes de modification de la base de données On désire ajouter dans la base de données le statut juridique des livreurs (indépendants, franchisés...) 1) la requête de création de la table des statuts juridiques create table statut (code_statut int not null, lib_statut varchar( 30 ) not null, primary key (code_statut) ); 2) la requête dinsertion des données insert into statut (code_statut, lib_statut) values (1, "indépendant"), (2, "franchisé");
Année universitaire II : les requêtes SQL B : les requêtes de modification de la base de données 3) la requête dajout dun champ dans une table alter table produits add dispo varchar( 20 ) not null after prix_prod; 4) requête de suppression dun champ alter table produits drop dispo; 5) requête de suppression dun enregistrement : tous les articles livrés par le livreur 3 (MIGNOT) delete from produits where code_liv=3;
Année universitaire II : les requêtes SQL B : les requêtes de modification de la base de données 6) requête de mise à jour de champs : le fournisseur 1 augmente ces prix, nos prix de vente augmentent donc de 4% update produits set prix_prod=prix_prod*1.04 where code_liv=1;