DÉVELOPPEMENT D'APPLICATIONS AVEC ...









Voici d'abord la solution des deux problèmes du Devoir 4:









COURS 9 - LE LANGAGE SQL

SQL = Structured Query Language
On prononce S . Q . L . ou bien Sequel

Langage de manipulation de bases de données relationnelles inventé dans les années '70 par IBM et Dr. E.F. Codd

Popularisé par la cie ORACLE

Avantage est qu'il permet à des SGBD qui n'ont pas la même programmation de se parler - base de la technologie client-serveur

Une application client sur une platforme Win95 opérant PowerBuilder peut aller chercher de l'information sur un serveur opérant sur une platforme H-P avec Oracle - le client envoie une commande SQL au serveur qui l'exécute et retourne le résultat

La deuxième raison pour apprendre SQL est que tous les SGBD l'utilisent dans leurs opérations internes

Pas tous les SGBD utilisent les GUI - dans certains cas, il faut que le programmeur code les requêtes - il y a encore beaucoups d'entreprises qui opèrent avec des SGBD plus anciens ( La Cité collégiale, par exemple) ou la connaissance du code SQL est requise

Si vous désirez regarder un autre tutoriel sur SQL, allez chez Ashok's et consultez la section Tutorials.



LES INSTRUCTIONS SQL


Le langage fonctionne avec une série d'instructions restreinte : il n'y a qu'environ 30 instructions en SQL

Les instructions se divisent en 4 catégories :


Le DDL


Les commandes DDL servent à créer les tables, les modifier ou les enlever

Pour exécuter une commande en ISQL, on l'écrit dans la fenêtre Command et on clique sur le bouton Execute pour l'exécuter

CREATE TABLE nom_table (colonne1 type1, colonne2 type2, ...)

Eg: CREATE TABLE employe (numero varchar(5), nom varchar(20), salaire numeric(9,2), date_embauch date);

Les types de données communs sont:
SMALLINT, INTEGER, NUMERIC(n,m), VARCHAR(n), DATE, BINARY


ALTER TABLE nom_table ADD (colonne type)

Eg: ALTER TABLE employe ADD (adresse varchar(30));

Notez qu'il n'y a pas de commande pour changer ou pour enlever une colonne


DROP TABLE nom_table

Eg: DROP TABLE employe;



Le DML


Les commandes DML servent à manipuler les données - les insérer, les changer ou les effacer dans les tables

INSERT INTO nom_table VALUES (valeur1, valeur2, ...)

Eg: INSERT INTO competence VALUES ('A111', 'COBOL', 15);


UPDATE nom_table SET colonne1 = valeur1, colonne2=valeur2
WHERE condition

Eg: UPDATE employe SET salaire=25000
      WHERE numemp = 'A1111';

Eg: UPDATE employe SET salaire = salaire * 1.1
      WHERE departement = 22;


DELETE FROM nom_table WHERE condition

Eg: DELETE FROM projets
      WHERE p_datefin < date();




Les commandes d'interrogation
 :

SELECT colonne1, colonne2, ... FROM nom_table
      WHERE condition

      * = toutes les colonnes

SELECT * FROM Projet;

SELECT Numero_projet, Titre, Budget FROM Projet;

SELECT e_id, e_Nom FROM Employe ;

LA CLAUSE WHERE ...

OPÉRATEURS:

=          >          <          >=          <=           <>    ou     !=          BETWEEN          LIKE          IN          NOT


Supposons qu'il existe une table PRODUITS comme:

Produits

numprod
desc
prix
cout

EXEMPLES:

SELECT * FROM PRODUITS WHERE NUMPROD = "A1234";

SELECT NUMPROD, DESC, PRIX FROM PRODUITS WHERE PRIX > 50;

SELECT NUMPROD, DESC, PRIX FROM PRODUITS
WHERE PRIX BETWEEN 50 AND 150;

SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD LIKE "A%";

SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD LIKE "A____";

          % = CHAINE DE CARACTERES

          _ = 1 CARACTERE

SELECT NUMPROD, DESC FROM PRODUITS WHERE DESC LIKE "%10%";

SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD IN ("A100", "A200", "B500", "D800");

LE AND et OR S'UTILISENT COMME DANS TOUS LES AUTRES LANGAGES:

SELECT * FROM PRODUITS
WHERE DESC LIKE "A%" AND PRIX > 500;

SELECT ... AVEC FONCTIONS
:

LES FONCTIONS:

+           -          *           /

COUNT          MAX          MIN          AVG          SUM

EXEMPLES:

SELECT NUMPROD, PRIX, (PRIX + (PRIX * .10)) FROM PRODUITS;

SELECT NUMPROD, PRIX, COUT, (PRIX - COUT) FROM PRODUITS
WHERE NUMPROD LIKE "A%";

SELECT MAX(PRIX) FROM PRODUITS;

SELECT COUNT(*) FROM PRODUITS;

SELECT COUNT(*) FROM PRODUITS
WHERE (PRIX - COUT) > 50;

SELECT AVG(PRIX) FROM PRODUITS;

SELECT SUM(COUT) FROM PRODUITS;

DISTINCT identifie tous ceux qui sont différents

SELECT DISTINCT DESC FROM PRODUITS;

Pour savoir si le fichier contient des DESC répétées:

SELECT COUNT(DESC) FROM PRODUITS;

SELECT COUNT(DISTINCT DESC) FROM PRODUITS;

ETABLIR LA SEQUENCE D'AFFICHAGE:


UTILISE LA CLAUSE ORDER BY ...

SELECT NUMPROD, PRIX FROM PRODUITS
ORDER BY PRIX DESC;

ASC spécifie en ordre croissant

DESC spécifie en ordre décroissant

si pas spécifié, c'est ASC



SELECT * FROM CLIENTS
ORDER BY NOM, PRENOM;

liste en ordre de nom d'abord,

en ordre de prenom à l'intérieur des noms identiques





[ PAGE TITRE ]      [ PRÉCÉDENTE ]      [ SUIVANTE ]