Vous êtes sur la page 1sur 29

Partie 3

Le langage SQL (suite)

Pr A.ABATAL 1
Langage de manipulation des Données

Un ordre du LMD permet la modification d'une table qui

consiste à:

• Ajouter des enregistrements

• Modifier des enregistrements existants

• Supprimer des enregistrements

2
Ajout d‘enregistrement dans une Table
L'ordre INSERT permet d'ajouter un nouveau enregistrement
dans une table.

Syntaxe 1:
INSERT
INSERT INTO
INTO Nomtable
Nomtable [(champs
[(champs [,[, champs
champs ...])]
...])]
VALUES
VALUES (valeur
(valeur [,[, valeur...]
valeur...] ););

• Indiquez les valeurs dans l'ordre par défaut des colonnes


dans la table.
• Placez les valeurs de type caractère et date entre simples
quotes.

3
Ajout d‘enregistrement dans une Table

SQL> INSERT INTO dept (deptno, dname, loc)


2 VALUES (50, 'FINANCES', 'PARIS');

SQL>
SQL> INSERT
INSERT INTO
INTO emp
emp (empno,
(empno, ename,
ename, job,
job,
22 mgr,
mgr, hiredate,
hiredate, sal,
sal, deptno)
deptno)
33 VALUES
VALUES (8000,
(8000, ‘SAAD',
‘SAAD', 'ANALYST',
'ANALYST',
44 7839,
7839, SYSDATE,
SYSDATE, 4000,
4000, 20);
20);

4
Ajout d‘enregistrement dans une Table
Syntaxe 2:
INSERT
INSERT INTO
INTO Nomtable
Nomtable [(champs
[(champs [,[, champs
champs ...])]
...])]
(select
(select …);
…);

Les champs de la clause INSERT doit correspondre à ceux


de la sous-interrogation
Exemple:
SQL>
SQL> INSERT
INSERT INTO
INTO SALSES
SALSES (mat,
(mat, nom,
nom, sal,
sal, hiredate,
hiredate, deptno)
deptno)
22 SELECT
SELECT empno,
empno, ename,
ename, hiredate,
hiredate, sal+
sal+ comm,
comm, deptno
deptno
33 FROM
FROM emp
emp
44 WHERE
WHERE job
job like
like 'SALSES%';
'SALSES%';

5
Modification des données d’une Table

L'ordre UPDATE permet de modifier les enregistrements


d’une table.
Syntaxe :
UPDATE
UPDATE Nomtable
Nomtable
SET
SET Champs
Champs == valeur
valeur [,[, champs
champs == valeur]
valeur]
[WHERE
[WHERE condition];
condition];

• La clause WHERE permet de modifier une ou plusieurs


lignes spécifiques; en cas d’absence de cette clause toutes
les lignes seront modifiées.
• Chaque opération de modification doit respecter les
contraintes d’intégrité référentielle de la base de données.
6
Modification des données d’une Table

SQL>
SQL> UPDATE
UPDATE emp
emp
22 SET
SET com =
com =00
33 WHERE
WHERE com
com isis NULL;
NULL;

