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 celsius. Pour accéder à celsius, 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 celsius.
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 celsius 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 devez initialiser votre environnement ORACLE. Cela se fait avec la commande suivante :

source ~rigaux/env_oracle
Vous avez maintenant accès à ORACLE en tapant la commande suivante :
sqlplus /
Attention : il y a un blanc ' ' après les sqlplus. 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 8.0.1.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 celsius 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 table_name
        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
Les commandes DROP TABLE permettent d'exécuter le fichier de création plusieurs fois de suite, en détruisant d'abord les tables éventuellement crées lors des exécutions précédentes. Il faut détruire les tables dans l'ordre inverse de création, afin de ne pas violer les contraintes de FOREIGN KEY.

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) :

DROP TABLE seance;
DROP TABLE salle;
DROP TABLE cinema;
DROP TABLE role;
DROP TABLE film;
DROP TABLE artiste;

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
                    ON DELETE CASCADE,
                    FOREIGN KEY (Nom_acteur) REFERENCES Artiste
                    ON DELETE CASCADE);

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
                     ON DELETE CASCADE);

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, No_salle) REFERENCES salle
                      ON DELETE CASCADE);
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