Vous êtes sur la page 1sur 236

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

next

up

previous

contents

index

Next: Table des matires

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql Yolaine Bourda

http://wwwsi.supelec.fr/~yb/poly_bd/ (1 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

q q

Table des matires Bases de Donnes et Systmes de Gestion de Bases de Donnes


r

Introduction
s s s s s

Les limites l'utilisation des fichiers Objectifs des systmes de gestion de bases de donnes Concepts de base Composants des systmes de gestion de bases de donnes Un peu d'histoire Introduction Dfinitions Oprateurs relationnels Formes normales
s s s

Le modle relationnel
s s s s

Dpendance fonctionnelle Notion de cl Formes normales

s s r

Langages de manipulation de donnes relationnelles Remarques Introduction Recriture des requtes

L'optimiseur de requtes
s s

http://wwwsi.supelec.fr/~yb/poly_bd/ (2 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

s s s s s r

Choix des chemins d'accs Requte portant sur une seule table Jointures sans index Jointures avec index
ORDER BY

Cohrence des interrogations et accs concurrents


s s

introduction Interrogation
s s

Cohrence d'une interrogation Cohrence de plusieurs interrogations successives

s r

Mise jour Introduction Droits d'accs aux tables Introduction Les index
s s s s s s

Contrle des accs la base et scurit des donnes


s s

Stockage des donnes


s s

Utilisation des index Valeurs NULL Conversions Choix des index Index comprim et non comprim Index concatene Buts

Les clusters
s

Le langage sql
r

SQL : interroger une base


s s

introduction Interroger simplement une base


s s s s

Slection de colonnes ou projection Slection de lignes ou restriction Valeurs NULL Nom de colonne

s s

Classer le rsultat d'une interrogation les jointures

http://wwwsi.supelec.fr/~yb/poly_bd/ (3 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

s s s s s s

Equi-jointure Jointure d'une table elle-mme Autres jointures Jointure externe

Les oprateurs ensemblistes Les sous-interrogations


s s s s s s

Sous-interrogation ramenant une seule valeur Sous-interrogation ramenant plusieurs lignes Sous-interrogation ramenant plusieurs colonnes Sous-interrogation synchronise avec l'interrogation principale Sous-interrogation ramenant au moins une ligne Sous-interrogations multiples Expressions et fonctions arithmtiques Expressions et fonctions sur les chanes de caractres Expressions et fonctions sur les dates Fonctions de conversion Autres fonctions Les fonctions de groupe Valeurs NULL Calcul sur plusieurs groupes Slection des groupes Fonction de groupe deux niveaux Parcours d'un arbre Niveau : LEVEL Slection de lignes Restrictions

Les expressions et fonctions


s s s s s

Les fonctions de groupe


s s s s s

Le traitement des structures d'arbre


s s s s

SQL : modifier une base


s s s s

Ajout de lignes Modification de lignes Suppression de lignes Gestion des transactions

SQL : dfinir une base

http://wwwsi.supelec.fr/~yb/poly_bd/ (4 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

Les tables
s s s s s

Crer une table Contraintes d'intgrit Modifier d'une table Supprimer une table Renommer une table Crer une vue Supprimer une vue Renommer une vue Crer d'un index Supprimer un index Crer un cluster Mise en cluster d'une table Retrait d'une table d'un cluster Supprimer un cluster

Les vues
s s s

Les index
s s

Les clusters
s s s s

Dictionnaire de donnes
s s s s s

Description du dictionnaire des donnes vues dcrivant les objets de l'utilisateur Vues dcrivant les objets auxquels l'utilisateur a accs Vues dcrivant les objets accessibles uniquement aux DBA Synonymes
ALTER TABLE
s s s

SQL : manuel de rfrence


s

Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis

CONSTRAINT
s s s

CREATE CLUSTER
s s

http://wwwsi.supelec.fr/~yb/poly_bd/ (5 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

s s

Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

CREATE TABLE
s s

CREATE VIEW
s s s

DELETE
s s s

DROP CLUSTER
s s s

DROP TABLE
s s

DROP VIEW
s s s

INSERT
s s s

RENAME
s s s

SELECT
s s s

http://wwwsi.supelec.fr/~yb/poly_bd/ (6 of 7) [19.07.2000 15:39:12]

Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql

UPDATE
s s s

Syntaxe Prrequis Voir aussi

q q q

Rfrences Index propos de ce document...

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/ (7 of 7) [19.07.2000 15:39:12]

Table des matires

next

up

previous

index

Next: Bases de Donnes et Up: Bases de Donnes Relationnelles Previous: Bases de Donnes Relationnelles

Table des matires


q q

Table des matires Bases de Donnes et Systmes de Gestion de Bases de Donnes


r

Introduction
s s s s s

Les limites l'utilisation des fichiers Objectifs des systmes de gestion de bases de donnes Concepts de base Composants des systmes de gestion de bases de donnes Un peu d'histoire Introduction Dfinitions Oprateurs relationnels Formes normales
s s s

Le modle relationnel
s s s s

Dpendance fonctionnelle Notion de cl Formes normales

s s r

Langages de manipulation de donnes relationnelles Remarques Introduction Recriture des requtes Choix des chemins d'accs Requte portant sur une seule table Jointures sans index Jointures avec index
ORDER BY

L'optimiseur de requtes
s s s s s s s

Cohrence des interrogations et accs concurrents


s

introduction

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (1 of 6) [19.07.2000 15:39:16]

Table des matires

Interrogation
s s

Cohrence d'une interrogation Cohrence de plusieurs interrogations successives

s r

Mise jour Introduction Droits d'accs aux tables Introduction Les index
s s s s s s

Contrle des accs la base et scurit des donnes


s s

Stockage des donnes


s s

Utilisation des index Valeurs NULL Conversions Choix des index Index comprim et non comprim Index concatene Buts

Les clusters
s

Le langage sql
r

SQL : interroger une base


s s

introduction Interroger simplement une base


s s

Slection de colonnes ou projection Slection de lignes ou restriction


s s s

Expression simple Prdicat simple Prdicats composs

s s s s

Valeurs NULL Nom de colonne

Classer le rsultat d'une interrogation les jointures


s s s s

Equi-jointure Jointure d'une table elle-mme Autres jointures Jointure externe

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (2 of 6) [19.07.2000 15:39:16]

Table des matires

s s

Les oprateurs ensemblistes Les sous-interrogations


s s s s s s

Sous-interrogation ramenant une seule valeur Sous-interrogation ramenant plusieurs lignes Sous-interrogation ramenant plusieurs colonnes Sous-interrogation synchronise avec l'interrogation principale Sous-interrogation ramenant au moins une ligne Sous-interrogations multiples Expressions et fonctions arithmtiques
s

Les expressions et fonctions


s

Oprateurs arithmtiques
s

Priorit des oprateurs

s s

Fonctions arithmtiques Oprateur sur les chanes de caractres Fonctions sur les chanes de caractres Oprateurs sur les dates Fonctions sur les dates

Expressions et fonctions sur les chanes de caractres


s s

Expressions et fonctions sur les dates


s s

s s s

Fonctions de conversion Autres fonctions Les fonctions de groupe Valeurs NULL Calcul sur plusieurs groupes Slection des groupes Fonction de groupe deux niveaux Parcours d'un arbre Niveau : LEVEL Slection de lignes
s s

Les fonctions de groupe


s s s s s

Le traitement des structures d'arbre


s s s

Clause WHERE Clause CONNECT BY Boucle

Restrictions
s

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (3 of 6) [19.07.2000 15:39:16]

Table des matires

s s r

Niveaux Jointure

SQL : modifier une base


s s s s

Ajout de lignes Modification de lignes Suppression de lignes Gestion des transactions Les tables
s

SQL : dfinir une base


s

Crer une table


s s s

Cration simple Cration avec Insertion de donnes Les types de donnes

s s

Contraintes d'intgrit Modifier d'une table


s s

Ajouter une colonne Modifier une colonne

s s s

Supprimer une table Renommer une table Crer une vue Supprimer une vue Renommer une vue Crer d'un index Supprimer un index
s

Les vues
s s s

Les index
s s

Structure d'un index

Les clusters
s s

Crer un cluster Mise en cluster d'une table


s s

Lors de la cration de la table Table dj existante

s s r

Retrait d'une table d'un cluster Supprimer un cluster

Dictionnaire de donnes

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (4 of 6) [19.07.2000 15:39:16]

Table des matires

s s s s s r

Description du dictionnaire des donnes vues dcrivant les objets de l'utilisateur Vues dcrivant les objets auxquels l'utilisateur a accs Vues dcrivant les objets accessibles uniquement aux DBA Synonymes
ALTER TABLE
s s s

SQL : manuel de rfrence


s

Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis

CONSTRAINT
s s s

CREATE CLUSTER
s s s

CREATE TABLE
s s

CREATE VIEW
s s s

DELETE
s s s

DROP CLUSTER
s s s

DROP TABLE
s s

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (5 of 6) [19.07.2000 15:39:16]

Table des matires

DROP VIEW
s s s

Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

INSERT
s s s

RENAME
s s s

SELECT
s s s

UPDATE
s s s

q q

Rfrences Index

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node1.html (6 of 6) [19.07.2000 15:39:16]

Bases de Donnes et Systmes de Gestion de Bases de Donnes

next

up

previous

contents

index

Next: Introduction Up: Bases de Donnes Relationnelles Previous: Table des matires

Bases de Donnes et Systmes de Gestion de Bases de Donnes


q

Introduction
r r r r r

Les limites l'utilisation des fichiers Objectifs des systmes de gestion de bases de donnes Concepts de base Composants des systmes de gestion de bases de donnes Un peu d'histoire Introduction Dfinitions Oprateurs relationnels Formes normales
s s s

Le modle relationnel
r r r r

Dpendance fonctionnelle Notion de cl Formes normales

r r q

Langages de manipulation de donnes relationnelles Remarques Introduction Recriture des requtes Choix des chemins d'accs Requte portant sur une seule table Jointures sans index Jointures avec index
ORDER BY

L'optimiseur de requtes
r r r r r r r

Cohrence des interrogations et accs concurrents


r

introduction

http://wwwsi.supelec.fr/~yb/poly_bd/node2.html (1 of 2) [19.07.2000 15:39:19]

Bases de Donnes et Systmes de Gestion de Bases de Donnes

Interrogation
s s

Cohrence d'une interrogation Cohrence de plusieurs interrogations successives

r q

Mise jour Introduction Droits d'accs aux tables Introduction Les index
s s s s s s

Contrle des accs la base et scurit des donnes


r r

Stockage des donnes


r r

Utilisation des index Valeurs NULL Conversions Choix des index Index comprim et non comprim Index concatene Buts

Les clusters
s

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node2.html (2 of 2) [19.07.2000 15:39:19]

Introduction

next

up

previous

contents

index

Next: Les limites l'utilisation Up: Bases de Donnes et Previous: Bases de Donnes et

Introduction
Les bases de donnes sont actuellement au coeur du systme d'information des entreprises. Les systmes de gestion de bases de donnes, initialement disponibles uniquement sur des ``mainframes'', peuvent maintenant tre installs sur tous les types d'ordinateurs y compris les ordinateurs personnels. Mais attention, souvent on dsigne, par abus de langage, sous le nom ``bases de donnes'' des ensembles de donnes qui n'en sont pas. Qu'est-ce donc qu'une base de donnes? Que peut-on attendre d'un systme de gestion de bases de donnes? C'est ces questions, entre autres, que cet ouvrage essaie d'apporter des rponses. Dans un premier temps, et de faon informelle, on peut considrer une Base de Donnes (BD) comme une grande quantit de donnes, centralises ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un groupe d'utilisateurs travaillant en parallle. Quant au Systme de Gestion de Bases de Donnes (SGBD), il peut tre vu comme le logiciel qui prend en charge la structuration, le stockage, la mise jour et la maintenance des donnes ; c'est, en fait, l'interface entre la base de donnes et les utilisateurs ou leurs programmes.

q q q q q

Les limites l'utilisation des fichiers Objectifs des systmes de gestion de bases de donnes Concepts de base Composants des systmes de gestion de bases de donnes Un peu d'histoire
up previous contents index

next

Next: Les limites l'utilisation Up: Bases de Donnes et Previous: Bases de Donnes et Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node3.html [19.07.2000 15:39:21]

Les limites l'utilisation des fichiers

next

up

previous

contents

index

Next: Objectifs des systmes de Up: Introduction Previous: Introduction

Les limites l'utilisation des fichiers


L' utilisation de fichiers impose d'une part, l'utilisateur de connatre l'organisation (squentielle, indexe, ...) des fichiers qu'il utilise afin de pouvoir accder aux informations dont il a besoin et, d'autre part, d'crire des programmes pour pouvoir effectivement manipuler ces informations. Pour des applications nouvelles, l'utilisateur devra obligatoirement crire de nouveaux programmes et il pourra tre amen crer de nouveaux fichiers qui contiendront peut-tre des informations dj prsentes dans d'autres fichiers. De telles applications sont : q rigides, q contraignantes, q longues et coteuses mettre en oeuvre. Les donnes associes sont : q mal dfinies et mal dsignes, q redondantes, q peu accessibles de manire ponctuelle, q peu fiables. La prise de dcision est une part importante de la vie d'une socit. Mais elle ncessite d'tre bien inform sur la situation et donc d'avoir des informations jour et disponibles immdiatement. Les utilisateurs, quant eux, ne veulent plus de systmes d'information constitus d'un ensemble de programmes inflexibles et de donnes inaccessibles tout non spcialiste ; ils souhaitent des systmes d'informations globaux, cohrents, directement accessibles (sans qu'ils aient besoin soit d'crire des programmes soit de demander un programmeur de les crire pour eux) et des rponses immdiates aux questions qu'ils posent. On a donc recherch des solutions tenant compte la fois des dsirs des utilisateurs et des progrs techniques. Cette recherche a abouti au concept de base de donnes. Dfinition (base de donnes) : Une base de donnes est un ensemble d'informations sur un sujet qui est : q exhaustif, q non redondant, q structur, q persistant. Dfinition (systme de gestion de base de donnes) : Un systme de gestion de base de donnes est un logiciel qui permet de : q dcrire, q modifier, q interroger, q administrer,
http://wwwsi.supelec.fr/~yb/poly_bd/node4.html (1 of 2) [19.07.2000 15:39:22]

Les limites l'utilisation des fichiers

les donnes d'une base de donnes.


next up previous contents index

Next: Objectifs des systmes de Up: Introduction Previous: Introduction Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node4.html (2 of 2) [19.07.2000 15:39:22]

Objectifs des systmes de gestion de bases de donnes

next

up

previous

contents

index

Next: Concepts de base Up: Introduction Previous: Les limites l'utilisation

Objectifs des systmes de gestion de bases de donnes


Les bases de donnes et les systmes de gestion de bases de donnes ont t crs pour rpondre un certain nombre de besoins et pour rsoudre un certain nombre de problmes. Des objectifs principaux ont t fixs aux systmes de gestion de bases de donnes ds l'origine de ceux-ci et ce, afin de rsoudre les problmes causs par la dmarche classique. Ces objectifs sont les suivants : q [Indpendance physique] La faon dont les donnnes sont dfinies doit tre indpendante des structures de stockages utilises. q [Indpendance logique] Un mme ensemble de donnes peut tre vu diffremment par des utilisateurs diffrents. Toutes ces visions personnelles des donnes doivent tre intgrs dans une vision globale. q [Manipulations des donnes par des non informaticiens] Il faut pouvoir accder aux donnes sans savoir programmer ce qui signifie des langages ``quasi naturels''. q [Efficacit des accs aux donnes] Ces langages doivent permettre d'obtenir des rponses aux interrogations en un temps ``raisonnable''. Ils doivent donc tre optimiss et, entre autres, il faut un mcanisme permettant de minimiser le nombre d'accs disques. Tout ceci, bien sur, de faon compltement transparente pour l'utilisateur. q [Administration centralise des donnes] Des visions diffrentes des donnes (entre autres) se rsolvent plus facilement si les donnes sont administres de faon centralise. q [Non redondance des donnes] Afin d'viter les problmes lors des mises jour, chaque donne ne doit tre prsente qu'une seule fois dans la base. q [Cohrence des donnes] Les donnes sont soumises un certain nombre de contraintes d'intgrit qui dfinissent un tat cohrent de la base. Elles doivent pouvoir tre exprimes simplement et vrifies automatiquement chaque insertion, modification ou suppression des donnes. q [Partageabilit des donnes] Il s'agit de permettre plusieurs utilisateurs d'accder aux mmes donnes au mme moment. Si ce problme est simple rsoudre quand il s'agit uniquement d'interrogations et quand on est dans un contexte mono-utilisateur, cela n'est plus le cas quand il s'agit de modifications dans un contexte muti-utilisateurs. Il s'agit alors de pouvoir : r permettre deux (ou plus) utilisateurs de modifier la mme donne ``en mme temps'' ;
http://wwwsi.supelec.fr/~yb/poly_bd/node5.html (1 of 2) [19.07.2000 15:39:22]

Objectifs des systmes de gestion de bases de donnes

assurer un rsultat d'interrogation cohrent pour un utilisateur consultant une table pendant qu'un autre la modifie. q [Scurit des donnes] Les donnes doivent pouvoir tre protges contre les accs non autoriss. Pour cela, il faut pouvoir associer chaque utilisateur des droits d'accs aux donnes. q [Rsistance aux pannes] Que se passe-t-il si une panne survient au milieu d'une modification, si certains fichiers contenant les donnes deviennent illisibles? Les pannes, bien qu'tant assez rares, se produisent quand mme de temps en temps. Il faut pouvoir, lorsque l'une d'elles arrive, rcuprer une base dans un tat ``sain''. Ainsi, aprs une panne intervenant au milieu d'une modification deux solutions sont possibles : soit rcuprer les donnes dans l'tat dans lequel elles taient avant la modification, soit terminer l'opration interrompue. Malheureusement, ces objectifs ne sont pas toujours atteints.
r

next

up

previous

contents

index

Next: Concepts de base Up: Introduction Previous: Les limites l'utilisation Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node5.html (2 of 2) [19.07.2000 15:39:22]

Concepts de base

next

up

previous

contents

index

Next: Composants des systmes de Up: Introduction Previous: Objectifs des systmes de

Concepts de base
Pour assurer ces objectifs (surtout les deux premiers), trois niveaux de description des donnes ont t dfinis par la norme ANSI/SPARC. Niveau interne Description du stockage des donnes au niveau des units de stockage, des fichiers, ... On appelle cette description le schma interne. Niveau conceptuel Description de la structure de toutes les donnes qui existent dans la base, description de leurs proprits (relations qui existent entre elles) c'est--dire de leur smantique inhrente, sans soucis d'implmentation physique ni de la faon dont chaque groupe de travail voudra s'en servir. On appelle cette description le schma conceptuel. Niveau externe Description pour chaque utilisateur de sa perception des donnes. On appelle cette description le schma externe ou vue. Le rsultat de la conception d'une base de donnes sera une description des donnes. Par description on entend dfinir les proprits d'ensembles d'objets modliss dans la base de donnes et non pas d'objets particuliers. Les objets particuliers sont dfinis par les programmes d'applications lors des insertions et des mises jour des donnes. Ils doivent alors vrifier les proprits des ensembles auxquels ils appartiennent. Cette description des donnes sera effectue en utilisant un modle de donnes. Ce dernier est un outil intellectuel utilis pour comprendre l'organisation logique des donnes. C'est un ensemble de concepts et de rgles pour les utiliser, permettant de construire avec des types de donnes une reprsentation de la ralit. Un systme de gestion de bases de donnes est caractris par le modle de description des donnes qu'il supporte. Les donnes sont dcrites sous la forme de ce modle, grce un langage de description des donnes. Cette description est appele schma. Les modles utiliss sont : rseau, relationnel, objet, ... Une fois la base de donnes spcifie, on peut y insrer des donnes, les rcuprer, les modifier et les dtruire. C'est ce qu'on appelle manipuler les donnes. Les donnes peuvent tre manipules non seulement par un langage spcifique de manipulation des donnes mais aussi par des langages de programmation ``classiques''.
next up previous contents index

http://wwwsi.supelec.fr/~yb/poly_bd/node6.html (1 of 2) [19.07.2000 15:39:26]

Concepts de base

Next: Composants des systmes de Up: Introduction Previous: Objectifs des systmes de Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node6.html (2 of 2) [19.07.2000 15:39:26]

Composants des systmes de gestion de bases de donnes

next

up

previous

contents

index

Next: Un peu d'histoire Up: Introduction Previous: Concepts de base

Composants des systmes de gestion de bases de donnes


Un systme de gestion de bases de donnes va donc possder un certain nombre de composants logiciels et ce, quelque soit le modle de donnes qu'il supporte. On trouve donc des composants chargs de : La description des donnes Cette partie sera constitue des outils (en gros des langages) permettant de dcrire la vision des donnes de chaque utilisateur et l'intgration dans une vision globale. On y trouve aussi les outils permettant de dcrire le stockage physique des donnes. La rcupration des donnes Cette partie prend en charge l'interrogation et la modification des donnes et ce, de faon optimise. Elle est compose de langages de manipulation de donnes spcifiques et d'extensions de langages ``classiques''. Elle gre aussi les problmes de scurit. La sauvegarde et la rcupration aprs pannes Cette partie comporte des outils permettant de sauvegarder et de restaurer de faon explicite une base de donnes. Elle comporte aussi des mcanismes permettant, tant qu'une modification n'est pas finie, de pouvoir revenir l'tat de la base avant le dbut de cette modification. Les accs concurrents aux donnes C'est la partie charge du contrle de la concurrence des accs aux donnes. Elle doit tre telle que chaque utilisateur attende le moins possible ses donnes tout en tant certain d'obtenir des donnes cohrentes en cas de mises jour simultanes de la base. Chacun de ces composants est dcrit de faon plus dtaille par la suite.
next up previous contents index

Next: Un peu d'histoire Up: Introduction Previous: Concepts de base Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node7.html [19.07.2000 15:39:26]

Un peu d'histoire

next

up

previous

contents

index

Next: Le modle relationnel Up: Introduction Previous: Composants des systmes de

Un peu d'histoire
q q

[1960] [1960] Uniquement des systmes de gestion de fichiers plus ou moins sophistiqus. [1970] Dbut des systmes de gestion de bases de donnes rseaux et hirarchiques proches des systmes de gestion de fichiers. Ces systmes de gestion de bases de donnes avaient remplis certains des objectifs prcdents mais on ne pouvait pas interroger une base sans savoir o tait l'information recherche (on ``naviguait'') et sans crire de programmes. Sortie du papier de CODD sur la thorie des relations, fondement de la thorie des bases de donnes relationnelles. [1980] Les systmes de gestion de bases de donnes relationnels apparaissent sur le march. [1990] Les systmes de gestion de bases de donnes relationnels dominent le march. Dbut des systmes de gestion de bases de donnes orients objet.

q q

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node8.html [19.07.2000 15:39:28]

Le modle relationnel

next

up

previous

contents

index

Next: Introduction Up: Bases de Donnes et Previous: Un peu d'histoire

Le modle relationnel
q q q q

Introduction Dfinitions Oprateurs relationnels Formes normales


r r r

Dpendance fonctionnelle Notion de cl Formes normales

q q

Langages de manipulation de donnes relationnelles Remarques

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node9.html [19.07.2000 15:39:28]

Introduction

next

up

previous

contents

index

Next: Dfinitions Up: Le modle relationnel Previous: Le modle relationnel

