TP 1 Bases de Données Prise en main d Oracle L3 Informatique Université d Aix-Marseille 1 Prise en main de SQLplus Oracle est un SGBD Relationnel muni de nombreuses fonctionnalités (celles classiques des SGBDR, mais beaucoup de modules supplémantaires.) Sur le site Saint-Charles de l Université d Aix-Marseille, il est installé sur le serveur cyber-data. Les ordinateurs des salles 301, 302 et 303 peuvent y accéder via un logiciel client appelé SQLplus c est une interface permettant de lancer l exécution d expressions SQL sur le serveur Oracle, et de récupérer les résultats. 1.1 Connexion Si login est votre nom de login, et mdp votre mot de passe, il suffit d écrire dans un terminal : prp$ sqlplus login@xe et de donner mdp pour se connecter. Le signe SQL > est un prompt qui indique que sqlplus est prêt à recevoir des commandes. Voici un exemple de connexion : prp$ # sqlplus login@xe SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 18 16:11:00 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production Pour se déconnecter, on utilise les commandes QUIT ou EXIT. Il est important de changer votre mot de passe avec les commandes : ALTER USER login IDENTIFIED BY nouveau_mdp ;... COMMIT; 1.2 Lancer des commandes SQLplus accepte trois types de commandes : les expressions SQL, les expressions PL-SQL, et les commandes propres à SQLplus. Ces dernières concernent des commandes d affichage, de chargement de commandes SQL stockées dans un fichier, des commandes de sauvegarde, et des commandes de paramétrage. Il est possible de traiter en mode interactif ou en mode batch.
En mode interactif, on saisit les commandes après le prompt, éventuellement sur plusieurs lignes (qui sont alors numérotées), et on termine par le caractère ; pour lancer l interprétation sous Oracle. SELECT nom, ville 2 FROM Hotel 3 ; NOM VILLE --------------------------------------- Hotel des Alpes Grenoble Chez Marion Nice Au petit lit Nice Le dors-bien Toulon En mode batch, on stocke les commandes SQL dans des fichiers d extension.sql, et on charge un fichier avec la commande start ou avec le symbole @ juste devant le nom du fichier. Par exemple, si le fichier all hotels.sql contient l expression SQL précédente, on lance son interprétation via : start all_hotels; NOM VILLE --------------------------------------- Hotel des Alpes Grenoble Chez Marion Nice Au petit lit Nice Le dors-bien Toulon Evidemment, le mode batch (fichier) est très pratique lorsqu on a de nombreuses expressions à lancer, et que l on veut en garder une trace. 1.3 Le spool : sauvegarde de ce que l on fait La commande spool permet de générer un fichier texte qui contient toutes les commandes passées à l écran. Nous l utiliserons notamment lors du TP noté. Pour lancer la sauvegarde des commandes passées : SPOOL nom_fichier.txt A partir de là, toutes les commandes seront sauvegardées dans le fichier, jusquà ce que l utilisateur lance la commande : SPOOL OFF Attention, entre ces deux commandes, le fichier de sauvegarde est ouvert en écriture : il ne faut pas chercher à l éditer! Attention encore, si ce fichier est édité par un autre programme que SQLplus, c est facile de le savoir...
1.4 Autres commandes usuelles SAVE nom fichier [append create replace] permet de sauvegarder le contenu du buffer dans un fichier.sql. COL adresse FORMAT A12 formatte l affichage d une colonne de nom adresse sur 12 caractères. COL prixnuitht FORMAT 999.99 formatte l affichage d une colonne de nom prixnuitht (type flottant) avec 3 chiffres en partie entière et deux chiffres en partie réelle. CLEAR COL permet de remettre l affichage par défaut des colonnes. SET LINESIZE 180 affecte la taille 100 aux lignes du buffer. CLEAR SCREEN efface l écran du buffer. DESC nom table affiche la description d une table / le slash réactive la dernière commande TERM {ON OFF} contrôle l affichage des commandes lors du chargement d un fichier. ACCEPT reference NUMBER PROMPT Donnez le numero de l hotel = permet, après la saisie de l utilisateur, de réutiliser la valeur du paramètre de nom reference. Par exemple, on peut ensuite lancer l expression SQL : SELECT nom, ville 2 FROM Hotel 3 WHERE numhotel = &reference; 2 Les premières tables et données Cette partie vous montre, à travers quelques commandes simples, comment créer, sous Oracle, vos premières structures de bases de données, et comment insérer vos premières données. 2.1 Première création de table CREATE TABLE Emp(eName varchar2(16), salary NUMBER); Nous créons ainsi une table (équivalent SQL d une relation), nommée Emp et constituée de deux colonnes. Précisons que SQLplus ne distingue pas majuscules et minuscules, mais il est plus lisible de saisir les mots-clés SQL en majuscules. INSERT INTO Emp VALUES ( Mike, 2687.12); Nous insérons ici la première donnée : celle d une ligne (tuple) de Emp, qui correspond à un employé de nom Mike et qui a pour salaire : 2687.12. Insérez d autres tuples. 2.2 Mini-requête Essayez de lister tous les employés (toutes les lignes de la table Emp avec l instruction SQL : SELECT ename, salary FROM Emp; 1. Qu observe-t-on à l affichage?
2. Comment, avec la commande SPOOL, sauvegarder, dans un fichier, l instruction SQL et son résultat? Le réaliser. 3. Utiliser les commandes SQLplus pour que l affichage du nom se fasse sur seulement 10 caractères, et que le salaire soit exprimé avec 5 chiffres en partie entière, et 2 chiffres en partie réelle. 2.3 Mode SQLplus batch 1. Créer un répertoire BD sur votre espace de travail : tous les fichiers créés ensuite le seront dans ce répertoire. 2. Créer un fichier schema.sql contenant l instruction SQL de création de la table Employe (même schéma que Emp, mais un nom différent). 3. Créer un fichier donnees.sql contenant l instruction SQL d insertion de Mike dans la table Employe, et indiquer, dans ce fichier, l insertion d une dizaine d autres employés. 4. Lancer l interprétation de ces deux fichiers, l un après l autre, sous SQLplus. 5. Lister tous les employés, directement sous SQLplus : combien sont-ils? Relancer l interprétation de donnees.sql, et relancer la requête pour obtenir la liste de tous les employés : qu observe-t-on? Comment, dès la création de la table, pourrions-nous éviter cela? 2.4 Autre requête La requête suivante correspond à une restriction suivie d une projection. L exécuter sous SQLplus. Puis modifier cette requête pour que, en connaissance des données, le résultat soit vide. (PS : on saisit cette requête ainsi, avec les retours à la ligne : observer la numérotation des lignes... On lance l exécution de la requête avec le point virgule final.) SELECT * FROM Employe WHERE salary > 487400.02 ; 2.5 Retour sur le SPOOL Créer un fichier de nom employes.txt, qui comporte la trace de l instruction SQL précédente, et son résultat. Il s agit de placer les commandes SPOOL et SPOOL OFF aux bons moments... 2.6 Création d autres tables Avec ce que l on vient de voir, et la documentation en ligne d Oracle si besoin, créer la table Hotel, et insérer quelques hôtels. Utiliser les fichiers batch pour cela. Le but de cet exercice : comment spécifier, en SQL, la contrainte de clé primaire... (PS : quand on fait une erreur, l instruction SQL pour supprimer une table de nom ttt est : DROP TABLE ttt;).
3 Documentation en ligne La documentation officielle http://docs.oracle.com/cd/b19306 01/server.102/b14357/toc.htm Les grandes fonctionnalités expliquées et illustrées http://deptinfo.unice.fr/ grin/messupports/sqlplus.pdf