Vous êtes sur la page 1sur 6

Rappels SQL

1 Dfinition des donnes


1.1 Cration d'une table
CREATE TABLE table ( col1 type1, col2 type2 , )
table est le nom donn la nouvelle table.
col1, col2, sont les noms des colonnes.
type1, type2, sont les types des donnes contenues dans les colonnes.
CREATE TABLE table [ ( col1 type1, col2 type2 , ) ]
AS SELECT ...
table est le nom de la nouvelle table. Elle est dfinie sur les attributs et n-uplet rsultat de la requte select.

1.2 Modification de la structure


Il est possible de modifier la structure dune base de donnes existante :
ALTER TABLE table ADD (col1 type1, col2, type2)
ajoute les colonnes spcifies une table existante.
ALTER TABLE table MODIFY (col1 type1, col2 type2)
modifie la dfinition des colonnes spcifies.
ALTER TABLE table DROP col
supprime la colonne col.
Attention: certaines modification sur les tables ne seront pas acceptes (suppression d'un attribut appartenant
la cl primaire, certaines diminution de la capacit de contenance d'un type, etc...).

1.3 Contraintes dintgrit


Lors de la cration ou la modification de la structure dune table, il est possible de spcifier des contraintes
dintgrit c'est--dire des conditions que devront vrifier les enregistrements. Elles sont de deux types :

Contrainte sur une colonne : peut suivre la dfinition dune colonne.


Contrainte sur une table (une ou plusieurs colonnes) : apparat au mme niveau que les
dfinitions des colonnes.
CONSTRAINT nom_contrainte contrainte

dfinit et nomme une contrainte sur une ou plusieurs colonnes.


Les types de contraintes sont :
PRIMARY KEY (col1, col2,)
PRIMARY KEY

(contrainte sur une table)


(contrainte sur une colonne)

indique la cl primaire de la table. Aucune des colonnes de cette cl ne doit avoir une valeur NULL.

UNIQUE (col1, col2,)


UNIQUE

(contrainte sur une table)


(contrainte sur une colonne)

interdit quune colonne (ou la concatnation de plusieurs colonnes) contienne deux valeurs identiques.

FOREIGN KEY (col1, col2,) REFERENCES table [(col1,col2,)]


REFERENCES table [(col1)] [ON DELETE CASCADE]

(contrainte sur une table)


(contrainte sur une colonne)

indique que la concatnation de col1, col2, est une cl trangre faisant rfrence la concatnation de
col1, col2, de table. Si col1,col2, sont omises, la cl primaire de table est prise par dfaut.
par dfaut, on ne peut supprimer un n-uplet rfrenc par d'autres n-uplet. Si on rajoute la clause on "delete
cascade", les n-uplets rfrenant sont supprims.

CHECK (condition)
donne une condition devant tre vrifie par une ou plusieurs colonnes.

1.4 Suppression d'une table


DROP TABLE table
supprime la dfinition dune table et par consquent lensemble des enregistrements quelle contient.

1.5 Exemple de cration de table


CREATE TABLE EMP (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME CHAR(10) NOT NULL,
AGE NUMBER(4),
JOB CHAR(9),
MGR NUMBER(4),
DEPTNO NUMBER(2) REFERENCES DEPT,
CONSTRAINT MGR_FK FOREIGN KEY (MGR) REFERENCES EMP (EMPNO),
CONSTRAINT AGE_CK CHECK ( AGE BETWEEN 18 AND 70 ) );

2 Manipulation des donnes


2.1 Insertion
INSERT INTO table [(col1, col2,)] VALUES ( val1, val2,)
INSERT INTO table [(col1, col2,)] SELECT
insre un nouvel enregistrement dans table. Si (col1, col2,) est omise, lordre utilis par dfaut est celui
spcifi lors de la cration de la table. A linverse, si cette liste est donne, les colonnes ny figurant pas
auront la valeur NULL.

2.2 Mise jour


UPDATE table SET col1 = expr1, col2 = expr2,WHERE prdicat
UPDATE table SET (col, col2,) = (SELECT) WHERE prdicat
modifie les enregistrements de table qui vrifient prdicat. Si prdicat est omis, tous les enregistrements sont
mis jour.

2.3 Suppression
DELETE FROM table WHERE prdicat
supprime les enregistrements de table qui vrifient prdicat. Si prdicat est omis, tous les enregistrements
sont supprims.

3 Interrogation dune base


La syntaxe gnrale est la suivante :
SELECT FROM [WHERE ][GROUP BY [HAVING ]] [ORDER BY]

3.1 SELECT
SELECT [DISTINCT] expr1 [[AS] nom1], expr2 [[AS] nom2],
ralise une projection.
Exrp1, expr2, indiquent quelles expressions devront tre renvoyes, par exemple des noms de champs. Sil
y a une ambigut (cas de deux tables contenant des champs de mme nom), il est ncessaire de prfixer le
nom du champ par celui de la table et dun point.
Nom1, nom2, sont des noms facultatifs qui constitueront les titres des colonnes renvoyes.
Le mot cl DISTINCT permet de supprimer les doublons.

3.2 FROM
FROM table1 [alias1], table2 [alias2],
donne la liste des tables participant linterrogation. alias1, alias2, sont des alias facultatifs attribus aux
tables pour le temps de la requte. Quand une table se voit attribuer un alias, elle nest plus reconnue sous
son nom dorigine dans la requte.

3.3 WHERE
WHERE prdicat
permet deffectuer une restriction, c'est--dire de spcifier quels enregistrements slectionner dans une table
ou un produit cartsien de tables.
3.3.1 Prdicats simples
Un prdicat simple est la comparaison de plusieurs expressions au moyen dun oprateur logique:
WHERE
WHERE
WHERE
expr2)
WHERE
WHERE

