Sans titre
Transcription
Sans titre
Robert Van Loo Premiers pas en SQL Buts de l ’atelier : –Découvrir le langage SQL –Comprendre le fonctionnement du Plug-in 4d SQL Serveur Organisation : –Première approche de SQL –Usage et exemples d ’usage de 4d SQL Serveur –Quelques pas de plus en SQL System Query Language • Origines : – Le modèle relationnel de Codd – Idée du modèle : les données sont indépendantes des requêtes – IBM • Langage normalisé ANSI, avec des ajouts propriétaires • Langage au sens : vocabulaire, et surtout syntaxe • Trois mots pour débuter : - select (on sélectionne quoi) - from (on sélectionne où) - where (on sélectionne comment) SELECT • select est d ’usage plus général que ‘‘ sélection ’’ • select est une instruction d ’exécution • select peut être utilisé sans from ni where • Exemples : – select 3*6 – select substring(‘ah que coucou’,8,6) substring ➽ ➽ 18 coucou • En général, sa syntaxe est : select … suite d ’opérations sur des constantes, des variables, des noms de volume FROM • Suivi de(s) nom(s) de table(s) sur laquelle (lesquelles) le select qui précède doit opérer • Syntaxe : select … … from table, [… table], … … • Exemple : select * from nature Toutes les colonnes Toutes les lignes de la table nature • Exemple plus poli : select texte from produits • Question : que se passe-t-il si from est suivi de plusieurs noms de tables ? WHERE • Partie la plus élaborée du trio • Indique une clause de sélection ou de jointure • Exemples : – select cd, rs from societes where cp = 92532 cd rs Liste des cd Liste des rs – Variante : select cd, substring(rs,1,32) from societes where cp = 92532 substring – Autre exemple : select pr+nm from contacts where cd in (select select cd from sociétés where cp = 92532) Usage de SQL Serveur • 1ère étape : établir la connexion entre le client et le serveur. Méthode : indiquer au client le nom du serveur et son adresse TCP/I • 2ème étape : s’identifier vis à vis du serveur : ✧ Login := DB Login ( ‘robert’ ; ‘anarchie’ ; ‘DIOGENE’ ) • 3ème étape : ouvrir un process ✧ Liaison := DB Open ( ✧ Login ) • 4ème étape : attribuer ce process à une base existante sur le serveur $res := DB Use (✧ liaison ; ‘gaston’ ) Communication client-serveur (Bas niveau) Soit $texte, le texte d ’une requête • 1ère étape : envoyer la requête au serveur $res := DB Cmd (✧ liaison ; $texte ) • 2ème étape : faire exécuter la requête sur le serveur $res := DB SqlExec (✧ liaison ) Si le client attend des réponses : • 3ème étape : construire le buffer de sortie sur le serveur $res := DB Results (✧ liaison ) A présent, le serveur contient une table virtuelle. Il faut établir une application de ses colonnes sur les structures clientes : $res := DB Bind (✧ liaison ; 1 ; ‘‘Var1’’) Col1 Col2 Col3 $res := DB Bind (✧ liaison ; 2 ; ‘‘Var2’’) Var1 Var2 Var3 Rapatrier des données • La dernière étape est d ’ordre de copie d ’une ligne du buffer de sortie dans des variables liées par DB Bind $res := DB NextRow (✧ liaison ) Si la requête ramène plusieurs lignes, ceci implique une boucle • Autre manière : les tableaux $res := DB Query Exec (✧ liaison ; $texte ; ‘‘tableau1’’ ; ‘‘tableau2’’;...) • Variante : précédente avec indirection Tableau alpha ( 32 ; tNomTab ; 3 ) tNomTab{1} := ‘‘tab1’’ tNomTab{2} := ‘‘tab2’’ … … $res := DB Execute SQL (✧ liaison ; $texte ; tNomTab ) Opérations SQL • Select • Insert • Update • Delete