12
Initiation à SQL (terminale marketing) Initiation à SQL est un document électronique il suffit de cliquer sur Sommaire Sommaire 1°) Syntaxe en SQL 1°) Sy ntaxe en SQL a) Mode opératoire Mode opératoire b) La structure d’une requête SQL La structure d’une requête SQL 2°) Comment saisir une commande SQL dans Access 2°) Comment saisir une commande SQL dans Access ? 3°) Document papier à préparer avant de saisir une requête en SQL Signification des principales commandes en SQL Sig nification des principales commandes en SQL - Quelques remarques complémentaires : 1°) Si l’on procède à une requête en mode Requête :Définition de données 2°) Si l’on procède à une requête en mode SQL 3°) Si l’on veut retrouver le code SQL que l’on a saisi SQL signifie Structured Query Language (Langage de recherche structuré), il a été développé par IBM dans les années 70, il s’appelait initialement SEQUEL. Les différents éditeurs de SGBD adaptent le langage SQLmalgré un effort de normalisation a été entrepris par l’ ANSI (American Standards Institute) et l’ ISO (International Organization for Standardization). SQL ne sert pas qu’à écrire des requêtes , c’est un langage complet, qui permet de créer des BDD, des tables, de saisir des données, de les corriger, de créer des états, il ne permet pas de créer des formulaires, parce qu’il a été conçu à une époque ou l’interface graphique n’existait pas en informatique, et un formulaire sans interface graphique n’a aucun intérêt. Nous utiliserons le langage SQL dans Access. Pourquoi faire des requêtes en SQL ? Parce que les capacités de requête dans Access en mode graphique sont très limitées, seule une programmation permet d’affiner les recherches et obtenir des résultats très fins. Si nous reprenons la base de données SPT nous pouvons remarquer que les requêtes que nous avons faîtes (en mode graphique) auraient pu être faîtes en programmation SQL. Ouvrir Access Ouvrir la base de données SPT Choisir le bouton Requêtes Faire un double clic sur la requête Carlotti Cliquer sur Affichage Jean Osenda - Initiation à SQL avec Access XP 1

Initiation SQL

Embed Size (px)

Citation preview

Initiation SQLInitiation SQL est un document lectronique il suffit de cliquer sur CTRL + Clic pour suivre le lien

(terminale marketing)

Sommaire

1) Syntaxe en SQL a) Mode opratoire b) La structure dune requte SQL 2) Comment saisir une commande SQL dans Access ? 3) Document papier prparer avant de saisir une requte en SQL Signification des principales commandes en SQL - Quelques remarques complmentaires : 1) Si lon procde une requte en mode Requte :Dfinition de donnes 2) Si lon procde une requte en mode SQL 3) Si lon veut retrouver le code SQL que lon a saisi SQL signifie Structured Query Language (Langage de recherche structur), il a t dvelopp par IBM dans les annes 70, il sappelait initialement SEQUEL. Les diffrents diteurs de SGBD adaptent le langage SQL malgr un effort de normalisation a t entrepris par l ANSI (American Standards Institute) et l ISO (International Organization for Standardization). SQL ne sert pas qu crire des requtes , cest un langage complet, qui permet de crer des BDD, des tables, de saisir des donnes, de les corriger, de crer des tats, il ne permet pas de crer des formulaires, parce quil a t conu une poque ou linterface graphique nexistait pas en informatique, et un formulaire sans interface graphique na aucun intrt. Nous utiliserons le langage SQL dans Access. Pourquoi faire des requtes en SQL ? Parce que les capacits de requte dans Access en mode graphique sont trs limites, seule une programmation permet daffiner les recherches et obtenir des rsultats trs fins. Si nous reprenons la base de donnes SPT nous pouvons remarquer que les requtes que nous avons fates (en mode graphique) auraient pu tre fates en programmation SQL. Ouvrir Access Ouvrir la base de donnes SPT Choisir le bouton Requtes Faire un double clic sur la requte Carlotti Cliquer sur Affichage

Jean Osenda -

Initiation SQL avec Access XP

1

Dans le menu contextuel saffiche Mode SQL

Cliquer sur Mode SQL A lcran saffiche la fentre ci-dessous :

On remarque que la requte est sous la forme de langage SQL Exemple de requte SQL simple : Nous voulons obtenir, dans la table Clients, le NClient, le Contact et la Raison sociale de lentreprise STP. En mode graphique il nous suffit de faire une requte dans la table Clients et de double cliquer sur NClient (1re colonne), Contact (2e colonne), RaisonSoc(3e colonne).

