Cours 5
INTRODUCTION AU LANGAGE SQL
Le 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 WinXP opérant VB .NET 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
Voici un exemple d'utilisation du SQL. En Access, quand vous créez une Requête, il y a toujours une commande SQL qui générée par cette requête:


LE SERVEUR MYSQL
Si vous travaillez de la maison vous allez devoir installer le serveur MySQL et ensuite le client GUI.
Pour télécharger, allez au site MySQL 4.0.
Téléchargez la version Windows 4.0.15 du serveur.
Ensuite, vous allez devoir utiliser un client GUI pour gérer les tables et les données. Téléchargez Administrator à partir du site: MySQL Administrator.
L'installation de MySQL est relativement simple, surtout en Win98. Avec WinXP il faut un peu plus de travail. Voir la documentation: Lancer MySQL.
La documentation de MySQL est absolument essentielle. Vous pouvez vous y rendre en passant par: MySQL.com --> Documentation -> Searchable with user comments ou en cliquant ici: Manuel de référence MySQL.
Référence: Erreurs communes
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
Les commandes DDL servent à créer les tables, les modifier ou les enlever
Il faut cependant créer une base de données avant de commencer:
CREATE DATABASE [IF NOT EXISTS] db_name;
Après l'avoir créé, il faut dire à MySQL de l'ouvrir:
USE db_name;
Notez que vous ne créez pas une nouvelle bd à chaque fois que vous entrez en MySQL; cependant vous devez toujours ouvrir la bd sur laquelle vous voulez travailler.
Ensuite on peut commencer à créer les tables dans la bd:
CREATE TABLE nom_table (colonne1 type1 [NOT NULL] [UNIQUE] [PRIMARY KEY] [AUTO_INCREMENT],Référence: Create table syntax
colonne2 type2, ...)
Eg: CREATE TABLE employe (id varchar(5) NOT NULL UNIQUE PRIMARY KEY, nom varchar(20),
salaire numeric(9,2), date_embauch date);
Les types de données communs sont:
type:
TINYINT[(length)] [UNSIGNED] [ZEROFILL]
or SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
or MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
or INT[(length)] [UNSIGNED] [ZEROFILL]
or INTEGER[(length)] [UNSIGNED] [ZEROFILL]
or BIGINT[(length)] [UNSIGNED] [ZEROFILL]
or REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
or DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
or FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
or DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
or NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
or CHAR(length) [BINARY]
or VARCHAR(length) [BINARY]
or DATE
or TIME
or TIMESTAMP
or DATETIME
or TINYBLOB
or BLOB
or MEDIUMBLOB
or LONGBLOB
or TINYTEXT
or TEXT
or MEDIUMTEXT
or LONGTEXT
or ENUM(value1,value2,value3,...)
or SET(value1,value2,value3,...)
Allez voir les références suivantes au sujet des données:et
Pour changer ou modifier une table on utilise la commande ALTER TABLE ...
ALTER TABLE nom_table ADD (colonne type, ...)Référence: 6.5 Alter Table
Eg: ALTER TABLE employe ADD (adresse varchar(30));
Référence: Changing the order of columns
Pour effacer une table, on utilise le DROP TABLE ...:
DROP TABLE nom_table
Eg: DROP TABLE employe;
Les commandes DML servent à manipuler les données - les insérer, les changer ou les effacer dans les tables.
Pour mettre des valeurs dans une table on utilise le INSERT INTO ...
Notez le nombre de valeurs doit correspondre exactement au nombre de colonnes dans la table et le type de donnée doit correspondre exactement au type de colonne.
Si on doit omettre une valeur pour une colonne, on utilise l'identificateur NULL
INSERT INTO nom_table VALUES (valeur1, valeur2, ...)On peut aussi mettre des valeurs dans seulement certaines colonnes de la table:
Eg: INSERT INTO competence VALUES ('A111', 'COBOL', 15);
INSERT INTO competence VALUES ('B2222', 'SQL', NULL);
INSERT INTO competence(empid, experience) VALUES ('A111', 15);Notez bien: chaque INSERT ajoute une ligne à la table; vous ne pouvez pas changer le contenu d'une ligne avec un INSERT.
Remarquez l'utilisation du NULL. Le NULL est un caractère spécial en SQL. NULL n'est pas la même chose qu'un espace ou un 0. NULL signifie que la valeur est inexistante ou indéterminée. Toutes les opérations faites sur NULL retourne NULL.
Pour évaluer si une colonne contient un null ou non, on ne fait pas ...WHERE col = null;
Il faut évaluer NULL au moyen de ... IS NULL ou ... IS NOT NULL
Pour changer les données il faut faire un UPDATE ...
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;
Le DELETE ... sert à supprimer des lignes dans la table; notez que chaque DELETE enlève une ligne au complet; vous ne pouvez pas enlever seulement une colonne sauf en faisant un UPDATE.
DELETE FROM nom_table WHERE condition
Eg: DELETE FROM projets
WHERE p_datefin < date();
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 ...
La clause WHERE est l'équivalent d'un IF ...
SELECT * FROM table WHERE condition;
Affiche la ligne de table SI condition est vraie;
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;