Vous êtes sur la page 1sur 9

CREATE TABLE livre (

idlivre INT PRIMARY KEY,


titre VARCHAR(255), • L'instruction CREATE TABLE déclare
annee INT, le schéma d'une relation :
editeur VARCHAR(30),
prix DECIMAL(6,2),  Déclare le nom de la table,
naissance DATE, ses attributs et leurs types.
FOREIGN KEY (naissance) REFERENCES
auteur(naissance),  Permet également de
déclarer une clé, ou plusieurs
Création d’une table

CONSTRAINT UC_titre_editeur UNIQUE (titre, editeur)


); clés, de la table.
CREATE TABLE
table_name ( CREATE TABLE auteur (
 Aussi la déclaration des
Attribut1 type1, idauteur INT PRIMARY KEY,
contraintes, des indexes, ...
Attribut2 type2, nom VARCHAR(20),
... naissance DATE,
AttributN typeN email VARCHAR(255) UNIQUE
); );
• Chaines de caractères (string) :
 CHAR(n), VARCHAR(n)
CREATE TABLE ecrire ( • Les entiers :
idauteur INT REFERENCES  INT, INTEGER, SHORTINT, ...
auteur (idauteur), • Les nombres à virgule flottante :
idlivre INT REFERENCES livre (idlivre),  FLOAT REAL, DECIMAL(n, d),
ordre INT, NUMERIC, ...
PRIMARY KEY (idauteur, idlivre) • Dates et heures :
);  DATE, DATETIME, ...
• Booléens :
 BOOLEAN
Insertion

INSERT INTO
table_name L'instruction INSERT permet d’insérer
INSERT INTO Livre VALUES (10, ‘Database Systems’,
VALUES (valeur1, un ou plusieurs tuples (lignes) dans
2008, ‘Anglais’, ‘Pearson’, 1090);
valeur2, ..., une table (relation)
valeurN);

L’opérateur de projection est utilisé


pour produire à partir d’une relation
Projection

SELECT titre, langue, editeur R une nouvelle relation qui ne


SELECT B1, B2, ... , FROM Livre ; contient que certaines colonnes de R.
Bm
FROM R; SELECT DISTINCT editeur, langue DISTINCT : Eliminer les
FROM Livre doublons

L’opérateur de sélection est utilisé


pour produire à partir d’une relation
Sélection

R une nouvelle relation qui ne


SELECT * SELECT *
contient que certaines lignes (tuples)
FROM R FROM Livre
de R.
WHERE Condition WHERE prix >= 500;
 Les tuples qui vérifient la
condition
Opérateurs de jointures
 On associe chaque tuple t1 de R
à chaque tuple t2 de S.
Produit cartésien

SELECT enom, prof, ville


FROM EMP, DEP
 La concaténation t1t2 est un
tuple de R × S .
SELECT *
SELECT enom, prof, ville
FROM R, S  Le schéma de R × S est composé
FROM EMP, DEP
des attributs de R puis de S, dans
WHERE EMP.dnum = DEP.dnum
l'ordre.

 Si l'attribut A du même nom dans


R et S: on utilise R.A et S.A.
Jointure Naturelle

 On associe un tuple t1 de R à un
tuple t2 de S lorsqu’ils ont les
SELECT * mêmes valeurs sur les attributs
SELECT enom, prof, ville
FROM R NATURAL en commun.
FROM EMP NATURAL JOIN DEP
JOIN S
 N.B. il peut y avoir plusieurs
attributs en commun entre R et S
Jointure théta

SELECT *
FROM R JOIN S SELECT dnom, enom
Produit Cartésien + condition
ON cond FROM DEP JOIN EMP ON enum = dir;
Opérateurs ensemblistes
SELECT enom, sal
SELECT A1 FROM EMP
FROM R WHERE prof=‘Ingénieur’
Union

UNION UNION Union


SELECT B1 SELECT enom, sal
FROM S; FROM EMP
WHERE prof=‘Technicien’;
Intersection

SELECT A1 SELECT enum


FROM R FROM EMP
INTERSECT INTERSECT Intersection
SELECT B1 SELECT dir
FROM S; FROM DEP;
Différence