Si lon dsire obtenir le code SQL de cette requte il faut : Cliquer sur Affichage Cliquer sur Mode SQL

Jean Osenda -

Initiation SQL avec Access XP

2

Signification du code SQL : Choisir dans la table Clients, le NClient, le Contact et la Raison sociale de STP. On obtient (dans loption graphique) le rsultat en cliquant sur

1) Syntaxe en SQL Reprenons lexemple ci-dessus qui nous a permis dafficher le NClient, le Contact, la RaisonSoc. Cette manire de procder sappelle la qualification.

SELECT Clients.NClient, Clients.Contact, Clients.RaisonSoc FROM Clients;Nous pouvons crire cette commande de deux autres manires qui sont plus simples : 1re manire : Nous mettons en facteur commun la table Clients ainsi que le point qui indique que toute suite aprs le nom de la table doit tre saisi le Champ dsir.

SELECT NClient, Contact, RaisonSoc FROM Clients;2e manire :

SELECT [NClient], [Contact], [RaisonSoc] FROM [Clients];Pour viter davoir des problmes de doublons lors dune requte SQL il est plus prudent de mettre entre crochets le nom de la table et le nom du champ. a) Mode opratoire : SELECT signifie Choisir (slectionner) dans la table Clients Barre despacement (indispensable) Entre crochets saisir le champ ici NClient Saisir une virgule (indispensable) Barre despacement (facultative) Entre crochets saisir le champ dont on veut avoir la liste ici ContactJean Osenda Initiation SQL avec Access XP 3

Saisir une virgule Barre despacement (facultative) Saisir le champ dont on veut avoir la liste RaisonSoc Barre despacement (facultative) Saisir FROM (table source) Barre despacement (indispensable) Entre crochets saisir le nom de la table ici Clients Saisir dun point virgule (marque la fin de la commande mais non indispensable)

b) La structure dune requte en SQL Elle est compose de la manire suivante : Dun mot cl ex : SELECT Dun ou plusieurs champs Du mot-cl identifiant la table source ex : FROM Du nom de la table source Et ensuite seulement de conditions ex : WHERE , ORDER BY, 2) Comment saisir une commande SQL dans Access ? Ouvrir la base de donnes SPT Cliquer sur le boutons Requtes Double-Cliquer sur Crer une requte en mode Cration Deux fentres apparaissent lcran Requte1 :Requte Slection et (superpose) Afficher la Table Ne slectionner aucune table

Jean Osenda -

Initiation SQL avec Access XP

4

Cliquer sur Fermer seule la table Requte1 :Requte Slection demeure affiche Dans la barre des tches cliquer sur Requte

Cliquer sur Spcifique SQL Cliquer sur Dfinition de Donnes

Une fentre nomme : Requte :Requte Dfinition de Donnes saffiche

Dans cette fentre saisir la commande SQL : SELECT [NClient], [Contact], [RaisonSoc] FROM [Clients];

On obtient le rsultat de la requte en cliquant sur Enregistrer la requte. La Projection : La projection sapplique sur une table et permet de slectionner la ou les colonnes que lon voir safficher. La Slection : La slection sapplique sur une table et permet de slectionner une ou plusieurs lignes selon une condition donne.

Jean Osenda -

Initiation SQL avec Access XP

5

Les calculs : Les calculs sappliquent une table (calculs du prix maximum, minimum dune commande, de la moyenne..) La Jointure : La jointure sapplique sur deux tables et consiste juxtaposer deux deux les lignes de deux tables qui ont des valeurs identiques prsentes dans les colonnes correspondant la condition de jointure. Ces colonnes seront dun ct une cl primaire et de lautre ct une cl externe correspondante. Ex : je veux afficher le Contact, le tlphone, la ville de dpart, la ville de destination dont lorigine se situe dans la table Clients et la table Transport sur le critre du NClient SELECT [Contact], [tlphone], [ville-Dp], [Ville-Dest] FROM clients, Transport WHERE [Clients].Nclient=[Transport].NClient; Remarque : La structure dune requte en mode Projection, Slection, ou Jointure se compose : Dun mot cl ex : SELECT Dun ou plusieurs champs Du mot-cl identifiant la table source FROM Du nom de la table source Et ensuite seulement de conditions ex : WHERE , ORDER BY, etc.. La structure dune requte en mode Calcul se compose : Dun mot cl ex : SELECT suivi de la fonction calcul choisie COUNT, AVG, MAX, MIN Entre parenthses le champ sur lequel porte le ou les calculs Du mot-cl identifiant la table source FROM Du nom de la table source 3) Document papier prparer avant de saisir une requte en SQL Pour prparer les requtes SQL il est prfrable dutiliser un document prparatoire : Document de pr-saisie requtes SQL (aller la ligne chaque fois quun nouveau mot-cl est utilis)Ecrire en langage courant ce que lon veut obtenir en effectuant la requte SQL Quel est le mot-cl de dpart ? Quels sont les autres mots-cl utiliser dans cette requte ? Lister les champs ncessaires cette requte Quelle est la ou les tables source ? La requte contient-elle des conditions ?

