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 :
- Avec le bouton droite de la souris, on clique sur le fond de l'écran.
- Un menu aparaît, proposant entre autres le choix telnet :
il faut activer ce choix.
- 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.
- 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.
- 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 :
- 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).
- Sous SQLPLUS : demandez l'exécution du fichier
req0.sql comme suit :
SQL> @req0
- 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 !