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