Jean Osenda -

Initiation SQL avec Access XP

6

La requte exige-t-elle des calculs ? Rdiger la commande SQL saisir dans la fentre Requte :Requte Dfinition de Donnes

Exemple de document de pr-saisie pour des requtes SQL : Document de pr-saisie requtes SQL (aller la ligne chaque fois quun nouveau mot-cl est utilis)Liste des clients de lentreprise en affichant leur N de client, la personne contacter, leur numro de tlphone

Ecrire en langage courant ce que lon veut obtenir en effectuant la requte SQL Quel est le mot-cl de dpart ? Quels sont les autres mots-cl utiliser dans cette requte ? Lister les champs ncessaires cette requte Quelle est la ou les tables source ? La requte contient-elle des conditions ? La requte exige-t-elle des calculs ? Rdiger la commande SQL saisir dans la fentre Requte :Requte Dfinition de Donnes

SELECT (par convention en majuscules pour ne pas le confondre avec un champ) FROM NClient , Contact, Tlphone Clients Ici il ny en a pas mais il pourrait y avoir des conditions du type < >= etc. SELECT [NClient], [Contact], [Tlphone] FROM [Clients];

Prenons comme exemple la table Clients et la table Transport de la BDD STP (Socit Provenale de Transport) : Table Clients

Table TransportJean Osenda Initiation SQL avec Access XP 7

La flche permet daccder A la rubrique Quelques remarques qui se situent la fin du tableau HYPERLINK \l "_top" Signification des prin ci-dessous :

SELECT

Mot-cl SQL

CommandeCe qui doit tre affich

Je veux afficher les N de client de la table Clients

Requte en langage courant

Exemple de requteSELECT[NCLient] FROM [Clients];

FROM ORDER BY

Dans quelle table chercher linformation Ordre daffichage

SELECT[NCLient], [RaisonSoc] Si je veux afficher FROM [Clients]; plusieurs champs de la table Clients Indique la source de Voir ci-dessus la table Je veux afficher le Contact, la raison sociale, le N de client class par ordre alphabtique du champ Contact Jajoute ORDER BY DESC pour obtenir un classement dcroissant Je veux obtenir laffichage de tous les SELECT [Contact], [RaisonSoc], [NClient] FROM [Clients] ORDER BY [Contact];

DESC

Classement dcroissant Tous les attributs de la

Le signe *Jean Osenda -

SELECT [Contact], [RaisonSoc], [NClient] FROM [Clients] ORDER BY [Contact] DESC; SELECT * FROM [Clients] ;8

Initiation SQL avec Access XP

WHERE

table Permet de slectionner les lignes vrifiant une condition. = gal =suprieur ou gal Permet de rechercher des occurrences dans les chanes de caractre Choisir des lments dans un intervalle Ajout dune condition

SUM AS

Fait la somme des valeurs dun champ Permet de modifier lintitul dun champ dans une requte Permet de calculer la moyenne dun

AVG

SELECT * Je veux afficher tous FROM [Clients] les enregistrements de WHERE [Contact] LIKE "B*"; la table Clients dont le contact commence par la lettre B SELECT [NClient], [Ville-Dp] FROM [Transport] Je veux afficher le WHERE [date-Dp] NClient, la ville de BETWEEN #7/1/05# dpart dans la table AND #7/8/05#; Transport pour les dparts effectus entre le 1/07/05 et le 8/7/05 en ajoutant AND (1) note bas du tableau Quelle est le total des SELECT SUM([Distance]) kms parcourus FROM [Transport]; prsents dans la colonne Distance Je veux afficher le SELECT [Contact] Contact, la raison AS [Client], [RaisonSoc] sociale,, en ayant AS [Entreprise] comme intituls, FROM [Clients] ; Client, Entreprise Je dsire connatre le SELECT AVG ([Cubage]) cubage moyen FROM [Transport]; transport par camion

