BANQUES DE DONNÉES Définition Toute application informatique utilise des données. Ces données, souvent volumineuses impliquent les tâches suivantes : les enregistrer (sauvegarder) les classer (trier) les accéder rapidement produire des sous-ensembles de ces données. etc. Un mécanisme a donc été créé pour permettre ces tâches. Une structure sera donc créé pour sauvegarder la collectionde données, utilisées par notre application. Cette collections'appellera une Banque de Données.
BANQUES DE DONNÉES Définition (suite) Dans ce mécanisme, un langagesera mis en place afin d'offrir à l'utilisateur les outils pour manipuler cette banque de données. Même si les données sont classées dans la banque dans le seul ordre de leur entrée, le langage associé offrira des commandes puissantes pour : les trier les manipuler les modifier les supprimer de telle sorte que l'utilisateur croira avoir affaire à une collection de données ordonnée et bien classée. Ce langage, inventé par IBM, fera son chemin vers d'autres compagnies et deviendra vite une norme. On l'appelle un langage de requête «query» de par l'utilisation la plus fréquentes que les utilisateurs en font. D'où son nom SQL (Structured Query Langage) «Langage Structuré de Requête»
BANQUES DE DONNÉES Définition (suite) SQLest donc un langage. A ce titre, il nous offrira des commandes. Ces commandes, peuvent être groupées en 2 catégories. Le DDL (Data Definition Language) Ces instructions servent à déclarer, renommer, modifier ou détruire les éléments de la banque. Ce sont les CREATE, DELETE, ALTER {objets}, SET etc.. Le DML (Data Manipulation Language) Ces instructions servent à manipuler les données et comprennent des commandes tel SELECT, INSERT, UPDATE, MODIFY, DELETE etc. Partir de zéro, on doit avoir recours aux DDL pour établir les structures nécessaires puis Avoir recours aux DML pour y ajouter, manipuler, chercher, effacer nos données
BANQUES DE DONNÉES Règles générales SQL, dans sa syntaxe, ne fait pasde différence entre les majuscules et les minuscules (insensible à la casse) Les commandes SQL peuvent s'étaler sur plusieurs lignes et contenir autant d'espaces que désiré. Chaque commande doit être terminée par un point-virgule; Par conventionon écrira les commandes et opérateurs SQL en majuscule et les noms d'éléments en minuscule (peuvent débuter par une majuscule). Les commentaires sont identifiés par le double tiret en début de commentaire i.e. -- ceci est un commentaire
Implantation Une SGBDR n'est pas une application mais plutôt un serviceaccroché au système d'exploitation. En effet, la plupart du temps c'est nos applications qui feront appel au langage SQL. Cependant, il arrive que nous ayons besoin : de gérerle service de lancer une commande SQL en solo d'effectuer la gestion de nos banques. A cette fin, un moteursql est accompagné d'une ou plusieurs applications prévues pour effectuer ces tâches et fonctions.
Implantation Oracle, le moteur SQLchoisi pour le présent cours nous en offre deux. 1. SqlPlus Il s'agit ici d'une interface consoleoù l'usager peux lancer des commandes SQL à son gré et voir le résultat s'afficher. 2. SQL Developer Cette application permet de naviguer en mode graphique parmi nos banques de donéesainsi que d'effecturertoutes tâches de gestion. 3. Console Web pour Oracle Cette application nous offre sensiblement les mêmes fonctionnalités que le SQL Developperpar l'entremise d'un navigateur WEB.
Les Utilisateurs Une SGBDR est un environnement sécurisé et pour y avoir accès il faut s'identifier par un code d'accèset un mot de passe. Il nous faudra donc créer un (ou des) utilisateur(s). Ceci s'accomplis par la commande SQL CREATE USER. Qui dit Utilisateur dit Privilèges et Gestion d'accès. Les commande SQL nécessaires afin d'effectuer ce genre de tâches ne sont pas du contexte du présent cours. Nous allons donc avoir recours à la Console Web pour Oraclepour se créer un utilisateur.
Installation Il est temps de télécharger et d'installer Oracle. Allez au lien suivant et téléchargez l'application : http://www.oracle.com/technetwork/products/express-edition/downloads/index.html A ce lien, cliquez le lien Oracle Database Express Edition 11gRelease 2 for Windows x32 Il va vous falloir créer un compte chez Oracle pour télécharger l'application, faites-le et prenez bonne note de votre identifiant et votre mot de passecar vous en aurez besoin à nouveau. ATTENTION : Lors de l'installation, il vous sera demandé de choisir un mot de passe. Ce mot de passe sera pour l'utilisateur Systemcréé automatiquement à l'installation, prenez aussi bonne note de votre identifiant et votre mot de passe car vous en aurez besoin souvent.
Création d'un utilisateur Tout comme sous Windows, il est mauvaise pratique de se connecter avec le compte possédant tout les privilèges. Nous allons donc nous créer un utilisateurqui aura tous les privilèges sauf le privilège nommé DBA(DataBase Administrator). Lancez la Console Web pour Oracle. À la première page, vous devrez vous connecter. Comme vous allez créer un utilisateur, vous devrez vous connecter avec un compte DBA. Alors connectez-vous avec les paramètres suivants: Nom utilisateur : System Mot de passe : {celui que vous avez créé lors de l'installation}
Création d'un utilisateur Une fois connecté, cliquez l'icône Administration. Cliquez l'icône Utilisateurs de base de données. Et cliquez le bouton Créer. La fenêtre qui apparaît, vous présente deux sections. Dans la première, entrez le nom de l'utilisateur que vous désirez créer et entrez un mot de passe pour cet utilisateur (répétez le mot de passe afin de vous assurer qu'il est bien écrit comme vous le désirez). Assurez-vous que la liste déroulante du Statut du compte affiche bien Déverrouillésinon déroulez la et choisissez Déverrouillé. Notez : Tablespace par défaut : USERS Tablespace temporaire : TEMP
Création d'un utilisateur La seconde partie est prévue pour vous permettre de choisir les privilèges à associer à l'utilisateur. Les cochets : [ ] CONNECT et [ ] RESSOURCEdoiventdemeurer cochés. Le cochet : [ ] DBAne doit pasêtre coché. Les autres cochets pourraient êtres cochés ou décochés au souhait du DBA qui crée l'utilisateur. Pour les fins du présent cours, cliquez sur l'hyperlien Cocher toutau bas droit de la fenêtre. Finalement, cliquez le bouton au haut à droite de la première section pour créer l'utilisateur. Fermez l'interface WEB.
Création d'un utilisateur Afin de bien apprendre les rouages du langage SQL, nous allons débuter en utilisant l'interface de ligne de commande prévu par Oracle. Cet interface se nomme SqlPluset comme il fonctionne sous la console Windows, nous allons nous créer une icône pour se connecter à SqlPlus. En fait nous allons créer trois icones : une pour ce connecter comme DBA une pour ce connecter avec l'utilisateur que vous venez de créer une pour lancer SqlPlus, sans ce connecter. L'application SqlPlusd'Oracle nous offre la possibilité de passer le nom de l'utilisateur et le mot de passe commme paramètres de ligne de commande. Créez-vous un raccourci pour la console Paramétrez celui-ci pour qu'il s'exécute en tant qu'administrateur Entrez le texte suivant à la rubrique Cible: du raccourci C:\Windows\System32\cmd.exe /C SqlPlus SYSTEM/oracle Le /Cinforme la console de lancer SqlPlusà son démarrage La paire SYSTEM / oracle est le nom de l'utilisateur, une oblique et le mot de passe.
Création de la banque En Java, nous avons dû créer plusieurs fichiers afin de gérer les données nécessaires à notre application de facturation. Dans chacun de ces fichiers, nous avons créé des lignesoù chacune de ces lignes représentait un enregistrementou une fichepour un candidatparmi toute l'information que le fichier contiendrait. Chacune de ces lignes était divisé en champs ou éléments d'une fiche. Dans une banque de données, nous avons une structurequi peux s'apparenter à ce type de fichiers. On appellera cette structure une Table. Une Tableaura donc des Lignesque nous appelleront des Enregistrementset chaque Enregistrement contiendra des Items que nous appelleront des Champs. L'ensemble des Tables constituera la Banque de données. On peux aussi imaginer une table comme une grille Excel avec ses rabgngs et ses colonnes..
Forme des commandes SQL En SQL, les commandes ressemblent beaucoup à de l'anglais parlé. Elles débutent par un verbe«la commande comme tel» et ce verbe pourra être suivi d'un objet SGBDsi ce verbepeux s'appliquer à plusieurs éléments de la SGBDR. (ex. CREATE TABLE, CREATE INDEX, etc ) Les commandes pourront faire appel à des qualificatif introduisant des attributs servant à cibler le résultat désiré pour la commande. Ex.: SELECT table_name FROM user_tables; Ici, la commande est le SELECT, instruisant SQL qe nouv sésirons lancer une requête. SELECT est suivi d'une valeur quelconque (un nom de champ ici) Puis le qualificatiffromindique à la commande le nom de la table visée par la requête.
Création des Tables La création d'une Table se fera à l'aide de la commande CREATE. Comme la commande CREATE peux servir à créer plusieurs éléments de la SGBDR, l'ordre CREATE sera suivi du mot TABLE, ainsi Oracle saura qu'on veux créer une table. La séquence CREATE TABLE sera suivi du nom à attribuer à cette table. Contrairement à la création d'un fichier, l'information que contiendra une table doitêtre défini à la création de la table. Ainsi, le CREATE TABLE nom_tablesera suivi de la définition de la Structuredes Enregistrements de cette table. Cette Structure prendra la forme d'une liste de définitions de champs séparés par des virgules et la liste sera introduite à la commande entre parenthèse. Les définitions de champs, à leurs tours, sont des paires d'éléments très similaire à des déclarations de variable en Java par exemple, soit un nom de champ suivi d'un type. De cela, on en déduit que les champs sont fortement-typés. Les déclarations de champs peuvent aussi contenir des éléments supplémentaires afin d'appliquer des contraintes ou une forme d'initialisation.
CREATE TABLE modeles ( Instruit Oracle de créer la table modeles CRÉATION D'UNE BANQUES DE DONNÉES Création des Tables (suite) Définition des champs de la table {nom du champ} type [(taille)] [ default NULL NOT NULL {valeur}] Ex.: NoTitre char(12) default NULL, -- Type texte, 12 caractères, initialisé à NULL NoCmde shortint default 0, -- Type entier, initialisé à zéro DateMaj date default NULL, -- Type date, initialisé à NULL Clef char(16) NOT NULL default '', -- Type texte, 16 caractères, initialisé à une chaine vide NOTES : Si les noms de champs contiennent des espaces, ils doivent être bordés entre double-guillemets. Les données de type texte doivent être bordés entre simple-guillemets. La valeur NULL est différent d'une chaine-vide. Exemple : CREATE TABLE modeles ( NoTitre char(12) default NULL, NoCmde shortint default 0, DateMaj date default NULL, Clef char(16) NOT NULL default '', );
Les principaux types de champs : CRÉATION D'UNE BANQUES DE DONNÉES Création des Tables (suite) CHAR(n) Crée un champ de taille fixe de n caractères VARCHAR2(n) Crée un champ de taille variable s'adaptant au contenu et allant de 0 de ncaractères SHORTINT INT Champ entier court (16 bits) Champ entier (32 bits) NUMBER( p,s) Champs réel de précision pet de taille s. DATE Champs date
Altération de la structure d'une table Une fois une table créée, nous pourrions vouloir altérer sa Structure. La structure de toutes les tables d'une banque de données se nomme le Schéma. Renommer une table: ALTER TABLE {nom de la table} RENAME TO {nouveau nom}; Ajouter un champ: ALTER TABLE {nom de la table} ADD ( {nom du champ} type[ (taille) ] [ default NULL NOT NULL {valeur} ]) [ AFTER {nom du champ}] Modifier la structure d'un champ: ALTER TABLE {nom de la table} MODIFY ( {nom du champ} type[ (taille) ] [ default NULL NOT NULL {valeur} ]) Supprimer un champ d'une table: ALTER TABLE {nom de la table} DROP COLUMN ({nom du champ} ; ou Supprimer une table par DROP TABLE{nom de la table}
Peuplement / Changements Maintenant que nous avons une table, il faut la peupler La commande INSERT INTO TABLE ajoute un (des) enregistrement(s) à une table: INSERT INTO TABLE {nom de la table} ( {nom champ}, {nom champ}, {nom champ}, etc ) VALUES ( {valeur du champ}, {valeur du champ}, {valeur du champ}, etc ) ; NOTES: L'ordre des noms de champs et les valeurs de champs doivent correspondre un à un. La liste de nom de champs peux être omise si la liste des valeurs correspond au compte exacte de champs Si on fournis des valeurs pour tousles champs d'une table et que ces valeurs sont dans le même ordre que la définition des champs, on peux omettre l'énumération des champs : INSERT INTO TABLE {nom de la table} VALUES ( {valeur du champ}, {valeur du champ}, {valeur du champ}, etc ) ;
Peuplement / Changements La commande UPDATE permet de remplacer un(des) enregistrement(s) dans une table. UPDATE {nom de la table} SET {nom champ} = {nouvelle valeur} [,{nom champ} = {nouvelle valeur}] ; Ex.: UPDATE Clients SET NAS = "12323123", AGE = 25; Mais comment Oracle saura t-il quel enregistrement changer? Effectivement, cette commande assignerais le même NAS et le même AGE à tous les enregistrements de la table. Pour spécifier quel(s) enregistrement(s) altérer, il faudra ajouter une Clause. Une clause, c'est lequalificatifwheresuivi d'une expression booléenne identifiant le ou les enregistrement(s) visé(s) par la commande. La commande prends alors la forme : UPDATE {nom de la table} SET {nom champ} = {nouvelle valeur} [,{nom champ} = {nouvelle valeur}] WHERE {critere} [,{critere}] ; Ex.: UPDATE Clients SET NAS = "12323123", AGE = 25 WHERE Code = 'AUBM0001';
REQUÊTES Une fois la table créée et peuplée, que peut-on accomplir avec ces données? La commande SELECT nous permettra d'interroger la table afin d'en extraire les données: toutes ou en partie triées ou regroupées et mêmes des calculs effectués sur les valeurs des enregistrements. La commande SELECTest de loin la plus utilisée du langage SQL. La forme générale de cette commande est : SELECT [DISTINCT]{liste de noms de champs} FROM {nom de table} --Spécifie la table où chercher WHERE { clause(s) } ORDER BY {nom champ} ASC DES --L'ordre de tri GROUP BY {critère de regroupement} -- Des critères pour regrouper les données -- La/les clause(s) de sélection d'enregistrements Tous les attributs sont optionnels sauf la liste des noms de champset le FROM. La liste de noms de champs peux être remplacée par une astérisque si on veut tous les champs.
Quelques exemples de SELECT. CRÉATION D'UNE BANQUES DE DONNÉES REQUÊTES (suite) SELECT * FROM Clients; Cette commande produira la table au complet. L'astérisque commande la production de tous les champs et l'absence de clause WHERE produira la sortie de tous les enregistrements. SELECT * FROM Clients WHERE Age < 50; Cette commande produira seulement les enregistrements des candidats dont l'age est inférieur à 50 ans. SELECT Code, Nom FROM Clients ORDER BY Nom ASC; Cette commande produira seulement deux des champs de la table. Tous les enregistrements seront produits en l'absence de la clause WHERE et présentera ces enregistrements triés par ordre du Nom en ordre ASCendant. SELECT * FROM Clients WHERE Age > 19 AND Age < 51 ; Cette commande produira seulement les enregistrements des candidats dont l'ageest situé entre 20 et 50 ans. Le qualificatif AND permet ici la double clause. SELECT DISTINCT * FROM {nom de table} La forme suivante fait appel à l'opérateur DISTINCT pour produire une liste en éliminant les doublons
Commandes de suppression Cette commande supprime une table (et tout son contenu): DROP TABLE {nom de la table}; Cette commande n'a pas de paramètres autres que le nom de la table à détruire. Cette commande efface des enregistrements dans une table (elle ne supprime pas la table): DELETE FROM {nom de la table} [ WHERE {critere(s)} ] ; Cette commande supprimera les enregistrements correspondants au(x) critère(s) dans la table spécifiée. Attention: Si vous omettez les critères (qui sont optionnels) tous les enregistrements de la table seront effacés. (i.e. la table sera vidée). Exemples : DELETE FROM Clients; Supprimera tous les enregistrements de la table mais ne supprimera pas la table. Remarquez qu'il ne doit pas y avoir d'astérisque entre le DELETE et le FROM DELETE FROM Clients WHERE AGE < 21; Supprime tous les enregistrements dont les candidats on moins de 21 ans.
INTERFACES Références Index alphabétique de commandes SQL chez Oracle: http://download.oracle.com/docs/cd/b28359_01/server.111/b28286/index.htm Documentation SQL d'oracle (pdf): http://download.oracle.com/docs/cds/e11882_01.zip Site FAQ Oracle: http://www.orafaq.com/faq Site W3School: http://www.w3schools.com/sql/default.asp Les commandes SQL se divisent en grandes catégories: http://databases.about.com/od/sql/u/learning_sql.htm About.com (SQL): http://databases.about.com/od/sql/u/learning_sql.htm SQLzoo.net (tutoriel et référence): http://sqlzoo.net/ Site Wikipedia SQL: http://fr.wikipedia.org/wiki/structured_query_language