Introduction
Le modle relationnel a t formalis par CODD en 1970. Quelques exemples de ralisation en sont : DB2(IBM), INFORMIX, INGRES, ORACLE. Dans ce modle, les donnes sont stockes dans des tables, sans prjuger de la faon dont les informations sont stockes dans la machine. Un ensemble de donnes sera donc modlis par un ensemble de tables. Le succs du modle relationnel auprs des chercheurs, concepteurs et utilisateurs est d la puissance et la simplicit de ses concepts. En outre, contrairement certains autres modles, il repose sur des bases thoriques solides, notamment la thorie des ensembles et la logique mathmatique( thorie des prdicats d'ordre 1). Les objectifs du modle relationnel : q proposer des schmas de donnes faciles utiliser, q amliorer l'indpendance logique et physique, q mettre la disposition des utilisateurs des langages de haut niveau pouvant ventuellement tre utiliss par des non informaticiens, q optimiser les accs la base de donnes, q amliorer l'intgrit et la confidentialit, q fournir une approche mthodologique dans la construction des schmas. De faon informelle, on peut dfinir le modle relationnel de la manire suivante : q Les donnes sont organises sous forme de tables deux dimensions, encore appeles relations et chaque ligne n-uplet ou tuple, q les donnes sont manipules par des oprateurs de l'algbre relationnelle, q l'tat cohrent de la base est dfini par un ensemble de contraintes d'intgrit. Au modle relationnel est associe la thorie de la normalisation des relations qui permet de se dbarrasser des incohrences au moment de la conception d'une base de donnes.
next up previous contents index

Next: Dfinitions Up: Le modle relationnel Previous: Le modle relationnel Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node10.html [19.07.2000 15:39:29]

Dfinitions

next

up

previous

contents

index

Next: Oprateurs relationnels Up: Le modle relationnel Previous: Introduction

Dfinitions
Dfinition (Domaine) : Ensemble de valeurs. Dfinition (Relation) : Sous-ensemble du produit cartsien d'une liste de domaines caractris par un nom. En d'autres termes, une relation n'est ni plus ni moins qu'une table dans laquelle chaque colonne correspond un domaine et porte un nom ce qui rend leur ordre sans aucune importance. Dfinition (Attribut) : Colonne d'une relation caractrise par un nom. Dfinition (Schma de relation) : Nom de la relation, suivi de la liste des attributs avec leurs domaines. Dfinition (Base de donnes relationnelles) : Base de donnes dont le schma est un ensemble de schmas de relations et dont les occurrences sont les tuples de ces relations. Dfinition (Systme de gestion de bases de donnes relationnel) : C'est un logiciel supportant le modle relationnel, et qui peut manipuler les donnes avec des oprateurs relationnels.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node11.html [19.07.2000 15:39:29]

Oprateurs relationnels

next

up

previous

contents

index

Next: Formes normales Up: Le modle relationnel Previous: Dfinitions

Oprateurs relationnels
Dfinition (Projection) : Opration qui consiste supprimer des attributs d'une relation et liminer les tuples en double apparaissant dans la nouvelle relation. Cette opration est note .Dfinition (Restriction) : Opration qui consiste supprimer les tuples d'une relation ne satisfaisant pas la condition prcise. Dfinition (Jointure) : Opration qui consiste faire le produit cartsien de deux relations, puis supprimer les tuples ne satisfaisant pas une condition portant sur un attribut de la premire relation et sur un attribut de la seconde. Dfinition (Union) : Opration portant sur deux relations ayant le mme schma et construisant une troisime relation constitue des tuples appartenant chaque relation. Les tuples en double sont limins. Dfinition (Diffrence relationnelle) : Opration portant sur deux relations ayant le mme schma et construisant une troisime relation dont les tuples sont constitus de ceux ne se trouvant que dans une seule relation. Dfinition (Intersection) : Opration portant sur deux relations ayant le mme schma et construisant une troisime relation dont les tuples sont constitus de ceux appartenant aux deux relations.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node12.html [19.07.2000 15:39:33]

Formes normales

next

up

previous

contents

index

Next: Dpendance fonctionnelle Up: Le modle relationnel Previous: Oprateurs relationnels

Formes normales
q q q

Dpendance fonctionnelle Notion de cl Formes normales

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node13.html [19.07.2000 15:39:33]

Dpendance fonctionnelle

next

up

previous

contents

index

Next: Notion de cl Up: Formes normales Previous: Formes normales

Dpendance fonctionnelle
Dfinition (dpendance fonctionnelle) : Soit R(A1,A2,...An) un schma de relation, et X et Y des sous-ensembles de . On dit que X dtermine Y ou que Y dpend fonctionnellement

de X si, et seulement si, des valeurs identiques de X impliquent des valeurs identiques de Y. On le note : X -> Y Dfinition (dpendance fonctionnelle lmentaire) : C'est une dpendance fonctionnelle de la forme X -> Y, o A est un attribut unique n'appartenant pas X et o il n'existe pas X' inclus dans X tel que X -> Y.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node14.html [19.07.2000 15:39:34]

Notion de cl

next

up

previous

contents

index

Next: Formes normales Up: Formes normales Previous: Dpendance fonctionnelle

Notion de cl
Dfinition (cl de relation) : Soit R(A1, A2, ..., An) un schma de relation, et X un sous-ensemble de (A1, A2, ..., An), X est une cl si, et seulement si, :
q q

X -> (A1, A2, ..., An) X est minimal : il n'existe pas de sous-ensemble Y de X tel que

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node15.html [19.07.2000 15:39:35]

Formes normales

next

up

previous

contents

index

Next: Langages de manipulation de Up: Formes normales Previous: Notion de cl

Formes normales
Dfinition (Premire forme normale) : Une relation est en premire forme normale si et seulement si tout attribut contient une valeur atomique. Dfinition (Deuxime forme normale) : Une relation est en deuxime forme normale si et seulement si : q elle est en premire forme normale ; q tout attribut n'appartenant pas une cl ne dpend pas que d'une partie de cette cl. Dfinition (Troisime forme normale) : Une relation est en troisime forme normale si et seulement si : q elle est en deuxime forme normale ; q tout attribut n'appartenant pas une cl ne dpend pas d'un attribut non cl. Dfinition (Forme normale de BOYCE-CODD) : Une relation est en Forme normale de BOYCE-CODD (BCNF) si, et seulement si, les seules dpendances fonctionnelles lmentaires sont celles dans lesquelles une cl dtermine un attribut.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node16.html [19.07.2000 15:39:35]

Langages de manipulation de donnes relationnelles

next

up

previous

contents

index

Next: Remarques Up: Le modle relationnel Previous: Formes normales

Langages de manipulation de donnes relationnelles


Ces langages, dits assertionnels, sont bass sur la logique des prdicats d'ordre 1 et permettent de spcifier les donnes que l'on souhaite obtenir, sans dire comment y accder. On doit y trouver des oprations permettant de : [la modification] q [la recherche] retrouver des tuples vrifiant certains critres, q [l'insertion] ajouter des tuples, q [la suppression] enlever des tuples vrifiant certains critres, q [la modification] modifier des tuples vrifiant certains critres. Un langage de manipulation de donnes n'est pas utilisable lui seul, il doit aussi pouvoir tre incorporable dans un langage de programmation classique. On peut distinguer trois grandes classes de langages : q Les langages algbriques bass sur l'algbre relationnelle de CODD dans lesquels les requtes sont exprimes comme l'application des oprateurs relationnels sur des relations. C'est dans cette catgorie que l'on trouve le langage sql(structured query language), standard pour l'interrogation de bases de donnes. q Les langages bass sur le calcul relationnel de tuples construits partir de la logique des prdicats dans lesquels les variables manipules sont des tuples. q Les langages bass sur le calcul relationnel de domaines, construit aussi partir de la logique des prdicats mais en faisant varier les variables sur les domaines des relations. Le langage sql (Structured Query Language) comprend lui seul l'ensemble des instructions ncessaires la spcification et l'utilisation d'une base de donnes relationnelle. C'est un langage de type dclaratif c'est--dire que l'on spcifie les proprits des donnes que l'on recherche et pas, comme dans un langage impratif, comment les retrouver. Le langage sql est un langage normalis, la dernire version de la norme date de 92 et, souvent, on y fait rfrence en parlant de sql-92. La prochaine version de la norme est en cours de rdaction afin d'intgrer, entre autres, la notion de types abstraits algbriques, on la dsigne sous le nom de sql3. C'est la fois : q un langage d'interrogation de donnes (LID) : select ; q un langage de manipulation de donnes (LMD) : update, INSERT, DELETE ;
q q

un langage de definition des donnes (LDD) : ALTER, CREATE, DROP; un langage de contrle des donnes et des utilisateurs (LCD) : GRANT, REVOKE.

http://wwwsi.supelec.fr/~yb/poly_bd/node17.html (1 of 2) [19.07.2000 15:39:39]

Langages de manipulation de donnes relationnelles

next

up

previous

contents

index

Next: Remarques Up: Le modle relationnel Previous: Formes normales Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node17.html (2 of 2) [19.07.2000 15:39:39]

Remarques

next

up

previous

contents

index

Next: L'optimiseur de requtes Up: Le modle relationnel Previous: Langages de manipulation de

Remarques
Beaucoup de systmes de gestion de donnes (et non pas de gestion de bases de donnes ) sont vendus comme tant relationnels, souvent parce qu'ils prsentent les donnes sous forme de tables. Un systme est dit minimalement relationnel s'il satisfait aux conditions suivantes : q toute information dans la base est reprsente par des valeurs dans des tables, q il n'y a pas de pointeurs visibles par l'utilisateur entre les tables, q le systme doit supporter au moins les oprateurs relationnels de restriction, projection, jointure naturelle. Un systme est dit compltement relationnel s'il satisfait, en plus, aux conditions suivantes : q il supporte tous les oprateurs de l'algbre relationnelle, q il supporte la contrainte d'unicit de cl d'une relation, q il supporte les contraintes rfrentielles qui permettent de s'assurer que la valeur d'une donne d'une relation existe dans une autre relation (notion de foreign key). En dpit de sa simplicit et de son lgance le modle relationnel n'apporte pas une rponse satisfaisante tous les problmes des applications. Il faut : q Pouvoir prendre en compte des "objets" structurs ainsi que les oprations qui leur sont associes (bases de donnes orientes objet). q Prendre en compte des donnes peu structures : textes, sons, images, graphiques (bases de donnes multi-mdia). q Faire le pont avec l'intelligence artificielle afin de pouvoir dduire de nouvelles donnes partir de celles existant dj (bases de donnes dductives)
next up previous contents index

Next: L'optimiseur de requtes Up: Le modle relationnel Previous: Langages de manipulation de Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node18.html [19.07.2000 15:39:39]

L'optimiseur de requtes

next

up

previous

contents

index

Next: Introduction Up: Bases de Donnes et Previous: Remarques

L'optimiseur de requtes
q q q q q q q

Introduction Recriture des requtes Choix des chemins d'accs Requte portant sur une seule table Jointures sans index Jointures avec index
ORDER BY

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node19.html [19.07.2000 15:39:40]

Introduction

next

up

previous

contents

index

Next: Recriture des requtes Up: L'optimiseur de requtes Previous: L'optimiseur de requtes

Introduction
Avec des langages tels que sql, l'utilisateur prcise les proprits des donnes qui l'intressent sans fournir d'algorithme d'accs. Les optimiseurs de requte sont l pour cela, leurs objectifs sont de : q vrifier la correction syntaxique de la question, q rechercher des questions quivalentes plus simples, q dterminer l'ordre des oprations lmentaires d'accs en vue de : r rduire le nombre d'entres/sorties, r rduire le temps cpu, r rduire la taille des ressources mmoires ncessaires, r optimiser en premier les questions les plus frquentes. Chaque sgbd contient un optimiseur de requtes qui peut tre lgrement diffrent d'un sgbd l'autre. Les algorithmes utiliss sont rarement connus en dtail mais les grandes tapes de l'optimisation sont en gnral : 1. Reprsenter la requte sous une forme interne et la dcomposer en une squence d'oprations lmentaires. 2. Transformer la requte par : r simplification : remplacement d'une question par une question quivalente plus simple, r ordonnancement des oprations lmentaires. 3. Construire un ensemble de plans d'excution candidats. 4. Calculer le cot de chaque plan et choisir le meilleur. 5. Executer la requte. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node20.html [19.07.2000 15:39:40]

Recriture des requtes

next

up

previous

contents

index

Next: Choix des chemins d'accs Up: L'optimiseur de requtes Previous: Introduction

Recriture des requtes


La reformulation de la requte par l'optimiseur a pour but de minimiser le nombre de calculs effectus. Voici quelques exemples de transformations possibles : q Les expressions et conditions faisant intervenir des constantes sont, si c'est possible, values. Ainsi, age > 60 - 10 sera transform en age > 50 mais age + 10 > 60 ne sera pas rcrit en age > 50. q un BETWEEN sera remplac par une expression contenant les symboles >= et <= spars par AND. q Une expression logique complexe prface par NOT sera rcrite afin que celui-ci soit mis devant chacune de ses sous-expressions. Le NOT devant une expression simple sera, si c'est possible, supprim. Ainsi NOT age > 50 deviendra age <= 50. q Les requtes comportant des OR sont rcrites en utilisant des UNION. q Les sous-requtes sont remplaces par des jointures. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node21.html [19.07.2000 15:39:40]

Choix des chemins d'accs

next

up

previous

contents

index

Next: Requte portant sur une Up: L'optimiseur de requtes Previous: Recriture des requtes

Choix des chemins d'accs


L'optimiseur d'interrogation d'oracle est charg de dterminer le chemin d'accs optimal pour excuter un select . Le choix porte essentiellement sur l'utilisation des index portant sur les colonnes mentionnes dans la clause WHERE, sachant qu'en l'absence d'index utilisable une interrogation portant sur une table ncessitera le balayage total de la table.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node22.html [19.07.2000 15:39:41]

Requte portant sur une seule table

next

up

previous

contents

index

Next: Jointures sans index Up: L'optimiseur de requtes Previous: Choix des chemins d'accs

Requte portant sur une seule table


L'optimiseur d'interrogation classe les diffrents types de prdicats en fonction de leur syntaxe dans l'ordre suivant ; du plus slectif au moins slectif : q WHERE rowid = constante q WHERE cl de cluster = constante q WHERE colonne de CONNECT BY indexe = constante q WHERE colonne indexe (unique) = constante q WHERE colonne indexe ( non unique) = constante q WHERE colonne indexe = constante q WHERE colonne indexe BETWEEN val1 AND val2 ou WHERE colonne indexe LIKE 'c%' q WHERE colonne indexe > ou < constante q WHERE MAX ou MIN de colonne indexe q WHERE colonne non indexe = constante q WHERE colonne is null ou is not null q WHERE colonne ! = constante q WHERE colonne indexe LIKE '%c' ou WHERE colonne indexe LIKE '_c' oracle peut dans certains cas utiliser plusieurs index sur une mme table (5 au max), y compris pour valuer des prdicats lies par OR. Un select avec plusieurs prdicats indexs lis par AND sera excut comme une intersection du rsultat de plusieurs select bnficiant chacun d'un index, si les prdicats sont des galits. SELECT * FROM emp WHERE nom = 'MARTIN' AND n_dept = 20;De mme un select avec plusieurs prdicats lis par OR sera excut comme une union du rsultat de plusieurs select bnficiant chacun d'un index. Dans ce cas, il faut que tous les prdicats bnficient d'un index. Exemple 10153 SELECT * FROM emp WHERE nom = 'MARTIN' OR n_dept = 20 ; Dans ces cas il se peut que l'utilisation de l'un des index soit pnalisante. Ce peut tre le cas d'un index peu slectif, alors que les autres index utilisables sont trs slectifs. Dans ce cas l'on peut empcher oracle d'utiliser les index inadquats, en formulant les conditions de telle faon que le critre de recherche soit une fonction de la colonne indexe et non pas la colonne indexe elle mme (dans ce cas oracle n'utilise pas l'index). Exemple 10154 SELECT * FROM emp WHERE nom = 'MARTIN' AND n_dept + 0 = 20;o les champs nom et n_dept sont indexs. Le fait d'ajouter 0 la colonne n_dept empche d'utiliser l'index sur n_dept,
http://wwwsi.supelec.fr/~yb/poly_bd/node23.html (1 of 2) [19.07.2000 15:39:43]

Requte portant sur une seule table

qui ne ferait que ralentir la requte car il est peu slectif. L'index sur nom, qui est trs slectif, suffit. De la mme faon, l'on peut concatner une chane vide une colonne de type caractre pour empcher oracle d'utiliser l'index sur cette colonne : SELECT * FROM emp WHERE nom = 'MARTIN' AND fonction ||''= 'directeur' ;
next up previous contents index

Next: Jointures sans index Up: L'optimiseur de requtes Previous: Choix des chemins d'accs Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node23.html (2 of 2) [19.07.2000 15:39:43]

Jointures sans index

next

up

previous

contents

index

Next: Jointures avec index Up: L'optimiseur de requtes Previous: Requte portant sur une

Jointures sans index


Dans le cas de jointure sans index, oracle classe au pralable chaque table selon le critre de jointure. L'algorithme est symtrique et l'ordre dans lequel les tables sont mentionnes n'a donc pas d'influence sur les performances.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node24.html [19.07.2000 15:39:43]

Jointures avec index

next

up

previous

contents

index

Next: ORDER BY Up: L'optimiseur de requtes Previous: Jointures sans index

Jointures avec index


Dans le cas o le critre de jointure est index au moins dans l'une des tables, oracle choisit une table directrice : c'est cette table qui sera lue en premier et qui pilotera la jointure. Si le critre de jointure est index dans une seule des tables, oracle choisit l'autre table comme table directrice. Si le critre de jointure est index dans les deux tables, la table directrice est celle sur laquelle portent les prdicats les moins slectifs(compte tenu de la classification des prdicats ci-dessus). Si les prdicats portant sur chaque table sont quivalents, la table directrice sera la dernire table mentionne dans la clause FROM. Ainsi, dans l'exemple suivant, l'optimiseur considre que les restrictions portant sur chacune des tables sont quivalentes, et la table directrice sera la table dept qui est cite en dernier dans la clause FROM. SELECT * FROM emp, dept WHERE emp.n_dept = dept.n_dept AND dept.nom = 'vente' AND fonction ='directeur' ; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node25.html [19.07.2000 15:39:44]

ORDER BY

next

up

previous

contents

index

Next: Cohrence des interrogations et Up: L'optimiseur de requtes Previous: Jointures avec index

ORDER BY
[order by]ORDER BY L'optimiseur d'interrogation d'oracle dcidera dans certains cas de passer par l'index pour slectionner les lignes d'une table selon un certain ordre. Pour cela il faut que : q le critre de classement soit le contenu d'une colonne indexe q cette colonne ait l'attribut not null (obligatoire) q la slection porte sur toute la table (pas de WHERE) Exemple 10155 Le select suivant utilisera l'index sur la colonne salaire si cette colonne ne contient pas de valeurs NULL. SELECT nom, salaire FROM emp ORDER BY salaire ; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node26.html [19.07.2000 15:39:44]

Cohrence des interrogations et accs concurrents

next

up

previous

contents

index

Next: introduction Up: Bases de Donnes et Previous: ORDER BY

Cohrence des interrogations et accs concurrents


q q

introduction Interrogation
r r

Cohrence d'une interrogation Cohrence de plusieurs interrogations successives

Mise jour

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node27.html [19.07.2000 15:39:45]

introduction

next

up

previous

contents

index

Next: Interrogation Up: Cohrence des interrogations et Previous: Cohrence des interrogations et

introduction
Ce chapitre tudie les conditions de bon fonctionnement d'un systme de gestion de bases de donnes travaillant dans un contexte multi-utilisateurs multi-tches. Comme un systme d'exploitation classique gre, partage les ressources et synchronize les processus, un systme de gestion de bases de donnes doit assurer (entre autres) le partage des donnes. On retrouve, ici, les problmes classiques de gestion de ressources partages. Les problmes viter se classent, en gros, en deux catgories : les pertes d'oprations et la rcupration d'une bases de donnes incohrente. De faon plus dtaille on peut avoir des : q lectures inconsistantes q lectures non reproductibles q des lectures de donnes fantomes q des modifications perdues q des donnes incohrentes q des accs des donnes inexistantes Il est facile de raliser un systme de gestion de bases de donnes avec un contrle de concurrence simple et efficace consistant, par exemple, verrouiller la base entire pendant l'excution de chaque transaction. Les performances d'un tel systme se dgraderaient rapidement avec l'augmentation du nombre d'usagers et il deviendrait trs rapidement inutilisable. Un systme raliste doit assurer que : q lectures et critures ne mettant pas en jeu les mmes donnes peuvent s'excuter en parallle ; q les lectures ne sont pas en attente de fin d'criture ou de fin de lecture des mmes donnes ; q les critures ne sont pas en attente de fin de lecture des mmes donnes ; q les critures attendent uniquement la fin d'criture des mmes donnes. Il faut trouver une solution qui prserve l'intgrit des donnes sans pnaliser les performances. Cette solution repose sur les notions de : q fichier image avant, ``before image'' ou ``rollback segment'', tout ces mots dsignant un, ou plusieurs, fichiers contenant la valeur des donnes avant la modification ainsi que celle-ci. q base cohrente et de transaction (ces deux notions sont dfinies ci-dessous). Dfinition (contrainte d'intgrit) : assertion(proprit, prdicat) qui doit tre vrifie par certaines donnes des instants dtermins. Dfinition (bases de donnes cohrente) : bases de donnes dont toutes les contraintes d'intgrit sont respectes. Les contraintes d'intgrit peuvent non seulement porter sur une donne unique : contrainte de domaine de variation, contrainte de plage de valeurs, mais aussi sur des donnes rfrenant d'autres donnes . Dfinition (transaction) : unit de traitement squentiel execute pour le compte d'un usager qui, applique une base cohrente restitue une base cohrente.

http://wwwsi.supelec.fr/~yb/poly_bd/node28.html (1 of 2) [19.07.2000 15:39:45]

introduction

next

up

previous

contents

index

Next: Interrogation Up: Cohrence des interrogations et Previous: Cohrence des interrogations et Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node28.html (2 of 2) [19.07.2000 15:39:45]

Interrogation

next

up

previous

contents

index

Next: Cohrence d'une interrogation Up: Cohrence des interrogations et Previous: introduction

Interrogation
q q

Cohrence d'une interrogation Cohrence de plusieurs interrogations successives

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node29.html [19.07.2000 15:39:45]

Cohrence d'une interrogation

next

up

previous

contents

index

Next: Cohrence de plusieurs interrogations Up: Interrogation Previous: Interrogation

Cohrence d'une interrogation


Un utilisateur qui interroge une table (mme trs grande) est garanti de voir toutes les donnes telles qu'elles taient au moment du dbut de l'interrogation, mme si d'autres utilisateurs modifient la table et valident leurs modifications pendant ce temps. Les sgbd dont oracle utilisent alors le fichier image avant pour assurer cette cohrence. Le COMMIT des utilisateurs modifiant la table n'est pas diffr la fin de l'interrogation. Remarque : Ds que l'on interroge une table, un verrou est plac sur la dfinition de la table, c'est dire qu'un autre utilisateur ne peut pas dtruire la table, l'indexer, la mettre en cluster ou modifier sa dfinition, jusqu' ce que l'interrogation soit termine.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node30.html [19.07.2000 15:39:46]

Cohrence de plusieurs interrogations successives

next

up

previous

contents

index

Next: Mise jour Up: Interrogation Previous: Cohrence d'une interrogation

Cohrence de plusieurs interrogations successives


Si l'utilisateur dsire que l'on ne modifie pas une table pendant une session de travail, celui-ci peut vrouiller la table en mode partag au moyen de l'ordre sql suivant : LOCK TABLE nom_table IN SHARE MODE NOWAIT;o l'option NOWAIT, qui peut s'adjoindre toutes les commandes de verrouillage, spcifie que le process qui demande le verrou n'est pas mis en attente si celui-ci n'est pas disponible. La table n'est alors accessible aux autres utilisateurs qu'en lecture jusqu' la fin de la transaction de celui qui l'a verrouille (les autres utilisateurs peuvent aussi verrouiller la table en share mode). Les modifications des autres utilisateurs seront suspendues.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node31.html [19.07.2000 15:39:46]

Mise jour

next

up

previous

contents

index

Next: Contrle des accs Up: Cohrence des interrogations et Previous: Cohrence de plusieurs interrogations

Mise jour
Pour s'assurer l'accs exclusif en modification une table, l'on peut verrouiller cette table en mode exclusif par la commande : LOCK TABLE nom_table IN EXCLUSIVE MODE NOWAIT; La table n'est alors accessible aux autres utilisateurs qu'en lecture et ils ne peuvent plus la verrouiller en mode exclusif, ni en mode mise jour partage, ni en mode partag jusqu' la fin de la transaction. Ce verrou est galement obtenu automatiquement ds que l'on effectue un update, INSERT ou DELETE sur une table. C'est le mode par dfaut de mise jour d'une table. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node32.html [19.07.2000 15:39:46]

Contrle des accs la base et scurit des donnes

next

up

previous

contents

index

Next: Introduction Up: Bases de Donnes et Previous: Mise jour

Contrle des accs la base et scurit des donnes


q q

Introduction Droits d'accs aux tables

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node33.html [19.07.2000 15:39:50]

Introduction

next

up

previous

contents

index

Next: Droits d'accs aux tables Up: Contrle des accs Previous: Contrle des accs

Introduction
Les systmes de gestion de bases de donnes permettent plusieurs utilisateurs de travailler en toute scurit sur la mme base ou sur des bases diffrentes. Chaque donne peut tre dfinie, soit comme confidentielle et accessible un seul utilisateur, soit comme tant partageable entre plusieurs utilisateurs. Les ordres GRANT et REVOKE du langage sql permettent de dfinir les droits de chaque utilisateur sur les objets de la base. Tout utilisateur doit possder un nom d'utilisateur et un mot de passe pour pouvoir accder la base. C'est ce nom d'utilisateur qui dterminera les droits d'accs aux objets de la base.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node34.html [19.07.2000 15:39:53]

Droits d'accs aux tables

next

up

previous

contents

index

Next: Stockage des donnes Up: Contrle des accs Previous: Introduction

Droits d'accs aux tables


La protection des objets d'une base de donnes est dcentralise : c'est le crateur d'un objet qui possde tous les droits de lecture, de modification et de suppression de cet objet. Les autres utilisateurs n'ont aucun droit d'accs cet objet, moins que le crateur ne les leur accorde explicitement par une commande GRANT : GRANT privilege ON {nom_table | nom_vue} TO nom_utilisateur WITH GRANT OPTION ;Les privilges pouvant tre accords sont entre autres les suivants : [update(col,...) ] q [select ] consultation q [INSERT] rajout des lignes q [UPDATE(col,...) ] modification des lignes (peut-tre restreint certaines colonnes) q [DELETE] suppression des lignes q [ALTER] modification de la dfinition de la table q [ALL] tous les droits ci-dessus Un utilisateur ayant reu un privilge avec l'option GRANT peut le transmettre son tour (WITH GRANT OPTION). Exemple 10156 L'utilisateur scott peut autoriser l'utilisateur douglas lire sa table emp. GRANT SELECT ON emp TO douglas ;Les droits peuvent tre accords tous les utilisateurs en employant le mot rserv PUBLIC la place du nom d'utilisateur. GRANT SELECT, UPDATE ON emp TO PUBLIC;Un utilisateur ayant accord un privilge peut le reprendre l'aide de l'ordre REVOKE. REVOKE PRIVILGE ON {nom_table | nom_vue} FROM nom_utilisateur;Le propritaire d'une table peut donner des droits de lecture non pas sur la table entire, mais sur une vue base sur la table. Ainsi, seules les informations faisant partie de la vue seront accessibles. CREATE VIEW emp1 AS SELECT nom, fonction, embauche FROM scott.emp WHERE n_dept != 10 ; GRANT SELECT ON emp1 TO PUBLIC; Tous les utilisateurs pourront slectionner les employs travers la vue emp1 : ils ne verront que les colonnes nom, fonction, embauche de la table emp et n'auront pas accs aux employs du dpartement 10. Avec l'option de contrle (CHECK OPTION), les vues peuvent servir raliser les contrles lors des mises jour. Exemple 10157 La vue suivante ne permettrait pas d'insrer dans la table des employs emp un employ dont le
http://wwwsi.supelec.fr/~yb/poly_bd/node35.html (1 of 2) [19.07.2000 15:39:54]

Droits d'accs aux tables

numro de dpartement ne figurerait pas dans la table des dpartements dept : CREATE VIEW majemp AS SELECT * FROM emp WHERE n_dept IN (SELECT n_dept FROM dept) WITH CHECK OPTION ;Comme il est impossible de faire une mise jour sur une vue comportant une jointure il faut transformer le critre de jointure en une sous-interrogation. Pour oracle , le nom complet d'une table ou d'une vue est le nom donn par le crateur, prfix par le nom du crateur. Par exemple scott.emp est le nom complet de la table emp cre par l'utilisateur scott . Ceci permet plusieurs utilisateurs de crer des objets de mme nom sans qu'il y ait confusion. En revanche, pour accder un objet dont on n'est pas le crateur, il faut le dsigner par son nom complet incluant le nom du crateur.
next up previous contents index

Next: Stockage des donnes Up: Contrle des accs Previous: Introduction Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node35.html (2 of 2) [19.07.2000 15:39:54]

Stockage des donnes

next

up

previous

contents

index

Next: Introduction Up: Bases de Donnes et Previous: Droits d'accs aux tables

Stockage des donnes


q q

Introduction Les index


r r r r r r

Utilisation des index Valeurs NULL Conversions Choix des index Index comprim et non comprim Index concatene Buts

Les clusters
r

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node36.html [19.07.2000 15:39:54]

Introduction

next

up

previous

contents

index

Next: Les index Up: Stockage des donnes Previous: Stockage des donnes

Introduction
La taille des donnes stockes dans une bases de donnes va de l'ordre de plusieurs centaines de mga-octets pour des bases moyennes des dizaines ou des centaines de giga-octets pour des bases importantes. La plus grosse base connue ce jour atteint le tra-octet. Ces donns, bien videmment, vont tre stockes sur un ou plusieurs disques de faon compltement transparente pour l'utilisateur final. Les temps d'accs disques tant trs pnalisants, il va falloir essayer de les minimiser. Il existe deux possibilits lies au stockage des donnes de minimiser les accs disques : q les index, q les clusters. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node37.html [19.07.2000 15:39:54]

Les index

next

up

previous

contents

index

Next: Utilisation des index Up: Stockage des donnes Previous: Introduction

Les index
Selon le modle relationnel les slections peuvent tre faites en utilisant le contenu de n'importe quelle colonne et les lignes sont stockes dans n'importe quel ordre. Considrons le select suivant : SELECT * FROM emp WHERE nom = 'MARTIN'Un moyen de retrouver la ou les lignes pour lesquelles nom est gal MARTIN est de balayer toute la table. Un tel moyen d'accs conduit des temps de rponse prohibitifs pour des tables dpassant quelques centaines de lignes. Une solution offerte par tous les systmes de gestion de bases de donnes est la cration d'index, qui permettra de satisfaire aux requtes les plus frquentes avec des temps de rponse acceptables. Un index sera matrialis par la cration de blocs disque contenant des couples (valeurs d'index, numro de bloc) donnant le numro de bloc disque dans lequel se trouvent les lignes correspondant chaque valeur d'index.

q q q q q q

Utilisation des index Valeurs NULL Conversions Choix des index Index comprim et non comprim Index concatene

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node38.html [19.07.2000 15:39:56]

Utilisation des index

next

up

previous

contents

index

Next: Valeurs NULL Up: Les index Previous: Les index

Utilisation des index


L'adjonction d'un index une table ralentit les mises jour (insertion, suppression, modification de la cl) mais acclre beaucoup la recherche d'une ligne dans la table. L'index acclre la recherche d'une ligne partir d'une valeur donne de cl, mais aussi la recherche des lignes ayant une valeur d'index suprieure ou infrieure une valeur donne, car les valeurs de cls sont tries dans l'index. Exemple 10158 Les requtes suivantes bnficieront d'un index sur le champ n_dept. SELECT * FROM emp WHERE num = 16034 ; SELECT * FROM emp WHERE num >= 27234 ; SELECT * FROM emp WHERE num BETWEEN 16034 AND 27234;Un index est utilisable mme si le critre de recherche est constitu seulement du dbut de la cl. Exemple 10159 La requte suivante bnficiera d'un index sur la colonne nom. SELECT * FROM emp WHERE nom LIKE 'MPar contre si le dbut de la cl n'est pas connu, l'index est inutilisable. Exemple 10160 La requte suivante ne bnficiera pas d'un index sur le champ nom. SELECT * FROM emp WHERE ename LIKE ' Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node39.html [19.07.2000 15:39:56]

Valeurs NULL

next

up

previous

contents

index

Next: Conversions Up: Les index Previous: Utilisation des index

Valeurs NULL
Elles ne sont pas reprsentes dans l'index, ceci afin de minimiser le volume ncessaire pour stocker l'index. En contrepartie, l'index ne sera d'aucune utilit pour retrouver les valeurs NULL lorsque le critre de recherche est du type IS NULL.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node40.html [19.07.2000 15:39:57]

Conversions

next

up

previous

contents

index

Next: Choix des index Up: Les index Previous: Valeurs NULL

Conversions
L'index n'est utilisable que si le critre de slection est le contenu de la colonne indexe, sans aucune transformation. Par exemple un index sur salaire ne sera pas utilis pour la requte suivante : SELECT * FROM emp WHERE salaire * 12 > 300000 ;Attention en particulier aux conversions de type qui peuvent empcher l'utilisation de l'index. sql est un langage typ, chaque type de donnes (numrique, caractre, date) ayant ses propres oprateurs, ses propres fonctions et sa propre relation d'ordre. En consquence, si dans une expression, figurent la fois un nombre et une chane de caractres, sql convertira la chane de caractres en nombre. De mme si dans une expression, figurent la fois une chane de caractres et une date, sql convertira la chane de caractres en date. Or, dans un prdicat du type : WHERE fonction(col_indexe) = constantesql ne peut pas utiliser l'index. Ceci peut se produire , de faon insidieuse, lorsque sql est oblig d'ajouter un appel une fonction de conversion cause d'une discordance de type. Exemple 10161 Le prdicat suivant ne bnficiera pas d'un index sur le champ embauche. SELECT * FROM emp WHERE embauche LIKE 'En effet, sql est oblig d'effectuer une conversion, et le prdicat qui sera valu est : WHERE TO_CHAR(embauche) LIKE 'Le critre de recherche est une fonction de embauche, et non le champ embauche lui-mme, dans ce cas l'index est inutilisable.
next up previous contents index

Next: Choix des index Up: Les index Previous: Valeurs NULL Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node41.html [19.07.2000 15:39:57]

Choix des index

next

up

previous

contents

index

Next: Index comprim et non Up: Les index Previous: Conversions

Choix des index


Indexer en priorit : 1. les cls primaires 2. les colonnes servant de critre de jointure 3. les colonnes servant souvent de critre de recherche Ne pas indexer : 1. les colonnes contenant peu de valeurs distinctes (index alors peu efficace) 2. les colonnes frquemment modifies Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node42.html [19.07.2000 15:39:58]

Index comprim et non comprim

next

up

previous

contents

index

Next: Index concatene Up: Les index Previous: Choix des index

Index comprim et non comprim


Les cls dans les index peuvent tre comprimes ou non. La compression est une technique permettant de rduire dans des proportions trs importantes (d'autant plus que la cl est longue) le volume de l'index. En contrepartie, il faut parfois un traitement supplmentaire pour recomposer la cl lors des mises jour de l'index. Par dfaut, les index sont comprims, les avantages de rduction de taille l'emportant sur les inconvnients dans la plupart des cas. sql sait excuter certaines requtes directement au niveau de l'index sans passer par le segment de donnes, si l'index est non comprim et si tous les champs rsultats de la requte sont dans l'index. Exemple 10162 L'index cre par : CREATE INDEX x ON emp (num, nom) nocompress ;permettra de rpondre la question : SELECT nom FROM emp WHERE num > 17217 ;sans lire la table puisque toutes les informations se trouvent dans l'index et que l'index est non concatn.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node43.html [19.07.2000 15:39:58]

Index concatene

next

up

previous

contents

index

Next: Les clusters Up: Les index Previous: Index comprim et non

Index concatene
Un index concatn est un index portant sur plusieurs colonnes. Exemple 10163 CREATE INDEX xemp ON (n_dept,num) ;Les index concatns peuvent tre utiliss pour matrialiser une cl compose de plusieurs colonnes. sql sait utiliser un index concatn mme si le critre de recherche ne porte pas sur toutes les colonnes prsentes dans l'index. Exemple 10164 L'index ci-dessus est utilisable si l'on ne connait que le numro de dpartement. SELECT nom FROM emp WHERE n_dept = 20 ; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node44.html [19.07.2000 15:39:58]

Les clusters

next

up

previous

contents

index

Next: Buts Up: Stockage des donnes Previous: Index concatene

Les clusters
q

Buts

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node45.html [19.07.2000 15:39:59]

Buts

next

up

previous

contents

index

Next: Le langage sql Up: Les clusters Previous: Les clusters

Buts
Le cluster est une organisation physique des donnes qui consiste regrouper physiquement (dans un mme bloc disque) les lignes d'une ou plusieurs tables ayant une caractristique commune (une mme valeur dans une ou plusieurs colonnes) constituant la cl du cluster. La mise en cluster a trois objectifs : q acclrer la jointure selon la cl de cluster des tables mises en cluster, q acclrer la slection des lignes d'une table ayant mme valeur de cl, par le fait que ces lignes sont regroupes physiquement, q conomiser de la place, du fait que chaque valeur de la cl du cluster ne sera stocke qu'une seule fois. Le regroupement en cluster est totalement transparent l'utilisateur : des tables mises en cluster sont toujours vues comme des tables indpendantes. Par exemple on pourrait mettre en cluster les tables emp et dept selon n_dept. Ces tables seraient rorganises de la faon suivante : un bloc de cluster serait cr pour chaque numro de dpartement, ce bloc contenant la fois les lignes de la table emp et de la table dept correspondant ce numro de dpartement. La jointure entre les tables emp et dept selon n_dept deviendrait alors beaucoup plus rapide, puisqu'elle serait dj ralise dans l'organisation physique des tables. Pour que l'on puisse mettre une table en cluster il faut que l'une au moins des colonnes faisant partie du cluster soit dfinie comme obligatoire (NOT NULL). On peut indexer les colonnes d'une table en cluster, y compris les colonnes correspondant la cl ou une partie de la cl du cluster. La cl elle-mme est automatiquement indexe, on peut ventuellement la rindexer pour crer un index unique servant contrler son unicit.
next up previous contents index

Next: Le langage sql Up: Les clusters Previous: Les clusters Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node46.html [19.07.2000 15:39:59]

Le langage sql

next

up

previous

contents

index

Next: SQL : interroger une Up: Bases de Donnes Relationnelles Previous: Buts

Le langage sql
q

SQL : interroger une base


r r

introduction Interroger simplement une base


s s

Slection de colonnes ou projection Slection de lignes ou restriction


s s s

Expression simple Prdicat simple Prdicats composs

s s r r

Valeurs NULL Nom de colonne

Classer le rsultat d'une interrogation les jointures


s s s s

Equi-jointure Jointure d'une table elle-mme Autres jointures Jointure externe

r r

Les oprateurs ensemblistes Les sous-interrogations


s s s s s s

Sous-interrogation ramenant une seule valeur Sous-interrogation ramenant plusieurs lignes Sous-interrogation ramenant plusieurs colonnes Sous-interrogation synchronise avec l'interrogation principale Sous-interrogation ramenant au moins une ligne Sous-interrogations multiples Expressions et fonctions arithmtiques
s

Les expressions et fonctions


s

Oprateurs arithmtiques

http://wwwsi.supelec.fr/~yb/poly_bd/node47.html (1 of 5) [19.07.2000 15:40:00]

Le langage sql

s s

Fonctions arithmtiques Oprateur sur les chanes de caractres Fonctions sur les chanes de caractres Oprateurs sur les dates Fonctions sur les dates

Expressions et fonctions sur les chanes de caractres


s s

Expressions et fonctions sur les dates


s s

s s r

Fonctions de conversion Autres fonctions Les fonctions de groupe Valeurs NULL Calcul sur plusieurs groupes Slection des groupes Fonction de groupe deux niveaux Parcours d'un arbre Niveau : LEVEL Slection de lignes
s s

Les fonctions de groupe


s s s s s

Le traitement des structures d'arbre


s s s

Clause WHERE Clause CONNECT BY Boucle Niveaux Jointure

Restrictions
s s s

SQL : modifier une base


r r r r

Ajout de lignes Modification de lignes Suppression de lignes Gestion des transactions Les tables
s

SQL : dfinir une base


r

Crer une table


s s

Cration simple Cration avec Insertion de donnes

http://wwwsi.supelec.fr/~yb/poly_bd/node47.html (2 of 5) [19.07.2000 15:40:00]

Le langage sql

s s s

Les types de donnes

Contraintes d'intgrit Modifier d'une table


s s

Ajouter une colonne Modifier une colonne

s s r

Supprimer une table Renommer une table Crer une vue Supprimer une vue Renommer une vue Crer d'un index Supprimer un index
s

Les vues
s s s

Les index
s s

Structure d'un index

Les clusters
s s

Crer un cluster Mise en cluster d'une table


s s

Lors de la cration de la table Table dj existante

s s q

Retrait d'une table d'un cluster Supprimer un cluster

Dictionnaire de donnes
r r r r r

Description du dictionnaire des donnes vues dcrivant les objets de l'utilisateur Vues dcrivant les objets auxquels l'utilisateur a accs Vues dcrivant les objets accessibles uniquement aux DBA Synonymes
ALTER TABLE
s s s

SQL : manuel de rfrence


r

Syntaxe Prrequis Voir aussi Syntaxe Prrequis

CONSTRAINT
s s

http://wwwsi.supelec.fr/~yb/poly_bd/node47.html (3 of 5) [19.07.2000 15:40:00]

Le langage sql

s r

Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

CREATE CLUSTER
s s s

CREATE TABLE
s s

CREATE VIEW
s s s

DELETE
s s s

DROP CLUSTER
s s s

DROP TABLE
s s

DROP VIEW
s s s

INSERT
s s s

RENAME
s s s

http://wwwsi.supelec.fr/~yb/poly_bd/node47.html (4 of 5) [19.07.2000 15:40:00]

Le langage sql

SELECT
s s s

Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

UPDATE
s s s

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node47.html (5 of 5) [19.07.2000 15:40:00]

SQL : interroger une base

next

up

previous

contents

index

Next: introduction Up: Le langage sql Previous: Le langage sql

SQL : interroger une base


q q

introduction Interroger simplement une base


r r

Slection de colonnes ou projection Slection de lignes ou restriction


s s s

Expression simple Prdicat simple Prdicats composs

r r q q

Valeurs NULL Nom de colonne

Classer le rsultat d'une interrogation les jointures


r r r r

Equi-jointure Jointure d'une table elle-mme Autres jointures Jointure externe

q q

Les oprateurs ensemblistes Les sous-interrogations


r r r r r r

Sous-interrogation ramenant une seule valeur Sous-interrogation ramenant plusieurs lignes Sous-interrogation ramenant plusieurs colonnes Sous-interrogation synchronise avec l'interrogation principale Sous-interrogation ramenant au moins une ligne Sous-interrogations multiples Expressions et fonctions arithmtiques
s

Les expressions et fonctions


r

Oprateurs arithmtiques
s

Priorit des oprateurs

http://wwwsi.supelec.fr/~yb/poly_bd/node48.html (1 of 2) [19.07.2000 15:40:02]

SQL : interroger une base

s r

Fonctions arithmtiques Oprateur sur les chanes de caractres Fonctions sur les chanes de caractres Oprateurs sur les dates Fonctions sur les dates

Expressions et fonctions sur les chanes de caractres


s s

Expressions et fonctions sur les dates


s s

r r q

Fonctions de conversion Autres fonctions Les fonctions de groupe Valeurs NULL Calcul sur plusieurs groupes Slection des groupes Fonction de groupe deux niveaux Parcours d'un arbre Niveau : LEVEL Slection de lignes
s s

Les fonctions de groupe


r r r r r

Le traitement des structures d'arbre


r r r

Clause WHERE Clause CONNECT BY Boucle Niveaux Jointure

Restrictions
s s s

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node48.html (2 of 2) [19.07.2000 15:40:02]

introduction

next

up

previous

contents

index

Next: Interroger simplement une base Up: SQL : interroger une Previous: SQL : interroger une

introduction
Ce chapitre expose la partie du langage sql permettant de retrouver des informations stockes dans une base de donnes. Il s'agit, comme cela a dj t dit, d'un langage dclaratif dont la syntaxe est trs simple (comme beaucoup de langages de ce type) ce qui permet de se concentrer sur le problme rsoudre. Les exemples cits dans ce chapitre ont tous t tests sous oracle , un des systmes de gestion de bases de donnes relationnels les plus rpandus sur le march. Ces exemples sont btis sur une base de donnes compose des deux relations suivantes : q emp (nom, num, fonction, n_sup, embauche, salaire, comm, n_dept) NOM NUM FONCTION N_SUP EMBAUCHE SALAIRE COMM N_DEPT ---- --- ------- ------- ---- --- --- MARTIN 16712 directeur 25717 23-MAY-90 40000 30 DUPONT 17574 administratif 16712 03-MAY-95 9000 30 DUPOND 26691 commercial 27047 04-APR-88 25000 2500 20 LAMBERT 25012 administratif 27047 14-APR-91 12000 20 JOUBERT 25717 president 10-OCT-82 50000 30 LEBRETON 16034 commercial 27047 01-JUN-91 15000 20 MARTIN 17147 commercial 27047 10-DEC-93 20000 500 20 PAQUEL 27546 commercial 27047 03-SEP-83 22000 2000 20 LEFEBVRE 25935 commercial 27047 11-JAN-84 23500 1500 20 GARDARIN 15155 ingenieur 24533 22-MAR-85 24000 10 SIMON 26834 ingenieur 24533 04-OCT-88 20000 10 DELOBEL 16278 ingenieur 24533 16-NOV-94 21000 10 ADIBA 25067 ingenieur 24533 05-OCT-87 30000 10 CODD 24533 directeur 25717 12-SEP-75 55000 10 LAMERE 27047 directeur 25717 07-SEP-89 45000 20 BALIN 17232 administratif 24533 03-OCT-87 13500 10 BARA 24831 administratif 16712 10-SEP-88 15000 30 q dept(n_dept, nom,lieu) N_DEPT NOM LIEU --- ------- ------- 10 recherche Rennes 20 vente Metz 30 direction Gif 40 fabrication Toulon La commande select constitue, elle seuls, le langage permettant d'interroger une base de donnes. Elle permet : q de slectionner certaines colonnes d'une table : c'est l'opration de projection ; q de slectionner certaines lignes d'une table en fonction de leur contenu : c'est l'opration de restriction ; q de combiner des informations venant de plusieurs tables : ce sont les oprations de jointure , union , intersection , diffrence relationnelle ; q de combiner entre elles ces diffrentes oprations. Une interrogation, on parle plutt de requte, est une combinaison d'oprations portant sur des tables (relations) et dont le rsultat est lui-mme une table dont l'existence est phmre (le temps de la requte). On peut introduire un commentaire l'intrieur d'une commande sql en l'encadrant par /* */ .

http://wwwsi.supelec.fr/~yb/poly_bd/node49.html (1 of 2) [19.07.2000 15:40:02]

introduction

next

up

previous

contents

index

Next: Interroger simplement une base Up: SQL : interroger une Previous: SQL : interroger une Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node49.html (2 of 2) [19.07.2000 15:40:02]

Index

next

up

previous

contents

Next: propos de ce document... Up: Bases de Donnes Relationnelles Previous: Rfrences

Index
attribut Dfinitions base de donnes dfinition Les limites l'utilisation relationnelle Dfinitions bases de donnescohrente introduction classement
ORDER BY

cluster cration Crer un cluster suppression Supprimer un cluster cl de relation Notion de cl colonne ajout Ajouter une colonne modification Modifier une colonne suppression Modifier d'une table contrainte d'intgrit introduction diffrence relationnelle Oprateurs relationnels domaine Dfinitions
http://wwwsi.supelec.fr/~yb/poly_bd/node191.html (1 of 4) [19.07.2000 15:40:05]

Index

dpendance fonctionnelle Dpendance fonctionnelle lmentaire Dpendance fonctionnelle forme normale de BOYCE-CODD Formes normales deuxime Formes normales premire Formes normales troisime Formes normales index
ORDER BY | Les oprateurs ensemblistes | Les oprateurs ensemblistes | Les oprateurs

ensemblistes | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions arithmtiques | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les chanes | Fonctions sur les dates | Fonctions sur les dates | Fonctions sur les dates | Fonctions sur les dates | Fonctions sur les dates | Fonctions sur les dates | Fonctions sur les dates | Fonctions de conversion | Fonctions de conversion | Fonctions de conversion | Fonctions de conversion | Fonctions de conversion | Fonctions de conversion | Autres fonctions | Autres fonctions | Autres fonctions | Autres fonctions | Les fonctions de groupe | Les fonctions de groupe | Les fonctions de groupe | Les fonctions de groupe | Les fonctions de groupe | Les fonctions de groupe | Les fonctions de groupe | Slection des groupes | Parcours d'un arbre | Parcours d'un arbre | Parcours d'un arbre | Niveau : LEVEL | Ajout de lignes | Modification de lignes | Suppression de lignes | Gestion des transactions | Gestion des transactions | Crer une table | Les types de donnes | Les types de donnes | Les types de donnes | Les types de donnes | Les types de donnes | Les types de donnes | Modifier d'une table | Supprimer une table | Renommer une table | Crer une vue | Supprimer une vue | Crer d'un index | Supprimer un index | Crer un cluster | Supprimer un cluster | ALTER TABLE | CONSTRAINT | CREATE CLUSTER | CREATE TABLE | CREATE VIEW | DELETE | DROP CLUSTER | DROP TABLE | DROP VIEW | INSERT | RENAME | SELECT | UPDATE cration Crer d'un index
http://wwwsi.supelec.fr/~yb/poly_bd/node191.html (2 of 4) [19.07.2000 15:40:05]

Index

suppression Supprimer un index intersection Oprateurs relationnels jointure Oprateurs relationnels projection Oprateurs relationnels relation Dfinitions restriction Oprateurs relationnels schma de relation Dfinitions systme de gestion de bases de donnes dfinition Les limites l'utilisation relationnel Dfinitions table chgt de nom Renommer une table cration Crer une table destruction Supprimer une table modification Modifier d'une table transaction introduction union Oprateurs relationnels vue chgt de nom Renommer une vue cration Crer une vue

http://wwwsi.supelec.fr/~yb/poly_bd/node191.html (3 of 4) [19.07.2000 15:40:05]

Index

suppression Supprimer une vue Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node191.html (4 of 4) [19.07.2000 15:40:05]

Interroger simplement une base

next

up

previous

contents

index

Next: Slection de colonnes ou Up: SQL : interroger une Previous: introduction

Interroger simplement une base


q q

Slection de colonnes ou projection Slection de lignes ou restriction


r r r

Expression simple Prdicat simple Prdicats composs

q q

Valeurs NULL Nom de colonne

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node50.html [19.07.2000 15:40:05]

Slection de colonnes ou projection

next

up

previous

contents

index

Next: Slection de lignes ou Up: Interroger simplement une base Previous: Interroger simplement une base

Slection de colonnes ou projection


La commande select le plus simple a la syntaxe suivante : SELECT * FROM nom_table ;Dans laquelle : q nom_table : est le nom de la table sur laquelle porte la slection. q * : signifie que toutes les colonnes de la table sont slectionnes. Par dfaut toutes les lignes sont slectionnes. On peut limiter la slection certaines colonnes, en indiquant une liste de noms de colonnes la place de l'astrisque. SELECT nom_col1, nom_col2, ... FROM nom_table ; Exemple 10165 Donner le nom et la fonction de chaque employ. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom, fonction FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM La clause DISTINCT ajoute derrire la commande select permet d'liminer les duplications. Exemple 10166 Quelles sont toutes les fonctions diffrentes. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT DISTINCT fonction FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node51.html [19.07.2000 15:40:05]

Slection de lignes ou restriction

next

up

previous

contents

index

Next: Expression simple Up: Interroger simplement une base Previous: Slection de colonnes ou

Slection de lignes ou restriction


La clause WHERE permet de spcifier quelles sont les lignes slectionner. Elle est suivie d'un prdicat qui sera valu pour chaque ligne de la table. Les lignes pour lesquelles le prdicat est vrai seront slectionnes. La syntaxe est la suivante : SELECT * FROM nom_table WHERE predicat ;Un prdicat n'est ni plus ni moins que la faon dont on exprime une proprit. Les prdicats, qu'ils soient simples ou composs, sont constitus partir d'expressions que l'on compare entre elles.
q q q

Expression simple Prdicat simple Prdicats composs

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node52.html [19.07.2000 15:40:06]

Expression simple

next

up

previous

contents

index

Next: Prdicat simple Up: Slection de lignes ou Previous: Slection de lignes ou

Expression simple
Une expression simple peut tre : q une variable dsigne par un nom de colonne, q une constante. Les expressions peuvent tre de trois types : numrique, chane de caractres ou date. A chacun de ces types correspond un format de constante : q [Constante numrique] nombre contenant ventuellement un signe, un point dcimal et une puissance de dix. Ex : -10, 2.5, 1.2 E-10 q [Constante chane de caractres] une chane de caractres entre apostrophes. Ex :'MARTIN' (Attention, une lettre en majuscules n'est pas considre comme gale la mme lettre en minuscule). q [Constante date] une chane de caractres entre apostrophes au format suivant : jour-mois-anne o le jour est sur deux chiffres, le mois est dsign par les trois premires lettres de son nom en anglais, l'anne est sur deux chiffres. Ex : '01-FEB-85' On peut, en sql, exprimer des expressions plus complexes en utilisant des oprateurs et des fonctions tudis ici.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node53.html [19.07.2000 15:40:06]

Prdicat simple

next

up

previous

contents

index

Next: Prdicats composs Up: Slection de lignes ou Previous: Expression simple

Prdicat simple
Un prdicat simple est le rsultat de la comparaison de deux expressions au moyen d'un oprateur de comparaison qui peut tre : [>=] q [=] gal q [!=] diffrent q [<] infrieur q [<=] infrieur ou gal q [>] suprieur q [>=] suprieur ou gal Les trois types d'expressions peuvent tre compars au moyen de ces oprateurs : q Pour les types date, la relation d'ordre est l'ordre chronologique. q Pour les types caractre, la relation d'ordre est l'ordre alphabtique. Il faut ajouter ces oprateurs arithmtiques classiques les oprateurs suivants : q [expr1 BERTWEEN expr2 AND expr3] vrai si expr1 est compris entre expr2 et expr3, bornes incluses q [expr1 IN (expr2, expr3, ...)] vrai si expr1 est gale l'une des expressions de la liste entre parenthses q [expr LIKE chaine] o chaine est une chane de caractres pouvant contenir l'un des caractres jokers : ['%'] [_] remplace exactement 1 caractre [%] remplace une chane de caractres de longueur quelconque, y compris de longueur nulle.

r r

Exemple 10174 Quels sont les employs dont la commission est suprieure au salaire? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, salaire, comm FROM emp WHERE comm > salaire; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10175 Quels sont les employs gagnant entre 20000 et 25000?
http://wwwsi.supelec.fr/~yb/poly_bd/node54.html (1 of 2) [19.07.2000 15:40:07]

Prdicat simple

FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, salaire FROM emp WHERE salaire BETWEEN 20000 AND 25000; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10176 Quels sont les employs commerciaux ou ingnieurs? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT num, nom, fonction, salaire FROM emp WHERE fonction IN ('commercial','ingenieur'); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10177 Quels sont les employs dont le nom commence par M? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom FROM emp WHERE nom LIKE 'M/TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Prdicats composs Up: Slection de lignes ou Previous: Expression simple Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node54.html (2 of 2) [19.07.2000 15:40:07]

Prdicats composs

next

up

previous

contents

index

Next: Valeurs NULL Up: Slection de lignes ou Previous: Prdicat simple

Prdicats composs
Les oprateurs logiques AND (et) et OR (ou inclusif) peuvent tre utiliss pour combiner entre eux plusieurs prdicats. L'oprateur NOT plac devant un prdicat en inverse le sens. L'oprateur AND est prioritaire par rapport l'oprateur OR. Des parenthses peuvent tre utilises pour imposer une priorit dans l'valuation du prdicat, ou simplement pour rendre plus claire l'expression logique. Exemple 10178 Quels sont les employs du dpartement 30 ayant un salaire suprieur 25000? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT nom FROM emp WHERE n_dept = 30 AND salaire > 25000; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10179 Quels sont les employs directeurs, ou commerciaux et travaillant dans le dpartement 10? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, fonction, salaire, n_dept FROM emp WHERE fonction = 'directeur' OR (fonction = 'commercial' AND n_dept = 10); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM La requte prcdente donnerait le mme rsultat sans les parenthses, rsultat diffrent de celui du select suivant. Exemple 10180 Quels sont les employs directeurs ou commerciaux, et travaillant dans le dpartement 10? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT num, nom, fonction, n_dept FROM emp WHERE (fonction='directeur' OR fonction = 'commercial') AND n_dept = 10; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Valeurs NULL Up: Slection de lignes ou Previous: Prdicat simple Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node55.html [19.07.2000 15:40:07]

Valeurs NULL

next

up

previous

contents

index

Next: Nom de colonne Up: Interroger simplement une base Previous: Prdicats composs

Valeurs NULL
Pour sql, une valeur NULL est une valeur non dfinie. Il est possible d'ajouter une ligne une table sans spcifier de valeur pour les colonnes non obligatoires : ces colonnes absentes auront la valeur NULL. Par exemple les employs dont la rmunration ne prend pas en compte de commission auront une valeur NULL, c'est--dire indfinie, comme commission. L'oprateur IS NULL permet de tester la valeur NULL : le prdicat expr IS NULL est vrai si l'expression a la valeur NULL (c'est--dire si elle est indfinie). Exemple 10181 Quels sont les employs dont la commission a la valeur NULL? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom FROM emp WHERE comm IS NULL; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM L'oprateur IS NOT NULL permet de construire un prdicat vrai si la valeur n'est pas NULL (et donc le prdicat expr IS NOT NULL est vrai si expr est dfinie) Remarques q Le prdicat expr = NULL est toujours faux, et ne permet donc pas de tester si l'expression a la valeur NULL. q La valeur NULL est diffrente de la valeur zro qui, elle, qui est une valeur bien dfinie. q Une expression de la forme NULL + val donne NULL comme rsultat quelle que puisse tre la valeur de val.
next up previous contents index

Next: Nom de colonne Up: Interroger simplement une base Previous: Prdicats composs Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node56.html [19.07.2000 15:40:08]

Nom de colonne

next

up

previous

contents

index

Next: Classer le rsultat d'une Up: Interroger simplement une base Previous: Valeurs NULL

Nom de colonne
Les colonnes constituant le rsultat d'un select peuvent tre renommes dans le select , ceci est utile en particulier lorsque la colonne rsultat est une expression. Pour cela, il suffit de faire suivre l'expression dfinissant la colonne d'un nom, selon les rgles suivantes : q le nom (30 charactres maximum) est insr derrire l'expression dfinissant la colonne, spar de cette dernire par un espace. q si le nom contient des sparateurs (espace, caractre spcial), ou s'il est identique un mot cl de sql (ex : DATE), il doit tre mis entre guillemets "". Ce nom est celui sous lequel la colonne sera connue des interfaces externes. Sous SQLPLUS, par exemple, il constituera le titre par dfaut de la colonne, et servira de rfrence pour dfinir un format pour la colonne. Exemple 10182 Salaire de chaque employ. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom, salaire "SALAIRE MENSUEL" FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarque : Attention, ce nom n'est pas connu l'intrieur du select .

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node57.html [19.07.2000 15:40:12]

Classer le rsultat d'une interrogation

next

up

previous

contents

index

Next: les jointures Up: SQL : interroger une Previous: Nom de colonne

Classer le rsultat d'une interrogation


Les lignes constituant le rsultat d'un select sont obtenues dans un ordre indtermin. On peut, dans un select , demander que le rsultat soit class dans un ordre ascendant ou descendant, en fonction du contenu d'une ou plusieurs colonnes (jusqu' 16 critres de classement possibles). Les critres de classement sont spcifis dans une clause ORDER BY dont la syntaxe est la suivante : ORDER BY {nom_col1 | num_col1 [DESC] [, nom_col2 | num_col2 [DESC],...]}Le classement se fait d'abord selon la premire colonne spcifie dans l'ORDER BY puis les lignes ayant la mme valeur dans la premire colonne sont classes selon la deuxime colonne de l'ORDER BY, etc... Pour chaque colonne, le classement peut tre ascendant (par dfaut) ou descendant (DESC). L'ORDER BY peut faire rfrence une colonne par son nom ou par sa position dans la liste des colonnes prsentes derrire le select (la premire colonne slectionne a le numro 1, la deuxime a le numro 2, ...). Exemple 10183 Donner tous les employs classs par fonction, et pour chaque fonction classs par salaire dcroissant FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, fonction, salaire FROM emp ORDER BY fonction, salaire DESC; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarque : Dans un classement les valeurs NULL sont toujours en tte quel que soit l'ordre du classement (ascendant ou descendant).
next up previous contents index

Next: les jointures Up: SQL : interroger une Previous: Nom de colonne Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node58.html [19.07.2000 15:40:17]

les jointures

next

up

previous

contents

index

Next: Equi-jointure Up: SQL : interroger une Previous: Classer le rsultat d'une

les jointures
La jointure est une opration permettant de combiner des informations venant de plusieurs tables. Les exemples suivants se limiteront deux tables, mais on peut joindre jusqu' 256 tables. Une jointure se formule simplement en spcifiant plusieurs tables derrire le FROM de la faon suivante : SELECT ... FROM nom_table1, nom_table2... WHERE predicat;Si on ne prcise pas de condition de slection, le rsultat obtenu sera le produit cartsien des tables prsentes derrire le FROM (rsultat non souhait en gnral). Il n'existe pas d'associations implicites ou explicites entre les tables dans sql. Les associations entre les tables sont dfinies dynamiquement lors des interrogations, ce qui contribue la grande souplesse du langage sql et rend possible toute association mme si elle n'a pas t prvue lors de la dfinition et du chargement de la base.

q q q q

Equi-jointure Jointure d'une table elle-mme Autres jointures Jointure externe

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node59.html [19.07.2000 15:40:17]

Equi-jointure

next

up

previous

contents

index

Next: Jointure d'une table Up: les jointures Previous: les jointures

Equi-jointure
Le rapprochement de chaque ligne de la table emp avec la ligne de la table dept ayant mme numro de dpartement permet d'obtenir la liste des employs avec la localit dans laquelle ils travaillent. Ce rapprochement entre deux colonnes appartenant deux tables diffrentes mais ayant le mme sens (ici le numro de dpartement) et venant vraisemblablement d'une relation 1-n lors de la conception (ici 1 entit dpartement pour n entits employs) est assez naturel. C'est pourquoi ce type de jointure porte le nom de jointure naturelle ou d'qui-jointure. Exemple 10184 Donner pour chaque employ son nom et son lieu de travail. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT emp.nom, lieu FROM emp, dept WHERE emp.n_dept = dept.n_dept; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Le fait que la colonne contenant le numro de dpartement ait le mme nom dans les deux tables a rendu ncessaire le prfixage par le nom de table dans le critre de jointure (clause WHERE). Le nom de colonne nom a lui aussi besoin d'tre prfix car il appartient aux deux tables (nom de la personne dans l'une et nom du dpartement dans l'autre). Par contre le nom de colonne loc n'a pas besoin d'tre prfix car il n'y a pas d'ambigut sur la table laquelle cette colonne appartient.
next up previous contents index

Next: Jointure d'une table Up: les jointures Previous: les jointures Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node60.html [19.07.2000 15:40:18]

Jointure d'une table elle-mme

next

up

previous

contents

index

Next: Autres jointures Up: les jointures Previous: Equi-jointure

Jointure d'une table elle-mme


Il peut tre utile de rassembler des informations venant d'une ligne d'une table avec des informations venant d'une autre ligne de la mme table. Exemple 10185 Donner pour chaque employ le nom de son suprieur hirarchique. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT emp.nom, mgr.nom FROM emp, emp mgr WHERE emp.n_sup= mgr.num; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarque : Dans ce cas, il faut imprativement renommer au moins l'une des deux occurences de la table (ici emp) en lui donnant un synonyme, afin de pouvoir prfixer sans ambiguit chaque nom de colonne.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node61.html [19.07.2000 15:40:20]

Autres jointures

next

up

previous

contents

index

Next: Jointure externe Up: les jointures Previous: Jointure d'une table

Autres jointures
Le critre d'galit est le critre de jointure le plus naturel. Mais on peut utiliser d'autres types de comparaisons comme critres de jointures. Exemple 10186 Quels sont les employs gagnant plus que SIMON? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT emp.nom, emp.salaire, emp.fonction FROM emp, emp j WHERE emp.salaire > j.salaire AND J.nom = 'SIMON'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node62.html [19.07.2000 15:40:20]

Jointure externe

next

up

previous

contents

index

Next: Les oprateurs ensemblistes Up: les jointures Previous: Autres jointures

Jointure externe
Lorsqu'une ligne d'une table figurant dans une jointure n'a pas de correspondant dans les autres tables, elle ne satisfait pas au critre d'qui-jointure et donc ne figure pas dans le rsultat de la jointure. Une option permet de faire figurer dans le rsultat les lignes satisfaisant la condition d'qui-jointure plus celles n'ayant pas de correspondant. Cette option s'obtient en accolant (+) au nom de colonne de la table dans laquelle manquent des lments, dans la condition d'qui-jointure. Exemple 10187 Le dpartement 40 ne figurait pas dans le rsultat du select prcdent. Par contre, il figurera dans le rsultat du select suivant. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT emp.nom, lieu FROM emp, dept WHERE emp.n_dept(+) = dept.n_dept; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Le (+) peut s'interprter comme l'ajout d'une ligne fictive dont toutes les colonnes ont la valeur NULL, et qui ralise la correspondance avec les lignes de l'autre table qui n'ont pas de correspondant rel. Dans l'exemple ci-dessus, la valeur de nom associe au dpartement 40 est la valeur NULL. Exemple 10188 Retrouver les dpartements n'ayant aucun employ. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT dept.n_dept, emp.nom FROM emp,dept WHERE dept.n_dept = emp.n_dept (+) AND emp.nom IS NULL; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Les oprateurs ensemblistes Up: les jointures Previous: Autres jointures Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node63.html [19.07.2000 15:40:21]

Les oprateurs ensemblistes

next

up

previous

contents

index

Next: Les sous-interrogations Up: SQL : interroger une Previous: Jointure externe

Les oprateurs ensemblistes


Les oprateurs ensemblistes permettent de ``joindre'' des tables verticalement c'est--dire de combiner dans un rsultat unique des lignes provenant de deux interrogations. Les lignes peuvent venir de tables diffrentes mais aprs projection on doit obtenir des tables ayant mme schma de relation. Les oprateurs ensemblistes sont les suivants : q l'union : UNION [union]UNION q l'intersection : INTERSECT [intersect]INTERSECT q la diffrence relationnelle : MINUS [minus]MINUS La syntaxe d'utilisation est la mme pour ces trois oprateurs : SELECT ... {UNION | INTERSECT | MINUS } SELECT ...Dans une requte utilisant des oprateurs ensemblistes : q Tous les select doivent avoir le mme nombre de colonnes slectionnes, et leur types doivent tre un un identiques. Les conversions ventuelles doivent tre faites l'intrieur du select l'aide des fonctions de conversion. q Les doubles sont limins (DISTINCT implicite). q Les noms de colonnes (titres) sont ceux du premier select . q la largeur des colonnes est la plus grande parmi tous les select . q Dans une requte on ne peut trouver qu'un seul ORDER BY. S'il est prsent, il doit tre mis dans le dernier select et il ne peut faire rfrence qu'aux numros des colonnes et non pas leurs noms (car les noms peuvent tre diffrents dans chacune des interrogations). L'on peut combiner le rsultat de plus de deux select au moyen des oprateurs UNION, INTERSECT, MINUS. SELECT ... UNION SELECT ... MINUS SELECT ...Dans ce cas l'expresion est value de gauche droite, mais on peut modifier l'ordre d'valuation en utilisant des parenthses. SELECT ... UNION (SELECT ... MINUS SELECT ...)
next up previous contents index

Next: Les sous-interrogations Up: SQL : interroger une Previous: Jointure externe Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node64.html [19.07.2000 15:40:21]

Les sous-interrogations

next

up

previous

contents

index

Next: Sous-interrogation ramenant une seule Up: SQL : interroger une Previous: Les oprateurs ensemblistes

Les sous-interrogations
Une caractristique puissante de sql est la possibilit qu'un critre de recherche employ dans une clause WHERE (expression droite d'un oprateur de comparaison) soit lui-mme le rsultat d'un select ; c'est ce qu'on appelle une sous-interrogation.

q q q q q q

Sous-interrogation ramenant une seule valeur Sous-interrogation ramenant plusieurs lignes Sous-interrogation ramenant plusieurs colonnes Sous-interrogation synchronise avec l'interrogation principale Sous-interrogation ramenant au moins une ligne Sous-interrogations multiples

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node65.html [19.07.2000 15:40:22]

Sous-interrogation ramenant une seule valeur

next

up

previous

contents

index

Next: Sous-interrogation ramenant plusieurs lignes Up: Les sous-interrogations Previous: Les sous-interrogations

Sous-interrogation ramenant une seule valeur


Exemple 10189 Quels sont les employs ayant la mme fonction que codd? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT nom FROM emp WHERE fonction = (SELECT fonction FROM emp WHERE nom ='CODD'); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarques q une sous-interrogation qui ne ramne aucune ligne se termine avec un code d'erreur. q une sous-interrogation ramenant plusieurs lignes provoquera aussi, dans ce cas, une erreur (pour traiter correctement ce cas, voir paragraphe ci-dessous) Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node66.html [19.07.2000 15:40:22]

Sous-interrogation ramenant plusieurs lignes

next

up

previous

contents

index

Next: Sous-interrogation ramenant plusieurs colonnes Up: Les sous-interrogations Previous: Sous-interrogation ramenant une seule

Sous-interrogation ramenant plusieurs lignes


Une sous-interrogation peut ramener plusieurs lignes condition que l'oprateur de comparaison admette sa droite un ensemble de valeurs. Les oprateurs permettant de comparer une valeur un ensemble de valeurs sont : q l'oprateur IN q les oprateurs obtenus en ajoutant ANY ou ALL la suite d'un oprateur de comparaison classique (=, !=, >, >=, <, <=) r ANY: la comparaison est vraie si elle est vraie pour au moins un des lments de l'ensemble. r ALL: la comparaison sera vraie si elle est vraie pour tous les lments de l'ensemble. Exemple 10196 Quels sont les employs gagnant plus que tous les employs du dpartement 30. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT nom, salaire FROM emp WHERE salaire > ALL (SELECT salaire FROM emp WHERE n_dept = 20); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node67.html [19.07.2000 15:40:24]

Sous-interrogation ramenant plusieurs colonnes

next

up

previous

contents

index

Next: Sous-interrogation synchronise avec l'interrogation Up: Les sous-interrogations Previous: Sous-interrogation ramenant plusieurs lignes

Sous-interrogation ramenant plusieurs colonnes


Il est possible de comparer le rsultat d'un select ramenant plusieurs colonnes une liste de colonnes. La liste de colonnes figurera entre parenthses gauche de l'oprateur de comparaison. Exemple 10197 Quels sont les employs ayant mme fonction et mme suprieur que CODD? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT nom, fonction, n_sup FROM emp WHERE (fonction, n_sup) = (SELECT fonction, n_sup FROM emp WHERE nom = 'CODD'); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node68.html [19.07.2000 15:40:24]

Sous-interrogation synchronise avec l'interrogation principale

next

up

previous

contents

index

Next: Sous-interrogation ramenant au moins Up: Les sous-interrogations Previous: Sous-interrogation ramenant plusieurs colonnes

Sous-interrogation synchronise avec l'interrogation principale


Dans les exemples prcdents, la sous-interrogation tait value d'abord, puis le rsultat pouvait tre utilis pour excuter l'interrogation principale. sql sait galement traiter une sous-interrogation faisant rfrence une colonne de la table de l'interrogation principale. Le traitement dans ce cas est plus complexe car il faut valuer la sous-interrogation pour chaque ligne de l'interrogation principale. Exemple 10198 Quels sont les employs ne travaillant pas dans le mme dpartement que leur suprieur hirarchique. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=6 COLS=50 SELECT nom FROM emp e WHERE n_dept != (SELECT n_dept FROM emp WHERE e.n_sup = num) AND n_sup IS NOT NULL; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Il a fallu ici renommer la table emp de l'interrogation principale pour pouvoir la rfrencer dans la sous-interrogation. n_sup IS NOT NULL est ncessaire car dans le cas de JOUBERT la colonne n_sup est NULL et la sous-requte ne ramne alors aucune valeur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node69.html [19.07.2000 15:40:25]

Sous-interrogation ramenant au moins une ligne

next

up

previous

contents

index

Next: Sous-interrogations multiples Up: Les sous-interrogations Previous: Sous-interrogation synchronise avec l'interrogation

Sous-interrogation ramenant au moins une ligne


L'oprateur EXISTS permet de construire un prdicat vrai si la sous-interrogation qui suit ramne au moins une ligne. Exemple 10199 Quels sont les employs travaillant dans un dpartement qui a procd des embauches depuis le dbut de l'anne 94. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=6 COLS=50 SELECT * FROM emp e WHERE EXISTS (SELECT * FROM emp WHERE embauche >= '01-jan-94' AND n_dept = e.n_dept); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarque : On peut inverser le sens de l'oprateur EXISTS en le faisant prcder de NOT.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node70.html [19.07.2000 15:40:25]

Sous-interrogations multiples

next

up

previous

contents

index

Next: Les expressions et fonctions Up: Les sous-interrogations Previous: Sous-interrogation ramenant au moins

Sous-interrogations multiples
Un select peut comporter plusieurs sous-interrogations, soit imbriques, soit au mme niveau dans diffrents prdicats combins par des AND ou des OR. Exemple 10200 Liste des employs du dpartement 10 ayant mme fonction que quelqu'un du dpartement de DUPONT. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=8 COLS=50 SELECT nom, fonction FROM emp WHERE n_dept = 10 AND fonction IN (SELECT fonction FROM emp WHERE n_dept = (SELECT n_dept FROM emp WHERE nom = 'DUPONT')); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node71.html [19.07.2000 15:40:25]

Les expressions et fonctions

next

up

previous

contents

index

Next: Expressions et fonctions arithmtiques Up: SQL : interroger une Previous: Sous-interrogations multiples

Les expressions et fonctions


Une expression est un ensemble de variables (contenu d'une colonne), de constantes et de fonctions combines au moyen d'oprateurs. Les fonctions prennent une valeur dpendant de leurs arguments qui peuvent tre eux-mmes des expressions. Les expressions peuvent figurer : q en tant que colonne rsultat d'un select , q dans une clause WHERE, q dans une clause ORDER BY. Il existe trois types d'expressions correspondant chacun un type de donnes de sql : arithmtique, chane de caractre, date. A chaque type correspondent des oprateurs et des fonctions spcifiques. sql autorise les mlanges de types dans les expressions et effectuera les conversions ncessaires : dans une expression mlangeant dates et chanes de caractres, les chanes de caractres seront converties en dates, dans une expression mlangeant nombres et chanes de caractres, les chanes de caractres seront converties en nombre.

Expressions et fonctions arithmtiques


r

Oprateurs arithmtiques
s

Priorit des oprateurs

r q

Fonctions arithmtiques Oprateur sur les chanes de caractres Fonctions sur les chanes de caractres Oprateurs sur les dates Fonctions sur les dates

Expressions et fonctions sur les chanes de caractres


r r

Expressions et fonctions sur les dates


r r

q q

Fonctions de conversion Autres fonctions

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node72.html [19.07.2000 15:40:26]

Expressions et fonctions arithmtiques

next

up

previous

contents

index

Next: Oprateurs arithmtiques Up: Les expressions et fonctions Previous: Les expressions et fonctions

Expressions et fonctions arithmtiques


Une expression arithmtique peut contenir : q des noms de colonnes q des constantes q des fonctions arithmtiques combins au moyen des oprateurs arithmtiques.

Oprateurs arithmtiques
r

Priorit des oprateurs

Fonctions arithmtiques

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node73.html [19.07.2000 15:40:26]

Oprateurs arithmtiques

next

up

previous

contents

index

Next: Priorit des oprateurs Up: Expressions et fonctions arithmtiques Previous: Expressions et fonctions arithmtiques

Oprateurs arithmtiques
Les oprateurs arithmtiques prsents dans sql sont les suivants : q + addition ou + unaire q - soustraction ou - unaire q * multiplication q / division Remarque : la division par 0 provoque une fin avec code d'erreur.
q

Priorit des oprateurs

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node74.html [19.07.2000 15:40:27]

Priorit des oprateurs

next

up

previous

contents

index

Next: Fonctions arithmtiques Up: Oprateurs arithmtiques Previous: Oprateurs arithmtiques

Priorit des oprateurs Une expression arithmtique peut comporter plusieurs oprateurs. Dans ce cas, le rsultat de l'expression peut varier selon l'ordre dans lequel sont effectues les oprations. Les oprateurs de multiplication et de division sont prioritaires par rapport aux oprateurs d'addition et de soustraction. Des parenthses peuvent tre utilises pour forcer l'valuation de l'expression dans un ordre diffrent de celui dcoulant de la priorit des oprateurs. Exemple 10201 Donner pour chaque commercial son revenu (salaire + commission). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, salaire+comm FROM emp WHERE fonction = 'commercial'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10202 Donner la liste des commerciaux classe par commission sur salaire dcroissant. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT nom, comm/salaire, comm, salaire FROM emp WHERE fonction = 'commercial' ORDER BY comm/salaire DESC; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10203 Donner la liste des employs dont la commission est infrieure 5% du salaire. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT nom, salaire, comm FROM emp WHERE comm <= salaire *.05; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Fonctions arithmtiques Up: Oprateurs arithmtiques Previous: Oprateurs arithmtiques Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node75.html [19.07.2000 15:40:27]

Fonctions arithmtiques

next

up

previous

contents

index

Next: Expressions et fonctions sur Up: Expressions et fonctions arithmtiques Previous: Priorit des oprateurs

Fonctions arithmtiques
Dans ce paragraphe, ont t regroupes les fonctions ayant un ou plusieurs nombres comme arguments, et renvoyant une valeur numrique. [ROUND(n ,m )] [ABS(nb)] [abs]ABS fct Renvoie la valeur absolue de nb. [CEIL(nb)] [ceil]CEIL fct Renvoie le plus petit entier suprieur ou gal nb. [COS(n)] [cos]COS fct Renvoie le cosinus de n, n tant un angle exprim en radians. [COSH(n)] [cosh]COSH fct Renvoie le cosinus hyperbolique de n. [EXP(n)] [exp]EXP fct Renvoie e puissance n. [FLOOR(nb)] [floor]FLOOR fct Renvoie le plus grand entier infrieur ou gal nb. [LN(n)] [ln]LN fct Renvoie le logarithme nprien de n qui doit tre un entier strictement positif. [LOG(m,n)] [log]LOG fct Renvoie le logarithme en base m de n. m doit tre un entier strictement suprieur 1, et n un entier strictement positif. [MOD(m,n)] [mod]MOD fct Renvoie le reste de la division entire de m par n, si n vaut 0 alors renvoie m. Attention, utilise avec au moins un de ses arguments ngatifs, cette fonction donne des rsultats qui peuvent tre diffrents d'un modulo classique. Cette fonction ne donne pas toujours un rsultat dont le signe du diviseur. [POWER(m,n)] [power]POWER fct Renvoie m puissance n, m et n peuvent tre des nombres quelconques entiers ou rls mais si m est ngatif n doit tre un entier. [ROUND(n[,m])] [round]ROUND fct Si m est positif, renvoie n arrondi (et non pas tronqu) m chiffres aprs la virgule. Si m est ngatif, renvoie n arrondi m chiffres avant la virgule. m doit tre un entier et il vaut 0 par dfaut. [SIGN(nb)] [sign]SIGN fct renvoie -1 si nb est ngatif, 0 si nb est nul, 1 si nb est positif. [SIN(n)] [sin]SIN fct Renvoie le sinus de n, n tant un angle exprim en radians. [SINH(n)] [sinh]SINH fct Renvoie le sinus hyperbolique de n. [SQRT(nb)] [sqrt]SQRT fct Renvoie la racine carre de nb qui doit tre un entier positif ou nul. [TAN(n)] [tan]TAN fct Renvoie la tangente de n, n tant un angle exprim en radians. [TANH(n)] [tanh]tanh fct Renvoie la tangente hyperbolique de n. [TRUNC(n[,m])] [trunc]TRUNC fct Si m est positif, renvoie n arrondi tronqu m chiffres aprs la virgule. Si m est ngatif, renvoie ntronqu m chiffres avant la virgule. m doit tre un entier et il vaut 0 par dfaut.

q q q q q q q

q q q q q q q

Exemple 10204 Donner pour chaque employ son salaire journalier.

http://wwwsi.supelec.fr/~yb/poly_bd/node76.html (1 of 2) [19.07.2000 15:40:28]

Fonctions arithmtiques

FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom, ROUND(salaire/22,2) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Expressions et fonctions sur Up: Expressions et fonctions arithmtiques Previous: Priorit des oprateurs Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node76.html (2 of 2) [19.07.2000 15:40:28]

Expressions et fonctions sur les chanes de caractres

next

up

previous

contents

index

Next: Oprateur sur les chanes Up: Les expressions et fonctions Previous: Fonctions arithmtiques

Expressions et fonctions sur les chanes de caractres

q q

Oprateur sur les chanes de caractres Fonctions sur les chanes de caractres

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node77.html [19.07.2000 15:40:28]

Oprateur sur les chanes de caractres

next

up

previous

contents

index

Next: Fonctions sur les chanes Up: Expressions et fonctions sur Previous: Expressions et fonctions sur

Oprateur sur les chanes de caractres


Il existe un seul oprateur sur les chanes de caractres : la concatnation. Cet oprateur se note au moyen de deux caractres (barre verticale) accols. Le rsultat d'une concatnation est une chane de caractres obtenue en crivant d'abord la chane gauche de puis celle droite de . FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom || '/' || fonction FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node78.html [19.07.2000 15:40:28]

Fonctions sur les chanes de caractres

next

up

previous

contents

index

Next: Expressions et fonctions sur Up: Expressions et fonctions sur Previous: Oprateur sur les chanes

Fonctions sur les chanes de caractres


Le paragraphe suivant contient les fonctions travaillant sur les chanes de caractres et renvoyant des chanes de caractres. q [CONCAT(chane1,chane2)] [concat]CONCAT fct Renvoie la chane obtenue en concatnant chane1 chane2. Cette fonction est quivalente l'oprateur de concatnation . q [INITCAP(chane)] [initcap]INITCAP fct Renvoie chane en ayant mis la premire lettre de chaque mot en majuscule et toutes les autres en minuscule. Les sparateurs de mots sont les espaces et les caractres non alphanumriques. q [LOWER(chane)] [lower]LOWER fct Renvoie chane en ayant mis toutes ses lettres en minuscules. q [LPAD(chane,long,[char])] [lpad]LPAD fct Renvoie la chane obtenue en compltant, ou en tronquant, chane pour qu'elle ait comme longueur long en ajoutant ventuellement gauche le caractre (ou la chane de caractres) char. La valeur par dfaut de char est un espace. q [LTRIM(chane[,ens])] [ltrim]LTRIM fct Renvoie la chane obtenue en parcourant partir de la gauche chane et en supprimant tous les caractres qui sont dans ens. On s'arrte quand on trouve un caractre qui n'est pas dans ens. La valeur de defaut de ens est un espace. q [REPLACE(chaine,avant,aprs] [replace]REPLACE fct Renvoie chaine dans laquelle toutes les occurrences de la chane de caractres avant ont t remplacs par la chane de caractresaprs. q [RPAD(chane,n,[char])] [rpad]RPAD fct Renvoie la chane obtenue en compltant, ou en tronquant, chane pour qu'elle ait comme longueur long en ajoutant ventuellement droite le caractre (ou la chane de caractres) char. La valeur par dfaut de char est un espace. q [RTRIM(chane[,ens])] [rtrim]RTRIM fct Renvoie la chane obtenue en parcourant partir de la droite chane et en supprimant tous les caractres qui sont dans ens. On s'arrte quand on trouve un caractre qui n'est pas dans ens. La valeur de defaut de ens est un espace. q [SOUNDEX(chane)] [soundex]SOUNDEX fct Renvoie la chane de caratres constitue de la reprsentation phontique des mots de chane. q [SUBSTR(chane,m[,n])] [substr]SUBSTR fct Renvoie la partie de chane commenant au caractre m et ayant une longueur de n. q [TRANSLATE(chane, avant, aprs)] [translate]TRANSLATE fct Renvoie une chane de caratres en remplaant chaque caratre de chane prsent dans avant par le caractre situ la mme position dans aprs. Les caratres de chane non prsents dans avant ne sont pas modifis. avant peut contenir plus de caractres que apres, dans ce cas les caratres de avant sans correspondants dans apres seront supprims de chane .
http://wwwsi.supelec.fr/~yb/poly_bd/node79.html (1 of 2) [19.07.2000 15:40:32]

Fonctions sur les chanes de caractres

[UPPER(chane)] [upper]UPPER fct Renvoie chane en ayant mis toutes ses lettres en majuscules.

Le paragraphe suivant contient les fonctions travaillant sur les chanes de caractres et renvoyant des entiers. q [INSTR(chane, sous-chane, debut, occ)] [instr]INSTR fct Renvoie la position du premier caractre de chane correspondant l'occurence occ de sous-chane en commenant la recherche la position dbut. q [LENGTH(chane)] [length]LENGTH fct renvoie la longueur de chane, exprime en nombre de caractres.
next up previous contents index

Next: Expressions et fonctions sur Up: Expressions et fonctions sur Previous: Oprateur sur les chanes Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node79.html (2 of 2) [19.07.2000 15:40:32]

Expressions et fonctions sur les dates

next

up

previous

contents

index

Next: Oprateurs sur les dates Up: Les expressions et fonctions Previous: Fonctions sur les chanes

Expressions et fonctions sur les dates

q q

Oprateurs sur les dates Fonctions sur les dates

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node80.html [19.07.2000 15:40:32]

Oprateurs sur les dates

next

up

previous

contents

index

Next: Fonctions sur les dates Up: Expressions et fonctions sur Previous: Expressions et fonctions sur

Oprateurs sur les dates


Au moyen des oprateurs arithmtiques + et - il est possible de construire les expressions suivantes : q date +/- nombre : le resultat est une date obtenue en ajoutant le nombre de jours nombre la date date. q date2 - date1 : le resultat est le nombre de jours entre les deux dates. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node81.html [19.07.2000 15:40:33]

Fonctions sur les dates

next

up

previous

contents

index

Next: Fonctions de conversion Up: Expressions et fonctions sur Previous: Oprateurs sur les dates

Fonctions sur les dates


q

[ADD_MONTHS(date,n)] [add_months]ADD_MONTHS fct Renvoie la date obtenue en ajoutant n mois date. n peut tre un entier quelconque. Si le mois obtenu a moins de jours que le jour de date, le jour obtenu est le dernier du mois. [LAST_DAY(date)] [last_day]LAST_DAY fct Renvoie la date du dernier jour du mois de date. [MONTHS_BETWEEN(date2, date1)] [months_between]MONTHS_BETWEEN fct Renvoie le nombre de mois entre date2 et date1, si date2 est aprs date1 le rsultat est positif, sinon le rsultat est ngatif. Si les jours date2 et date1 sont les mmes, ou si ce sont les derniers jours du mois, le rsultat est un entier. La partie fractionnaire est calcule en considrant chaque jour comme 1/31me de mois [NEXT_DAY(date,nom_du_jour)] [next_day]NEXT_DAY fct Renvoie la date du prochain jour de la semaine dont le nom est nom_de_jour. [ROUND(date[,prcision])] [round]ROUND fct Renvoie date arrondie l'unit spcifie dans prcision. L'unit de prcision est indique en utilisant un des masques de mise en forme de la date. On peut ainsi arrondir une date l'anne, au mois, la minute,... Par dfaut la prcision est le jour. [SYSDATE] [sysdate]SYSDATE fct Renvoie la date et l'heure courantes du systme d'exploitation hote. [TRUNC(date[,prcision])] [trunc]TRUNC fct Renvoie date tronque l'unit spcifie dans prcision. Les paramtres sont analogues ceux de la fonction ROUND.

Exemple 10205 Donner la date du lundi suivant l'embauche de chaque employ. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT NEXT_DAY (embauche,'MONDAY') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10206 Donner la date date d'embauche de chaque employ arrondie l'anne. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT ROUND (embauche,'Y') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10207

http://wwwsi.supelec.fr/~yb/poly_bd/node82.html (1 of 2) [19.07.2000 15:40:33]

Fonctions sur les dates

Donner pour chauqe employ le nombre de jours depuis son embauche. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT ROUND (SYSDATE-embauche) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Fonctions de conversion Up: Expressions et fonctions sur Previous: Oprateurs sur les dates Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node82.html (2 of 2) [19.07.2000 15:40:33]

Fonctions de conversion

next

up

previous

contents

index

Next: Autres fonctions Up: Les expressions et fonctions Previous: Fonctions sur les dates

Fonctions de conversion
q q

[ASCII(chaine)] [ascii]ASCII fct Renvoie le nombre correspondant au code ascii du premier caractre de chaine. [CHR(nombre)] [chr]CHR fct Renvoie le caractre dont nombre est le code ascii. [TO_CHAR(nombre,format)] [to_char]TO_CHAR fct Renvoie la chane de caratres en obtenue en convertissant nombre en fonction de format. format est une chane de caractres pouvant contenir les caractres suivants : [EEEE] r [9] reprsente un chiffre (non reprsent si non significatif) r [0] reprsente un chiffre (reprsent mme si non significatif) r [.] point dcimal apparent r [V] dfinit la position du point dcimal non apparent r [,] une virgule apparaitra cet endroit r [$] un $ prcdera le premier chiffre significatif r [B] le nombre sera reprsent par des blancs s'il vaut 0 r [EEEE] le nombre sera reprsent avec un exposant (le spcifier avantMI ou PR) r [MI] le signe ngatif sera droite r [PR] un nombre ngatif sera entre <> [TO_CHAR(date,format)] [to_char]TO_CHAR fct Renvoie conversion d'une date en chane de caractres. Le format indique quelle partie de la date doit apparatre, c'est une combinaison des codes suivants : [hh ou hh12] [scc] sicle avec signe [cc] sicle [sy,yyy] anne (avec signe et virgule) [y,yyy] anne( avec virgule) [yyyy] anne [yyy] 3 derniers chiffres de l'anne [yy] 2 derniers chiffres de l'anne [y] dernier chiffre de l'anne [q] numro du trimestre dans l'anne [ww] numro de la semaine dans l'anne [w] numro de la semaine dans le mois [mm] numro du mois

r r r r r r r r r r r r

http://wwwsi.supelec.fr/~yb/poly_bd/node83.html (1 of 3) [19.07.2000 15:40:35]

Fonctions de conversion

[ddd] numro du jour dans l'anne r [dd] numro du jour dans le mois r [d] numro du jour dans la semaine r [hh ou hh12] heure (sur 12 heures) r [hh24] heure sur 24 heures r [mi] minutes r [ss] secondes r [sssss] secondes aprs minuit r [j] jour du calendrier julien Les formats suivants permettent d'obtenir des dates en lettres ( en anglais) :
r

[syear ou year] r [syear ou year] anne en toutes lettres r [month] nom du mois r [mon] nom du mois abrg sur 3 lettres r [day] nom du jour r [dy] nom du jour abrg sur 3 lettres r [am ou pm] indication am ou pm r [bc ou ad] indication avant ou aprs jesus christ Les suffixes suivants modifient la prsentation du nombre auquel ils sont accols : r [th] ajout du suffixe ordinat st, nd, rd, th r [sp] nombre en toutes lettres Tout caractre spcial insr dans le format sera reproduit tel quel dans la chane de caractres rsultat. q [TO_DATE(chane,format)] [to_date]TO_DATE fct Permet de convertir une chane de caracteres en donne de type date. Le format est identique celui de la fonction TO_CHAR. q [TO_NUMBER(chaine)] [to_number]TO_NUMBER fct Convertit chaine en sa valeur numrique. Remarque : on peut galement inserer dans le format une chane de caractres quelconque, condition de la placer entre guillemets("). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT TO_CHAR (embauche,'DD/MM/YY HH24:MI:SS') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT INSTR(fonction,'a',1,2) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10209 Donner la liste de tous les employs dont le nom ressemble DUPONT. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3
http://wwwsi.supelec.fr/~yb/poly_bd/node83.html (2 of 3) [19.07.2000 15:40:35]

Fonctions de conversion

COLS=50 SELECT nom FROM emp WHERE SOUNDEX(nom) = SOUNDEX('DUPONT'); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10210 Donner la liste de tous les noms des employs en ayant supprim tous les 'L' et les 'E' en tte des noms. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT LTRIM(nom,'LE') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10211 Donner la liste de tous les noms des employs en ayant remplac les A et les M par des * dans les noms. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT TRANSLATE (nom,'AM','**') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10212 Afficher tous les salaires avec un $ en tte et au moins trois chiffres ( dont deux dcimales). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT TO_CHAR (salaire,'99900.00') FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Autres fonctions Up: Les expressions et fonctions Previous: Fonctions sur les dates Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node83.html (3 of 3) [19.07.2000 15:40:35]

Autres fonctions

next

up

previous

contents

index

Next: Les fonctions de groupe Up: Les expressions et fonctions Previous: Fonctions de conversion

Autres fonctions
q

[GREATEST(expr1, expr2,...)] [greatest]GREATEST fct Renvoie la plus grande des valeurs expr1, expr2,.... Toutes les expressions sont converties au format de expr1 avant comparaison. [LEAST] [least]LEAST fct Renvoie la plus petite des valeurs expr1, expr2,.... Toutes les expressions sont converties au format de expr1 avant comparaison. [NVL(expr_1, expr_2)] [nvl]NVLl fct Prend la valeur expr_1, sauf si expr_1 est NULL auquel cas NVL prend la valeur expr_2. Une valeur NULL en sql est une valeur non dfinie. Lorsque l'un des termes d'une expression a la valeur NULL, l'expression entire prend la valeur NULL. D'autre part, un prdicat comportant une comparaison avec une expression ayant la valeur NULL prendra toujours la valeur faux. La fonction NVL permet de remplacer une valeur NULL par une valeur significative. [DECODE(crit, val_1, res_1 [, val_2, res_2 ...], def)] [decode]DECODE fct Cette fonction permet de choisir une valeur parmi une liste d'expressions, en fonction de la valeur prise par une expression servant de critre de slection. Le rsultat rcupr est : r res_1 si l'expression crit a la valeur val_1 r res_2 si l'expression crit a la valeur val_2 r def (la valeur par dfaut) si l'expression crit n'est gale aucune des expressions val_1, val_2,...,. Les expressions rsultats res_1, res_2, ..., def peuvent tre de types diffrents : caractre et numrique, ou caractre et date (le rsultat est du type de la premire expression rencontr dans le DECODE). La fonction DECODE permet galement de mlanger dans une colonne rsultat des informations venant de plusieurs colonnes d'une mme table.

Exemple 10213 Donner pour chaque employ ses revenus (salaire + commission). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom, salaire, comm, salaire+NVL(comm,0) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10214

http://wwwsi.supelec.fr/~yb/poly_bd/node84.html (1 of 2) [19.07.2000 15:40:35]

Autres fonctions

Donner la liste des employs avec pour chacun d'eux sa catgorie (prsident = 1, directeur = 2, autre = 3) FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT nom, DECODE(fonction,'president',1,'directeur',2,3) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10215 Donner la liste des employs en les identifiant par leur fonction dans le dpartement 10 et par leur nom dans les autres dpartements. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=2 COLS=50 SELECT DECODE (n_dept,10,fonction,nom) FROM emp; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Les fonctions de groupe Up: Les expressions et fonctions Previous: Fonctions de conversion Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node84.html (2 of 2) [19.07.2000 15:40:35]

Les fonctions de groupe

next

up

previous

contents

index

Next: Les fonctions de groupe Up: SQL : interroger une Previous: Autres fonctions

Les fonctions de groupe


q q q q q

Les fonctions de groupe Valeurs NULL Calcul sur plusieurs groupes Slection des groupes Fonction de groupe deux niveaux

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node85.html [19.07.2000 15:40:36]

Les fonctions de groupe

next

up

previous

contents

index

Next: Valeurs NULL Up: Les fonctions de groupe Previous: Les fonctions de groupe

Les fonctions de groupe


Dans les exemples prcedents, chaque ligne rsultat d'un select tait le rsultat de calculs sur les valeurs d'une seule ligne de la table consulte. Il existe un autre type de select qui permet d'effectuer des calculs sur l'ensemble des valeurs d'une colonne. Ces calculs sur l'ensemble des valeurs d'une colonne se font au moyen de l'une des fonctions suivantes : q [AVG([DISTINCT | ALL] expression)] [avg]AVG fct Renvoie la moyenne des valeurs d'expression. q [COUNT(* | [DISTINCT | ALL] expression)] [count]COUNT fct Renvoie le nombre de lignes du rsultat de la requte. Si expression est prsent, on ne compte que les lignes pour lesquelles cette expression n'est pas NULL. q [MAX([DISTINCT | ALL] expression)] [max]MAX fct Renvoie la plus petite des valeurs d'expression. q [MIN([DISTINCT | ALL] expression)] [min]MIN fct Renvoie la plus grande des valeurs d'expression. q [STDDEV([DISTINCT | ALL] expression)] [stddev]STDDEV fct Renvoie l'cart-type des valeurs d'expression. q [SUM([DISTINCT | ALL] expression)] [sum]SUM fct somme des valeurs q [VARIANCE([DISTINCT | ALL] expression)] [variance]VARIANCE fct Renvoie la variance des valeurs d'expression. q [DISTINCT] Indique la fonction de groupe de ne prendre en compte que des valeurs distinctes. q [ALL] Indique la fonction de groupe de prendre en compte toutes les valeurs, c'est la valeur par dfaut. Exemple 10216 Donner le total des salaires du dpartement 10. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT SUM(salaire) FROM emp WHERE n_dept = 10; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Exemple 10217 Donner le nom, la fonction et le salaire de l'employ (ou des employs) ayant le salaire le plus lev. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4
http://wwwsi.supelec.fr/~yb/poly_bd/node86.html (1 of 2) [19.07.2000 15:40:36]

Les fonctions de groupe

COLS=50 SELECT nom, fonction, salaire FROM emp WHERE salaire = (SELECT MAX(salaire) FROM emp); /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarques q Ces select sont diffrents de ceux vus prcdemment. Il est, par exemple, impossible de demander en rsultat la fois une colonne et une fonction de groupe. q un select comportant une fonction de groupe peut tre utilis dans une sous-interrogation.
next up previous contents index

Next: Valeurs NULL Up: Les fonctions de groupe Previous: Les fonctions de groupe Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node86.html (2 of 2) [19.07.2000 15:40:36]

Valeurs NULL

next

up

previous

contents

index

Next: Calcul sur plusieurs groupes Up: Les fonctions de groupe Previous: Les fonctions de groupe

Valeurs NULL
Aucune des fonctions de groupe ne tient compte des valeurs NULL l'exception de count(*). Ainsi, SUM(col) est la somme des valeurs non NULL de la colonne col. De mme AVG est la somme des valeurs non NULL divise par le nombre de valeurs non NULL.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node87.html [19.07.2000 15:40:37]

Calcul sur plusieurs groupes

next

up

previous

contents

index

Next: Slection des groupes Up: Les fonctions de groupe Previous: Valeurs NULL

Calcul sur plusieurs groupes


Il est possible de subdiviser la table en groupes, chaque groupe tant l'ensemble des lignes ayant une valeur commune. C'est la clause GROUP BY qui permet de dcouper la table en plusieurs groupes : GROUP BY expr_1, expr_2, ...Si on a une seule expression, ceci dfinit les groupes comme les ensembles de lignes pour lesquelles cette expression prend la mme valeur. Si plusieurs expressions sont prsentes les groupes sont dfinis de la faon suivante : parmi toutes les lignes pour lesquelles expr_1 prend la mme valeur, on regroupe celles ayant expr_2 identique, ... Un select de groupe avec une clause GROUP BY donnera une ligne rsultat pour chaque groupe. Exemple 10218 Total des salaires pour chaque dpartement FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT SUM(salaire), n_dept FROM emp GROUP BY n_dept; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORMRemarque : Dans la liste des colonnes rsultat d'un select comportant une fonction de groupe, ne peuvent figurer que des caractristiques de groupe, c'est--dire : q soit des fonctions de groupe ; q soit des expressions figurant dans le GROUP BY.
next up previous contents index

Next: Slection des groupes Up: Les fonctions de groupe Previous: Valeurs NULL Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node88.html [19.07.2000 15:40:37]

Slection des groupes

next

up

previous

contents

index

Next: Fonction de groupe Up: Les fonctions de groupe Previous: Calcul sur plusieurs groupes

Slection des groupes


[having]HAVING De la mme faon qu'il est possible de slectionner certaines lignes au moyen de la clause WHERE, il est possible dans un select comportant une fonction de groupe de slectionner par la clause HAVING, qui se place aprs la clause GROUP BY. Le prdicat dans la clause HAVING suit les mmes rgles de syntaxe qu'un prdicat figurant dans une clause WHERE. Cependant, il ne peut porter que sur des caractristiques du groupe : fonction de groupe ou expression figurant dans la clause GROUP BY, dans ce cas la clause HAVING doit tre place aprs la clause GROUP BY. Exemple 10219 Donner la liste des salaires moyens par fonction pour les groupes ayant plus de deux employs. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT fonction,COUNT(*),AVG(salaire) FROM emp GROUP BY fonction HAVING COUNT(*) > 2; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Un select de groupe peut contenir la fois une clause WHERE et une clause HAVING. La clause WHERE sera d'abord applique pour slectionner les lignes, puis les groupes seront constitus partir des lignes slectionnes, et les fonctions de groupe seront values. Exemple 10220 Donner le nombre d'ingnieurs ou de commerciaux des dpartements ayant au moins deux employs de ces catgories. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT n_dept, COUNT(*) FROM emp WHERE fonction in ('ingenieur','commercial') GROUP BY n_dept HAVING COUNT(*) >= 2; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Une clause HAVING peut comporter une sous-interrogation. Exemple 10221 Quel est le dpartement ayant le plus d'employs? FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=6 COLS=50 SELECT n_dept,COUNT(*) FROM emp GROUP BY n_dept HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM emp GROUP BY n_dept) ; /TEXTAREA p INPUT
http://wwwsi.supelec.fr/~yb/poly_bd/node89.html (1 of 2) [19.07.2000 15:40:38]

Slection des groupes

TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM


next up previous contents index

Next: Fonction de groupe Up: Les fonctions de groupe Previous: Calcul sur plusieurs groupes Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node89.html (2 of 2) [19.07.2000 15:40:38]

Fonction de groupe deux niveaux

next

up

previous

contents

index

Next: Le traitement des structures Up: Les fonctions de groupe Previous: Slection des groupes

Fonction de groupe deux niveaux


Il est possible d'appliquer au rsultat d'un select avec GROUP BY un deuxime niveau de fonction de groupe. Exemple 10222 la fonction MAX peut tre applique aux nombres d'employs de chaque dpartement pour obtenir le nombre d'employs du dpartement ayant le plus d'employs. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=3 COLS=50 SELECT MAX(COUNT(*)) FROM emp GROUP BY n_dept ; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node90.html [19.07.2000 15:40:38]

Le traitement des structures d'arbre

next

up

previous

contents

index

Next: Parcours d'un arbre Up: SQL : interroger une Previous: Fonction de groupe

Le traitement des structures d'arbre


Il est possible de reprsenter selon le modle relationnel des listes ou des structures d'arbre. Pour cela, il suffit d'introduire dans la relation un attribut reprsentant un lien vers l'lment suivant ou le prdcesseur dans la liste ou l'arbre : Relation(cl, ... , cl du prdcesseur)C'est le cas dans la table emp o chaque ligne contient un ``pointeur'' vers le suprieur hirarchique : (n_sup). Chaque employ a un seul suprieur hirarchique. Par contre, un employ peut tre le suprieur hirarchique de plusieurs employs. Le lien n_sup dfinit donc une structure d'arbre.

q q q

Parcours d'un arbre Niveau : LEVEL Slection de lignes


r r

Clause WHERE Clause CONNECT BY Boucle Niveaux Jointure

Restrictions
r r r

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node91.html [19.07.2000 15:40:39]

Parcours d'un arbre

next

up

previous

contents

index

Next: Niveau : LEVEL Up: Le traitement des structures Previous: Le traitement des structures

Parcours d'un arbre


En utilisant la cl num et le lien vers le suprieur hirarchique n_sup, il est possible de parcourir l'arbre hirarchique implicitement dcrit par la table emp. sql permet d'obtenir comme rsultat d'un select les lignes dans l'ordre de parcours de l'arbre (ou de la liste). Pour cela il faut : q dfinir comment se fait le lien entre une ligne et la prcdente, en indiquant la colonne cl et la colonne lien dans une clause CONNECT BY [connect]CONNECT BY: CONNECT BY nom_col_1 = PRIOR nom_col_2Le mot cl PRIOR [prior]PRIOR, accol l'une ou l'autre des colonnes, dfinit le sens du parcours. q dfinir un (ou plusieurs) point de dpart, par une clause START WITH [start with]START WITH place aprs la clause CONNECT BY. Un arbre (ou une liste) sera construit partir de chaque ligne rpondant au prdicat. En l'absence de clause START WITH, un arbre sera construit partir de chaque ligne. Exemple 10223 Quels sont toutes les personnes dont CODD est le suprieur hirarchique (CODD compris). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT nom, num, fonction, n_sup FROM emp CONNECT BY n_sup = PRIOR num START WITH nom = 'CODD'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM
next up previous contents index

Next: Niveau : LEVEL Up: Le traitement des structures Previous: Le traitement des structures Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node92.html [19.07.2000 15:40:39]

Niveau : LEVEL

next

up

previous

contents

index

Next: Slection de lignes Up: Le traitement des structures Previous: Parcours d'un arbre

Niveau : LEVEL
[level]LEVEl Il est possible d'obtenir pour chaque ligne le niveau correspondant dans l'arbre ou dans la liste, la premire ligne slectionne tant de niveau 1. Ce niveau s'obtient dans la variable LEVEL, que l'on peut utiliser dans le select comme rsultat. Cette variable peut aussi tre prsente dans un prdicat. Exemple 10224 Donner la liste des subordonns de JOUBERT, avec pour chacun d'eux son niveau. FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=4 COLS=50 SELECT LEVEL, num, nom, fonction, n_sup, n_dept FROM emp CONNECT BY n_sup = PRIOR num START WITH nom = 'JOUBERT'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node93.html [19.07.2000 15:40:40]

Slection de lignes

next

up

previous

contents

index

Next: Clause WHERE Up: Le traitement des structures Previous: Niveau : LEVEL

Slection de lignes

q q

Clause WHERE Clause CONNECT BY

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node94.html [19.07.2000 15:40:41]

Clause WHERE

next

up

previous

contents

index

Next: Clause CONNECT BY Up: Slection de lignes Previous: Slection de lignes

Clause WHERE
Le prdicat de la clause WHERE permet d'liminer certaines lignes. Mais le parcours de l'arbre n'est pas interrompu lorsqu'une ligne ne rpondant pas au prdicat est rencontre. Exemple 10225 Quels sont toutes les personnes dont JOUBERT est le suprieur hirarchique (JOUBERT compris et CODD non compris). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT num, nom, fonction, n_sup, n_dept FROM emp WHERE nom != 'CODD' CONNECT BY n_sup = PRIOR num START WITH nom = 'JOUBERT'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM SIMON ne figure pas dans le rsultat , mais tous ses subordonns y figurent.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node95.html [19.07.2000 15:40:42]

Clause CONNECT BY

next

up

previous

contents

index

Next: Restrictions Up: Slection de lignes Previous: Clause WHERE

Clause CONNECT

BY

Il est possible de rajouter des conditions dans le CONNECT BY. Lorsque le prdicat du CONNECT BY n'est plus satisfait, le parcours de l'arbre s'arrte. Exemple 10226 Quels sont toutes les personnes dont JOUBERT est le suprieur hirarchique (JOUBERT compris et CODD et ses subordonns non compris). FORM ACTION="/htbin/poly.com" METHOD=GET TEXTAREA NAME="query" ROWS=5 COLS=50 SELECT num, nom, fonction, n_sup, n_dept FROM emp CONNECT BY n_sup = PRIOR num AND nom !='CODD' START WITH nom = 'JOUBERT'; /TEXTAREA p INPUT TYPE="submit" VALUE="Excuter la Requte" INPUT TYPE="reset" VALUE="Rinitialiser" /FORM Dans la requte prcdente, nom !='CODD' n'tait pas un des prdicats du CONNECT BY alors qu'ici il l'est.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node96.html [19.07.2000 15:40:42]

Restrictions

next

up

previous

contents

index

Next: Boucle Up: Le traitement des structures Previous: Clause CONNECT BY

Restrictions

q q q

Boucle Niveaux Jointure

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node97.html [19.07.2000 15:40:42]

Boucle

next

up

previous

contents

index

Next: Niveaux Up: Restrictions Previous: Restrictions

Boucle
sql dtecte les boucles dans les CONNECT BY. Le select est interrompu avec un code d'erreur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node98.html [19.07.2000 15:40:43]

Niveaux

next

up

previous

contents

index

Next: Jointure Up: Restrictions Previous: Boucle

Niveaux
Le parcours descendant d'un arbre ncessite, lorsqu'on a atteint l'extrmit d'une branche, de remonter jusqu'au noeud le plus proche pour parcourir la branche suivante. Le nombre de niveaux qu'il est ainsi possible de remonter est limit 256.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node99.html [19.07.2000 15:40:43]

Jointure

next

up

previous

contents

index

Next: SQL : modifier une Up: Restrictions Previous: Niveaux

Jointure
Un select avec clause CONNECT BY ne doit pas tre une jointure.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node100.html [19.07.2000 15:40:52]

SQL : modifier une base

next

up

previous

contents

index

Next: Ajout de lignes Up: Le langage sql Previous: Jointure

SQL : modifier une base


Le langage de manipulation de donnes est le langage permettant de modifier les informations contenues dans une base de donnes. L'unit manipule est la ligne. Il existe trois commandes sql permettant d'effectuer les trois types de modifications des donnes : ajout, modification et suppression.

q q q q

Ajout de lignes Modification de lignes Suppression de lignes Gestion des transactions

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node101.html [19.07.2000 15:40:54]

Ajout de lignes

next

up

previous

contents

index

Next: Modification de lignes Up: SQL : modifier une Previous: SQL : modifier une

Ajout de lignes
[insert]INSERT La commande INSERT permet d'insrer une ligne dans une table en spcifiant les valeurs insrer. La syntaxe est la suivante : INSERT INTO nom_table(nom_col1, nom_col2, ...) VALUES (val1, val2...) La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par dfaut la liste de l'ensemble des colonnes de la table dans l'ordre de la cration de la table. Si une liste de colonnes est spcifie, les colonnes ne figurant pas dans la liste auront la valeur NULL. Il est possible d'insrer dans une table des lignes provenant d'une autre table. La syntaxe est la suivante : INSERT INTO nom_table(nom_col1, nom_col2, ...) SELECT ...Le select peut contenir n'importe quelle clause sauf un ORDER BY qui impliquerait un classement des lignes contraire l'esprit du relationnel. Exemple 10227 Insrer dans la table bonus les noms et salaires des directeurs. INSERT INTO bonus SELECT nom, salaire FROM emp WHERE fonction = 'directeur'; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node102.html [19.07.2000 15:40:58]

Modification de lignes

next

up

previous

contents

index

Next: Suppression de lignes Up: SQL : modifier une Previous: Ajout de lignes

Modification de lignes
[update]update La commande update permet de modifier les valeurs d'une ou plusieurs colonnes, dans une ou plusieurs lignes existantes d'une table. La syntaxe est la suivante : UPDATE nom_table SET nom_col1 = {expression1 | ( SELECT ...) }, nom_col2 = {expression2 | ( SELECT ...) } WHERE predicatLes valeurs des colonnes nom_col1, nom_col2, ... sont modifies dans toutes les lignes satisfaisant au prdicat. En l'absence d'une clause WHERE, toutes les lignes sont mises jour. Les expressions expression1, expression2,... peuvent faire rfrence aux anciennes valeurs de la ligne. Exemple 10228 Augmenter de 10% les ingnieurs. UPDATE emp SET salaire = salaire * 1.1 WHERE fonction = 'ingenieur' ;

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node103.html [19.07.2000 15:41:03]

Suppression de lignes

next

up

previous

contents

index

Next: Gestion des transactions Up: SQL : modifier une Previous: Modification de lignes

Suppression de lignes
[delete]DELETE La commande DELETE permet de supprimer des lignes d'une table. La syntaxe est la suivante : DELETE FROM nom_table WHERE prdicat ;Toutes les lignes pour lesquelles prdicat est valu vrai sont supprimes. En l'absence de clause WHERE, toutes les lignes de la table sont supprimes.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node104.html [19.07.2000 15:41:03]

Gestion des transactions

next

up

previous

contents

index

Next: SQL : dfinir une Up: SQL : modifier une Previous: Suppression de lignes

Gestion des transactions


Une transaction est un ensemble de modifications de la base qui forme un tout indivisible. Il faut effectuer ces modifications entirement ou pas du tout, sous peine de laisser la base dans un tat incohrent. Les Systmes de Gestion de Bases de Donnes permettent aux utilisateurs de grer leurs transactions. Ils peuvent tout moment : q valider la transaction en cours par la commande COMMIT. Les modifications deviennent dfinitives et visibles tous les utilisateurs. [commit]COMMIT q annuler la transaction en cours par la commande ROLLBACK. Toutes les modifications depuis le dbut de la transaction sont alors dfaites. [rollback]ROLLBACK En cours de transaction, seul l'utilisateur ayant effectu les modifications les voit. Ce mcanisme est utilis par les systmes de gestion de bases de donnes pour assurer l'intgrit de la base en cas de fin anormale d'une tche utilisateur : il y a automatiquement ROLLBACK des transactions non termines. oracle est un systme transactionnel qui assure la cohrence des donnes en cas de mise jour de la base, mme si plusieurs utilisateurs lisent ou modifient les mmes donnes simultanment. oracle utilise un mcanisme de verrouillage pour empcher deux utilisateurs d'effectuer des transactions incompatibles et rgler les problmes pouvant survenir. oracle permet le verrouillage de certaines units (table ou ligne) automatiquement ou sur demande de l'utilisateur. Les verrous sont librs en fin de transaction.
next up previous contents index

Next: SQL : dfinir une Up: SQL : modifier une Previous: Suppression de lignes Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node105.html [19.07.2000 15:41:04]

SQL : dfinir une base

next

up

previous

contents

index

Next: Les tables Up: Le langage sql Previous: Gestion des transactions

SQL : dfinir une base


Le langage de dfinition des donnes est le langage permettant de crer ou de modifier le schma d'une relation et donc d'une table. Il permet de crer, de modifier et de supprimer non seulement les tables, mais aussi les vues, les index et les clusters.

Les tables
r

Crer une table


s s s

Cration simple Cration avec Insertion de donnes Les types de donnes

r r

Contraintes d'intgrit Modifier d'une table


s s

Ajouter une colonne Modifier une colonne

r r q

Supprimer une table Renommer une table Crer une vue Supprimer une vue Renommer une vue Crer d'un index Supprimer un index
s

Les vues
r r r

Les index
r r

Structure d'un index

Les clusters
r r

Crer un cluster Mise en cluster d'une table


s s

Lors de la cration de la table Table dj existante

Retrait d'une table d'un cluster

http://wwwsi.supelec.fr/~yb/poly_bd/node106.html (1 of 2) [19.07.2000 15:41:04]

SQL : dfinir une base

Supprimer un cluster

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node106.html (2 of 2) [19.07.2000 15:41:04]

Les tables

next

up

previous

contents

index

Next: Crer une table Up: SQL : dfinir une Previous: SQL : dfinir une

Les tables
q

Crer une table


r r r

Cration simple Cration avec Insertion de donnes Les types de donnes

q q

Contraintes d'intgrit Modifier d'une table


r r

Ajouter une colonne Modifier une colonne

q q

Supprimer une table Renommer une table

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node107.html [19.07.2000 15:41:04]

Crer une table

next

up

previous

contents

index

Next: Cration simple Up: Les tables Previous: Les tables

Crer une table


[create table]CREATE TABLE La table est la structure de base contenant les donnes des utilisateurs. Quand on cre une table, on peut spcifier les informations suivantes : q la dfinition des colonnes, q les contraintes d'intgrit, q La tablespace contenant la table, q les caractristiques de stockage, q le cluster contenant la table, q les donnes rsultant d'une ventuelle requte.

q q q

Cration simple Cration avec Insertion de donnes Les types de donnes

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node108.html [19.07.2000 15:41:05]

Contraintes d'intgrit

next

up

previous

contents

index

Next: Modifier d'une table Up: Les tables Previous: Les types de donnes

Contraintes d'intgrit
A la cration d'une table, les contraintes d'intgrit se dclarent de la faon suivante : CREATE TABLE nom_table ( nom_col_1 type_1, nom_col_2 type_2, ... nom_col_n type_n CONSTRAINT [nom_contrainte_1] contrainte_1, CONSTRAINT [nom_contrainte_2] contrainte_2, ... CONSTRAINT [nom_contrainte_m] contrainte_m ); Ou bien de la faon suivante : CREATE TABLE nom_table ( nom_col_1 type_1 CONSTRAINT [nom_contrainte_1_1] contrainte_1_1 CONSTRAINT [nom_contrainte_1_2] contrainte_1_2 ... CONSTRAINT [nom_contrainte_1_m] contrainte_1_m, nom_col_2 type_2 CONSTRAINT [nom_contrainte_2_1] contrainte_2_1 CONSTRAINT [nom_contrainte_2_2] contrainte_2_2 ... CONSTRAINT [nom_contrainte_2_p] contrainte_2_p, ... nom_col_n type_n CONSTRAINT [nom_contrainte_n_1] contrainte_n_1 CONSTRAINT [nom_contraint_n_2] contrainte_n_2 ... CONSTRAINT [nom_contrainte_n_q] contrainte_n_q );Les contraintes diffrentes que l'on peut dclarer sont les suivantes : q [NOT NULL ] La colonne ne peut pas contenir de valeurs NULL. q [UNIQUE ] Chaque ligne de la table doit avoir une valeur diffrente ou NULL pour cette (ou ces) colonne. q [PRIMARY KEY ] Chaque ligne de la table doit avoir une valeur diffrente pour cette (ou ces) colonne. les valeurs NULL sont rejetes. q [FOREIGN KEY ] Cette colonne fait rfrence une colonne cl d'une autre table. q [CHECK ] Permet de spcifier les valeurs acceptables pour une colonne. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node112.html [19.07.2000 15:41:05]

Modifier d'une table

next

up

previous

contents

index

Next: Ajouter une colonne Up: Les tables Previous: Contraintes d'intgrit

Modifier d'une table


[alter table]ALTER TABLE On peut modifier dynamiquement la dfinition d'une table grace a la commande prgALTER TABLE. Deux types de modifications sont possibles : ajout d'une colonne et modification d'une colonne existante. Il n'est pas possible de supprimer une colonne. Par contre une colonne qui n'est plus utilise peut tre mise la valeur NULL, auquel cas elle n'occupe plus d'espace disque. Si on dsire vraiment supprimer une colonne, il faut : q se crer une nouvelle table sans la colonne en question q dtruire l'ancienne table, q donner la nouvelle table le nom de l'ancienne.

q q

Ajouter une colonne Modifier une colonne

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node113.html [19.07.2000 15:41:06]

Supprimer une table

next

up

previous

contents

index

Next: Renommer une table Up: Les tables Previous: Modifier une colonne

Supprimer une table


[drop table]drop table La commande DROP TABLE permet de supprimer une table, sa syntaxe est la suivante : DROP TABLE nom_table ;La table nom_table est alors supprime. La dfinition de la table ainsi que son contenu sont dtruits, et l'espace occup par la table est libr.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node116.html [19.07.2000 15:41:06]

Renommer une table

next

up

previous

contents

index

Next: Les vues Up: Les tables Previous: Supprimer une table

Renommer une table


[rename]RENAME On a la possibilit de changer le nom d'une table par la commande RENAME, la syntaxe est la suivante : RENAME ancien_nom TO nouveau_nom ; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node117.html [19.07.2000 15:41:06]

Les vues

next

up

previous

contents

index

Next: Crer une vue Up: SQL : dfinir une Previous: Renommer une table

Les vues
Les vues permettent d'assurer l'objectif d'indpendance logique. Grace elles, chaque utilisateur pourra avoir sa vision propre des donnes. On a vu que le rsultat d'un select est lui-mme une table. Une telle table, qui n'existe pas dans la base mais est cre dynamiquement lors de l'excution du select , peut tre vue comme une table relle par les utilisateurs. Pour cela, il suffit de cataloguer le select en tant que vue. Les utilisateurs pourront consulter la base, ou modifier la base (avec certaines restrictions) travers la vue, c'est--dire manipuler la table rsultat du select comme si c'tait une table relle.

q q q

Crer une vue Supprimer une vue Renommer une vue

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node118.html [19.07.2000 15:41:07]

Crer une vue

next

up

previous

contents

index

Next: Supprimer une vue Up: Les vues Previous: Les vues

Crer une vue


[create view]create view La commande CREATE view permet de crer une vue en spcifiant le select constituant la dfinition de la vue : CREATE VIEW nom_vue [(nom_col1,...)] AS SELECT ... WITH CHECK OPTION ;La spcification des noms de colonnes de la vue est facultative. Par dfaut, les noms des colonnes de la vue sont les mmes que les noms des colonnes rsultat du select (si certaines colonnes rsultat du select sont des expressions, il faut renommer ces colonnes dans le select , ou spcifier les noms de colonne de la vue). Une fois cre, une vue s'utilise comme une table. Il n'y a pas de duplication des informations mais stockage de la dfinition de la vue. Exemple 10232 Cration d'une vue constituant une restriction de la table emp aux employs du departement 10. CREATE VIEW emp10 AS SELECT * FROM emp WHERE n_dept = 10 ;Le CHECK OPTION permet de vrifier que la mise jour ou l'insertion faite travers la vue ne produisent que des lignes qui font partie de la slection de la vue. Ainsi donc, si la vue emp10 a t cre avec CHECK OPTION on ne pourra travers cette vue ni modifier, ni insrer des employs ne faisant pas partie du dpartement 10. Il est possible d'effectuer des INSERT et des update travers des vues, sous deux conditions :
q q

le select dfinissant la vue ne doit pas comporter de jointure, les colonnes rsultat du select doivent tre des colonnes relles et non pas des expressions.

Exemple 10233 Modification des salaires du dpartement 10 travers la vue emp10. UPDATE emp10 SET sal = sal *1.1;Toutes les lignes de la table emp, telles que le contenu de la colonne n_dept est gal 10 seront modifies.
next up previous contents index

Next: Supprimer une vue Up: Les vues Previous: Les vues Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node119.html [19.07.2000 15:41:10]

Supprimer une vue

next

up

previous

contents

index

Next: Renommer une vue Up: Les vues Previous: Crer une vue

Supprimer une vue


[drop view]drop view Une vue peut tre dtruite par la commande : DROP VIEW nom_vue; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node120.html [19.07.2000 15:41:10]

Renommer une vue

next

up

previous

contents

index

Next: Les index Up: Les vues Previous: Supprimer une vue

Renommer une vue


On peut renommer une vue par la commande : RENAME ancien_nom TO nouveau_nom; Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node121.html [19.07.2000 15:41:11]

Les index

next

up

previous

contents

index

Next: Crer d'un index Up: SQL : dfinir une Previous: Renommer une vue

Les index
q q

Crer d'un index Supprimer un index


r

Structure d'un index

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node122.html [19.07.2000 15:41:11]

Crer d'un index

next

up

previous

contents

index

Next: Supprimer un index Up: Les index Previous: Les index

Crer d'un index


[create index]create index Un index peut tre cr par la commande suivante : CREATE [UNIQUE] INDEX nom_index ON nom_table (nom_col1 , nom_col2, ...) [PCTFREE nombre] [COMPRESS | NOCOMPRESS] [ROWS = nombre_lignes] ;dans laquelle : q L'option UNIQUE indique que l'on interdit que deux lignes aient la mme valeur dans la colonne indexe. q PCTFREE prcise le pourcentage de place laisse libre dans les blocs d'index la cration de l'index. Cette place libre vitera une rorganisation de l'index des les premires insertions de nouvelles cls. La valeur par dfaut est 20% . q NOCOMPRESS indique que l'on ne veut pas comprimer les cls. q nombre_lignes est une estimation du nombre de lignes, permettant d'optimiser l'algorithme de classement.. Un index peut tre cr dynamiquement sur une table contenant dj des lignes. Il sera ensuite tenu jour automatiquement lors des modifications de la table. Un index peut porter sur plusieurs colonnes, la cl d'accs sera alors la concatnation des diffrentes colonnes. On peut crer plusieurs index indpendants sur une mme table. Les requtes sql sont transparentes au fait qu'il existe un index ou non. C'est l'optimiseur du systme de gestion de bases de donnes qui, au moment de l'excution de chaque requte, recherche s'il peut s'aider ou non d'un index.
next up previous contents index

Next: Supprimer un index Up: Les index Previous: Les index Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node123.html [19.07.2000 15:41:11]

Supprimer un index

next

up

previous

contents

index

Next: Structure d'un index Up: Les index Previous: Crer d'un index

Supprimer un index
[drop index]drop index Un index peut tre supprim dynamiquement par la commande : DROP INDEX nom_index;L'espace libr reste attach au segment d'index de la table : il pourra tre utilis pour un autre index sur la mme table. L'espace ne sera rendu la partition que lors de la suppression de la table.

Structure d'un index

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node124.html [19.07.2000 15:41:13]

Les clusters

next

up

previous

contents

index

Next: Crer un cluster Up: SQL : dfinir une Previous: Structure d'un index

Les clusters
q q

Crer un cluster Mise en cluster d'une table


r r

Lors de la cration de la table Table dj existante

q q

Retrait d'une table d'un cluster Supprimer un cluster

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node126.html [19.07.2000 15:41:14]

Crer un cluster

next

up

previous

contents

index

Next: Mise en cluster d'une Up: Les clusters Previous: Les clusters

Crer un cluster
[create cluster]create cluster Avant de pouvoir mettre en cluster une ou plusieurs tables il faut crer le cluster au moyen de la commande CREATECLUSTER dont la syntaxe est la suivante : CREATE CLUSTER nom_cluster (cle1 type1, cle2 type2, ...)o l'on donne un nom au cluster, et o l'on dfinit le nom et le type des colonnes constituant la cl du cluster. CREATE CLUSTER nom_cluster (cle1 type1, cle2 type2, ...) [SIZE taille_du_bloc] [COMPRESS | NOCOMPRESS] [SPACE nom_de_space_definition]dans laquelle : q [SIZE ] est la taille d'un bloc de cluster. Cette taille peut varier de 1/6 de bloc oracle 1 bloc oracle (2k octets sur vax/vms), ce paramtre doit tre choisi de faon avoir un bon remplissage des blocs. q [COMPRESS NOCOMPRESS ] est relatif l'index qui sera cre sur la cl du cluster q [SPACE ] spcifie le SPACE DEFINITION qui dfinira les paramtres d'allocation d'espace pour le cluster. CREATE CLUSTER DEM (DEPNO NUMBER) SIZE 512 Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node127.html [19.07.2000 15:41:14]

Mise en cluster d'une table

next

up

previous

contents

index

Next: Lors de la cration Up: Les clusters Previous: Crer un cluster

Mise en cluster d'une table


En principe c'est ds sa cration qu'il faut spcifier si une table sera implante dans un cluster.

q q

Lors de la cration de la table Table dj existante

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node128.html [19.07.2000 15:41:15]

Retrait d'une table d'un cluster

next

up

previous

contents

index

Next: Supprimer un cluster Up: Les clusters Previous: Table dj existante

Retrait d'une table d'un cluster


Pour retirer une table d'un cluster il faut : q crer une nouvelle table en dehors du cluster et copier la table en cluster dans la nouvelle table ; q dtruire l'ancienne table ; q la nouvelle table pourra alors tre renomme pour prendre le nom de l'ancienne. ceci ne dtruit pas la table, mais la reconstruit en dehors du cluster.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node131.html [19.07.2000 15:41:15]

Supprimer un cluster

next

up

previous

contents

index

Next: Dictionnaire de donnes Up: Les clusters Previous: Retrait d'une table d'un

Supprimer un cluster
[drop cluster]drop cluster Un cluster ne contenant aucune table peut tre supprim par la commande : DROP CLUSTER nom_cluster;Remarque : les performances du cluster ne sont valables que si on n'a pas de blocs chans (ex de grande table).

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node132.html [19.07.2000 15:41:15]

Dictionnaire de donnes

next

up

previous

contents

index

Next: Description du dictionnaire des Up: Le langage sql Previous: Supprimer un cluster

Dictionnaire de donnes
Tous les systmes de gestion de bases de donnes relationnels contiennent un dictionnaire de donnes intgr. C'est un ensemble de tables et de vues dans lesquelles sont stockes les descriptions des objets de la base, et qui sont tenues jour automatiquement par le systme de gestion de bases de donnes. Ces tables ou vues, comme toutes les tables ou vues, peuvent tre consultes au moyen du langage sql.

q q q q q

Description du dictionnaire des donnes vues dcrivant les objets de l'utilisateur Vues dcrivant les objets auxquels l'utilisateur a accs Vues dcrivant les objets accessibles uniquement aux DBA Synonymes

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node133.html [19.07.2000 15:41:19]

Description du dictionnaire des donnes

next

up

previous

contents

index

Next: vues dcrivant les objets Up: Dictionnaire de donnes Previous: Dictionnaire de donnes

Description du dictionnaire des donnes


La vue DICTIONARY contient la description des tables et vues du dictionnaire de donnes, le contenu de cette vue varie en fonction du type d'utilisateur qui l'interroge (dba ou non). Les tables et vues du dictonnaire de donnees ont chacune un nom prefix par : [user] q [user] pour les vues contenant la description des objets appartenant l'utilisateur qui interroge le dictionnaire. q [DBA] pour les vues accessibles uniquement aux utilisateurs ayant le privilge dba. q [ALL] pour les vues contenant la description de tous les objets auxquels a accs l'utilisateur qui interroge le dictionnaire. Ces vues contiennent non seulement les objets crs par l'utilisateur mais aussi ceux pour lesquels on lui a explicitement donns des droits d'accs ainsi que ceux qui sont accessibles a tout le monde (acces PUBLIC). Ce chapitre contient la description d'un sous-ensemble des vues du dictionnaire de donnes.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node134.html [19.07.2000 15:41:19]

vues dcrivant les objets de l'utilisateur

next

up

previous

contents

index

Next: Vues dcrivant les objets Up: Dictionnaire de donnes Previous: Description du dictionnaire des

vues dcrivant les objets de l'utilisateur


USER_CATALOG Liste des objets appartenant l'utilisateur. USER_CLUSTERS Description des clusters crs par l'utilisateur. USER_COL_COMMENTS Commentaires sur les colonnes des tables et des vues crs par l'utilisateur. USER_INDEXES Description des index crs par l'utilisateur. USER_IND_COLUMNS Liste des colonnes indexes par l'utilisateur courant ou indexant les tables de l'utilisateur courant. USER_OBJECTS Description des objets appartenant l'utilisateur. USER_SYNONYMS Liste de synonymes cres par l'utilisateur. USER_TABLES Description des tables cres par l'utilisateur. USER_TAB_COLUMNS Description des colonnes de chaque table ou vue cre par l'utilisateur courant. Chaque ligne de la vue col dcrit une colonne. USER_TAB_COMMENTS Commentaires sur les tables et les vues crs par l'utilisateur. USER_TAB_GRANTS

http://wwwsi.supelec.fr/~yb/poly_bd/node135.html (1 of 2) [19.07.2000 15:41:23]

vues dcrivant les objets de l'utilisateur

Droits sur les objets donns par l'utilisateur ou dont l'utilisateur est le bnficiaire. USER_TAB_GRANTS_MADE Droits sur ses objets, tables ou vues, donns par l'utilisateur. USER_TAB_GRANTS_RECD Droits sur des objets donns l'utilisateur. USER_USERS Informations sur l'utilisateur courant. USER_VIEWS Texte des vues cres par l'utilisateur.
next up previous contents index

Next: Vues dcrivant les objets Up: Dictionnaire de donnes Previous: Description du dictionnaire des Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node135.html (2 of 2) [19.07.2000 15:41:23]

Vues dcrivant les objets auxquels l'utilisateur a accs

next

up

previous

contents

index

Next: Vues dcrivant les objets Up: Dictionnaire de donnes Previous: vues dcrivant les objets

Vues dcrivant les objets auxquels l'utilisateur a accs


ALL_CATALOG Liste de tous les objets accessibles par l'utilisateur. ALL_COL_COMMENTS Commentaires sur les colonnes des tables et des vues accessibles par l'utilisateur. ALL_INDEXES Description des index accessibles par l'utilisateur. ALL_IND_COLUMNS Liste des colonnes indexes appartenant aux tables accessibles par l'utilisateur. ALL_OBJECTS Description des objets accessibles par l'utilisateur. ALL_SYNONYMS Liste de tous les synonymes accessibles par l'utilisateur. ALL_TABLES Description des tables accessibles par l'utilisateur. ALL_TAB_COLUMNS Description de toutes les colonnes des tables ou vues accessibles par l'utilisateur. ALL_TAB_COMMENTS Commentaires sur les tables et les vues accessibles par l'utilisateur. ALL_TAB_GRANTS Droits sur les objets donns par l'utilisateur ou dont l'utilisateur est le bnficiaire. ALL_TAB_GRANTS_MADE Droits sur ses objets, tables ou vues, donns par l'utilisateur.
http://wwwsi.supelec.fr/~yb/poly_bd/node136.html (1 of 2) [19.07.2000 15:41:23]

Vues dcrivant les objets auxquels l'utilisateur a accs

ALL_TAB_GRANTS_RECD Droits sur des objets donns l'utilisateur. ALL_USERS Informations sur tous les utilisateurs. ALL_VIEWS Texte des vues accessibles par l'utilisateur.
next up previous contents index

Next: Vues dcrivant les objets Up: Dictionnaire de donnes Previous: vues dcrivant les objets Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node136.html (2 of 2) [19.07.2000 15:41:23]

Vues dcrivant les objets accessibles uniquement aux DBA

next

up

previous

contents

index

Next: Synonymes Up: Dictionnaire de donnes Previous: Vues dcrivant les objets

Vues dcrivant les objets accessibles uniquement aux DBA


DBA_CATALOG Tous les objets de la base. DBA_CLUSTERS Tous les clusters de la base. DBA_COL_COMMENTS Commentaires sur toutes les colonnes de toutes les tables et les vues. DBA_DATA_FILES Informations sur les fichiers contenant la base. DBA_FREE_SPACE Informations sur l place disponible dans les tablespaces. DBA_INDEXES Tous les index de la base. DBA_OBJECTS Tous les objets de la base. DBA_SYNONYMS Tous les synonymes de la base. DBA_TABLES Description de toutes les tables de la base. DBA_TABLESPACES Description de toutes les tablespaces de la base. DBA_TAB_COMMENTS Commentaires sur toutes les tables et vues de la base
http://wwwsi.supelec.fr/~yb/poly_bd/node137.html (1 of 2) [19.07.2000 15:41:23]

Vues dcrivant les objets accessibles uniquement aux DBA

DBA_TAB_GRANTS Tous les droits accordrs sur tous les objets de la base. DBA_TS_QUOTAS Quotas dans les tablespaces pour tous les utilsateurs de la base. DBA_USERS Informations sur tous les utilisateurs de la base. DBA_VIEWS Textes de toutes les vues de la base.
next up previous contents index

Next: Synonymes Up: Dictionnaire de donnes Previous: Vues dcrivant les objets Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node137.html (2 of 2) [19.07.2000 15:41:23]

Synonymes

next

up

previous

contents

index

Next: SQL : manuel de Up: Dictionnaire de donnes Previous: Vues dcrivant les objets

Synonymes
Les noms des vues tant assez longs, les synonymes suivants ont ts dfinis : [MYPRIV] [CAT] Synonyme pour USER_CATALOG [CLU] Synonyme pour USER_CLUSTERS [COLS] Synonyme pour USER_TAB_COLUMNS [DICT] Synonyme pour DICTIONARY [IND] Synonyme pour USER_INDEXES [MYPRIV] Synonyme pour USER_USERS [OBJ] Synonyme pour USER_OBJECTS [SEQ] Synonyme pour USER_SEQUENCES [SYN] Synonyme pour USER_SYNONYMS [TABS] Synonyme pour USER_TABLES
q q q q q q q q q q

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node138.html [19.07.2000 15:41:27]

SQL : manuel de rfrence

next

up

previous

contents

index

Next: ALTER TABLE Up: Le langage sql Previous: Synonymes

SQL : manuel de rfrence


q

ALTER TABLE
r r r

Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Syntaxe Prrequis Voir aussi syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

CONSTRAINT
r r r

CREATE CLUSTER
r r r

CREATE TABLE
r r

CREATE VIEW
r r r

DELETE
r r r

DROP CLUSTER
r r r

DROP TABLE

http://wwwsi.supelec.fr/~yb/poly_bd/node139.html (1 of 2) [19.07.2000 15:41:27]

SQL : manuel de rfrence

r r q

Syntaxe Prrequis Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi Syntaxe Prrequis Voir aussi

DROP VIEW
r r r

INSERT
r r r

RENAME
r r r

SELECT
r r r

UPDATE
r r r

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node139.html (2 of 2) [19.07.2000 15:41:27]

ALTER TABLE

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: SQL : manuel de

ALTER TABLE
[alter table]ALTER TABLE commande Cette commande permet de modifier la dfinition d'une table, les modifications permises sont les suivantes : q ajouter une colonne, q ajouter une contrainte d'intgrit, q redfinir une colonne (type de donne, taille, valeur par dfaut) q modifier les caractristiques de stockage ou d'autres paramtres, q activer, dsactiver une contrainte d'intgrit ou un dclencheur, q allouer explicitement une extension de plus.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node140.html [19.07.2000 15:41:28]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: ALTER TABLE Previous: ALTER TABLE

Syntaxe
ALTER TABLE [schema.]table [ADD column datatype [DEFAULT expr] [column_constraint] ... | table_constraint | ( column datatype [DEFAULT expr] [column_constraint] ... | table_constraint [, column datatype [DEFAULT expr] [column_constraint] ... | table_constraint ] ... ) ] [MODIFY column [datatype] [DEFAULT expr] [column_constraint] ... | (column [datatype] [DEFAULT expr] [column_constraint] ... [, column datatype [DEFAULT expr] [column_constraint] ...] ...) ] [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [STORAGE storage_clause] [DROP drop_clause] ... [ALLOCATE EXTENT [( [SIZE integer [K|M] ] [DATAFILE 'filename'] [INSTANCE integer] )] [ ENABLE enable_clause | DISABLE disable_clause ] ... q [schema] est le nom du schma contenant la table. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table] est le nom de la table qui sera modifie. q [ADD] ajoute une colonne ou une contrainte d'intgrit. q [MODIFY] q [column] q [datatype] q [DEFAULT] q [column_constraint] q [table_constraint] q [PCTFREE, PCTUSED, INITRANS, MAXTRANS] q [STORAGE] q [DROP] q [ALLOCATE EXTENT] Alloue explicitement une nouvelle extension pour la table. q [ENABLE] Active une contrainte d'intgrit ou tous les triggers associs la table. q [DISABLE] Dsactive une contrainte d'intgrit ou tous les triggers associs la table. Les contraintes d'intgrit spcifies dans ces clauses doivent avoir t dfinies auparavant. On peut aussi activer ou dsactiver des contraintes d'intgrit en utilisant les paramtre ENABLE et DISABLE de la clause CONSTRAINT. Quand on dfinit une contrainte d'intgrit elle est active par dfaut.
next up previous contents index

Next: Prrequis Up: ALTER TABLE Previous: ALTER TABLE Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node141.html [19.07.2000 15:41:29]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: ALTER TABLE Previous: Syntaxe

Prrequis
Pour pouvoir modifier la dfinition d'une il faut soit tre propritaire de cette table, soit avoir le privilge ALTER TABLE sur cette table. le privilge ALTER ANY TABLE permet de modifier la dfinition de n'importe quelle table appartenant n'importe quel utilisateur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node142.html [19.07.2000 15:41:29]

Voir aussi

next

up

previous

contents

index

Next: CONSTRAINT Up: ALTER TABLE Previous: Prrequis

Voir aussi
CONSTRAINT, CREATE TABLE, DROP TABLECREATE TABLE

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node143.html [19.07.2000 15:41:29]

CONSTRAINT

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

CONSTRAINT
[constraint]CONSTRAINT clause Cette clause permet de dfir des contraintes d'intgrit. Une contrainte d'intgrit est une rgle restreignant les valeurs contenues dans une ou plusieurs colonnes d'une table.
q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node144.html [19.07.2000 15:41:33]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: CONSTRAINT Previous: CONSTRAINT

Syntaxe
Column constraint: [CONSTRAINT constraint] [NOT] NULL | UNIQUE | PRIMARY KEY | REFERENCES [schema.]table [(column)] [ON DELETE CASCADE] | CHECK (condition) [ USING INDEX [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] ] [ EXCEPTIONS INTO [schema.]table | DISABLE Table constraint: [CONSTRAINT constraint] UNIQUE | PRIMARY KEY (column [,column] ...) | FOREIGN KEY (column [,column] ...) REFERENCES [schema.]table [(column [,column] ...)] [ON DELETE CASCADE] | CHECK (condition) [ USING INDEX [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] ] [ EXCEPTIONS INTO [schema.]table | DISABLE q [CONSTRAINT] q [NULL] prcise que la colonne peut contenir des valeurs NULL. q [NOT NULL] prcise que la colonne ne peut pas contenir des valeurs NULL. q [UNIQUE] q [PRIMARY KEY] q [FOREIGN KEY] q [REFERENCES] q [ON DELETE CASCADE] q [CHECK] q [USING INDEX] q [EXCEPTIONS INTO] q [DISABLE] Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node145.html [19.07.2000 15:41:33]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: CONSTRAINT Previous: Syntaxe

Prrequis
Les clauses CONSTRAINT peuvent apparatre dns les commandes CREATE TABLE ou prgALTER TABLE. Pour dfinir une contrainte d'intgrit il faut avoir les privilges ncessaires pour effectuer l'une ou l'autre de ces commandes. Dfinir des contraintes d'intgrit peut ncessiter des privilges en plus qui dpendent du type de la contrainte.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node146.html [19.07.2000 15:41:34]

Voir aussi

next

up

previous

contents

index

Next: CREATE CLUSTER Up: CONSTRAINT Previous: Prrequis

Voir aussi
prgALTER TABLE,CREATE TABLE

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node147.html [19.07.2000 15:41:34]

CREATE CLUSTER

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

CREATE CLUSTER
[create cluster]CREATE CLUSTER commande Cette commande permet de crer un cluster. Un cluster est une structure de stockage qui contient une ou plusieurs tables ayant une ou plusieurs colonnes en commun.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node148.html [19.07.2000 15:41:34]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: CREATE CLUSTER Previous: CREATE CLUSTER

Syntaxe
CREATE CLUSTER [schema.]cluster (column datatype [,column datatype] ... ) [PCTUSED integer] [PCTFREE integer] [SIZE integer [K|M] ] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] [INDEX | [HASH IS column] HASHKEYS integer]where: q [schema] est le nom du schma contenant le cluster. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [cluster] est le nom du cluster crer. q [column] est le nom d'une colonne de la cl du cluster. q [datatype] q [PCTUSED] q [PCTFREE] prcise le pourcentage de place laisse libre dans les blocs du clusters la cration du cluster l'index. q [INITRANS] q [MAXTRANS] q [SIZE] q [TABLESPACE] specifies the tablespace in which the cluster is created. q [STORAGE] specifies how data blocks are allocated to the cluster. q [INDEX] . [HASH IS] [HASHKEYS]

q q

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node149.html [19.07.2000 15:41:35]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: CREATE CLUSTER Previous: Syntaxe

Prrequis
Pour pouvoir crer un cluster dans son propre schma, il faut avoir le privilge CREATE CLUSTER. Pour pouvoir crer un cluster dans n'importe quel schma il faut avoir le privilge CREATE ANY CLUSTER, de plus le propritaire du schma doit avoir assez d'espace libre dans la tablespace devant contenir le cluster ou le privilge UNLIMITED TABLESPACE.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node150.html [19.07.2000 15:41:35]

Voir aussi

next

up

previous

contents

index

Next: CREATE TABLE Up: CREATE CLUSTER Previous: Prrequis

Voir aussi
CREATE TABLE

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node151.html [19.07.2000 15:41:36]

CREATE TABLE

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

CREATE TABLE
[create table]CREATE TABLE commande Cette commande permet de crer une table.

q q

Syntaxe Prrequis

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node152.html [19.07.2000 15:41:36]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: CREATE TABLE Previous: CREATE TABLE

Syntaxe
CREATE TABLE [schema.]table ( column datatype [DEFAULT expr] [column_constraint] ... | table_constraint [, column datatype [DEFAULT expr] [column_constraint] ... | table_constraint ]...) [ [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] | [CLUSTER cluster (column [, column]...)] ] [ ENABLE enable_clause | DISABLE disable_clause ] ... [AS subquery] q [schema] est le nom du schma qui contiendra la table. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table] est le nom de la table crer. q [column] est le nom d'une colonne de la table. Le nombre de colonnes possibles dans une table est compris entre 1 et 254. q [datatype] est le type de la colonne. q [DEFAULT] spcifie une valeur qui sera affecte cette colonne si, lors d'un INSERT, one ne lui en prcise pas. q [column_constraint] est une contrainte d'intgrit qui fait partie de la dfinition de la colonne. q [table_constraint] est une contrainte d'intgrit qui fait partie de la dfinition de la table. q [TABLESPACE] prcise la tablespace dans laquelle la table sera cre. q [CLUSTER] prcise que la table fera partie d'un cluster. q [ENABLE] active une contrainte d'intgrit. q [DISABLE] dsactive une contrainte d'intgrit. q [AS subquery] insre les lignes renvoyes par la sous requte dans la table, sa cration.
next up previous contents index

Next: Prrequis Up: CREATE TABLE Previous: CREATE TABLE Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node153.html [19.07.2000 15:41:37]

Prrequis

next

up

previous

contents

index

Next: CREATE VIEW Up: CREATE TABLE Previous: Syntaxe

Prrequis
Pour pouvoir crer une table dans son propre schma, il faut avoir le privilge CREATE TABLE. Pour pouvoir crer une table dans le schma d'un autre utilisateur, il faut avoir le privilge CREATE ANY TABLE. De plus le propritaire du schma doit avoir assez d'espace libre dans la tablespace devant contenir le cluster ou le privilge UNLIMITED TABLESPACE.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node154.html [19.07.2000 15:41:40]

CREATE VIEW

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Prrequis

CREATE VIEW
[create view]CREATE VIEW commande Cette commande permet de dfinir une vue, table virtuelle, base sur une ou plusieurs tables ou vues.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node155.html [19.07.2000 15:41:40]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: CREATE VIEW Previous: CREATE VIEW

Syntaxe
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW [schema.]view [(alias [,alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] q [OR REPLACE] recre la vue si elle existe dj. [FORCE] cre la vue sans s'inquiter de l'existence de la table et des privilges sur celle-ci. [NOFORCE] cre la vue uniquement si la table existe et si le propritaire du schma contenant la vue possde les privilges adquats sur celle-ci. C'est la valeur par dfaut. [schema] est le nom du schma qui contiendra la vue. Le schma par dfaut est celui de l'utilisateur qui excute la requte. [view] est le nom de la vue cre. [alias] [AS subquery] [WITH CHECK OPTION] [CONSTRAINT]

q q

q q q q q

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node156.html [19.07.2000 15:41:41]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: CREATE VIEW Previous: Syntaxe

Prrequis
Pour pouvoir crer une vue dans son propre schma, il faut avoir le privilge CREATE VIEW. Pour pouvoir crer une vue dans le schma d'un autre utilisateur, il faut avoir le privilge CREATE ANY VIEW. le propitaire du schma contenant la vue doit avoir les privilges ncessaires pour pouvoir utiliser les commandes SELECT, INSERT, UPDATE, DELETE sur les tables ou vues sur lesquelles la vue est base.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node157.html [19.07.2000 15:41:41]

Voir aussi

next

up

previous

contents

index

Next: DELETE Up: CREATE VIEW Previous: Prrequis

Voir aussi
CREATE TABLE, CREATE SYNONYM

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node158.html [19.07.2000 15:41:41]

DELETE

next

up

previous

contents

index

Next: syntaxe Up: SQL : manuel de Previous: Voir aussi

DELETE
[delete]DELETE commande Cette commande permet de supprimer des donnes contenues dans une table ou dans une vue.

q q q

syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node159.html [19.07.2000 15:41:43]

syntaxe

next

up

previous

contents

index

Next: Prrequis Up: DELETE Previous: DELETE

syntaxe
DELETE [FROM] [schema.]table | view [alias] [WHERE condition] q [schema] est le nom du schma contenant la table ou la vue dtruire. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table, view] est le nom de la table ou de la vue contenant les lignes qui seront dtruites. Si c'est un nom de vue, les lignes dtruites appartiennent la table sur laquelle la vue est base. q [alias] Est un alias assign la table. les alias sont gnralement utiliss dans des DELETE contenant des requtes. q [WHERE] Dtruit seulement les lignes satisfaisant la condition. Cette condition peut rfrencer la table et peut contenir des sous-requtes. Si cette clause est omise dtruit toutes les lignes. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node160.html [19.07.2000 15:41:43]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: DELETE Previous: syntaxe

Prrequis
Pour dtruire des lignes appartenant une table, il faut soit tre propritaire de la table, soit avoir le privilge DELETE sur cette table. Le privilge DELETE ANY TABLE permet un utilisateur de dtruire des lignes se trouvant dans n'importe quelle table, ou n'importe quelle vue base sur une table.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node161.html [19.07.2000 15:41:44]

Voir aussi

next

up

previous

contents

index

Next: DROP CLUSTER Up: DELETE Previous: Prrequis

Voir aussi
DROP TABLE, TRUNCATE

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node162.html [19.07.2000 15:41:44]

DROP CLUSTER

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

DROP CLUSTER
[drop cluster]DROP CLUSTER commande Cette commande permet de dtuire un cluster de la base de donnes.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node163.html [19.07.2000 15:41:45]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: DROP CLUSTER Previous: DROP CLUSTER

Syntaxe
DROP CLUSTER [schema.]cluster [INCLUDING TABLES [CASCADE CONSTRAINTS] ]where: q [schema] est le nom du schma contenant le cluster dtruire. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [cluster] est le nom du cluster dtruire q [INCLUDING TABLES] q [CASCADE CONSTRAINTS] Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node164.html [19.07.2000 15:41:45]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: DROP CLUSTER Previous: Syntaxe

Prrequis
Le cluster doit appartenir l'utilisateur, ou celui-ci doit avoir le privilge DROP ANY CLUSTER.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node165.html [19.07.2000 15:41:47]

Voir aussi

next

up

previous

contents

index

Next: DROP TABLE Up: DROP CLUSTER Previous: Prrequis

Voir aussi
DROP TABLE

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node166.html [19.07.2000 15:41:47]

DROP TABLE

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

DROP TABLE
[drop table]DROP TABLE commande Cette commande permet de dtruire une table et toutes ses donnes.

q q

Syntaxe Prrequis

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node167.html [19.07.2000 15:41:49]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: DROP TABLE Previous: DROP TABLE

Syntaxe
DROP TABLE [schema.]table [CASCADE CONSTRAINTS] q [schema] est le nom du schma contenant la table ou la vue dtruire Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table] est le nom de la table dtruire. q [CASCADE CONSTRAINTS] drops all referential integrity constraints that refer to primary and unique keys in the dropped table. If you omit this option, and such referential integrity constraints exist, ORACLE returns an error and does not drop the table. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node168.html [19.07.2000 15:41:50]

Prrequis

next

up

previous

contents

index

Next: DROP VIEW Up: DROP TABLE Previous: Syntaxe

Prrequis
Pour pouvoir dtruire une table il faut soit tre propritaire de cette table, soit avoir le privilge DROP ANY TABLE.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node169.html [19.07.2000 15:41:50]

DROP VIEW

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Prrequis

DROP VIEW
[drop view]DROP VIEW commande Cette commande permet de dtruire une vue.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node170.html [19.07.2000 15:41:53]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: DROP VIEW Previous: DROP VIEW

Syntaxe
DROP VIEW [schema.]view q [schema] est le nom du schma contenant la vue dtruire. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [view] est le nom de la vue dtruire. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node171.html [19.07.2000 15:41:54]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: DROP VIEW Previous: Syntaxe

Prrequis
Pour pouvoir dtruire une vue il faut soit tre propritaire de cette vue, soit avoir le privilge DROP ANY VIEW.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node172.html [19.07.2000 15:41:54]

Voir aussi

next

up

previous

contents

index

Next: INSERT Up: DROP VIEW Previous: Prrequis

Voir aussi
CREATE TABLE, CREATE VIEW, CREATE SYNONYM

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node173.html [19.07.2000 15:41:55]

INSERT

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

INSERT
[insert]INSERT commande Cette commande permet d'ajouter des lignes une table ou une vue base sur une table.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node174.html [19.07.2000 15:41:58]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: INSERT Previous: INSERT

Syntaxe
INSERT INTO [schema.]table | view [ (column [, column] ...) ] VALUES (expr [, expr] ...) | subqueryDans lequel : q [schema] est le nom du schma contenant la table ou la vue. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table] q [view] est le nom de la table dans laquelle les lignes seront insrs. Si c'est un nom de vue qui est prcis, les donnes seront insrs dans la table base sur la vue. q [column] q [VALUES] q [subquery] Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node175.html [19.07.2000 15:41:59]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: INSERT Previous: Syntaxe

Prrequis
Pour pouvoir insrer des lignes dans une table il faut soit tre propritaire de cet objet, soit avoir le privilge INSERT sur cette table. le privilge INSERT ANY TABLE permet d'insrer des lignes dans n'importe quelle table appartenant n'importe quel utilisateur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node176.html [19.07.2000 15:41:59]

Voir aussi

next

up

previous

contents

index

Next: RENAME Up: INSERT Previous: Prrequis

Voir aussi
DELETE, update

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node177.html [19.07.2000 15:41:59]

RENAME

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

RENAME
[rename]RENAME commande Cette commande permet de renommer une table, une vue, une squence, ou un synonyme priv.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node178.html [19.07.2000 15:42:00]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: RENAME Previous: RENAME

Syntaxe
RENAME old TO new q [old] est le nom actuel de l'objet. q [new] est le nouveau nom de l'onbet. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node179.html [19.07.2000 15:42:00]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: RENAME Previous: Syntaxe

Prrequis
L'objet doit appartenir l'utilisateur courant.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node180.html [19.07.2000 15:42:00]

Voir aussi

next

up

previous

contents

index

Next: SELECT Up: RENAME Previous: Prrequis

Voir aussi
CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE VIEW

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node181.html [19.07.2000 15:42:01]

SELECT

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

SELECT
[select]SELECT commande Cette commande permet de rcuprer des donnes contenues dans une ou plusieurs tables, vues, ou clichs.
q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node182.html [19.07.2000 15:42:01]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: SELECT Previous: SELECT

Syntaxe
SELECT [DISTINCT | ALL] { * | { [schema.]{table | view | snapshot}.* | expr [c_alias] [, { [schema.]{table | view | snapshot}.* | expr [c_alias] } ] ... } FROM [schema.]{table | view | snapshot} [t_alias] [, [schema.]{table | view | snapshot} [t_alias] ] ... [WHERE condition ] [ [START WITH condition] CONNECT BY condition] [GROUP BY expr [, expr] ... [HAVING condition] ] [{UNION | UNION ALL | INTERSECT | MINUS} SELECT command ] [ORDER BY {expr|position} [ASC | DESC] [, {expr | position} [ASC | DESC]] ...] [FOR UPDATE [OF [[schema.]{table | view}.]column [, [[schema.]{table | view}.]column] ...] [NOWAIT] ] q [DISTINCT] renvoie toutes les lignes slectionnes en enlevant les doublons. q [ALL] renvoie toutes les lignes slectionnes sans enlever les doublons. C'est la valeur par dfaut. q [*] renvoie toutes les colonnes de toutes les tables, les vues et les clichs prciss dans le FROM. q [table.*, view.*, snapshot.*] slectionne toutes les colonnes de la table, de la vue ou du clich prcis. [expr] slectionne une expression habituellement calcule sur les valeurs des colonnes appartenant l'une des tables, vues, ou clichs de la clause FROM. [c_alias] la chane de caractres qui sert d'en-tte la colonne (par dfaut expr) [schema] est le nom du schma contenant les tables, vues ou clichs slectionns. Le schma par dfaut est celui de l'utilisateur qui excute la requte. [table, view, snapshot] est le nom de la table, de la vue ou du clich contenant les donnes slectionnes. [t_alias] synonyme pour la table dont le nom prcde, utiliser dans le reste de la requte. [WHERE] restreint les lignes slectionnes celles pour lesquelles la condition est vraie. Si cette clause est omise, toutes les lignes des tables, vues ou clichs prciss derrire le FROM sont renvoyes. [START WITH, CONNECT BY] renvoie les lignes en parcourant une arborescence. [GROUP BY] groupe les lignes slectionnes en se basant sur la valeur de expr pour chaque ligne et renvoie une seule ligne par groupe. [HAVING] restreint les groupes de lignes renvoys ceux pour lesquels la condition spcifie est vraie. Sans cette clause, tous les groupes sont renvoys. [UNION, UNION ALL, INTERSECT, MINUS] Combine les lignes retournes par deux SELECT en utilisant une opration ensembliste. [ORDER BY] ordonne les lignes slectionnes : r [expr] en utilisant la valeur de expr. Cette expression est base sur des colonnes prcises derrire le SELECT ou sur des colonnes appartenant des tables, vues ou clichs prsents derrire le FROM. r [position] donne le numro de la colonne dans l'ordre du SELECT. r [ASC, DESC] mode ascendant ou descendant. La valeur par dfaut ASC.

q q

q q

q q

http://wwwsi.supelec.fr/~yb/poly_bd/node183.html (1 of 2) [19.07.2000 15:42:02]

Syntaxe

q q

[FOR UPDATE] ``locke'' les lignes slectionnes. [NO WAIT] retourne le controle l'utilisateur si la commande SELECT essaye de bloquer une table utilise par un autre utilisateur.
up previous contents index

next

Next: Prrequis Up: SELECT Previous: SELECT Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node183.html (2 of 2) [19.07.2000 15:42:02]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: SELECT Previous: Syntaxe

Prrequis
Pour pouvoir slectionner des lignes d'un objet(table, vue, clich) il faut soit tre propritaire de cet objet, soit avoir le privilge SELECT sur cet objet. le privilge SELECT ANY TABLE permet de slectionner des lignes de n'importe quel objet appartenant n'importe quel utilisateur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node184.html [19.07.2000 15:42:04]

Voir aussi

next

up

previous

contents

index

Next: UPDATE Up: SELECT Previous: Prrequis

Voir aussi
DELETE, update

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node185.html [19.07.2000 15:42:05]

UPDATE

next

up

previous

contents

index

Next: Syntaxe Up: SQL : manuel de Previous: Voir aussi

UPDATE
[update]UPDATE commande Cette commande permet de modifier des donnes contenues dans une table ou dans une vue.

q q q

Syntaxe Prrequis Voir aussi

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node186.html [19.07.2000 15:42:06]

Syntaxe

next

up

previous

contents

index

Next: Prrequis Up: UPDATE Previous: UPDATE

Syntaxe
UPDATE [schema.]table | view [alias] SET (column [, column] ...) = (subquery) | column = expr | (subquery) [, (column [, column] ...) = (subquery) | column = expr | (subquery) ] ... [WHERE condition] q [schema] est le nom du schma contenant la table ou la vue modifier. Le schma par dfaut est celui de l'utilisateur qui excute la requte. q [table, view] est le nom de la table mettre jour. Si c'est un nom de vue, la table mise jour est celle sur laquelle la vue est dfinie. q [alias] est un alias assign la table. les alias sont gnralement utiliss dans des UPDATE contenant des requtes. q [column] est le nom de la colonne qui sera modifie. q [expr] est la nouvelle valeur de la colonne. q [subquery] est un SELECT qui renvoie les nouvelles valeurs affectes aux colonnes correspondantes. q [WHERE] restreint les lignes modifies celles pour lesquelles la condition est vraie. Si on omet cette clause toutes les lignes sont modifies. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node187.html [19.07.2000 15:42:07]

Prrequis

next

up

previous

contents

index

Next: Voir aussi Up: UPDATE Previous: Syntaxe

Prrequis
Pour pouvoir modifier des lignes appartenant une table, il faut soit tre propritaire de cet objet, soit avoir le privilge UPDATE sur cette table. le privilge UPDATE ANY TABLE permet de slectionner des lignes de n'importe quel objet appartenant n'importe quel utilisateur.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node188.html [19.07.2000 15:42:07]

Voir aussi

next

up

previous

contents

index

Next: Rfrences Up: UPDATE Previous: Prrequis

Voir aussi
DELETE, INSERT

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node189.html [19.07.2000 15:42:07]

Rfrences

next

up

previous

contents

index

Next: Index Up: Bases de Donnes Relationnelles Previous: Voir aussi

Rfrences
1 Alfred V. Aho and Jeffrey D. Ullman. Foundations of Computer science. Computer Science Press, 1982. 2 M. Bouzeghoub, M. Jouve, and P. Pucheral. Systmes de Bases de Donnes : des techniquqes d'implantation la conception de schmas. Eyrolles, 1990. 3 G. Gardarin and P. Valduriez. Bases de Donnes relationnelles : analyse et comparaison des systmes. Eyrolles, 1985. 4 Georges Gardarin. Bases de Donnes : Les systmes et leurs langages. Eyrolles, 1982. 5 P. C. Kanellakis. Elements of relational database theory. In J. Van Leeuwen, editor, Handbook of Theoretical Computer Science Volume B : Formal model and semantics. Elsevier, the MIT press, 1990. 6 H. F. Korth and A. Silberschatz. Database System Concepts. Mac Graw-Hill, 1991. 7 Carnegie Mellon. Sql reference page, 1995. "http://www.contrib.andrew.cmu.edu/usr/shadow/sql.html". 8 M. Tamer Ozsu and P. Valduriez. principles of Distributed database dystems. prentice-Hall, 1991.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node190.html [19.07.2000 15:42:08]

propos de ce document...

next

up

previous

contents

index

Up: Bases de Donnes Relationnelles Previous: Index

propos de ce document... Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels Le Langage sql
This document was generated using the LaTeX2HTML translator Version 97.1 (release) (July 13th, 1997) Copyright 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds. The command line arguments were: latex2html -dir /urisc/si/yb/public_html/poly_bd poly. The translation was initiated by Yolaine Bourda on 3/17/1998 Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node192.html [19.07.2000 15:42:08]

Cration simple

next

up

previous

contents

index

Next: Cration avec Insertion de Up: Crer une table Previous: Crer une table

Cration simple
La commande de cration de table la plus simple ne comportera que le nom et le type de chaque colonne de la table. L'on peut crer une table par la commande CREATE TABLE en spcifiant le nom et le type de chaque colonne. A la cration, la table sera vide mais un certain espace lui sera allou. La syntaxe est la suivante : CREATE TABLE nom_table (nom_col1 TYPE1, nom_col2 TYPE2, ...) L'option NOT NULL assure qu'oracle interdit lors d'un INSERT ou d'un update que cette colonne contienne la valeur NULL, par dfaut elle est autorise.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node109.html [19.07.2000 15:42:10]

Cration avec Insertion de donnes

next

up

previous

contents

index

Next: Les types de donnes Up: Crer une table Previous: Cration simple

Cration avec Insertion de donnes


On peut insrer des donnes dans une table lors de sa cration par la commande suivante : CREATE TABLE nom_table [(nom_col1, nom_col2, ...)] AS SELECT... On peut ainsi, en un seul ordre sql crer une table et la remplir avec des donnes provenant du rsultat d'un select . On n'a pas besoin alors de spcifier de type pour les colonnes : les types des donnes sont ceux provenant du select . Si des conversions de type sont faire, on peut dans le select utiliser les fonctions TO_CHAR, TO_DATE, TO_NUMBER. Par dfaut les noms des colonnes de la nouvelle table sont les noms des colonnes du select . Si des expressions apparaissent dans le select les colonnes correspondantes doivent imprativement tre renommes. Le select peut contenir des fonctions de groupes mais pas d'ORDER BY car les lignes d'une table ne peuvent pas tre classes. On peut, et mme on doit, quand on cre une table dfinir les contraintes d'intgrit que devront respecter les donnes que l'on mettra dans la table (voir un peu plus bas).
next up previous contents index

Next: Les types de donnes Up: Crer une table Previous: Cration simple Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node110.html [19.07.2000 15:42:11]

Les types de donnes

next

up

previous

contents

index

Next: Contraintes d'intgrit Up: Crer une table Previous: Cration avec Insertion de

Les types de donnes


Les types de donnes peuvent tre : q [NUMBER[(longueur,[prcision]) ] [number]NUMBER type Ce type de donnes permet de stocker des donnes numriques la fois entires et relles dont la valeur est comprise entre 10-130 et 10125 avec une prcision de 38 chiffres. r [longueur ] prcise le nombre maximum de chiffres significatifs stocks (par dfaut 38), r [prcision ] donne le nombre maximum de chiffres aprs la virgule (par dfaut 38), sa valeur peut tre comprise entre -84 et 127. Une valeur ngative signifie que le nombre est arrondi gauche de la virgule. q [CHAR(longueur) ] [char]CHAR type Ce type de donnes permet de stocker des chanes de caractres de longueur fixe. longueur doit tre infrieur 255, sa valeur par dfaut est 1. q [VARCHAR(longueur) ] [char]VARCHAR type Ce type de donnes permet de stocker des chanes de caractres de longueur variable. longueur doit tre infrieur 2000, il n'y a pas de valeur par dfaut. q [DATE ] [date]DATE type Ce type de donnes permet de stocker des donnes constitues d'une date et d'une heure. q [RAW(longueur) ] [raw]RAW type Ce type de donnes permet de stocker des caractres non imprimables. q [LONG ] [long]LONG type Ce type de donnes permet des stocker des chanes de caractres de longueur variable et infrieure 231 -1. Les colonnes de ce type sont soumises certaines restrictions ; r une table ne peut pas contenir plus d'une colonne de ce type ; r les colonnes de ce type ne peuvent pas apparatre dans des contraintes d'intgrit ; r les colonnes de ce type ne peuvent pas tre indexes ; r les colonnes de ce type ne peuvent pas apparatre dans des clauses : WHERE, GROUP BY, ORDER BY ou CONNECT BY ainsi que dans un DISTINCT.
next up previous contents index

Next: Contraintes d'intgrit Up: Crer une table Previous: Cration avec Insertion de Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node111.html [19.07.2000 15:42:11]

Ajouter une colonne

next

up

previous

contents

index

Next: Modifier une colonne Up: Modifier d'une table Previous: Modifier d'une table

Ajouter une colonne


La commande suivante permet d'ajouter une ou plusieurs colonnes une table existante : ALTER TABLE nom_table ADD (nom_col1 TYPE1, nom_col2 TYPE2, ...)Les types possibles sont les mmes que ceux dcrits avec la commande CREATE TABLE. Si la table contient dj des lignes, la nouvelle colonne aura des valeurs NULL pour les lignes existantes.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node114.html [19.07.2000 15:42:13]

Modifier une colonne

next

up

previous

contents

index

Next: Supprimer une table Up: Modifier d'une table Previous: Ajouter une colonne

Modifier une colonne


Il est possible de modifier la dfinition d'une colonne, condition que la nouvelle dfinition soit compatible avec le contenu de la colonne et en respectant les contraintes suivantes : q dans tous les cas il est possible d'augmenter la taille d'une colonne ; q il est possible de diminuer la taille, ou mme de changer le type d'une colonne vide ; q on peut spcifier NOT NULL si la colonne ne contient aucune valeur NULL ; q on peut dans tous les cas spcifier NULL pour autoriser les valeurs NULL. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node115.html [19.07.2000 15:42:14]

Structure d'un index

next

up

previous

contents

index

Next: Les clusters Up: Supprimer un index Previous: Supprimer un index

Structure d'un index


Les index sont des structures permettant de retrouver une ligne dans une table partir de la valeur d'une colonne ou d'un ensemble de colonnes. Un index contient la liste trie des valeurs des colonnes indexes avec les adresses des lignes (numro de bloc dans la partition et numro de ligne dans le bloc) correspondantes. Tous les index oracle sont stocks sous forme d'arbres quilibrs (btree) : une structure arborescente permet de retrouver rapidement dans l'index la valeur de cl cherche, et donc l'adresse de la ligne correspondante dans la table. Dans un tel arbre, toutes les feuilles sont la mme profondeur, et donc la recherche prend approximativement le mme temps quelle que soit la valeur de la cl. Lorsqu'un bloc d'index est plein, il est clat en deux blocs. en consquence, tous les blocs d'index ont un taux de remplissage variant de 50% 100%. Sans index on balaie squentiellement toute la table quelle que soit la position de lment recherch.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node125.html [19.07.2000 15:42:14]

Lors de la cration de la table

next

up

previous

contents

index

Next: Table dj existante Up: Mise en cluster d'une Previous: Mise en cluster d'une

Lors de la cration de la table


L'option cluster de l'ordre CREATE table permet de spcifier que la table doit tre mise en cluster. Le cluster doit dj exister. CREATE TABLE nom_table (NOM_COL1 TYPE1 NOT NULL , (NOM_COL2 TYPE2 NOT NULL , ...) CLUSTER NOM_CLUSTER (NOM_COLI, NOM_COLJ...)nom_coli, nom_colj sont des noms de colonnes de la table, elles seront identifies une une aux colonnes cls du cluster spcifies la cration du cluster.

Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node129.html [19.07.2000 15:42:14]

Table dj existante

next

up

previous

contents

index

Next: Retrait d'une table d'un Up: Mise en cluster d'une Previous: Lors de la cration

Table dj existante
En principe cela n'est pas possible, il faut donc procder de la faon suivante : q crer une nouvelle table avec l'option cluster et y copier le contenu de la table initiale ; q supprimer l'ancienne table ; q renommer ventuellement la nouvelle table. Yolaine.Bourda@supelec.fr

http://wwwsi.supelec.fr/~yb/poly_bd/node130.html [19.07.2000 15:42:15]

Vous aimerez peut-être aussi