SELECT A1 SELECT enum


FROM R FROM EMP
EXCEPT EXCEPT Différence
SELECT B1 SELECT dir
FROM S; FROM DEP;
Quelque commande

BETWEEN peut s'utiliser avec des


Recherche dans un intervalle :

dates, mais aussi avec des nombres


(BETWEEN 0 AND 100)

SELECT * Ou avec des chaînes de caractères


FROM Animal (BETWEEN 'a' AND 'd') auquel cas
WHERE date_naissance <= '2009-03-23' c'est l'ordre alphabétique qui sera
AND date_naissance >= '2008-01-05'; utilisé
View exemple 
SELECT * (Toujours insensible à la casse sauf
FROM Animal si l'on utilise des chaînes binaires :
WHERE date_naissance BETWEEN '2008-01-05' AND BETWEEN BINARY 'a' AND
'2009-03-23'; BINARY 'd').

Bien évidemment, on peut aussi


exclure un intervalle avec NOT
BETWEEN.

SELECT *
Tester la valeur NULL :

FROM Animal
WHERE nom <=> NULL; -- sélection des animaux sans
nom
-- OU
SELECT * NULL : Le champ est vide (pas
View exemple FROM Animal de valeur) et ce n’est pas un
WHERE nom IS NULL; zéro

SELECT *
FROM Animal
WHERE commentaires IS NOT NULL; -- sélection des
animaux pour lesquels un commentaire existe
Recherche d'un pattern.

SELECT ... FROM ... WHERE ... LIKE ‘a%’; a% : Retourne ici ce qui commence par ‘a’

SELECT ... FROM ... WHERE ... LIKE ‘%a%’;


%a% : Retourne ici ce qui contient ‘a’
View exemples
SELECT ... FROM ... WHERE ... LIKE ‘%a’;
%a: Retourne ici ce qui termine par ‘a’
Tri des données :

SELECT * L'ordre dans lequel vous donnez les


FROM Animal colonnes est important, le tri se fera
View exemple
WHERE espece='chien' d'abord sur la première colonne
ORDER BY date_naissance[DESC ou ASC]; donnée, puis sur la seconde, etc.

SELECT SUM(sal)
FROM emp
Opérateurs d’agrégation

SUM • Des opérateurs qui s’appliquent


SELECT MIN(sal), MAX(SAL), AVG(sal) sur un ensemble de valeurs
FROM emp
MIN (numériques, chaines, ...) et qui
SELECT COUNT(*) produisent une valeur agrégée
MAX comme résultat.
FROM emp
WHERE prof=‘Ingénieur’
AVG
• Ces opérateurs sont utilisés pour
SELECT COUNT(DISTINCT prof) résumer ou « agréger » les valeurs
COUNT
FROM emp
d’une colonne d'une relation è
... opérateurs d'agrégation.
SELECT AVG(sal)
FROM emp
WHERE prof=‘Ingénieur’
• Regrouper les tuples d’une table
Groupement

en sous-groupes avant d’appliquer


un opérateur d’agrégation sur
SELECT A1, A2 SELECT prof, AVG(sal) chaque sous-groupe.
FROM R FROM emp
GROUP BY A1 GROUP BY prof
• Le groupement se fait selon la
valeur d’une colonne (ou plusieurs
colonnes)
Sélection après groupement

La clause HAVING permet la


SELECT A1, A2 SELECT prof sélection, après groupement, de
FROM R FROM emp certains groupes selon une condition
GROUP BY A1 GROUP BY prof qui dépend du groupe dans son
HAVING cond HAVING AVG(sal) >= 1000 ensemble, plutôt que des tuples
individuels.
Modifications

INSERT INTO R (A1,


A2, ..., An) VALUES
(v1, v2, ..., vn);

Forme simplifiée :
Insertion

INSERT INTO R Insertion de tuples dans une


INSERT INTO emp VALUES (105, ‘ADIL’, ‘Ingénieur’,
VALUES (v1, v2, ...,
1100, 10); relation.
vn);