SQL>
SQL> UPDATE
UPDATE emp
emp
22 SET
SET mgr
mgr == (SELECT
(SELECT empno
empno
33 FROM
FROM emp
emp
44 WHERE
WHERE (deptno
(deptno == 30)
30) AND
AND (job
(job like
like 'MANAGER')
'MANAGER') ,,
55 job
job ='SALSESMEN'
='SALSESMEN'
66 WHERE
WHERE deptno
deptno == 30;
30;

7
Suppression des enregistrements d’une Table
L'ordre DELETE permet de supprimer des enregistrements
a partir d’une table.
Syntaxe :
DELETE
DELETE [FROM]
[FROM] Nomtable
Nomtable
[WHERE
[WHERE condition];
condition];

• La clause WHERE permet de supprimer une ou plusieurs


lignes spécifiques en l’absence de cette clause, toutes les
lignes sont supprimées.
• Chaque opération de modification doit respecter les
contraintes d’intégrité référentielle de la base de données.
8
Suppression des enregistrements d’une Table

SQL>
SQL> DELETE
DELETE dept
dept
22 WHERE
WHERE dname
dname == 'FINANCES';
'FINANCES';

SQL>
SQL> DELETE
DELETE FROM
FROM emp
emp
22 WHERE
WHERE deptno
deptno ==
33 (SELECT
(SELECT deptno
deptno
44 FROM
FROM dept
dept
55 WHERE
WHERE dname
dname ='SALES');
='SALES');

9
Transactions de Base de Données
• Une transaction se compose des éléments suivants :
ƒ Ensemble d'ordres du LMD effectuant une opération
cohérente des données
ƒ Un ordre du LDD ou LCD
• Une transaction commence à l'exécution d’un ordre SQL et se
termine par l'un des événements suivants :
ƒ COMMIT ou ROLLBACK
ƒ Exécution d'un ordre LDD ou LCD (validation
automatique)
ƒ Fin de session utilisateur
ƒ Panne du système
10
Transactions de Base de Données
• Avant toute opération de sauvegarde ou de restauration
(COMMIT ou ROLLBACK) :
ƒ Les résultats des ordres du LMD exécutés par l'utilisateur
courant ne peuvent pas être affichés par d'autres utilisateurs.
ƒ Les lignes concernées sont verrouillées. Aucun autre utilisateur
ne peut les modifier
•Apréstoute opération de sauvegarde ou de retoration
(COMMIT ou ROLLBACK) :
ƒ Les modifications des données dans la base sont définitives
(perte de l'état précédent de la base)
ƒ Tous les utilisateurs peuvent voir le résultat des modifications.
ƒ Les lignes verrouillées sont libérées et peuvent de nouveau être
manipulées par d'autres utilisateurs
11
Transactions de Base de Données
SQL>
SQL> COMMIT;
COMMIT;
Commit
Commit complete.
complete.

SQL>
SQL> ROLLBACK;
ROLLBACK;
Rollback
Rollback complete.
complete.

SQL>
SQL> UPDATE
UPDATE ...
...
SQL>
SQL> SAVEPOINT
SAVEPOINT point1;
point1;
Savepoint
Savepoint created.
created.
SQL>
SQL> DELETE
DELETE … …
SQL>
SQL> ROLLBACK
ROLLBACK TO TO point1;
point1;
Rollback
Rollback complete.
complete.

12
Langage de définition des Données

Un ordre du LDD permet de créer , de supprimer et de


modifier la structure d’une base de données relationnelle;
les objets que le LDD peut gérer sont:

• Table
• Vue
• Séquence
• Index
• Synonyme

13
Création de Tables
Syntaxe :
CREATE TABLE nomtable
(champs typechamps [DEFAULT valeur], ...);
CREATE TABLE nomtable
[(champs1, champs2...)] as sousinterrogation;

Les identificateurs utilisés doivent respecter les règles


suivantes:
• Commencer par une lettre et contenir que les caractères
A à Z, 0 à 9, _, $, et # (30 caractères maximum).
• Être différent des autres objets appartenant au même
utilisateur et des mots réservé à Oracle
14
Création de Tables

Types de données Description


VARCHAR2(taille) Données caractères de longueur variable
(2000 caractères maximum)
CHAR(taille) Données caractères de longueur fixe
(255 caractères maximum)
NUMBER(taille,décimale) Numérique de longueur variable
DATE Valeurs de date et d'heure
LONG Données caractères de longueur variable,
jusqu'à 2 giga-octets
LONG RAW Binaire(image)

15
Création de Tables

SQL>
SQL> CREATE
CREATE TABLE
TABLE dept
dept
22 (( deptno
deptno NUMBER(2),
NUMBER(2),
33 dname
dname VARCHAR2(15),
VARCHAR2(15),
44 loc
loc VARCHAR2(12));
VARCHAR2(12));

SQL>
SQL> CREATE
CREATE TABLE
TABLE Empclerk
Empclerk
22 AS
AS SELECT
SELECT empno
empno mat,
mat, ename,
ename, nom,
nom,
33 sal
sal ++ comm
comm as
as salaire,
salaire, hiredate,
hiredate, deptno
deptno
44 FROM
FROM emp emp
55 WHERE
WHERE job
job like
like 'clerk');
'clerk');

16
Dictionnaire de Données

• Les tables appartenant à un utilisateur sont regroupées


