next up previous
Next: Création d'un schéma relationnel Up: Environnement Previous: Les commandes utiles

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!


next up previous
Next: Création d'un schéma relationnel Up: Environnement Previous: Les commandes utiles
Philippe Rigaux
2000-02-03