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



Exemple

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




Le DDL


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],
              colonne2 type2, ...)


Eg: CREATE TABLE employe (id varchar(5) NOT NULL UNIQUE PRIMARY KEY, nom varchar(20),
              salaire numeric(9,2), date_embauch date);

Référence: Create table syntax



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, ...)

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


Référence: 6.5 Alter Table


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;


Le DML


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











La commande INSERT

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, ...)

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

INSERT INTO competence VALUES ('B2222', 'SQL', NULL);

On peut aussi mettre des valeurs dans seulement certaines colonnes de la table:

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.





Le NULL

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





La commande UPDATE

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;


La commande DELETE

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();






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 ...

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;





Haut de la page