• Aucun résultat trouvé

Tables Tables

N/A
N/A
Protected

Academic year: 2022

Partager "Tables Tables"

Copied!
103
0
0

Texte intégral

(1)

© Richard CHBEIR

Objets d'une BDD Objets d'une BDD

Oracle Oracle

Table Donnée

Vue Séquence

Index Synonyme

Cluster

BDD Distribuée MetaBase

Commandes Oracle: http://www.ss64.com/ora/

(2)

Tables Tables

Est une unité de stockage élémentaire, composée de lignes et de colonnes

Le nom d'une table dans une BDD Oracle

Doit commencer par une lettre

Ne doit pas dépasser les 30 caractères

Ne peut contenir que les caractères A à Z, a à z, 0 à 9, _, $, et #

Ne doit pas porter le nom d'un autre objet appartenant au même utilisateur

Ne doit pas être un mot réservé

(3)

Tables Tables

Pour créer une table, vous devez avoir le privilège CREATE TABLE

Syntaxe

SQL> CREATE TABLE [Schema.]nom_table

(colonne1 datatype [Default expr] [Contraintes_Colonne] [,

colonne2 datatype [Default expr] [Contraintes_Colonne],

… ]

[Contraintes_Table]

);

(4)

Tables Tables

Attention

Pour accéder à une table d'un autre utilisateur, il faut précéder le nom de la table par le nom du propriétaire

Ex: SCOTT.EMP

La création d'une table fait appel à un ordre du LDD

sa validation est automatique

L'option DEFAULT

Permet de définir la valeur par défaut Ex:

– hiredate DATE DEFAULT SYSDATE

– Ename VARCHAR2(25) DEFAULT 'IUT Dijon'

Les valeurs autorisées sont Littéraux

Expression Fonctions SQL

(5)

Tables Tables

Exemple

(6)

Tables Tables

Création d'une table à partir d'une requête Syntaxe

ATTENTION

Le nombre de colonnes spécifiées doit correspondre au nombre des colonnes de la requête

La définition d'une colonne ne peut contenir que son nom et sa valeur par défaut

Si aucune colonne n'est spécifiée, la table aura les mêmes colonnes que celles de la requête

Les contraintes ne sont pas prises en compte

SQL> CREATE TABLE [Schema.]nom_table [colonne1(, Colonne2…)]

AS (requête_SQL);

(7)

Tables Tables

L'ordre ALTER TABLE

Permet de modifier la structure d'une table (Ajout d'une colonne, modification, définition d'une valeur par défaut, supprimer une colonne, etc.)

La modification d'une valeur par défaut ne s'appliquer qu'aux insertions ultérieures dans la table

(8)

Tables Tables

L'ordre ALTER TABLE

Syntaxe

Ex:

SQL> ALTER TABLE nom_table