expr1 = / != / < / > / <= / >= expr2


expr1 BETWEEN expr2 AND expr3
expr1 [NOT] LIKE expr2

(oprateurs classiques)
(appartenance un intervalle bornes incluses)
(utilisation des caractres joker _ et % dans

expr1 [NOT] IN (expr2,expr3,)


expr1 IS [NOT] NULL

(appartenance la liste dexpressions)


(valeur NULL)

3.3.2 Prdicats composs


Les oprateurs logiques AND et OR permettent de combiner plusieurs prdicats. AND est prioritaire par
rapport OR mais lutilisation de parenthses permet de modifier lordre dvaluation.

3.3.3 Sous-requtes
Le critre de recherche employ dans une clause WHERE (lexpression droite dun oprateur de
comparaison) peut tre le rsultat dun SELECT. Dans le cas des oprateurs classiques, la sousinterrogation
ne doit ramener quune ligne et une colonne. Elle peut ramener plusieurs lignes la suite de loprateur
[NOT] IN, ou la suite des oprateurs classiques moyennant lajout dun mot cl (ANY ou ALL).
ANY : la comparaison est vraie si elle est vraie pour au moins un lment de lensemble (donc fausse si
lensemble des enregistrements est vide).
ALL : la comparaison est vraie si elle est vraie pour tous les lments de lensemble (donc vraie si
lensemble des enregistrements est vide).
WHERE expr1 = / != / < / > / <= / >= expr2 ALL (SELECT)
WHERE expr1 = / != / < / > / <= / >= expr2 ANY (SELECT)
3.4 Jointures
3.4.1 Jointures naturelles
SELECT expr1, expr2,
FROM table1, table2
WHERE table1.champ1 = table2.champ2
Lorsque la clause FROM contient plusieurs tables, on en obtient le produit cartsien. La clause WHERE
permet deffectuer une restriction. Si cette clause est une galit, on dit que lon ralise une jointure naturelle
ou qui-jointure.

3.4.2 Jointures interne


SELECT table.expr1, alias.expr2
FROM table, table alias
WHERE table.champ1 = alias.champ2
Il sagit dune jointure naturelle mettant deux fois en jeu la mme table. Ceci permet de rassembler venant
dun enregistrement dune table avec les informations venant dun autre enregistrement. A noter quil est
obligatoire de spcifier deux fois la table source dans la clause FROM, en attribuant un alias lune des
occurrences.

3.4.3 Jointures externes


SELECT expr1, expr2,
FROM table1 LEFT / RIGHT / FULL OUTER JOIN table2
ON table1.champ1 = table2.champ2
Lorsquon effectue une jointure naturelle sur deux tables, il est possible quun enregistrement dune table
nait pas de correspondant dans lautre. Dans ce cas, lenregistrement en question nest pas affich. La
jointure externe permet de rsoudre ce problme par lajout de lignes fictives, qui ralisent la correspondance
avec les enregistrements de lautre table nayant pas de correspondant rel (LEFT OUTER JOIN correspond
lajout denregistrements fictifs dans table1).

3.5 GROUP BY
GROUP BY expr1, expr2,
permet de subdiviser la table en groupes, chaque groupe tant lensemble des enregistrements ayant une
valeur commune pour les expressions spcifies. Les champs de la clause SELECT doivent alors tre des
fonctions agrgat ou des expressions figurant dans la clause GROUP BY.
Quelques fonctions d'agrgat: COUNT, SUM, MIN, MAX, AVG, VARIANCE.

3.6 HAVING
HAVING prdicat
sert prciser quels groupes doivent tre slectionns. Cette clause se place aprs GROUP BY et le prdicat
ne peut porter que sur des fonctions agrgat ou des expressions figurant dans la clause GROUP BY.

3.7 ORDER BY
ORDER BY expr1 [DESC], expr2 [DESC],
classe les enregistrements retourns selon lordre croissant de expr1 puis expr2. La clause facultative DESC
inverse lordre de classement. Pour prciser lors dun tri sur quelle expression va porter le tri, il est possible
de donner sa position dans la liste des expressions de la clause SELECT ou encore le nom quon lui a
attribu.

3.8 Les oprateurs ensemblistes


requte1 UNION / INTERSECT / MINUS requte2
permettent de raliser des oprations ensemblistes sur les rsultats de plusieurs interrogations (union,
intersection, diffrence). Les champs renvoys par les requtes impliques doivent tre identiques. Les
oprations sont values de gauche droite mais lutilisation de parenthses permet de modifier cet ordre.