
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 :
- DÉFINITION DE TABLES (DATA DEFINITION LANGUAGE)(DDL):
CREATE, DROP, ALTER
- MANIPULATION DE DONNÉES (DATA MANIPULATION LANGUAGE) (DML):
INSERT, UPDATE, DELETE
- INTERROGATIONS (QUERIES):
SELECT
- CONTRÔLE D'ACCÈS (DATA CONTROL LANGUAGE) (DCL):
GRANT
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:
Produitsnumprod
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 ]