Académique Documents
Professionnel Documents
Culture Documents
D49996FR10 sg3
D49996FR10 sg3
D52771
Edition 1.0
Janvier 2008
D49996FR10
®
SQL (I)
Avertissement
Puja Singh
Cette documentation contient des informations qui sont la propriété d'Oracle Corporation
Révisions et et sont protégées par les lois relatives aux droits d'auteur et à la propriété intellectuelle.
contributions techniques Vous ne pouvez copier et imprimer ce document qu'à des fins d'utilisation personnelle
lors de la participation à une formation dispensée par Oracle. Le document ne peut être
Claire Bennett modifié ou altéré en aucune manière. A l'exception des cas où l'utilisation faite du
document s'inscrit dans le respect des lois relatives aux droits d'auteur, vous ne pouvez
Tom Best pas utiliser, partager, télécharger, copier, imprimer, afficher, exécuter, reproduire, publier,
Purjanti Chang breveter, diffuser, transmettre ou distribuer ce document, en partie ou en totalité, sans
Ken Cooper l'autorisation expresse d'Oracle.
László Czinkóczki
Les informations fournies dans ce document sont susceptibles de modification sans
Burt Demchick préavis. Par ailleurs, Oracle Corporation ne garantit pas qu'elles soient exemptes
Mark Fleming d'erreurs et vous invite, le cas échéant, à lui en faire part par écrit à l'adresse suivante :
Gerlinde Frenzen Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA.
Nancy Greenberg
Restrictions applicables au gouvernement américain :
Chaitanya Koratamaddi Restricted Rights Notice
Wendy Lo
Rédacteurs
Amitha Narayan
Vijayalakshmi Narasimhan
Editeur
Sujatha Nagendra
Table des matières
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Préface
I Introduction
Objectifs du cours I-2
Contenu du chapitre I-3
Objectifs du cours I-4
Contenu du cours I-5
Annexes du cours I-7
iii
Exécuter des fichiers script I-47
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
iv
2 Restreindre et trier les données
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Objectifs 2-2
Contenu du chapitre 2-3
Limiter les lignes par sélection 2-4
Limiter les lignes sélectionnées 2-5
Utiliser la clause WHERE 2-6
Chaînes de caractères et dates 2-7
Opérateurs de comparaison 2-8
Utiliser des opérateurs de comparaison 2-9
Indication d'une plage à l'aide de l'opérateur BETWEEN 2-10
Condition d'appartenance à l'aide de l'opérateur IN 2-11
Correspondance avec un modèle à l'aide de l'opérateur LIKE 2-12
Combiner des caractères génériques 2-13
Utiliser les conditions NULL 2-14
v
Fonctions de conversion de casse 3-11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
vi
Utiliser la fonction COALESCE 4-32
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
5 Créer un état avec des données agrégées à l'aide des fonctions de groupe
Objectifs 5-2
Contenu du chapitre 5-3
vii
Qualifier les noms de colonne ambigus 6-7
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
viii
Exécuter des sous-interrogations monolignes 7-11
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
ix
9 Manipuler des données
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Objectifs 9-2
Contenu du chapitre 9-3
Langage de manipulation de données 9-4
Ajouter une nouvelle ligne à une table 9-5
Syntaxe de l'instruction INSERT 9-6
Insérer de nouvelles lignes 9-7
Insérer des lignes comprenant des valeurs NULL 9-8
Insérer des valeurs spéciales 9-9
Insérer des valeurs de date et d'heure spécifiques 9-10
Créer un script 9-11
Copier des lignes depuis une autre table 9-12
Contenu du chapitre 9-13
Modifier des données dans une table 9-14
x
Synthèse 9-46
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
xi
Avantages des vues 11 -6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
xii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Préface
Avant de commencer
Avant de commencer ce cours, vous devez savoir utiliser une interface graphique. Le prérequis
pour ce cours est de maîtriser les techniques et les concepts de traitement des données.
Organisation du cours
OracleAS 11g : Les fondamentaux du langage SQL (I) est un cours en salle comprenant un exposé
théorique et des exercices pratiques. Les démonstrations en ligne et les sessions d'exercices
permettent de renforcer les concepts et les techniques présentés.
Préface - 3
Documentation
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Documentation Oracle
Titre Référence
Oracle® Database Reference 11g Release 1 (11.1) B28320-01
Oracle® Database SQL Language Reference 11g B28286-01
Release 1 (11.1)
Oracle® Database Concepts 11g Release 1 (11.1) B28318-01
Oracle® Database SQL Developer User's Guide E10406-01
Release 1.2
Autre documentation
• System release bulletins (Bulletins techniques)
Préface - 4
Conventions typographiques
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Les deux listes suivantes de conventions typographiques sont utilisées pour du texte ou du code.
Conventions typographiques concernant le texte
Convention Elément Exemple
Majuscules Commandes, Utilisez la commande SELECT pour
fonctions, visualiser les informations stockées dans la
noms de colonne, colonne LAST_NAME de la table
noms de table, EMPLOYEES.
objets PL/SQL,
schémas
Minuscules, Noms de fichier, où : rôle correspond au nom du en
italiques Variables rôle à définir.
noms d'utilisateur,
Préface - 5
Conventions typographiques (suite)
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
SELECT last_name
FROM employees;
Gras Texte devant être CREATE USER scott
saisi par un IDENTIFIED BY tiger;
utilisateur
Préface - 6
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
________________________
________________________
Exercices complémentaires
Vous pouvez effectuer les exercices complémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base et fonctions
SQL.
1. Le département des ressources humaines a besoin des données concernant tous les
commis aux stock embauchés après 1997.
2. Le département des ressources humaines a besoin d'un état des employés qui perçoivent
une commission. Affichez le nom, le poste, le salaire et la commission de ces employés.
Triez les données par ordre décroissant de salaire.
3. Pour des raisons de budgétisation, le département des ressources humaines a besoin d'un
état sur les augmentations prévues. L'état doit afficher les employés qui ne perçoivent pas
de commission, mais bénéficient d'une augmentation de salaire de 10 % (arrondissez).
4. Créez un état présentant les employés et leur ancienneté. Affichez le nom de tous les
employés, ainsi que le nombre d'années et le nombre de mois complets depuis leur
embauche. Triez l'état en fonction de l'ancienneté. L'employé présentant la plus grande
ancienneté doit apparaître au début de la liste.
6. Créez un état affichant tous les employés, et indiquant par Yes ou No s'ils perçoivent une
commission. Dans l'interrogation, utilisez l'expression DECODE.
Remarque : Les résultats continuent sur la page suivante.
6. (suite)
Exercices complémentaires (suite)
Exercices complémentaires - 5
Oracle Database 11g : Les fondamentaux du langage SQL (I)
Oracle University and OMNIDATA. use only
Exercices complémentaires (suite)
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS COMPUTER IS STRICTLY PROHIBITED
Vous pouvez effectuer les exercices complémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base, fonctions
SQL, jointures et fonctions de groupe.
7. Créez un état affichant le nom de département, l'ID de lieu, le nom, l'intitulé de poste et le
salaire des employés qui travaillent dans un lieu spécifique. Invitez l'utilisateur à indiquer
le lieu. Par exemple, si l'utilisateur saisit 1800, les résultats sont les suivants :
8. Cherchez le nombre d'employés dont le nom se termine par la lettre "n". Créez deux
solutions possibles.
10. Le département des ressources humaines a besoin de connaître les intitulés de poste des
départements 10 et 20. Créez un état affichant les ID de poste de ces départements.
11. Créez un état affichant les postes trouvés dans les départements Administration et
Executive. Affichez aussi le nombre d'employés occupant ces postes. Affichez en premier
le poste occupé par le plus grand nombre d'employés.
Vous pouvez effectuer les exercices complémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base, fonctions
SQL, jointures, fonctions de groupe et sous-interrogations.
12. Affichez tous les employés qui ont été embauchés au cours de la première moitié du mois
(avant le 16 du mois).
13. (suite)
17. Créez un état affichant les départements qui ne comptent aucun commercial. Incluez dans
le résultat l'ID de département, le nom de département, l'ID de manager et le lieu.
18. Créez les états statistiques ci-après pour le département des ressources humaines. Incluez
l'ID de département, le nom de département et le nombre d'employés pour chaque
19. Créez un état affichant l'ID d'employé, le nom, le salaire, l'ID de département et le salaire
moyen du département pour tous les employés.
20. Affichez tous les employés qui ont été embauchés le jour de la semaine présentant le
nombre le plus élevé d'embauches.
21. Créez une liste d'anniversaires basée sur la date d'embauche des employés.
Triez les anniversaires par ordre croissant.
Dans cette étude de cas, vous allez construire un ensemble de tables de base de données pour
une application de gestion de vidéo club. Après avoir créé les tables, vous allez insérer,
mettre à jour et supprimer des enregistrements dans la base de données du vidéo club, et
générer un état. La base de données ne contient que les tables essentielles.
TITLE
for #* id
RESERVATION * title
#* res date the subject * description
of o rating
set up for o category
o release date
responsible a copy
for
TITLE_COPY
MEMBER #* id
#* id * status
* last name
o first name the subject of
responsible
o address for made against
o city
o phone RENTAL
* join date created #* book date
for o act ret date
o exp ret date
Remarque : Pour construire les tables, vous pouvez exécuter les commandes du script
buildtab.sql dans SQL Developer. Pour les supprimer, vous pouvez exécuter les
commandes du script dropvid.sql dans SQL Developer. Vous pouvez ensuite
exécuter les commandes du script buildvid.sql dans SQL Developer pour créer et
remplir les tables. Les trois scripts SQL figurent dans le dossier D:\labs\sql1\labs.
• Si vous utilisez le script buildtab.sql pour construire les tables, commencez à
l'étape 4.
• Si vous utilisez le script dropvid.sql pour supprimer les tables, commencez à
l'étape 1.
• Si vous utilisez le script buildvid.sql pour construire et remplir les tables,
commencez à l'étape 6(b).
1. Créez les tables en vous conformant aux indications des tableaux ci-après. Choisissez les
types de données appropriés et veillez à indiquer les contraintes d'intégrité.
3. Créez des séquences permettant d'identifier de façon unique chaque ligne de la table
MEMBER et de la table TITLE.
a. Numéro de membre pour la table MEMBER : Commencez par 101 et n'autorisez pas la
mise en mémoire cache des valeurs. Nommez la séquence MEMBER_ID_SEQ.
b. Numéro de titre pour la table TITLE : Commencez par 92 et n'autorisez pas la mise
en mémoire cache des valeurs. Nommez la séquence TITLE_ID_SEQ.
a. Ajoutez des titres de film à la table TITLE. Ecrivez un script permettant d'entrer les
informations relatives à un film.
Enregistrez les instructions dans un script nommé lab_apcs_4a.sql. Utilisez les
séquences pour identifier chaque titre de façon unique. Entrez les dates de sortie au
format DD-MON-YYYY. N'oubliez pas que les apostrophes doivent être gérées de
façon spéciale dans un champ de type caractère. Vérifiez vos ajouts.
b. Ajoutez des données à la table MEMBER. Enregistrez les instructions d'insertion dans
un script nommé lab_apcs_4b.sql. Exécutez les commandes du script. Veillez à
utiliser la séquence pour ajouter les numéros de membre.
First_
Name Last_Name Address City Phone Join_Date
Carmen Velasquez 283 King Seattle 206-899-6666 08-MAR-1990
Street
LaDoris Ngao 5 Modrany Bratislava 586-355-8882 08-MAR-1990
2 RENTED 2
3 RENTED 3
5. Créez une vue nommée TITLE_AVAIL affichant le titre des films, la disponibilité de
chaque exemplaire, ainsi que la date de retour prévue si le statut est Rented. Interrogez
toutes les lignes de la vue. Triez les résultats par titre.
Remarque : Les résultats obtenus peuvent varier.
a. Ajoutez un nouveau film. Son titre (Title) est "Interstellar Wars", sa valeur Rating est
PG et il est classé dans la catégorie (Category) SCIFI. Sa date de sortie (Release_date)
est 07-JUL-77 et sa description, "Futuristic interstellar action movie. Can the rebels
save the humans from the evil empire?" Veillez à ajouter un enregistrement du film
pour deux exemplaires.
b. Entrez deux réservations. L'une est pour Carmen Velasquez, qui souhaite louer
"Interstellar Wars". L'autre est pour Mark Quick-to-See, qui souhaite louer "Soda
Gang".
8. Créez un état qui contient l'historique de location de vidéos de chaque client. Veillez à
inclure le nom du client, les films loués, les dates de location et la durée des locations.
Totalisez le nombre de locations pour tous les clients pour la période de référence.
Enregistrez les commandes générant l'état dans un fichier script nommé
lab_apcs_8.sql.
Remarque : Les résultats obtenus peuvent varier.
_____________________
_____________________
complémentaires
Solutions des exercices
Vous pouvez effectuer les exercices supplémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base et fonctions
SQL.
1. Le département des ressources humaines a besoin des données concernant tous les
commis aux stock embauchés après 1997.
SELECT *
FROM employees
WHERE job_id = 'ST_CLERK'
AND hire_date > '31-DEC-1997';
2. Le département des ressources humaines a besoin d'un état des employés qui perçoivent
une commission. Affichez le nom, le poste, le salaire et la commission de ces employés.
Triez les données par ordre décroissant de salaire.
3. Pour des raisons de budgétisation, le département des ressources humaines a besoin d'un
état sur les augmentations prévues. L'état doit afficher les employés qui ne perçoivent pas
de commission, mais bénéficient d'une augmentation de salaire de 10 % (arrondissez).
SELECT 'The salary of '||last_name||' after a 10% raise is '
|| ROUND(salary*1.10) "New salary"
FROM employees
WHERE commission_pct IS NULL;
4. Créez un état présentant les employés et leur ancienneté. Affichez le nom de tous les
employés, ainsi que le nombre d'années et le nombre de mois complets depuis leur
embauche. Triez l'état en fonction de l'ancienneté. L'employé présentant la plus grande
ancienneté doit apparaître au début de la liste.
SELECT last_name,
TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) YEARS,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12)) MONTHS
FROM employees
ORDER BY years DESC, MONTHS desc;
5. Affichez les employés dont le nom commence par les lettres "J", "K", "L" ou "M".
SELECT last_name
FROM employees
WHERE SUBSTR(last_name, 1,1) IN ('J', 'K', 'L', 'M');
6. Créez un état affichant tous les employés, et indiquant par Yes ou No s'ils perçoivent une
commission. Dans l'interrogation, utilisez l'expression DECODE.
SELECT last_name, salary,
decode(commission_pct, NULL, 'No', 'Yes') commission
FROM employees;
Vous pouvez effectuer les exercices complémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base, fonctions
SQL, jointures et fonctions de groupe.
7. Créez un état affichant le nom de département, l'ID de lieu, le nom, l'intitulé de poste et le
salaire des employés qui travaillent dans un lieu spécifique. Invitez l'utilisateur à indiquer
le lieu.
a. A l'invite, indiquez la valeur 1800 pour location_id.
SELECT d.department_name, d.location_id, e.last_name, e.job_id,
e.salary
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND d.location_id = &location_id;
8. Cherchez le nombre d'employés dont le nom se termine par la lettre "n". Créez deux
9. Créez un état affichant le nom, le lieu et le nombre d'employés pour chaque département.
Vérifiez que l'état inclut également les départements sans employés.
SELECT d.department_id, d.department_name,
d.location_id, COUNT(e.employee_id)
FROM employees e RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id
GROUP BY d.department_id, d.department_name, d.location_id;
10. Le département des ressources humaines a besoin de connaître les intitulés de poste des
départements 10 et 20. Créez un état affichant les ID de poste de ces départements.
SELECT DISTINCT job_id
FROM employees
WHERE department_id IN (10, 20);
11. Créez un état affichant les postes trouvés dans les départements Administration et
Executive. Affichez aussi le nombre d'employés occupant ces postes. Affichez en premier
le poste occupé par le plus grand nombre d'employés.
SELECT e.job_id, count(e.job_id) FREQUENCY
FROM employees e JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_name IN ('Administration', 'Executive')
GROUP BY e.job_id
ORDER BY FREQUENCY DESC;
Vous pouvez effectuer les exercices complémentaires ci-après après avoir vu les sujets
suivants : instruction SQL SELECT de base, commandes SQL Developer de base, fonctions
SQL, jointures, fonctions de groupe et sous-interrogations.
12. Affichez tous les employés qui ont été embauchés au cours de la première moitié du mois
(avant le 16 du mois).
SELECT last_name, hire_date
FROM employees
WHERE TO_CHAR(hire_date, 'DD') < 16;
13. Créez un état affichant les informations suivantes concernant tous les employés : nom,
salaire et salaire exprimé en milliers de dollars.
SELECT last_name, salary, TRUNC(salary, -3)/1000 Thousands
FROM employees;
16. Créez un état affichant l'ID de département et le salaire le plus bas du département
présentant le salaire moyen le plus élevé.
SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) = (SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id);
17. Créez un état affichant les départements qui ne comptent aucun commercial. Incluez dans
le résultat l'ID de département, le nom de département et le lieu.
SELECT *
FROM departments
WHERE department_id NOT IN(SELECT department_id
18. Créez les états statistiques ci-après pour le département des ressources humaines. Incluez
l'ID de département, le nom de département et le nombre d'employés pour chaque
département qui correspond aux critères suivants :
19. Créez un état affichant l'ID d'employé, le nom, le salaire, l'ID de département et le salaire
moyen du département pour tous les employés.
SELECT e.employee_id, e.last_name, e.department_id, e.salary,
AVG(s.salary)
FROM employees e JOIN employees s
20. Affichez tous les employés qui ont été embauchés le jour de la semaine présentant le
nombre le plus élevé d'embauches.
SELECT last_name, TO_CHAR(hire_date, 'DAY') day
FROM employees
WHERE TO_CHAR(hire_date, 'Day') =
(SELECT TO_CHAR(hire_date, 'Day')
FROM employees
GROUP BY TO_CHAR(hire_date, 'Day')
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM employees
GROUP BY TO_CHAR(hire_date, 'Day')));
21. Créez une liste d'anniversaires basée sur la date d'embauche des employés. Triez les
anniversaires par ordre croissant.
SELECT last_name, TO_CHAR(hire_date, 'Month DD') BIRTHDAY
FROM employees
ORDER BY TO_CHAR(hire_date, 'DDD');
1. Créez les tables en vous conformant aux indications des tableaux ci-après. Choisissez les
types de données appropriés et veillez à indiquer les contraintes d'intégrité.
2. Vérifiez dans le navigateur de connexions de SQL Developer que les tables ont été créées
correctement.
3. Créez des séquences permettant d'identifier de façon unique chaque ligne de la table
MEMBER et de la table TITLE.
a. Numéro de membre pour la table MEMBER : Commencez par 101 et n'autorisez pas la
mise en mémoire cache des valeurs. Nommez la séquence MEMBER_ID_SEQ.
CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;
b. Numéro de titre pour la table TITLE : commencez par 92 et n'autorisez pas la mise en
mémoire cache des valeurs. Nommez la séquence TITLE_ID_SEQ.
CREATE SEQUENCE title_id_seq
START WITH 92
4. Ajoutez des données aux tables. Créez un script pour chaque jeu de données à ajouter.
a. Ajoutez des titres de film à la table TITLE. Ecrivez un script permettant d'entrer les
informations relatives à un film.
Enregistrez les instructions dans un script nommé lab_apcs_4a.sql. Utilisez les
séquences pour identifier chaque titre de façon unique. Entrez les dates de sortie au
format DD-MON-YYYY. N'oubliez pas que les apostrophes doivent être gérées de
façon spéciale dans un champ de type caractère. Vérifiez vos ajouts.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Willie and Christmas Too',
'All of Willie''s friends make a Christmas list for
Santa, but Willie has yet to add his own wish list.',
'G', 'CHILD', TO_DATE('05-OCT-1995','DD-MON-YYYY'))
/
/
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Soda Gang', 'After discovering a
cache of drugs, a young couple find themselves pitted against a vicious
gang.', 'NR', 'ACTION', TO_DATE('01-JUN-1995','DD-MON-YYYY'))
/
...
COMMIT
/
SELECT title
FROM title;
b. Ajoutez des données à la table MEMBER. Placez les instructions d'insertion dans un
script nommé lab_apcs_4b.sql. Exécutez les commandes du script. Veillez à
utiliser la séquence pour ajouter les numéros de membre.
SET VERIFY OFF
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Carmen', 'Velasquez',
'283 King Street', 'Seattle', '206-899-6666', TO_DATE('08-MAR-
1990',
'DD-MM-YYYY'))
/
INSERT INTO member(member_id, first_name, last_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'LaDoris', 'Ngao',
'5 Modrany', 'Bratislava', '586-355-8882', TO_DATE('08-MAR-
5. Créez une vue nommée TITLE_AVAIL affichant le titre des films, la disponibilité de
chaque exemplaire, ainsi que la date de retour prévue si le statut est Rented. Interrogez
toutes les lignes de la vue. Triez les résultats par titre.
SELECT *
FROM title_avail
ORDER BY title, copy_id;
a. Ajoutez un nouveau film. Son titre (Title) est "Interstellar Wars", sa valeur Rating est
PG et il est classé dans la catégorie (Category) SCIFI. Sa date de sortie (Release_date)
est 07-JUL-77 et sa description, "Futuristic interstellar action movie. Can the rebels
save the humans from the evil empire?" Veillez à ajouter un enregistrement du film
pour deux exemplaires.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Interstellar Wars',
'Futuristic interstellar action movie. Can the
rebels save the humans from the evil empire?',
'PG', 'SCIFI', '07-JUL-77')
/
INSERT INTO title_copy (copy_id, title_id, status)
b. Entrez deux réservations. L'une est pour Carmen Velasquez, qui souhaite louer
"Interstellar Wars". L'autre est pour Mark Quick-to-See, qui souhaite louer "Soda
Gang".
INSERT INTO reservation (res_date, member_id, title_id)
VALUES (SYSDATE, 101, 98)
/
INSERT INTO reservation (res_date, member_id, title_id)
VALUES (SYSDATE, 104, 97)
/
DESCRIBE title
8. Créez un état qui contient l'historique de location de vidéos de chaque client. Veillez à
inclure le nom du client, les films loués, les dates de location et la durée des locations.