INSERT INTO R (A1,


A2, ..., An)
SELECT B1, B2, ..., Bn
FROM T
WHERE Condition;

DELETE FROM R DELETE FROM emp Suppression de tuples d’une


WHERE Condition; WHERE sal >= 1100; relation vérifiant une condition.
Suppression

DROP TABLE
DROP TABLE dep; Effacer une table
nomDeLaTable;
Mise à jour

UPDATE R SET A1=v1, UPDATE emp Changer les valeurs des


A2=v2, ..., An=vn SET sal = sal + sal*10/100 composants (attributs) d’un ou
WHERE Condition; WHERE prof=‘Technicien’; plusieurs tuples d’une relation.
Les contraintes SQL sont utilisées
pour spécifier des règles pour les
données d'une table.

ALTER TABLE Etudiant Les contraintes peuvent être


ALTER TABLE tablea ADD CONSTRAINT ck_Etudiant_Moyenne CHECK spécifiées lorsque la table est
ADD CONSTRAINT (Moyenne BETWWEN 0 AND 20 ) ;
créée avec l'instruction CREATE
CONSTRAINT

nom_contrainte
CHECK (condition); ALTER TABLE EMP TABLE ou après la création de la
ADD CONSTRAINT fk_dnum FOREIGN KEY table avec l'instruction ALTER
ALTER TABLE table (DNUM) TABLE.
ADD CONSTRAINT REFERENCES DEP (DNUM);
nom_contrainte Les contraintes suivantes sont
FOREIGN KEY (id)
généralement utilisées en SQL :
REFERENCES table2 ALTER TABLE Etudiant
• NOT NULL
(id); DISABLE/ENABLE/DROP CONSTRAINT
nn_Etudiant_NomEtud ; • UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
• DEFAULT
• CREATE INDEX

CREATE TABLE
table_name (
Auto-Incrémentation

Attribut1 type1
AUTO_INCREMENT,
CREATE TABLE livre (
Attribut2 type2,
idlivre INT PRIMARY KEY AUTO_INCREMENT, L'auto-incrémentation permet de
...
titre VARCHAR(255), générer automatiquement un
AttributN typeN
annee INT,
); numéro unique lorsqu'un nouvel
);
enregistrement est inséré dans
ALTER TABLE livre AUTO_INCREMENT=100; une table.
ALTER TABLE
table_name
AUTO_INCREMENT=100;
UPPER

UPPER(text) UPPER(‘tanger’) La fonction UPPER() convertit une


 Result TEXTE  TANGER chaîne en majuscules.
SELECT
CURRENT_TIMESTAMP

CURRENT_TIMESTAMP;

CREATE TABLE
table_name ( CREATE TABLE livre ( La fonction
Attribut1 date default idlivre INT PRIMARY KEY AUTO_INCREMENT, CURRENT_TIMESTAMP renvoie la
CURRENT_TIMESTAMP, titre VARCHAR(255),
date et l'heure actuelles, au
Attribut2 type2, date_now date default CURRENT_TIMESTAMP,
format 'AAAA-MM-JJ
... );
AttributN typeN hh:mm:ss.mmm'.
);

Les opérateurs ANY et ALL vous


SELECT column_name(s)
FROM table_name SELECT ProductName permettent d'effectuer une
WHERE column_name FROM Products comparaison entre une valeur de
operator ANY WHERE ProductID = ANY colonne unique et une plage
(SELECT column_name (SELECT ProductID d'autres valeurs.
ANY et ALL

FROM table_name FROM OrderDetails


WHERE condition); WHERE Quantity > 99); ANY signifie que la condition sera
vraie si l'opération est vraie pour
SELECT column_name(s) SELECT ProductName
FROM table_name FROM Products l'une des valeurs de la plage.
WHERE column_name WHERE ProductID = ALL
operator ALL (SELECT ProductID ALL signifie que la condition ne
(SELECT column_name FROM OrderDetails sera vraie que si l'opération est
FROM table_name WHERE Quantity > 99); vraie pour toutes les valeurs de la
WHERE condition); plage.

Vous aimerez peut-être aussi