Jean Osenda -

Initiation SQL avec Access XP

9

COUNT MAX

champ Permet de compter les lignes

Je dsire compter le nombre de clients de lentreprise

SELECT COUNT ([NClient]) AS [Nombre de clients SPT] ;

SELECT MAX([Distance]) AS Je veux que saffiche le [Distance la plus longue] transport qui a FROM[Transport]; effectu la distance la plus longue avec modification de SELECT MIN([Distance]) AS MIN lintitul [Distance la plus courte] FROM[Transport]; Je veux que saffiche le transport qui a effectu la distance la plus courte avec modification de lintitul INNER Permet de faire Je veux obtenir des SELECT [Clients.NClient], JOIN une requte champs de la table [Clients.RaisonSoc], Transport. sur deux tables Client et de la table [Date-Dp], Transport.[Ville-Dp], ON Transport. Transport.[Ville-Dest] Ici il faut qualifier les FROM [Clients] champs :Clients.NCli INNER JOIN [Transport] ent ON Clients.NClient = et spcifier Le champ Transport.NClient commun NClient (1) Le format de date est de type anglo-saxon le mois vient en 1er ,le 1er juillet 2005 doit scrire 7/01/05 Quelques autres COMMANDES SQL Mot-cl Commande Requte en langage Exemple de requte SQL courant SELECT Permet Je veux supprimer tous SELECT DISTINCT [Contact] DISTINCT dliminer les risques de FROM [Clients]; coup sr les doublons dans le doublons champ Contact de la table Clients YEAR Permet Je veux connatre tous SELECT [NClient] dobtenir des les NClient des FROM [Transport] donnes transports de lanne WHERE YEAR([Date-Dp])=2005 annuelles 2005

Quelques remarques complmentaires : haut du tableau ci-dessus Haut du document

Jean Osenda -

Initiation SQL avec Access XP

10

Limplmentation de SQL par Access accepte les caractres accentus pour les noms des champs et des tables. Il est conseill dutiliser le signe de soulignement afin dviter les espaces sans caractre. Par dfaut le classement est ascendant sinon on peut ajouter ASC. On peut renommer les champs mais il ne faut pas despace du type : Nom du client, mais plutt NomClient. Ne jamais saisir une virgule ou un point prcdant un mot-cl comme SELECT , WHERE.. Il est possible dans Access de crer une requte partir du rsultat dune autre requte, dans la mesure du possible viter dutiliser des requtes embotes, les risques derreurs sont nombreux. Les crochets sont facultatifs dans les requtes, mais il est conseill de les utiliser. Dans un seul cas ces crochets sont obligatoires, cest lorsque lon veut donner un alias ( qui contient des espaces) un champ. Ex : [Nom_client] AS [Noms des clients] ; Diffrence de syntaxe entre Requte : Dfinition de donnes et SQL Direct 1) Si lon procde une requte en mode Requte :Dfinition de donnes il faut : Cliquer sur le bouton Requtes Double-cliquer sur une Crer une requte en mode cration Fermer la fentre Afficher la table (sans slectionner une table) Positionner le curseur dans la partie haute de Requte : Requte Slection (partie grise) Faire un clic droit Choisir dans le menu contextuel qui saffiche Mode SQL Saisir la requte au clavier Enregistrer la requte 2) Si lon procde une requte en mode SQL direct il faut : Double-cliquer sur une requte enregistre

Choisir dans le menu droulant Mode cration (ou bien dans la partie grise de la requte faire un clic droit) Dans la fentre Requte (nom) : Requte slection , dans la partie grise Faire un clic-droit Choisir Mode SQL On peut remarquer que le code SQL dAccess est diffrent de celui qui a t saisi, en effet aprs le mot-cl saffiche le nom de la table ainsi quun point suivi du nom du champ. Il ny a pas de crochets, et souvent daussi nombreuses quinutiles parenthses. 3) Si lon veut retrouver le code SQL que lon a saisi il faut : Ouvrir la base de donnes Cliquer sur le bouton Requtes Slectionner (surbrillance bleue) la requte choisie (sans louvrir) Faire un clic droit Dans le menu contextuel qui saffiche

Jean Osenda -

Initiation SQL avec Access XP

11

Cliquer sur Mode cration

(saffiche le code SQL saisi au clavier)

Jean Osenda -

Initiation SQL avec Access XP

12