Vous êtes sur la page 1sur 14

Créations tables

Afficher la description d'une table.


desc nom-table;
Afficher la liste des tables créés.
SQL> select * from tab;

Création contrainte
La syntaxe de modification de la TABLE est :
ALTER TABLE "table_name"
[alter specification]
[Add a column: ADD "column 1" "data type for column 1"
Drop a column: DROP "column 1"
Change a column name: CHANGE "old column name" "new column name" "data type for
new column name"
Change the data type for a column: MODIFY "column 1" "new data type"
Information sur les contraintes
Le dictionnaire de données conserve les informations sur les contraintes définies sur la base.
On peut les retrouver dans les vues:
CONSTRAINT_DEFS, USER_CONSTRAINTS, USERS_CONS_COLUMNS,
USER_CROSS_REFS,
Exemple:
Select constraint_name, constraint_type, table_name, r_constraint_name
from user_constraints;
Dans la réponse de cette requête, on trouvera les abréviations: P pour primary, U
pour unique, C pour check ou NOT NULL, R pour foreign key, et V pour le type de
contraints crées par WITH CHECK OPTION pour les vues.
select constraint_name from user_constraints where table_name='journal'

Transaction
On peut désigner des points de reprise dans une transaction :
savepoint nomPoint
On peut ensuite annuler toutes les modifications effectuées depuis un point de reprise s'il y a
eu des problèmes :
rollback to nomPoint
On évite ainsi d'annuler toute la transaction et on peut essayer de pallier le problème au lieu
d'annuler la transaction globale.
Privilèges d'accès à la base
Oracle permet à plusieurs utilisateurs de travailler en toute sécurité sur la même base.
Chaque donnée peut être confidentielle et accessible à un seul utilisateur, ou partageable entre
plusieurs utilisateurs.
Les ordres GRANT et REVOKE permettent de définir les droits de chaque utilisateur sur les
objets de la base.
Tout utilisateur doit communiquer son nom d'utilisateur et son mot de passe pour pouvoir
accéder à la base. C'est ce nom d'utilisateur qui déterminera les droits d'accès aux objets de la
base.
L'utilisateur qui crée une table est considéré comme le propriétaire de cette table. Il a tous les
droits sur cette table et son contenu. En revanche, les autres utilisateurs n'ont aucun droit sur
cette table (ni lecture ni modification), à moins que le propriétaire ne leur donne explicitement
ces droits avec un ordre GRANT.
GRANT
L'ordre GRANT du langage SQL permet au propriétaire d'une table ou d'une vue de donner à
d'autres utilisateurs des droits d'accès à celles-ci :
GRANT privilège ON table /vue TO utilisateur [WITH GRANT OPTION]
Les privilèges qui peuvent être donnés sont les suivants :
 SELECT droit de lecture
 INSERT droit d'insertion de lignes
 UPDATE droit de modification de lignes
 UPDATE (col1, col2, ...) droit de modification de lignes limité à certaines colonnes
 DELETE droit de suppression de lignes
 ALTER droit de modification de la définition de la table
 INDEX droit de création d'index
 ALL tous les droits ci-dessus
Les privilèges SELECT, INSERT et UPDATE s'appliquent aux tables et aux vues. Les autres
s'appliquent uniquement aux tables.
Un utilisateur ayant reçu un privilège avec l'option facultative ‘WITH GRANT OPTION’
peut le transmettre à son tour.
Exemple 5.17
L'utilisateur DUBOIS peut autoriser l'utilisateur CLEMENT à lire sa table EMP :
GRANT SELECT ON EMP TO CLEMENT
Dans un même ordre GRANT, on peut accorder plusieurs privilèges à plusieurs utilisateurs :
GRANT SELECT, UPDATE ON EMP TO CLEMENT, CHATEL. Les droits peuvent être
accordés à tous les utilisateurs en utilisant le mot réservé PUBLIC à la place d'un nom
d'utilisateur :
GRANT SELECT ON EMP TO PUBLIC

REVOKE
Un utilisateur ayant accordé un privilège peut le reprendre à l'aide de l'ordre REVOKE :
REVOKE privilège ON table /vue FROM utilisateur
Remarque
Si on enlève un privilège à un utilisateur, ce privilège est automatiquement retiré à tout autre
utilisateur à qui il aurait accordé ce privilège.

Changement de mot de passe


Tout utilisateur peut modifier son mot de passe par l'ordre GRANT
CONNECT :
GRANT CONNECT TO utilisateur IDENTIFIED BY mot-de-passe
Création d'un utilisateur, rôle
Bien que ce cours n'aborde pas l'administration d'une base de données, voici, sans explication,
comment on peut créer des utilisateurs sous Oracle.
CREATE USER machin IDENTIFIED BY 123adc
DEFAULT TABLESPACE t2
TEMPORARY TABLESPACE temp_t2
QUOTA 1M ON t2;
GRANT etudiant TO machin;
etudiant est un rôle, c'est-à-dire un ensemble de droits que l'on peut donner par GRANT.
L'administrateur peut créer plusieurs rôles correspondants à différents types standard
d'utilisateurs pour les affecter aux utilisateurs qu'il crée.
On peut créer un rôle par la commande CREATE ROLE nom-rôle. On peut ensuite lui
attribuer des droits comme on le fait avec un utilisateur par la commande GRANT.
Des rôles sont prédéfinis par Oracle :
CONNECT permet à un utilisateur de se connecter et de créer des tables.
RESOURCE permet en plus à un utilisateur de créer des procédures stockées, des types, des
séquences,....
Date : changement du format de systeme :
alter session set NLS_DATE_FORMAT='DD-MON-YY';

/manipulation du buffer
SQL*PLUS possède de nombreuses commandes pour mettre en forme les sorties écran
des SELECT. En particulier, des commandes puissantes permettent d'obtenir des totaux
et des sous-totaux sur les colonnes numériques. Ces commandes sortent du cadre de ce
cours. Nous verrons seulement la commande _COLUMN_ qui est bien utile pour donner la
largeur des colonnes des SELECT pour qu'elles ne soient pas trop larges.
Largeur de 12 caractères pour la colonne NOME:
COLUMN NOME FORMAT A12
2.4 Sauvegarde de la session de travail
SPOOL fichier
enregistre dans le _chier (_chier.lst si _chier n'a pas d'extension _._) les commandes tapées
ensuite par l'utilisateur, et les réponses d'Oracle.
SPOOL OFF
arrête cette sauvegarde.
3.1.1 Sauvegarde du contenu du bu_er dans un _chier
SAVE fichier [APPEND]
sauvegarde le bu_er dans _chier, en le créant s'il n'existe pas encore, ou en écrasant son
contenu dans le cas contraire. Le contenu du bu_er est ajouté en _n de _chier si l'option
APPEND est précisée.
L'extension _.SQL_ est ajoutée par défaut au nom du _chier. Un ordre / est automatiquement
ajouté à la _n de chaque ordre (pour être exécutés automatiquement par la
commande START étudiée en 3.4).
3.2 Lecture dans le bu_er d'un _chier de commandes
GET fichier
lit le contenu de _chier, et l'injecte dans le bu_er SQL que l'on peut ensuite modi_er ou/et
exécuter. S'il y a un / _nal dans _chier, il est exécuté.

Commandes START et @
START fichier [arguments...]
lance l'exécution des commandes de _chier. Tout se passe comme si les commandes du
_chier étaient tapées au clavier. Les arguments remplacent les _&1, &2,..._ contenus
dans le texte de _chier.

Les ordres SQL contenus dans _chier ne sont pas exécutés automatiquement. Il faut
que _chier contienne l'ordre explicite d'exécuter la commande SQL, soit en la terminant
par un point-virgule, soit en la faisant suivre d'un / ou d'un RUN sur la ligne suivante.
La commande _@_ est semblable à START mais il n'est pas possible de donner des
arguments.

2.2 Date
Au lieu de stocker la date et l’heure dans une chaˆıne ou sous forme num´erique, IBM a cr´e´e
plusieurs types
s´epar´es. Pour chaque type DATE, les informations suivantes sont stock´ees :
Century Year Month Day Hour Minute Second
Il est facile de r´ecup´erer les date et heure courantes en appelant la fonction SYSDATE.
L’arithm´etique sur les dates est possible en utilisant des constantes num´eriques ou d’autres
dates. Seules
l’addition et la soustraction sont admises. Par exemple, SYSDATE + 7 va rendre la date dans
une semaine.
Chaque base de donn´ee a un format de date par d´efaut qui est d´efini par le param`etre
d’initialisation
NLS_DATE_FORMAT. Ce param`etre est g´en´eralement mis `a DD-MON-YY, o`u DD est
le jour du mois (le premier
jour du mois est 01), MON est l’abr´eviation du nom du mois et YY est une repr´esentation `a
deux chiffres de
l’ann´ee.
Si une heure n’est pas sp´ecifi´ee, la valeur par d´efaut est minuit. Si seule l’heure est saisie,
la date par
d´efaut sera le premier jour du mois courant
4.1 Fonctions de base
Les fonctions forment une part intrins`eque de toute instruction SQL. La table suivante donne
une liste
alphab´etique de fonctions SQL.
SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH:MI:SS') FROM dual;
SELECT SYSDATE + 1 FROM dual;
SELECT add_months(SYSDATE, 2) FROM dual;
ALTER SESSION
SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
SELECT DUMP(SYSDATE) FROM dual;
Returns The Number Of Bytes And Datatype Of A Value
SELECT LAST_DAY(datecol1) FROM t; SELECT LAST_DAY(datecol1) FROM t;
Returns The Last Date Of A Month
Returns The Months Separating Two Dates
MONTHS_BETWEEN(<latest_date>, <earliest_date>)
SELECT MONTHS_BETWEEN(SYSDATE+365, SYSDATE-365) FROM dual;

SELECT MONTHS_BETWEEN(SYSDATE-365, SYSDATE+365) FROM dual;


NEXT_DAY(<date>, <day of the week>)

Options are SUN, MON, TUE, WED, THU, FRI, and SAT
SELECT NEXT_DAY(SYSDATE, 'FRI') FROM dual;
SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH:MI:SS')
FROM dual;

SELECT TO_CHAR(TRUNC(SYSDATE), 'DD-MON-YYYY HH:MI:SS')


FROM dual
Convert a date to the date at midnight
The general usage of TO_CHAR is:
TO_CHAR(<date>, '<format>')
where the <format> string can be formed from over 40 options. Some of the more popular
ones include:

MM Numeric month (e.g., 07)


MON Abbreviated month name (e.g., JUL)
MONTH Full month name (e.g., JULY)
DD Day of month (e.g., 24)
DY Abbreviated name of day (e.g., FRI)
YYYY 4-digit year (e.g., 1998)
YY Last 2 digits of the year (e.g., 98)

RR
Like YY, but the two digits are ``rounded'' to a year in the range 1950 to 2049. Thus,
06 is considered 2006 instead of 1906, for example.
AM (or
Meridian indicator
PM)
HH Hour of day (1-12)
HH24 Hour of day (0-23)
MI Minute (0-59)
SS Second (0-59)

You have just learned how to output a DATE value using TO_CHAR. Now what about inputting a
DATE value? This is done through a function called TO_DATE, which converts a string to a DATE
value, again according to the DATE format. Normally, you do not have to call TO_DATE
explicitly: Whenever Oracle expects a DATE value, it will automatically convert your input
string using TO_DATE according to the default DATE format "DD-MON-YY". For example, to
insert a tuple with a DATE attribute, you can simply type:
insert into x values(99, '31-may-98');
Alternatively, you may use TO_DATE explicitly:
insert into x
values(99, to_date('1998/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
The general usage of TO_DATE is:
TO_DATE(<string>, '<format>')
where the <format> string has the same options as in TO_CHAR.

Finally, you can change the default DATE format of Oracle from "DD-MON-YY" to something
you like by issuing the following command in sqlplus:

alter session set NLS_DATE_FORMAT='<my_format>';


The change is only valid for the current sqlplus session
Adminstration
Activation de l'affichage :
-- pour que la commande DBMS_OUTPUT fonctionne il faut activer le serveroutput
-- comme suit
-- sql> set serveroutput on
Création de préviléges :
----pour créer un utilisateur kimo
SQL> create user kimo identified by kimo1 default tablespace users account unlock;
-User created.
---- pour attribuer des privilège a l'utilisateur kimo
SQL> grant connect, resource, dba to kimo;
Grant succeeded.

Vous aimerez peut-être aussi