[ADD|MODIFY|DROP|RENAME COLUMN] (colonne1 datatype [DEFAULT expr] [TO nouvelle_colonne] [CASCADE]

[, colonne2 …);

(9)

Tables Tables

L'ordre DROP TABLE

Permet de supprimer la structure, les index, et toutes les données d'une table

Les vues et les synonymes ne sont pas supprimées mais …

La transaction en instance est validée

La suppression d'une table ne peut pas être annulée

Syntaxe

SQL> DROP TABLE nom_table [CASCADE CONSTRAINTS];

(10)

Tables Tables

L'ordre DROP TABLE

Pour supprimer une table, l'utilisateur

Doit être le créateur

Il possède le privilège DROP ANY TABLE

(11)

Tables Tables

L'ordre SET UNUSED

Permet de désactiver une colonne Syntaxe

Vous pouvez faire après

SQL> ALTER TABLE nom_table SET UNUSED nom_colonne;

SQL> ALTER TABLE nom_table DROP UNUSED COLUMNS ;

(12)

Tables Tables

L'ordre RENAME

Permet de modifier le nom d'une table, d'une vue, d'une séquence, et d'un synonyme

Syntaxe

Vous devez être propriétaire de l'objet

SQL> RENAME nom_objet TO nouveau_Nom ;

(13)

Tables Tables

L'ordre TRUNCATE TABLE

Permet de vider une table et libérer l'espace de stockage utilisé par la table

Syntaxe

Cet ordre est irréversible

Vous pouvez utiliser l'ordre DELETE pour supprimer les lignes d'une table

Mais il ne libère pas l'espace de stockage

Vous devez être

Propriétaire

Utilisateur avec le privilège DELETE TABLE

SQL> TRUNCATE TABLE nom_table;

(14)

Tables Tables

L'ordre COMMENT ON

Permet d'ajouter des commentaire à une table Syntaxe

SQL> COMMENT ON [TABLE nom_table | COLUMN nom_table.nom_colonne]

IS 'commentaire';

(15)

Tables Tables

L'ordre COMMENT ON

Pour afficher les commentaire, on peut utiliser ALL_COL_COMMENTS

USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS

(16)

Tables Tables

Les contraintes

Contrôlent les règles de gestion dans une table

Empêchent la suppression d'une table lorsqu'il existe des dépendances

(17)

Tables Tables

Les contraintes

Types de contraintes valides

NOT NULL Spécifie que cette colonne ne doit pas contenir une valeur Null

UNIQUE Spécifie une colonne (ou une combinaison de colonnes) dont les valeurs doivent être uniques

PRIMARY KEY Identifie la clé primaire FOREIGN KEY Identifie la clé étrangère

CHECK Spécifie une condition qui doit être vraie

(18)

Tables Tables

Les contraintes

Sont nommées sous Oracle

Automatiquement sous le format SYS_Cn Manuellement par l'utilisateur

– Lors de la création (CREATE TABLE) – Après la création (ALTER TABLE)

Sont stockées dans la table

USER_CONSTRAINTS du dictionnaire de

données

(19)

Tables Tables

Les contraintes

Syntaxe

Exemple

SQL> CREATE TABLE EMP ( empno NUMBER(4), ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_emmno_pk PRIMARY KEY (EMPNO) );

SQL> [CONSTRAINT nom_c ]

{ [NOT] NULL | UNIQUE | PRIMARY KEY | FOREIGN KEY | REFERENCES [Schéma].table(colonne) [ON DELETE CASCADE] | CHECK (condition)}]

(20)

Tables Tables

Les contraintes

NOT NULL

Définit au niveau colonne Ex:

SQL> …

deptno NUMBER(7,2) NOT NULL );

SQL> …

deptno NUMBER(7,2) CONSTRAINT CT_deptno NOT NULL );

(21)

Tables Tables

Les contraintes

PRIMARY KEY

Définit :

SQL> CREATE TABLE EMP ( empno NUMBER(4), ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_emmno_pk PRIMARY KEY (EMPNO) );

Au niveau table

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

Au niveau colonne

(22)

Tables Tables

Les contraintes

FOREIGN KEY

Définit au niveau table ou colonne Associé à

– REFERENCES pour identifier la table et la colonne de la table maître

– ON DELETE CASCADE pour autoriser la suppression d'une ligne dans la table maître et des lignes

dépendantes dans la table détail

(23)

Tables Tables

Les contraintes

FOREIGN KEY

Exemple

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_deptno_KT FOREIGN KEY (deptno) REFERENCES DEPT (deptno));

Au niveau Table

Au niveau Colonne

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL REFERENCES DEPT (deptno));

(24)

Tables Tables

Les contraintes

CHECK

Définit au niveau table ou colonne Expression interdites

– CURRENTVAL, NEXTVAL

– SYSDATE, UID, USER, USERENV

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

Au niveau table

(25)

Tables Tables

Les contraintes

UNIQUE

Définit au niveau table ou colonne

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10),

deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_nom_KT UNIQUE (ename) );

Au niveau table

SQL> CREATE TABLE EMP (

empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10) UNIQUE,

deptno NUMBER(7,2) NOT NULL,

Au niveau Colonne

(26)

Tables Tables

Les contraintes

Suppression d'une contrainte

Ex: Supprimer la contrainte PRIMARY KEY de la table DEPT, ainsi que la contrainte FOREIGN KEY définie sur la colonne DEPTNO de la table EMP

SQL> ALTER TABLE nom_table

