Suivant Index

1  Environnement

Prenez la peine de lire ceci jusqu'à la fin sans toucher à rien.

1.1  Connexion au système

Sauf imprévu, vous êtes face à un terminal connecté au réseau du CNAM. Vous disposez d'un compte sur la machine du réseau qui s'appelle trex. Pour accéder à trex, on procède comme suit :
  1. Avec le bouton droite de la souris, on clique sur le fond de l'écran.
  2. Un menu aparaît, proposant entre autres le choix telnet : il faut activer ce choix.
  3. On demande le nom de votre serveur : il faut taper trex.
Il peut y avoir quelques variantes en fonction de votre terminal, mais en expérimentant un peu, vous devez vous en tirer. Si tout s'est bien passé, votre terminal communique avec trex et vous demande votre nom (username), puis votre mot de passe.
  1. Votre username est votre nom propre, limité aux 6 premières lettres, plus le caractère _ (``souligné'') , plus la première lettre de votre prénom.
    Exemple : l'auditeur Michel Platini a pour username platin_m.
  2. Votre mot de passe figure sur votre carte CNAM. ATTENTION : il s'agit du numéro en haut à gauche.
Une fois connecté, vous avez accès à ORACLE en tapant la commande suivante :
% sqlplus /
NB : le % est le prompt du sysème UNIX (plus précisément du cshell qui est le langage de commande). SQLPLUS est l'utilitaire d'ORACLE qui permet de soumettre directement des commandes SQL. Vous devriez normalement obtenir l'affichage des messages suivants :
SQL*Plus: Release 3.2.2.0.0 - Production on Mon Nov 24 12:16:03 1997

Copyright (c) Oracle Corporation 1979, 1994.  All rights reserved.

Connected to:
Oracle7 Server Release 7.2.3.0.0 - Production Release
With the distributed option
PL/SQL Release 2.2.3.0.0 - Production

SQL> 
Il ne reste plus qu'à effectuer votre première requête (attention au point-virgule à la fin de la commande) :
SQL> select titre from film;
Et voilà ! Si quelque chose cloche et que vous ne comprenez pas pourquoi (après y avoir réfléchi ...) demandez à l'enseignant.

Un bon truc pour finir : la touche CTRL-C interrompt une commande.

1.2  Les commandes utiles

La machine trex fonctionne sous le système d'exploitation UNIX. Pas besoin d'être un expert pour les TP SQL. Voici juste quelques commandes qui peuvent s'avérer utiles.
% ls -l               // Liste des fichiers du repertoire courant
% pwd                 // Nom du repertoire courant
% cd rep              // Se positionne dans le repertoire 'rep'
% cd                  // Ramene au repertoire de depart
% cp source cible     // Copie le fichier source vers le fichier cible
% mv source cible     // Renomme  le fichier 'source' en fichier 'cible'
% nedit &             // Lance l'editeur de texte nedit en tache de fond
% netscape &          // Lance netscape en tache de fond
Il est conseillé de lancer nedit et netscpape. Le premier permet d'éditer très facilement des fichiers pour y saisir des requêtes (ou autres) ; le deuxième donne accès au WEB et donc à beaucoup d'informations, y compris le corrigé du TP. Le fait de lancer un processus en tâche de fond avec l'option '&' siginifie qu'il s'exécute sans bloquer votre terminal.

1.3  Utilisation de SQLPLUS

Vous allez utiliser SQLPLUS pour exécuter des commandes SQL de type DDL (création de tables) et DML (recherche, mises-à-jour, ...). On peut entrer directement les commandes en les tapant sous SQLPLUS, mais en cas de faute de frappe ou d'erreur, il est difficile de corriger le texte. Il est donc fortement recommandé de procéder de la manière suivante :
  1. Avec nedit, tapez votre commande, et sauvegardez-la dans un fichier (par exemple, entrez select titre from film; dans nedit et enregistrez ce texte dans le fichier req0.sql).
  2. Sous SQLPLUS : demandez l'exécution du fichier req0.sql comme suit :
                SQL> @req0
         
  3. Si quelque chose cloche, corrigez avec nedit, enregistrez le fichier, et ré-exécutez-le.
