I)Présentation de SQL
SQL signifie (Structured Query Language) c'est-
à-dire (Langage d'interrogation structuré).
En fait SQL est un langage complet de gestion de
bases de données relationnelles. Il a été conçu
par IBM dans les années 70. Il est devenu le
langage standard des systèmes de gestion de
bases de données (SGBD) relationnelles
(SGBDR).
1) Caractéristiques
SQL assure l'indépendance des données
Mode interactif ou programmé
interactif : instruction SQL tapée directement, instantanément
traitée
à l'intérieur d'un pgm : appel de SQL dans un pgm en C, ...
instruction SQL = requête
résultat d'une requête = table
Caractéristiques
SQL est un langage à dimension triple :
le DDL (Data Definition Language) : commandes de
SQL permettant de créer, modifier ou effacer la
définition (schéma) d'une BD ou d'une table.
le DML (Data Manipulation Language) : interrogation
et modification de l'information contenue dans les
tables
le DCL (Data Control Language) : sécurité et
confidentialité de la BD.
Caractéristiques
LANGAGE DE DEFINITIONS DE DONNEES
CREATE TABLE
CREATE VIEW
LANGAGE DE MANIPULATION DE DONNEES
SELECT OPEN
INSERT FETCH
UPDATE CLOSE
DELETE
LANGAGE DE CONTROLE DE DONNEES
GRANT et REVOKE
BEGIN et END TRANSACTION
COMMIT et ROLLBACK
2)Le vocabulaire:
Les TABLES correspondent aux entités et relations
Les CHAMPS correspondent aux attributs (=
colonne)
Les ENREGISTREMENTS correspondent aux
données saisies (= ligne)
Les tables
numcli nomcli prenomcli adrcli cpcli villecli
10003 ANDRE Thomas 10 rue courtalon 75014 PARIS
102778 BULI Patrice 20 cours Vuitton 69006 LYON
124682 VERIN Didier 10 rue Schuman 75002 PARIS
125941 GADRON Dominique 10 allée des Tilleuls 69300 CALUIRE
140621 BALOIR Claude 10 place des cordeliers 75008 PARIS
143025 BLANC Cécile 12 rue Cortier 89000 AUXERRE
147963 DOLMEN Christian 145 cous Lafayette 75015 PARIS
148254 JORET Geneviève 10 rue des provinces 69005 LYON
150763 MALOT Berthe 39 rue denfert rochereau 75014 PARIS
157269 OLIVE Virginie 20 rue Berliet 21000 DIJON
164025 PALO Nicole 10 rue de la Préfecture 75001 PARIS
172436 MARIE Olivier 43 rue de l'église 06000 NICE
172596 BELO Vincent 15 rue des chèvrefeuilles 75002 PARIS
175298 GIDOT Sylvie 20 rue de Melun 75013 PARIS
175496 FAVRE Caroline 61 rue du calvaire 10000 TROYES Table CLIENT
240573 VIAR Stéphane 68 rue Anatole France 75016 PARIS
279246 MAIRE René 28 rue de l'Orme 69003 LYON
Les champs
Champs de la table CLIENT
numcli nomcli prenomcli adrcli cpcli villecli
10003 ANDRE Thomas 10 rue courtalon 75014 PARIS
102778 BULI Patrice 20 cours Vuitton 69006 LYON
124682 VERIN Didier 10 rue Schuman 75002 PARIS
125941 GADRON Dominique 10 allée des Tilleuls 69300 CALUIRE
Les enregistrements
numcli nomcli prenomcli adrcli cpcli villecli
10003 ANDRE Thomas 10 rue courtalon 75014 PARIS
102778 BULI Patrice 20 cours Vuitton 69006 LYON
124682 VERIN Didier 10 rue Schuman 75002 PARIS
125941 GADRON Dominique 10 allée des Tilleuls 69300 CALUIRE
140621 BALOIR Claude 10 place des cordeliers 75008 PARIS
143025 BLANC Cécile 12 rue Cortier 89000 AUXERRE
147963 DOLMEN Christian 145 cous Lafayette 75015 PARIS
148254 JORET Geneviève 10 rue des provinces 69005 LYON
150763 MALOT Berthe 39 rue denfert rochereau 75014 PARIS
157269 OLIVE Virginie 20 rue Berliet 21000 DIJON Un enregistrement
164025
172436
PALO
MARIE
Nicole
Olivier
10 rue de la Préfecture
43 rue de l'église
75001
06000
PARIS
NICE
de la table CLIENT
172596 BELO Vincent 15 rue des chèvrefeuilles 75002 PARIS
175298 GIDOT Sylvie 20 rue de Melun 75013 PARIS
175496 FAVRE Caroline 61 rue du calvaire 10000 TROYES
240573 VIAR Stéphane 68 rue Anatole France 75016 PARIS
279246 MAIRE René 28 rue de l'Orme 69003 LYON
2) Types de données
a) Types numériques
SMALLINT (sur 2 octets)
INTEGER (sur 4 octets)
DECIMAL(p, d) correspond à des nombres décimaux
qui ont p chiffres significatifs et d chiffres après la virgule.
REAL (simple précision, avec au moins 7 chiffres
significatifs)
Exemple: SALAIRE DECIMAL(8,2)
définit une colonne numérique SALAIRE. Les valeurs
auront au maximum 2 décimales et 8 chiffres au plus au
total (donc 6 chiffres avant le point décimal).
b) Types chaînes de caractères
Les constantes chaînes de caractères sont entourées par
des apostrophes (').
le type CHAR pour les colonnes qui contiennent des
chaînes de longueur constante.
CHAR(longueur)
VARCHAR(longueur) pour les colonnes qui contiennent
des chaînes de longueurs variables.
c) Types temporels
DATE réserve 2 chiffres pour le mois et le jour et 4 pour
l'année;
TIME pour les heures, minutes et secondes
(les secondes peuvent comporter un certain nombre de
décimales);
d) Types binaires
SQL fournit les types BIT et BIT VARYING
(longueur constante ou non).
e) Valeur NULL
Une colonne qui n'est pas renseignée, et donc vide,
est dite contenir la valeur NULL. Cette valeur n'est pas
zéro, c'est une absence de valeur.
Définition des données
Domaines de base
Numériques :
Entier : INTEGER, SMALLINT
Décimal : DECIMAL (m,n), NUMBER(m,n)
Réel flottant : FLOAT, REAL
Chaîne de caractères : CHAR (n), VARCHAR(n)
Temporel : DATE (dans la norme SQL2 !)
chaque SGBD possède d'autres domaines qui lui sont
propres
Valeur NULL : absence de valeur
13
4) Les contraintes d’intégrité
a)Contrainte de domaine
Les contraintes de domaine sont des contraintes qui restreignent les valeurs
qu'une donnée peut prendre. Pour mieux en mesurer le sens, il nous faut
comprendre ce qu'est un domaine au sens SQL. Par exemple, un domaine
POURCENT se verra doté d'une contrainte qui ne lui permet que des valeurs
comprises entre 0 et 100.
b)Contrainte de relation
Pour respecter la contrainte de relation, il faut éviter les doublons dans les
clés primaires.
c)Contrainte de référence
les tables dans un SGBD sont liées par la contrainte d’intégrité référentielle, selon
laquelle la colonne qui fait l’objet de la clé étrangère telle que les valeurs de cette
colonne soient obligatoirement des valeurs de
la colonne clé primaire de la table de référence. refprod desiprod marqueprod prixprod
CG2054 CONGELATEUR MOULINEX 245,00 €
CG4210 CONGELATEUR BRANDT 229,00 €
CG4921 CONGELATEUR MOULINEX 200,00 €
CG5327 CONGELATEUR MIELE 215,00 €
CS1572 CUISINIERE MOULINEX 790,00 €
CS547 CUISINIERE ARTHUR MARTIN 950,00 €
CS7814 CUISINIERE ROSIERES 900,00 €
??? LL1043
LL1050
LAVE LINGE
LAVE LINGE
BRANDT
MOULINEX
610,00 €
520,00 €
LL450 LAVE LINGE ARTHUR MARTIN 250,00 €
LV2050 LAVE VAISSELLE BRANDT 1 035,00 €
LV5790 LAVE VAISSELLE MIELE 1 050,00 €
RF147 REFRIGERATEUR MIELE 750,00 €
RF2047 REFRIGERATEUR BRANDT 1 020,00 €
RF243 REFRIGERATEUR WHIRLPOOL 990,00 €
Prise en compte des contraintes d’intégrité
Saisir en premier les données des tables qui ne
contiennent pas de clé étrangère
Bien définir les types de données lors de la création de
la structure
Cocher l’application de l’intégrité référentielle lors de
la mise en place des liaisons
Mises à jour
Mise à jour
Insertion
Suppression
Modification
18
Insertion Mises à jour
Insertion d’un seul tuple
INSERT INTO Jus VALUES (100, ‘Oran', 1979, 12)
INSERT INTO Jus (num, cru) VALUES (200, 'Gam')
Insertion d’un ensemble de tuples
CREATE TABLE BORDEAUX(num Integer, annee Integer, degre
number(4,2))
INSERT INTO BORDEAUX
SELECT num, annee, degre
FROM Jus
WHERE cru = 'Bordeaux'
CREATE TABLE BORDEAUX AS
SELECT num, annee, degre
FROM Jus
WHERE cru = 'Bordeaux'
19
Mises à jour
Suppression
"Supprimer tous les tuples de Jus"
DELETE FROM Jus ou TRUNCATE TABLE Jus
"Supprimer le jus de numéro 150"
DELETE FROM Jus
WHERE num = 150
"Supprimer les jus de degré <9 ou >12"
DELETE FROM Jus
WHERE degre < 9 OR degre > 12
"Supprimer les commandes passées par Belaïd"
DELETE FROM Commandes
WHERE nb IN (
SELECT num
FROM Clients
WHERE nom= ‘Belaïd')
20
Modification Mises à jour
« Le producteur 150 habite dans le sud ouest »
UPDATE Producteurs
SET region = ‘Sud Ouest'
WHERE num = 150
« Les degrés des Gam augmentent de 10 % »
UPDATE Jus
SET degre = degre * 1.1
WHERE cru = 'Gam'
« Le client ‘Bac’ augmente ses commandes de 10 unités »
UPDATE Commandes
SET qte = qte + 10
WHERE nb IN (
SELECT num
FROM Clients
WHERE nom='Bac')
21
II)DDL: LANGAGE DE
DEFINITIONS DE DONNEES
DDL: DATABASE
DDL: TABLE
DDL: TABLE
DDL: TABLE, contraintes
DDL: TABLE, contraintes
DDL: TABLE, contraintes
DDL: TABLE, contraintes
DDL: TABLE, contraintes
DDL: TABLE, contraintes
L'option permettant de définir le comportement en cas de modification est
donc ON UPDATE {RESTRICT | NO ACTION | SET NULL | CASCADE}. Les
quatre comportements possibles sont exactement les mêmes que pour la
suppression.
•
RESTRICT et NO ACTION : empêche la modification si elle casse la contrainte
(comportement par défaut).
•
SET NULL : met NULL partout où la valeur modifiée était référencée.
•
CASCADE : modifie également la valeur là où elle est référencée.
DDL: TABLE, contraintes
DDL: TABLE, contraintes
DDL: TABLE, ALTER
III)DML: LANGAGE DE
MANIPULATION DE DONNEES
DML:
DML: INSERT
DML: INSERT
DML: INSERT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: SELECT
DML: DELETE
DML: UPDATE
DML: UPDATE
DML: Requêtes Corrélées
DML: Requêtes Corrélées