DROP PRIMARY KEY | UNIQUE (colonne) |

CONSTRAINT nom_contrainte [CASCADE]

);

SQL> ALTER TABLE DEPT (

DROP PRIMARY KEY CASCADE );

(27)

Tables Tables

Les contraintes

Désactivation/Activation d'une contrainte

On peut utiliser les clauses ENABLE et DISABLE dans CREATE TABLE et ALTER TABLE

SQL> ALTER TABLE nom_table

[DISABLE | ENABLE] CONSTRAINT nom_contrainte [CASCADE]

);

(28)

Tables Tables

Les contraintes

Comment afficher les contraintes sur une table

SQL> SELECT constraint_name, constraint_type, search_condition FROM user_constraints

WHERE table_name = 'EMP' );

Constraint_Name Constraint-type Search_Condition

SYS_C003042 C (Signifie CHECK) EMPNO is not Null SYS_C003044 U (Signifie Unique)

TEST_TT P (Signifie Primary Key)

(29)

Tables Tables

Les contraintes

Comment afficher les colonnes associées aux contraintes dans une table

SQL> SELECT constraint_name, column_name FROM user_cons_column

WHERE table_name = 'EMP' );

Constraint_Name Column Name

TEST_TT EMPNO

SYS_C003042 DEPTNO

(30)

Donn Donn é é es es

L'ordre INSERT

Permet d'ajouter de nouveaux enregistrements dans une table Syntaxe

Placez les valeurs de type caractère et date entre simples quotes