Créez ainsi un fichier pour chaque commande : celà vous permettra de ne rien perdre et d'avoir un minimum de frappe clavier.

Sous SQLPLUS, vous avez quelques commandes utiles dont voici une brève liste.
SQL> desc tab                   // Donne le schema de la table 'tab'.
SQL> select * from user_tables; // Liste des tables que vous avez creees.
SQL> list                       // Affiche le dernier ordre execute
SQL> spool fic                  // Copie l'affichage a l'ecran dans 'fic.lst'
SQL> spool off                  // Stoppe la copie dans 'fic.lst'
SQL> exit;                      // Sortir de SQLPLUS
Au départ, il n'y a aucune table dans votre propre espace ORACLE, mais vous avez accès au schéma et à la base de données ``Officiel des spectacles'', vue et revue en cours, qui est partagée (en lecture) par tout le monde. Voici les commandes qui ont étées utilisées pour la création du schéma de cette base (attention : les tables existent déjà, ne retapez pas les commandes de création ci-dessous) :

CREATE TABLE Artiste  (Nom VARCHAR2 (20) NOT NULL,
                       Prenom VARCHAR2 (15),
                       Annee_naissance NUMBER(4) ,
                       PRIMARY KEY (Nom));

CREATE TABLE film  (ID_film         NUMBER(10) NOT NULL,
                    Titre           VARCHAR2(30),
                    Annee           NUMBER(4),
                    Nom_Realisateur VARCHAR2(20),
                    PRIMARY KEY (ID_film),
                    FOREIGN KEY (Nom_realisateur) REFERENCES Artiste);

CREATE TABLE Role  (Nom_role    VARCHAR2(20) NOT NULL, 
                    ID_film     NUMBER (10) NOT NULL,
                    Nom_acteur  VARCHAR2 (20) NOT NULL,
                    PRIMARY KEY (ID_film, nom_acteur),
                    FOREIGN KEY (ID_film) REFERENCES Film,
                    FOREIGN KEY (Nom_acteur) REFERENCES Artiste);

CREATE TABLE cinema  (Nom_cinema     VARCHAR2 (10) NOT NULL,
                      Arrondissement NUMBER (2),        
                      Adresse        VARCHAR2 (30),
                      PRIMARY KEY (Nom_cinema));

CREATE TABLE salle  (Nom_cinema   VARCHAR2(10) NOT NULL,
                     No_salle     NUMBER(2) NOT NULL,
                     Climatise    CHAR(1),
                     Capacite     NUMBER(4),
                     PRIMARY KEY (Nom_cinema, No_salle),
                     FOREIGN KEY (Nom_cinema) REFERENCES cinema);

CREATE TABLE seance  (Nom_cinema   VARCHAR2(10) NOT NULL,
                      No_salle     NUMBER(2) NOT NULL,
                      No_seance    NUMBER(2) NOT NULL,
                      Heure_debut  NUMBER (4,2),
                      Heure_fin    NUMBER (4,2),
                      ID_film      NUMBER(10)  NOT NULL,
                      PRIMARY KEY (Nom_cinema, No_salle, No_seance),
                      FOREIGN KEY (Nom_cinema) REFERENCES cinema,
                      FOREIGN KEY (Nom_cinema, No_salle) REFERENCES salle);
Vous pouvez remarquer que des hypothèses simplificatrices ont été faites sur les clés de certaines tables : on admet par exemple que le nom du cinéma est la clé pour un cinéma. Ce n'est certainement pas tout à fait correct (cf. le cours sur le modèle relationnel), mais cela permet de simplifier les requêtes.

Remarques importantes : Maintenant, à vous de jouer !


Suivant Index