dans le schéma de leurs propriétaire.
• Lorsque on fait référence à la table d’un autre utilisateur,
le nom du propriétaire doit précéder le nom de la table.
• La vue «user_tables» comporte les tables appartenant à un
utilisateur.
• La vue «user_objects» les différents types d'objets
appartenant à l'utilisateur.

17
Modification de la structure d’une Tables

L'ordre ALTER TABLE permet d’ajouter de nouveau


champs ou de modifier des champs existants.
Syntaxe :
ALTER TABLE Nomtable
ADD (champs typechamps [DEFAULT valeur]
[, champs typechamps]...);
ALTER TABLE Nomtable
MODIFY (champs typechamps [DEFAULT valeur]
[, champs typechamps]...);
ALTER TABLE Nomtable
DROP COLUMN champs ;

18
Modification de la structure d’une Tables

Syntaxe (suite):
ALTER
ALTER TABLE
TABLE table
table
RENAME
RENAME COLUMN
COLUMN ancien_nom
ancien_nom TO
TO nouveau_nom
nouveau_nom

Exemple :
SQL>
SQL> ALTER
ALTER TABLE
TABLE Empclerk
Empclerk
22 ADD
ADD (Matmgr
(Matmgr NUMBER(2));
NUMBER(2));

SQL>
SQL> ALTER
ALTER TABLE
TABLE Empclerk
Empclerk
22 MODIFY
MODIFY (JOB
(JOB VARCHAR2(15));
VARCHAR2(15));

19
Gestion des tables
Supprimer une Table
SQL>
SQL> DROP
DROP TABLE
TABLE Nomtable;
Nomtable;

Renommer une Table


SQL>
SQL> RENAME
RENAME AncienNomTable
AncienNomTable TO
TO NouveauNomTable;
NouveauNomTable;

Vider une Table


SQL>
SQL> TRUNCATE
TRUNCATE TABLE
TABLE NomTable;
NomTable;

Ajout de Commentaires
SQL>
SQL> COMMENT
COMMENT ON ON TABLE
TABLE NomTable
NomTable
22 IS
IS 'Commentaire';
'Commentaire';

20
Les Contraintes d’intégrités

Les types de contraintes reconnues dans SQL sont:

• NOT NULL

• UNIQUE

• PRIMARY KEY

• FOREIGN KEY

• CHECK

21
Les Contraintes d’intégrités
Syntaxe :
CREATE
CREATE TABLE
TABLE [Schema.]NomTable
[Schema.]NomTable
(Champs
(Champs TypeChamps
TypeChamps [DEFAULT
[DEFAULT Valeur]
Valeur]
[[CONSTRAINT
[[CONSTRAINT NomContrainte]
NomContrainte] TypeContrainte],
TypeContrainte],

… ,,
[[CONSTRAINT
[[CONSTRAINT NomContrainte]
NomContrainte] TypeContrainte(Champs,
TypeContrainte(Champs, ...),]
...),]

… ););

ALTER
ALTER TABLE
TABLE NomTable
NomTable
ADD
ADD [CONSTRAINT
[CONSTRAINT NomContrainte]
NomContrainte] TypeContrainte(Champs);
TypeContrainte(Champs);

22
Les Contraintes d’intégrités

SQL>
SQL> CREATE
CREATE TABLE
TABLE Employes(
Employes(
22 empno
empno NUMBER(4)
NUMBER(4) PRIMARY
PRIMARY KEY,
KEY,
33 ename
ename VARCHAR2(15)
VARCHAR2(15) NOT
NOT NULL,
NULL,
44 job
job VARCHAR2(10),
VARCHAR2(10),
55 mgr
mgr NUMBER(4),
NUMBER(4),
66 hiredate
hiredate DATE,
DATE,
77 sal
sal NUMBER(8,2),
NUMBER(8,2),
88 comm
comm NUMBER(8,2),
NUMBER(8,2),
99 deptno
deptno NUMBER(2)
NUMBER(2) NOT
NOT NULL
NULL ,,
10
10 CONSTRAINT
CONSTRAINT un_dept
un_dept UNIQUE
UNIQUE (dname)
(dname) ,,
11
11 CONSTRAINT
CONSTRAINT Emp_Dept_Fk
Emp_Dept_Fk FOREIGN
FOREIGN KEY
KEY (deptno)
(deptno)
12
12 REFERENCES
REFERENCES dept
dept (deptno)
(deptno) ON
ON DELETE
DELETE CASCADE
CASCADE ););

