Sie sind auf Seite 1von 4

République Tunisienne

Ministère de l'Enseignement Supérieur et de


Recherche Scientifique
Université Tunis El Manar

Matière : Bases.Données. Interf Enseignant : Amine Maamouri


TP1 : Initiation SQL3
Classes: 1ING AU : 2020/2021

SQL3 est l’évolution de SQL qui tire le bénéfice des SGBDR et des SGBD objets.
SQL3 supporte bien sûr la norme précédente SQL2 mais propose également des extensions objets.
SQL3 est donc à la fois : un langage de définition de types/tables, un langage de programmation, un
langage de requêtes.
Les types de données définissables par l’utilisateur sont appelés types abstraits (ADT) en SQL3. La
notion de type abstrait fait référence au fait que l’implémentation est spécifique de l’environnement:
seule l’interface d’un type utilisateur est visible.

I. Création de nouveaux types

1. Créez un type adresse_type avec un numéro de rue, un nom de rue et un nom


de ville.
CREATE TYPE adresse_type AS OBJECT
(numero integer,
rue varchar(30),
ville varchar(20)) ;
2. Créez un type departement_type sur le même modèle que la table dept.

numDept nomDept lieu

smallint varchar(20) varchar(50)

3. Créez un type employe_type avec un matricule, un nom, une adresse (de


type adresse_type), un salaire, une référence à un supérieur (employé),
une référence à un département.

matricule nom adresse salaire

smallint varchar(30) adresse_type decimal(8,2)

4. Créez les 2 tables departement et employe associées à ces 2 types. N'oubliez


pas les contraintes d'intégrité (au moins les clés primaires).
create table departement OF departement_type
(constraint pk_departement primary key (numDept))

1
5. Utilisez describe pour voir les descriptions des types et tables que vous venez
de créer
describe departement_type ;

6. Faites afficher les noms de types dont vous disposez, en utilisant le dictionnaire
des données.
select type_name from user_types ;

II. Ajouter des données dans les nouvelles tables

1. Ajoutez des données dans les nouvelles tables (au moins 2 départements et 3
employés).

Table departement

numDept nomDept lieu

10 Direction Nice

20 Comptabilité Marseille

Table Employe

matricule nom adresse salaire superieur departement

numero rue ville


125 Dupond rue Victor 12500 null null
15 Nice
Hugo

200 Leroy 25000 null null

210 Ravier 25000 Dupond 10

300 Toto 25000 Ravier 10

Example pour ajouter Ravier :


insert into employe (matricule, nom, salaire, superieur, departement)
select 210, 'Ravier', 25000, ref(e), ref(d)
from employe e, departement d
where e.matricule = 125 and d.numDept = 10 ;

2
2. Faites afficher pour chaque employé : le matricule, la ville où il habite, le nom
de son supérieur, la ville où il travaille (celle de son département).
select matricule, nom, e.adresse.ville, e.superieur.nom,
e.departement.lieu
from employe e;
3. Faites afficher le nom des employés du département 10 (ou d'un autre
numéro)

III. Modifier les données


1. Changez le supérieur et le département d'un des employés.

Example :
update employe
set departement =
(select REF(d)
from departement d
where numDept = 10)
where matricule = 125 ;

• De même changez le supérieur de l’employé numéro 125 par l’employé


numéro 200.

2. Mettez un des employés comme supérieur de tous les employés du


département numéro 10.
update employe
set superieur = (select ref(e) from employe e where matricule = 200)
where departement = (select ref(d) from departement d where numdept =
10) ;

3. Essayez de mettre un employé dans un département qui a un numéro qui


n'existe pas.

IV. Array
1. Créez un nouveau type personne_type avec un nom et un tableau de prénoms
(au plus 4 prénoms).
create type listePrenoms as VARRAY(4) of varchar(20);

nom prenoms

varchar(30) listePrenoms

3
2. Créez la table personne correspondante (n'oubliez pas les contraintes
d'intégrité).
3. Faites afficher une description de personne avec la commande describe.
4. Ajoutez des lignes dans la table personne.

insert into personne values('Machin', listePrenoms('Bernard', 'Alain'));

nom prenom

Dupond Gara,nomi

Bernard Thomas,petit

5. Affichez les noms et tous les prénoms que vous avez entrés.

V. Héritage
1. Créez un type travailleur_type qui hérite de personne_type. Ce nouveau type
a seulement un attribut salaire en plus.
create type travailleur_type under personne_type
(salaire numeric(8,2));

Ça ne marche pas car un type est final par défaut. Il faut d'abord rendre
personne_type non final :
alter type personne_type not final cascade;

Ensuite on peut lancer la première commande.

2. Créez une table travailleur (n'oubliez pas les contraintes d'intégrité).


3. Ajoutez quelques travailleurs dans cette table.

nom prenom salaire


5000
Dupond Gara,nomi
3500
Bernard Thomas,petit
8500
Machin Bernard,Alain

4. Faites afficher des informations sur les travailleurs.

Das könnte Ihnen auch gefallen