SQL> INSERT INTO nom_table [(colonne_1 [, colonne_2…)]

VALUES (Valeur_colonne_1 [, valeur_colonne_2…]

);

(31)

Donn Donn é é es es

L'ordre INSERT

Exemple

En précisant les colonnes concernées

Sans précision

SQL> INSERT INTO Emp (empno, ename, sal) VALUES (5555, 'BARTH', 2500);

SQL> INSERT INTO Emp

VALUES (5555, 'BARTH', NULL, NULL, SYSDATE, 2500, NULL, NULL);

(32)

Donn Donn é é es es

L'ordre INSERT

Exemple

Avec des variables saisies par l'utilisateur

SQL> INSERT INTO Emp (empno, ename, sal)

VALUES (&Num_Salarie, '&Nom_salarie', &salaire);

(33)

Donn Donn é é es es

L'ordre INSERT

Exemple

A partir d'une autre table

SQL> INSERT INTO Emp (empno, ename, sal)

SELECT empno, ename, sal FROM SCOTT.EMP WHERE job = 'manager';

(34)

Donn Donn é é es es

L'ordre UPDATE

Permet de modifier les enregistrements existants

A partir des valeurs

A partir d'une requête

SQL> UPDATE Nom_table

SET Colonne_1 = valeur_1 [, Colonne_2 = …]

[WHERE condition] ;

SQL> UPDATE Nom_table

SET (Colonne_1, Colonne_2, ) = (SELECT colonne_11, Colonne_22, …

FROM nom_table_2 WHERE condition)

(35)

Donn Donn é é es es

L'ordre UPDATE

Exemple

Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé 7499

SQL> UPDATE Emp

SET (job, deptno) = (SELECT job, deptno

FROM Emp

WHERE empno = 7499) WHERE empno = 7698 ;

(36)

Donn Donn é é es es

L'ordre DELETE

Permet de supprimer les enregistrements d'une table

Attention, si vous omettez la clause WHERE, toutes les lignes sont supprimées

SQL> DELETE [FROM] nom_table [WHERE condition] ;

(37)

Transaction de BDD Transaction de BDD

Définition

(38)

Pourquoi ? Pourquoi ?

Problème de modification perdue

(39)

Pourquoi ? Pourquoi ?

Problème de modification temporaire

(40)

Pourquoi ? Pourquoi ?

Problème d’opération

(41)

Transaction de BDD Transaction de BDD

Définition

Une transaction est une unité indivisible de travail qui est soit :

Entièrement complétée Entièrement annulée

Pour l’intégrité de la BDD, le SGBD a besoin

de savoir quand une transaction commence,

se termine, est enregistrée ou annulée

(42)

Transaction de BDD Transaction de BDD

Définition

Est composée des éléments suivants

Ensemble d'ordres LMD effectuant une modification cohérente des données

Un ordre LDD Un ordre LCD

Commence à l'exécution du premier ordre SQL Se termine par l'un des événements suivants

COMMIT ou ROLLBACK

Exécution d'un ordre LDD ou LCD (Validation auto) Fin de session (Quit ou Exit dans SQL*Plus)

Panne de système ou de machine (RollBack automatique)

(43)

Transaction de BDD Transaction de BDD

Une transaction est lancée

SET TRANSACTION [ISOLATION LEVEL SERIALIZABLE]

[READ] [COMMITED] [ONLY]

Exécution SQL*Plus

Les ordres COMMIT et ROLLBACK

Garantissent la cohérence des données

Permettent d'afficher le résultat des modifications avant la validation

L'utilisateur voit uniquement le résultat de ses

modifications avant la validation mais pas les autres utilisateurs

Mais, on peut faire SELECT …. FOR UPDATE

(44)

Transaction de BDD Transaction de BDD

INSERT UPDATE INSERT DELETE

Commit SavePoint A SavePoint B

Transaction

ROLLBACK TO SavePoint B

ROLLBACK TO SavePoint A

ROLLBACK

(45)

Transaction de BDD Transaction de BDD

ETAT des données

Après COMMIT

Les modifications deviennent définitives L'état précédent des données est perdu

Tous les utilisateurs peuvent voir les modifications Les lignes verrouillées sont libérées

SQL> UPDATE Emp

SET (job, deptno) = (SELECT job, deptno

FROM Emp

WHERE empno = 7499) WHERE empno = 7698 ; 1 row modifié.

SQL> COMMIT;

Validation effectuée.

(46)

Transaction de BDD Transaction de BDD

ETAT des données

Après ROLLBACK

Les modifications sont annulées

L'état précédent des données est restauré Les lignes verrouillées sont libérées

Tous les savepoints sont effacés Exemples

SQL> DELETE Emp ;

17 ligne(s) supprimée(s).

SQL> SAVEPOINT suppression_Emp;

Savepoint Crée.

SQL> ROLLBACK TO Suppresion_Emp;

SQL> DELETE Emp ;

17 ligne(s) supprimée(s).

SQL> ROLLBACK;

Annulation (rollback) effectuée.

(47)

Transaction de BDD Transaction de BDD

ETAT des données

Si un ordre du LMD dans la transaction échoue, SEUL cet ordre sera annulé

Toutes les autres modifications sont conservées

L'utilisateur peut exécuter explicitement des

ordres COMMIT ou ROLLBACK

(48)

Vue Vue

Définition

Est une représentation logique de sous-

ensembles de données d'une ou de plusieurs tables

Permet de limiter l'accès à la BDD

Facilite la création de requêtes complexes Présente les mêmes données sous

différentes formes

(49)

Vue Vue

Deux types sont possibles :

Simple

Dérivée d'une seule table

Ne contient ni fonctions ni groupes de données Permet d'exécuter des opérations LMD

Complexe

Dérivée de plusieurs tables

Contient des fonctions et des groupes de données Ne permet pas toujours d'exécuter des opérations LMD

(50)

Vue Vue

Syntaxe

La requête

peut contenir une SELECT complexe Mais pas une clause ORDER BY

SQL> CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW Nom_Vue [(alias [, alias]…)]

AS requête

[WITH READ ONLY]

REPLACE Recrée la vue

FORCE Crée la vue même si les tables n'existent pas

WITH READ ONLY Garantit qu'aucune opération LMD ne peut être exécutée dans la vue

(51)

Vue Vue

Exemple

Sans alias

SQL> CREATE OR REPLACE VIEW EMP_DEPT_10

AS SELECT empno, ename, sal FROM Emp

WHERE deptno = 10;

(52)

Vue Vue

Exemple

Avec des alias

SQL> CREATE VIEW EMP_DEPT_10

AS SELECT empno Numero_Employe, ename Nom_Employe, sal Salaire FROM Emp

WHERE deptno = 10;

SQL> CREATE VIEW EMP_DEPT_10 (Numero_Employe, Nom_Employe, Salaire) AS SELECT empno, ename, sal

FROM Emp

WHERE deptno = 10;

(53)

Vue Vue

Règles d'exécution des ordres LMD

Vous ne pouvez pas

Supprimer un enregistrement si la vue contient

– Des fonctions de groupe – Une clause GROUP BY – Le mot-clé DISTINCT

(54)

Vue Vue

Règles d'exécution des ordres LMD

Vous ne pouvez pas

Modifier les données si la vue contient

– Des fonctions de groupe – Une clause GROUP BY – Le mot-clé DISTINCT

– Des colonnes définies par des expressions

(55)

Vue Vue

Règles d'exécution des ordres LMD

Vous ne pouvez pas

Ajouter de données si

– Des fonctions de groupe – Une clause GROUP BY – Le mot-clé DISTINCT

– Des colonnes définies par des expressions

– Les tables de base contiennent des colonnes NOT NULL non sélectionnées par la vue

(56)

Vue Vue

La table USER_VIEWS

Permet d'afficher le nom et la définition des vues de l'utilisateur

L'ordre SELECT est stocké dans une colonne de type LONG

(57)

Vue Vue

L'ordre DROP VIEW

Permet de supprimer une vue

N'entraîne pas la perte des données Exemple

SQL> DROP VIEW EMP_DEPT_10;

Vue supprimée.

(58)

S S é é quence quence

Définition

Permet de générer automatiquement des numéros uniques

Est un objet partageable entre plusieurs utilisateurs

Est utilisée en général pour créer une valeur de clé primaire

Remplace le code applicatif

Améliore les performances d'accès aux

valeurs (stockage en mémoire cache)

(59)

S S é é quence quence

Syntaxe

[CREATE | ALTER] SEQUENCE [schéma].Nom_séquence [INCREMENT BY entier]

[START WITH entier]

[MAXVALUE entier]

[MINVALUE entier]

[CYCLE | NOCYCLE]

[CACHE entier | NOCACHE]

définit l'intervalle d'incrémentation ou de - Première valeur de la séquence

Valeur minimale (par défaut 1 ou -1026) Valeur maximale (par défaut 1027 ou -1)

Revenir à la valeur initiale

allocation de séquences en mémoire (par défaut 20)

(60)

S S é é quence quence

Exemple

Créer un compteur DEPT_DEPTNO pour la clé primaire de la table DEPT

Créer un compteur pour la clé primaire de la table EMP

(61)

S S é é quence quence

La table USER_SEQUENCES

Contient les valeurs des séquences définies par l'utilisateur

(62)

S S é é quence quence

PseudoColonnes

NEXTVAL

Donne la prochaine valeur de la séquence.

Retourne une valeur unique même si elle est utilisée par plusieurs utilisateurs

CURRVAL

Renvoie la valeur courante de la séquence utilisée pour chacun des utilisateurs

(63)

S S é é quence quence

Utilisation

NEXTVAL

CURRVAL

SQL> INSERT INTO emp (empno, ename, sal)

VALUES (emp_empno.NEXTVAL, 'rich', 2000);

SQL> SELECT emp_empno.CURRVAL FROM dual;

(64)

S S é é quence quence

Utilisation

Pour utiliser la séquence d'un autre utilisateur, il faut préciser le nom du schéma

(schéma.nom_séquence)

Il faut avoir

les privilèges objet SELECT

Les privilèges Système SELECT ANY SEQUENCE

SQL> SELECT scott.emp_empno.CURRVAL FROM dual;

(65)

S S é é quence quence

Règles de modification

Etre propriétaires ou avoir le privilège Objet ALTER

ALTER SEQUENCE ne modifie que les numéros de séquence à venir

Vous devez supprimer la séquence puis la

recréer si vous voulez modifier le premier

numéro (START WITH)

(66)

S S é é quence quence

L'ordre DROP SEQUENCE

Permet de supprimer une séquence Syntaxe

SQL> DROP SEQUENCE Nom_séquence;

(67)

Index Index

Définition

Permet d'accélérer la recherche des données

par le biais d'un pointeur

(68)

Index Index

valeur de la clé adresse de(s) l'enregistrement

Numéro de bloc

Numéro d'enregistrement

relatif

0

1

0 1 2 3 4

5 6 7 8 9

10 Cèdre en boule 10.99 40

90 60 50

Epinette bleue Pommier Erable argenté

Chêne

25.99 25.99 15.99 22.99

26.99 12.99 10.99 15.99

Poirier Sapin Herbe à puce

Génévrier

80 20 70 95

25.99 Catalpa

81

10 0 20 8 40 1 50 4 60 3 70 7 80 9 81 5 90 2 95 6

Index

(69)

Index Index

Problème

Je cherche l'employé numéro 21 dans une table

2 4 6 10 12 15 17 19 20 21 27 30 32 35 36 41 53

Coût de l'opération : 10 lectures

(70)

Index Index

Définition

A pour but de réduire les E/S sur disque grâce à un chemin d'accès calculé par :

B-tree (Arbre équilibré) Hachage

Bitmap

Est indépendant de la table qu'il indexe

Est crée automatiquement par Oracle ou

manuellement par l'utilisateur

(71)

Index Index

B-tree (2 valeurs max dans une cellule)

Avant

Après 1

Insertion de 1

(72)

Index Index

B-tree (2 valeurs max dans une cellule)

Avant

1

Après 1, 2

Insertion de 2

(73)

Index Index

B-tree (2 valeurs max dans une cellule)

Avant

1,2

2

1 3

Après

Insertion de 3

(74)

Index Index

B-tree (2 valeurs max dans une cellule)

2

1 3

Avant

2

1 3, 4

Après

Insertion de 4

(75)

Index Index

B-tree (2 valeurs max dans une cellule)

2

1 3, 4

Avant

2, 4

1 3 5

Après

Insertion de 5

(76)

Index Index

B-tree (5 valeurs max dans une cellule)

Je cherche la valeur 21

Coût de l'opération : 4 lectures ☺

(77)

Index Index

Hachage

f(x)

Valeur X

f(21)= 3

Numéro 21

(78)

Index Index

Bitmap

ROWID Nom Classe

4 AB G

5 AC G

6 BG V

7 JU G

8 KA S

Classe ROWID Valeur Bitmap

G S V

4-8 1 1 0 1 0 4-8 0 0 0 0 1 4-8 0 0 1 0 0

Cardinalité = 5

5

(79)

Index Index

Création

Automatique

Un index est crée par Oracle avec les contraintes

– PRIMARY KEY – UNIQUE

Manuelle

Vous pouvez créer des index dans des colonnes pour améliorer le temps d'accès

– Index sur l'âge ☺

(80)

Index Index

Création

Syntaxe

Exemple

Créer un index sur les salaires des employés

SQL> CREATE INDEX [UNIQUE | BITMAP] nom_index ON nom_table (colonne_1 [,colonne_2, …]);

(81)

Index Index

Conseils de création

La colonne doit être souvent utilisée dans WHERE ou une condition de jointure

La colonne contient un grand nombre de valeurs distinctes

La colonne contient un grand nombre de valeurs NULL

Deux ou plusieurs colonnes sont souvent utilisées conjointement dans WHERE (ou dans une jointure) La table est de grande taille

(82)

Index Index

Localisation dans le dictionnaire

USER_INDEXES

Contient les noms d'index et leur unicité

USER_IND_COLUMNS

Contient les noms d'index de tables et de colonne

(83)

Index Index

Suppression

Pour supprimer un index, il faut

Etre le propriétaire

Avoir le privilège DROP ANY INDEX

Syntaxe

SQL> DROP INDEX nom_index;

(84)

Synonymes Synonymes

Définition

Permet de renommer un objet dans le schéma (Table, Vue, séquence, etc.)

Elimine la contrainte de désigner l'objet avec son schéma

Syntaxe

Public donne l'accès à tous les utilisateurs

SQL> CREATE [PUBLIC] SYNONYM nom_synonyme FOR objet;

(85)

Synonymes Synonymes

Exemple

Suppression

SQL> CREATE PUBLIC SYNONYM ma_sequence FOR EMP_EMPNO;

SQL> DROP SYNONYM nom_synonyme;

(86)

Cluster Cluster

Définition

Est une organisation physique des données Consiste à regrouper physiquement (dans un même bloc disque) les lignes d'une ou

plusieurs tables ayant une caractéristique commune (une même valeur dans une ou plusieurs colonnes) constituant la clé du cluster

Est transparent à l'utilisateur

(87)

Cluster Cluster

Objectifs :

Accélérer la jointure selon la clé de cluster des tables regroupées

Accélérer la sélection des lignes d'une table ayant même valeur de clé (ces lignes sont regroupées physiquement)

Economiser de la place (chaque valeur de la

clé du cluster ne sera stockée qu'une seule

fois)

(88)

Cluster Cluster

Cluster Dept_Emp

Dept No EmpNo Ename Job 7782 CLARK MANAGER

7839 KING PRESIDENT

7934 KING CLERK

20

bloc 10

(89)

Cluster Cluster

Création

Exemple

SQL> CREATE CLUSTER nom_cluster

(cle1 type1, cle2 type2, ...) [SIZE taille_du_bloc]

[COMPRESS | NOCOMPRESS] ;

SQL> CREATE CLUSTER personnel (DEPNO NUMBER)

SIZE 512

;

(90)

Cluster Cluster

Mise en place

Lors de la création d’une table

Exemple

SQL> CREATE TABLE nom_table

(nom_col1 TYPE1 NOT NULL , (nom_col2 TYPE2 NOT NULL ,

...)

CLUSTER NOM_CLUSTER (nom_coli, nom_colj...);

SQL> CREATE TABLE EMP

(ename VARCHAR2(6) NOT NULL , (...,

...)

CLUSTER personnel (DEPTNO);

SQL> CREATE TABLE DEPT (...,

...)

CLUSTER personnel (DEPTNO);

(91)

Cluster Cluster

Modification

Suppression

SQL> ALTER CLUSTER nom_cluster

(cle1 type1, cle2 type2, ...) [SIZE taille_du_bloc]

[COMPRESS | NOCOMPRESS] ;

SQL> DROP CLUSTER nom_cluster

[INCLUDING TABLES [CASCADE CONSTRAINTS]]

(92)

Cluster Cluster

Localisation dans le dictionnaire

USER_CLUSTERS

Contient les noms de cluster d’un utilisateur

ALL_CLUSTERS

Contient les noms de clusters accessible à l’utilisateur

(93)

BDD Distribu

BDD Distribu é é e e

Création d'un lien vers une autre BDD

Syntaxe

CREATE [SHARED][PUBLIC] DATABASE LINK Nom_Lien [CONNECT TO CURRENT_USER]

[USING 'Chaîne_de_connexion_ou_SID']

CREATE [SHARED][PUBLIC] DATABASE LINK Nom_Lien

[CONNECT TO Nom_utilisateur IDENTIFIED BY motpass]

[AUTHENTICATED BY Nom_utilisateur IDENTIFIED BY motpass]

[USING 'Chaîne_de_connexion_ou_SID']

Il faut avoir les droits

CREATE DATABASE LINK

CREATE PUBLIC DATABASE LINK

(94)

BDD Distribu

BDD Distribu é é e e

Création d'un lien vers une autre BDD

Exemple

SQL> CREATE DATABASE LINK lien_test

CONNECT TO scott IDENTIFIED BY "TIGER"

USING 'BDDIQ2_Dis'

(95)

BDD Distribu

BDD Distribu é é e e

Accès à une BDD

Une fois que la le lien est crée, vous pouvez accéder à la BDD en faisant suivre la table par @'nom du lien'

SQL> SELECT ename FROM emp@lien_test;

SQL> INSERT INTO emp@lien_test VALUES ….;

SQL> UPDATE emp@lien_test SET ename …;

SQL> SELECT ename FROM RC.emp@lien_test;

(96)

BDD Distribu

BDD Distribu é é e e

Suppression des liens vers d'autres BDD

Syntaxe

DROP [PUBLIC] DATABASE LINK link_name

(97)

BDD Distribu

BDD Distribu é é e e

Localisation dans le dictionnaire

DBA_DB_LINKS

Tous les liens

ALL_DB_LINKS

Liens accessibles par l'utilisateur

USER_DB_LINKS

Liens crées par l'utilisateur

(98)

Metabase Metabase

Est une BDD relationnelle contenant des informations sur :

La structure logique et physique

Les noms, définitions, allocation d'espace des objets des schémas

Les contraintes d'intégrité

Les utilisateurs et les privilèges d'accès

(99)

Metabase Metabase

Possède des vues

Accessibles à l'utilisateur 4 catégories

USER_xxx : contient des informations sur les objets de l'utilisateur courant

ALL_xxx : contient des informations sur les objets accessibles à tous les utilisateurs

DBA_xxx : contient des informations sur tous les objets. Elles sont accessibles aux DBA

V_$xxx : Suivi des performances

(100)

Metabase Metabase

Possède des vues

xxx_TABLES: informations sur les tables de l'utilisateur xxx Xxx_CATALOG : infos sur les tables, vues et synonymes Xxx_COL_COMMENTS : Commentaires sur colonnes Xxx_CONSTRAINTS : contraintes des Tables

Xxx_INDEXES : index des tables

Xxx_OBJECTS : tous les objets de l'utilisateur xxx Xxx_TAB_COLUMNS : colonnes appartenant à xxx

Xxx_TAB_COMMENTS : Commentaires sur tables et vues Xxx_TRIGGERS : infos sur les triggers

Xxx_USERS: infos sur les utilisateurs Xxx_VIEWS : Vues utilisateurs

Xxx_SEQUENCES : vues sur les séquences

xxx_TABLESPACES : listes des tablespaces accessibles par l’utilisateur

(101)

Metabase Metabase

Possède des vues

ALL_USERS : information sur tous les utilisateurs.

ALL_SEQUENCES : listes des séquences accessibles par l’utilisateur.

ALL_TABLES : liste des tables accessibles.

ALL_CONSTRAINTS : liste des contraintes définies sur les tables accessibles par l’utilisateur.

ALL_INDEXES : liste des index accessibles.

ALL_TAB_COLUMNS : liste des colonnes des tables accessibles.

ALL_VIEWS : vues accessibles par l’utilisateur.

ALL_SYNONYMS : liste des synonymes accessibles.

(102)

Metabase Metabase

Exemples d'interrogation

Le nom des tables d'un utilisateur

Le nom et le type de données des colonnes d'une table

La liste des vues accessibles à l'utilisateur

SQL> SELECT Table_Name FROM user_tables;

SQL> SELECT Column_Name, Data_Type FROM user_tab_columns

WHERE TABLE_NAME='EMP';

SQL> SELECT Table_Name FROM DICTIONARY

(103)

Metabase Metabase

Décrire les tables d'un utilisateur

SQL > SELECT * FROM user_tables;

Afficher les différents types d'objets appartenant à l'utilisateur

SQL> SELECT DISTINCT objet_type FROM user_objects

Afficher les table, les vues, les synonymes et les séquences d'un utilisateur

SQL> SELECT * FROM user_catalog;

SQL> SELECT * FROM cat;

Références

Documents relatifs

[r]

Exemple : Afficher tous les noms des employés qu’une seule fois. SELECT DISTINCT nom FROM employe. VII) Les groupes de

[r]

[r]

Un ordre de grandeur d'un somme ou d'une différence est l'idée qu'on peut se faire d'un résultat ; c'est une valeur approchée du résultat. Il se calcule généralement

„ Un ‘1’ placé dans une case de la table de Karnaugh correspond à un minterme de la fonction.. „ Un ‘0’ placé dans une case de la table de Karnaugh correspond à un maxterme

Comme pour tous les produits de la gamme AKA®Table, nous pouvons personnaliser vos installations : apposer le code couleurs de votre entreprise ou concevoir ensemble des produits

Effectuer le test du coefficient de corr´ elation lin´ eaire de Student au seuil de signification de 5 %.. Retrouver le r´ esultat de la question 4 en effectuant un test de Fisher