Académique Documents
Professionnel Documents
Culture Documents
Bases de Donnes
Chapitre 8
SQL
(Structured Query
Language)
2
LDD
(1/29)
CREATE TABLE
DROP TABLE
ALTER TABLE
CREATE INDEX
DROP INDEX
CREATE VIEW
DROP VIEW
LDD
(2/29)
Syntaxe simple :
CREATE TABLE nom_table (
nom_colonne_1 type_colonne_1,
nom_colonne_2 type_colonne_2,
nom_colonne_n type_colonne_n
);
NB: lemploi des majuscules et minuscules
est indiffrent sauf pour le nom des tables. 4
LDD
(3/29)
LDD
(4/29)
Autres proprits
NOT NULL : Indique qu'on est oblig de
mettre une valeur dans la colonne
UNIQUE : Indique que les valeurs dans la
colonne doivent tre toutes diffrentes
(comme pour les cls, sauf que ce n'est pas
une cl)
DEFAULT : Permet d'indiquer une valeur
par dfaut la cration d'une nouvelle ligne
6
LDD
(5/29)
Exemple1:
CREATE TABLE employe
( empno NUMBER(8) NOT NULL,
nom VARCHAR2(20),
fonction VARCHAR2 (10),
sal NUMBER (8,2),
code_service CHAR(3),
date_embauche DATE ) ;
LDD
(6/29)
Exemple2:
CREATE TABLE compte
( num_cpte NUMBER(11) NOT NULL,
type_cpt VARCHAR2(5) DEFAULT "chque",
solde NUMBER(10, 2) DEFAULT 0, );
LDD
(7/29)
LDD
(8/29)
LDD
(9/29)
LDD
(10/29)
LDD
(11/29)
LDD
(12/29)
LDD
(13/29)
15
LDD
(14/29)
LDD
(15/29)
17
LDD
(16/29)
LDD
(17/29)
LDD
(18/29)
LDD
(19/29)
21
LDD
(20/29)
22
LDD
(21/29)
Exemple
CREATE TABLE PERSONNE
( idpers Number CONSTRAINT cl_primaire PRIMARY
KEY, nom Varchar2(30) CONSTRAINT nom_existant
NOT NULL, prenom Varchar2(30) CONSTRAINT
prnom_par_dfaut DEFAULT 'prnom inconnu',
age Number CONSTRAINT verify_age
CHECK (age >= 0 AND age < 130),
etat_civil Varchar2(20) CONSTRAINT
domaine_tat_civil CHECK (etat_civil IN ('mari(e)',
clibataire', 'veuf(ve)', 'divorc(e)'));
23
LDD
(22/29)
24
LDD
(23/29)
25
LDD
(24/29)
26
LDD
(25/29)
27
LDD
(26/29)
28
LDD
(27/29)
Exemple:
29
LDD
(28/29)
Exemple :
RENAME employe to salarie;
30
LDD
(29/29)
31
LMD
Premire forme :
On indique explicitement le nom des colonnes qu'on
veut valoriser, et on indique les valeurs dans le mme
ordre.
INSERT INTO nom_table (nom_colonne1, nom_colonne2, )
VALUES(valeur_colonne1, valeur_colonne2, );
32
LMD
(2/9)
LMD
(3/9)
Exemple :
INSERT INTO employe VALUES(12, 'Dupont',
comptable', 1800, 2, NULL)
34
LMD
(4/9)
LMD
(5/9)
LMD
(6/9)
LMD
(7/9)
Exemple :
UPDATE employe SET NumDept=1,
38
sal=2000 WHERE code_service=13;
LMD
(8/9)
39
LMD
(9/9)
40
LID
Projection (SELECTFROM)
Syntaxe
SELECT [DISTINCT]
(<nomattribut1>, [<nomattribut2,] ) | *
LID
(2/19)
Projection (SELECTFROM)
Exemple1 : Liste des numros et noms
demploys
SELECT NomEmp, Numemp FROM emp ;
Exemple2 : Liste de tous les employs
SELECT * FROM emp ;
Exemple3 : Liste des fonctions occupes dans
lentreprise
SELECT job FROM emp ;
42
LID
(3/19)
Projection (SELECTFROM)
Remarque : la requte renvoie plusieurs
lignes identiques.
Liste des fonctions occupes dans
lentreprise (avec suppression des lignes
identiques)
SELECT distinct job FROM emp ;
43
LID
(4/19)
Projection (SELECTFROM)
La clause ORDER BY
Permet de trier les rsultats suivant diffrentes
expressions (souvent des noms de colonnes) par ordre
croissant (ASC) ou dcroissant (DESC).
Loption ASC est prise par dfaut pour chacune des
expressions cites.
Exemple : Liste des employs par salaires dcroissants
LID
(5/19)
Slection/Restriction (WHERE)
Syntaxe
SELECT [DISTINCT]
(<nomattribut1>, [<nomattribut2,] ) | *
LID
(6/19)
Slection/Restriction (WHERE)
Exemple1 : Liste des employs appartenant au
dpartement 20
SELECT NomEmp, NumEmp FROM emp
WHERE deptno = 20 ;
Exemple2 : Liste des employs occupant la
fonction de vendeur ou analyste
SELECT NomEmp, NumEmp FROM emp
WHERE job IN ( vendeur, analyste) ;
46
LID
(7/19)
Slection/Restriction (WHERE)
Exemple3 : Liste des employs
embauchs au mois de septembre 2010
SELECT NomEmp, NumEmp, DatEmb
FROM emp
WHERE DatEmb BETWEEN 01/09/10
AND 30/09/10 ;
47
LID
(8/19)
Slection/Restriction (WHERE)
Exemple 4 :Liste des employs dont le salaire est
compris entre 2000 et 3000
SELECT * FROM emp
WHERE sal between 2000 AND 3000 ;
Exemple 5 : Liste des employs dont le nom
commence par un J
SELECT * FROM emp
WHERE NomEmp LIKE "J%";
48
LID
(9/19)
Jointure
Syntaxe
SELECT [DISTINCT]
(<nomattribut1>, [<nomattribut2,] ) | *
FROM <noms des tables>
WHERE <condition de jointure>
[ AND <condition de recherche> ];
49
LID
(10/19)
Jointure
50
LID
(11/19)
Jointure
51
LID
(12/19)
LID
(13/19)
53
LID
(14/19)
LID
(15/19)
55
LID
(16/19)
LID
(17/19)
57
LID
(18/19)
Linstruction
GROUP
BY
sert
58
LID
(19/ 19)
59
(1/7)
UNION
(2/7)
UNION
Syntaxe
SELECT col1, col2 FROM table1
WHERE ...
UNION
SELECT col1, col2 FROM table2
WHERE ...
61
(3/7)
INTERSECT
(4/7)
INTERSECT
Syntaxe
SELECT col1, col2 FROM table1
WHERE ...
INTERSECT
SELECT col1, col2 FROM table2
WHERE ...
63
(5/7)
MINUS
(6/7)
MINUS
Syntaxe
SELECT col1, col2 FROM table1
WHERE ...
MINUS
SELECT col1, col2 FROM table2
WHERE ...
65
(7/7)
66