23
Les Contraintes d’intégrités

SQL>
SQL> ALTER
ALTER TABLE
TABLE Employes
Employes
22 ADD
ADD CONSTRAINT
CONSTRAINT Emp_Emp_Fk
Emp_Emp_Fk
33 FOREIGN
FOREIGN KEY(mgr)
KEY(mgr) REFERENCES
REFERENCES emp(empno);
emp(empno);

SQL>
SQL> ALTER
ALTER TABLE
TABLE Employes
Employes
22 ADD
ADD CONSTRAINT
CONSTRAINT CONSTRAINT
CONSTRAINT CHECK
CHECK (Comm
(Comm >> 0);
0);

24
Gestion des contraintes
Supprimer une contrainte
SQL>
SQL> ALTER
ALTER TABLE
TABLE NomTable
NomTable
22 DROP
DROP CONSTRAINT
CONSTRAINT NomContrainte
NomContrainte [CASCADE];
[CASCADE];
Désactiver une Contraintes
SQL>
SQL> ALTER
ALTER TABLE
TABLE NomTable
NomTable
22 DISABLE
DISABLE CONSTRAINT
CONSTRAINT NomContrainte
NomContrainte [CASCADE];
[CASCADE];
Activer une Contraintes
SQL>
SQL> ALTER
ALTER TABLE
TABLE NomTable
NomTable
22 ENABLE
ENABLE CONSTRAINT
CONSTRAINT NomContrainte
NomContrainte [CASCADE];
[CASCADE];

La vue «user_constraints» comporte les définitions et les


noms de toutes les contraintes d’un schéma alors que la
vue «user_cons_columns»indique les colonnes associées à
ses contraintes
25
Notion de vue
ƒ Une vue est une table virtuelle basée sur une ou plusieurs

table (ou sur d’autres vues). C’est une fenêtre par laquelle

il est possible de visualiser ou de modifier des données

venant de ces tables (appelés tables de base).

ƒ Les utilisateurs consultent la base, ou modifier la base

(avec certaines restrictions) à travers les vues (Limitation

d'accès )
26
Création d'une Vue
Syntaxe
CREATE
CREATE VIEW
VIEW NomVue
NomVue [(alias[,
[(alias[, alias]...)]
alias]...)]
AS
AS SousInterogation
SousInterogation
[WITH
[WITH CHECK
CHECK OPTION]
OPTION]
[WITH
[WITH READ
READ ONLY]
ONLY]

ƒ La SousInterogation(ordre select) ne doit pas comporter la


clause ORDER BY.
ƒ « WITH CHECK OPTION » permet de garantir que les
ordres LMD reste dans le domaine de la vue.
ƒ « WITH READ ONLY » assure qu'aucune opération LMD
ne sera exécutée dans la vue.
27
Exemple de création d'une Vue

SQL>
SQL> CREATE
CREATE VIEWVIEW manager
manager
22 (matricule,
(matricule, nom,
nom, fonction,
fonction, dateembouche,
dateembouche, salaire,
salaire, Departement
Departement ))
33 AS
AS SELECT
SELECT empno,
empno, ename,
ename, job,hiredate,
job,hiredate, sal
sal ++ nvl(comm,0),
nvl(comm,0), dname
dname
44 FROM
FROM emp, emp, dept
dept
55 WHERE
WHERE ((emp.deptno
((emp.deptno == dept.deptno)
dept.deptno)
66 and
and empno
empno inin (select
(select mgr
mgr from
from emp
emp where
where mgr
mgr isis not
not NULL))
NULL))
77 WITH
WITH READ
READ ONLYONLY

SQL>
SQL> desc
desc manager;
manager;

SQL>
SQL> select
select **
22 from
from manager
manager ;;

la table USER_VIEWS du dictionnaire de données permet


d’afficher le nom et la définition des vues d’un utilisateur.
28
Suppression d’une vue

L'ordre DROP VIEW permet supprimer une vue (les tables


de base correspondantes ne sont pas supprimées).
Syntaxe

DROP
DROP VIEW
VIEW NomVue;
NomVue;

29

Vous aimerez peut-être aussi