Академический Документы
Профессиональный Документы
Культура Документы
I - Introduction ...............................................................................................................................................................4
II - Langage de Dclaration des Donnes - LDD -. ............................................................................................6
A - Cration. .....................................................................................................................................................................7
1 - Cration d'une table. .........................................................................................................................................7
2 - Cration d'une vue.............................................................................................................................................9
3 - Cration d'un index. ..........................................................................................................................................9
B - Destruction............................................................................................................................................................. 10
1 - Destruction d'une table. ............................................................................................................................... 10
2 - Destruction d'une vue. .................................................................................................................................. 10
3 - Destruction d'un index. ................................................................................................................................ 10
C - Gestion de la structure....................................................................................................................................... 11
1 - Affichage de la structure. ............................................................................................................................. 11
2 - Modification de la structure. ...................................................................................................................... 11
3 - Renommer une table. .................................................................................................................................... 12
III - Langage de Manipulation des Donnes - LMD -. ................................................................................... 13
A.
Gnralits........................................................................................................................................................... 13
1.
Insertion. ......................................................................................................................................................... 13
2.
Modification. .................................................................................................................................................. 14
3.
Suppression.................................................................................................................................................... 14
4.
B.
complments. ..................................................................................................................................................... 16
1.
ii.
i.
ii.
Insertion. ......................................................................................................................................................... 20
H.Chappert
Version 3.0
2 / 46
SQL Partie I
2.
Modification. .................................................................................................................................................. 20
3.
Suppression.................................................................................................................................................... 21
D.
E.
Gnralits. ..................................................................................................................................................... 23
2.
Ordonnancement. ........................................................................................................................................ 24
3.
4.
5.
Union. ........................................................................................................................................................... 28
ii.
Intersect. ..................................................................................................................................................... 28
iii. Minus............................................................................................................................................................ 28
6.
ii.
Synchronises........................................................................................................................................... 31
Gnralits. ..................................................................................................................................................... 32
B.
C.
ii)
B.
C.
D.
E.
H.Chappert
Version 3.0
3 / 46
SQL Partie I
S.Q.L.
I - INTRODUCTION
SLQ : Structured Query Language. {Langage Structur de Requtes}.
Version 3.0
LDD
4 / 46
SQL Partie I
LMD
LCD
Les requtes SQL peuvent tre intgres dans des langages de programmation ou de
description (Php, Cobol, C, Pascal, Fortran, PL/I, ). En principe le langage hte possde un
pr-compilateur qui "traduit" les requtes SQL en commandes du langage. Le programmeur
doit donc prvoir des variables qui recevront les rsultats des requtes SQL.
H.Chappert
Version 3.0
5 / 46
SQL Partie II
S.Q.L.
Data Definition Language - DDL Dans cette sous-partie du langage SQL, on va trouver les ordres permettant de grer la base de
donnes (Maintenance des tables notamment).
On va trouver des commandes pour :
Crer des tables, des index ou des vues
Dtruire des tables, des index ou des vues
Afficher ou modifier la structure dune table
Renommer une table
H.Chappert
Version 3.0
6 / 46
SQL Partie II
A - CREATION.
1 - CREATION D'UNE TABLE.
CREATE TABLE <Nom de la table > (<champ 1> <format 1> [<contraintes 1>] , <champ 2>
<format 2> [<contraintes 2>] ,);
Ou
CREATE TABLE <Nom de la table > [<champ 1>, <champ 2>, ] AS SELECT ;
<champ i>
<format i>
[<contrainte i>]
H.Chappert
Version 3.0
7 / 46
SQL Partie II
CREATE TABLE client (nocli CHAR(4) PRIMARY KEY, nomcli CHAR(25) NOT NULL, ville
CHAR(20)) ;
CREATE TABLE facture (numfact NUMBER(5) PRIMARY KEY, datefact DATE DEFAULT
sysdate, nocli CHAR(4) REFERENCES client, montant NUMBER(8,2) CHECK(montant>0)) ;
H.Chappert
Version 3.0
8 / 46
SQL Partie II
Dans les grandes bases de donnes, on prfre manipuler des sous-ensembles des tables, autant
pour des raisons de performances que de scurit.
Pour cela, on cre des vues :
Une vue la mme forme et les mme caractristiques qu'une table.
Une vue peut tre cre partir d'une ou plusieurs table.
On peut avoir des privilges sur une vue et pas sur la ou les tables qui la composent.
CREATE VIEW <Nom de la vue > [<champ 1>, <champ 2>, ] As (Select <Champs> FROM
<Tables> [Where <Conditions>]) [<options de tests>];
Lorsqu'on manipule de grandes bases de donnes, on peut optimiser les accs par la cration
d'index placs sur les champs utiliss lors des requtes de slection.
Un index n'est pas forcement unique.
CREATE [UNIQUE] INDEX <nom de l'index> ON <nom de la relation / vue> (<champ 1> [<Ordre
1>], <champ 2> [<Ordre 2>], );
Exemple :
CREATE INDEX ind_cli ON client (nomcli, pnomcli);
H.Chappert
Version 3.0
9 / 46
SQL Partie II
B - DESTRUCTION
Exemple :
H.Chappert
Version 3.0
10 / 46
SQL Partie II
C - GESTION DE LA STRUCTURE.
1 - AFFICHAGE DE LA STRUCTURE.
Affiche :
2 - MODIFICATION DE LA STRUCTURE.
Ajout de champs
ALTER TABLE <Nom de la table > ADD (<champ 1> <format 1> [<contraintes 1>] , <champ 2>
<format 2> [<contraintes 2>] ,);
Modification de champs
ALTER TABLE <Nom de la table > MODIFY (<champ 1> <format 1> [<contraintes 1>] , <champ 2>
<format 2> [<contraintes 2>] ,);
On ne peut pas diminuer la longueur d'un champ qui contient des valeurs.
H.Chappert
Version 3.0
11 / 46
SQL Partie II
Exemple :
H.Chappert
Version 3.0
12 / 46
S.Q.L.
A. GENERALITES.
Dans cette sous-partie du langage SQL nous allons manipuler les donnes du SGBDR. Nous allons
pouvoir : insrer, mettre jour ou effacer des donnes dans les tables et faire des requtes pour
obtenir des informations.
La base de donnes utilise pour les exemples est prsente en Annexe.
1. INSERTION.
Permet d'ajouter un ou plusieurs enregistrements la relation/vue concerne.
Par saisie :
INSERT INTO <nom relation/vue> [(<champ 1>, <champ 2>, )] VALUES (<valeur 1>, <valeur 2>,
);
Les valeurs donnes doivent respecter les diffrentes contraintes spcifies lors de la cration
ainsi que le type et la longueur des attributs.
Les chanes de caractres sont entre ' '
Exemple :
INSERT INTO client VALUES ('M123','Bidochon','Robert');
H.Chappert
Version 3.0
13 / 46
2. MODIFICATION.
On peut modifier les valeurs des enregistrements. Les nouvelles valeurs doivent tre
compatibles avec les types et contraintes dfinis.
Modification directe
UPDATE <Nom de la table> SET <champ i> = <expression ou valeur>, [<champ j> = <expression ou
valeur>, ] [WHERE <condition>];
Exemples :
UPDATE produit SET pxpdt = pxpdt * 1.1;
Augmentation de 10% pour tous les produits.
UPDATE produit SET pxpdt = 35 WHERE refpdt = 'AB9876';
Le prix du produit Ab9876 passe 35
UPDATE produit SET pxpdt = pxpdt + 0.5 WHERE pxpdt < 10;
Augmentation de 50 cts pour tous les produits ayant un prix initial infrieur 10
3. SUPPRESSION.
Supprimer des enregistrements d'une Table/Vue.
Delete ne supprime donc que les donnes, la structure de la Table ou de la vue existe toujours
(mais elle est vide)
Exemples :
DELETE FROM produit WHERE pxpdt < 10;
DELETE FROM client; (Et hop, plus de clients, mais la table existe toujours !!! Diffrence
avec DROP).
H.Chappert
Version 3.0
14 / 46
4. LA REQUETE DE SELECTION.
Cette requte est une des plus puissantes du SQL.
Exemples :
SELECT * FROM client;
Affiche toutes les colonnes de la table client.
SELECT nomcli FROM client;
Affiche tous les noms des clients de la table client.
SELECT * FROM client WHERE nocli='M123';
Affiche toutes les colonnes (donc toutes les informations possdes) du client dont le
numro est M123
SELECT nofact, montant FROM facture WHERE nocli='M123';
Affiche tous les numros de factures et leurs montants ( partir de la table Facture) du
client dont le numro est M123
H.Chappert
Version 3.0
15 / 46
B. COMPLEMENTS.
Pour pouvoir faire des requtes plus complexes, nous avons besoin doprateurs (arithmtiques,
logiques, de comparaison et de concatnation) ainsi que de fonctions (numriques, textuelles,
etc)
1. LES OPERATEURS.
Ils sont tous de la forme :
<Oprande> <Oprateur> <Oprande>
H.Chappert
Version 3.0
16 / 46
H.Chappert
Version 3.0
17 / 46
2. LES FONCTIONS.
Elles peuvent tre affiches ou dans les oprandes.
Cosinus (radians)
cosh(<x>)
Cosinus hyperbolique
exp(<x>)
e lev la puissance x
ln(<x>)
Logarithme nprien
log(<y>,<x>)
Logarithme en base y de x
sin(<x>
Sinus
sinh(<x>)
Sinus hyperbolique
tan(<x>)
Tangente
tanh(<x>)
Tangente hyperbolique
FONCTIONS SUR DES VALEURS ISSUES DE REQUETES.
avg(<x>)
count(<x> / *)
max(<x>)
Valeur maximum de x.
min(<x>)
Valeur minimum0 de x.
stddev(<x>)
variance(<x>)
H.Chappert
Version 3.0
18 / 46
lower(<x>)
Conversion en minuscule.
upper(<x>)
Conversion en majuscule.
ltrim(<x>)
rtrim(<x>)
replace(<x>,<x1>,<x2>)
soundex(<x>)
substr(<x>,<r>,<l>
lenght(<x>)
last_day(<x>)
months_between(<d1>,<d2>)
new_time()
sysdate
to_char()
to_date()
H.Chappert
Version 3.0
19 / 46
Insert
Update
Delete
Peuvent tre utiliss avec la commande SELECT pour permettre plus de prcisions dans la
gestion de la Base de Donnes.
1. INSERTION.
Permet d'ajouter un ou plusieurs enregistrements la relation/vue concerne.
Par saisie :
INSERT INTO <nom relation/vue> [(<champ 1>, <champ 2>, )] VALUES (<valeur 1>, <valeur 2>,
);
A partir d'une autre Table/Vue
INSERT INTO <nom relation/vue> [(<champ 1>, <champ 2>, )] SELECT ();
Exemples :
INSERT INTO client VALUES ('M123','Bidochon','Robert');
INSERT INTO produit SELECT * FROM nouvprod WHERE npxpdt > 100;
Insre dans la table "produits" tous les enregistrements d'une table "nouvprod" dont le
prix (npxpdt) est suprieur 100.
2. MODIFICATION.
Modification directe
UPDATE <Nom de la table> SET <champ i> = <expression ou valeur>, [<champ j> = <expression ou
valeur>, ] [WHERE <condition>];
Modification par une autre table
UPDATE <Nom de la table> SET (<champ i,<champ j>, ) = (<requte 2>) [WHERE <condition>];
Requte 2 doit donner autant de valeurs que de champs mettre jour et bien sr dans le
mme ordre.
Exemples :
H.Chappert
Version 3.0
20 / 46
3. SUPPRESSION.
Exemples :
DELETE FROM produit WHERE pxpdt < 10;
DELETE FROM produit WHERE pxpdt = (SELECT max(pxpdt) FROM produit);
On efface lenregistrement dont le prix est le plus cher.
H.Chappert
Version 3.0
21 / 46
Exemples
Soit la requte (REQ1) : SELECT * from &VnomTab;
1. SQL> RUN
SQL> Enter value for VnomTab : (On tape au clavier) FACTURE (La requte s'excute).
2. SQL> START req1 FACTURE (La requte est excute directement avec FACTURE pour
valeur de VnomTab)
On peut donc faire des requtes de maintenance des donnes avec des variables interactives.
Exemples :
UPDATE produit SET pxpdt = 35 WHERE refpdt = &VrefPdt;
Le prix du produit dont on saisit le n au moment de lexcution passe 35 .
'Bidochon'
'Robert'
'M123'
H.Chappert
M123
Version 3.0
22 / 46
Bidochon
Robert
H.Chappert
Version 3.0
23 / 46
2. ORDONNANCEMENT.
On ne peut pas effectuer de tris physiques, mais on peut ordonner l'affichage.
La clause utilise est ORDER BY [ASC / DESC]
Par dfaut le tri est croissant (ASC). Il peut se faire sur 16 champs maxi. On peut mlanger
ascendant et descendant.
Exemple :
NB : On peut remplacer dans la clause ORDER le nom des champs par leur numro d'ordre :
H.Chappert
Version 3.0
24 / 46
3. LES JOINTURES.
Lorsque les informations se trouvent dans plusieurs tables, il faut faire une jointure sur ces
tables.
Il existe des clauses spcifiques pour faire les jointures INNER JOIN, OUTER JOIN, etc qui
seront traites dans un autre cours. Dans cette initiation au SQL nous traiterons les jointures
comme une condition particulire que nous placerons dans le WHERE.
SELECT <>
FROM <nom table 1>, <nom table 2>
WHERE < nom table 1>.<nom champ> = < nom table 2>.<nom champ> ;
Exemples :
Nom du client de la facture n 97010003 :
SELECT nomcli
FROM client, facture
WHERE
nofact = 97010003
Version 3.0
25 / 46
4. TRAITEMENTS DE GROUPE.
La clause GROUP BY permet de crer des sous ensembles d'une Table/Vue ayant au moins
une caractristique commune.
La clause HAVING permet de ne prendre en compte que les sous-ensembles vrifiant une
condition spcifie.
SOUS-ENSEMBLE 1
Rsultat 1
SOUS-ENSEMBLE 2
Rsultat 2
SOUS-ENSEMBLE 3
Rsultat 3
.
.
SOUS-ENSEMBLE n
Rsultat n
Exemples :
SELECT nocli FROM facture
GROUP BY nocli
HAVING count(*) = 1;
Affiche les clients qui n'ont qu'une facture.
Version 3.0
26 / 46
H.Chappert
Version 3.0
27 / 46
H.Chappert
Version 3.0
28 / 46
Requte excute en
premier
"IN"
Version 3.0
29 / 46
NB :
NB :
H.Chappert
Version 3.0
30 / 46
II. SYNCHRONISEES.
WHERE EXISTS
H.Chappert
Version 3.0
31 / 46
SQL Partie IV
S.Q.L.
IV - LANGAGE DE CONTROLE DES DONNEES - LCD -.
Data Control Language - DCL -
A. GENERALITES.
Il permet d'assurer les contraintes d'intgrit de la base c'est dire les rgles qui assurent la
fiabilit et la cohrence des donnes.
Ces contraintes sont dfinies priori et vrifies lors des mises jour de la base. (Cf. les
contraintes lors de la cration d'une table).
Ces contraintes interviennent donc la cration d'une table ou d'une vue mais aussi par des
procdures de contrle (Triggers).
Le LCD permet aussi de "dcider" de la mise jour des donnes de la base : c'est la gestion des
transactions. Mais aussi d'attribuer des droits particuliers certains utisateurs de la base : c'est
la gestion des privilges.
H.Chappert
Version 3.0
32 / 46
SQL Partie IV
Droit de slection
Insert
Droit d'insrer
Update
Delete
Droit de suppression
Alter
Index
References
All
Pour transmettre un ensemble de droits tous les utilisateurs de la base de donnes, on utilise le
mot <PUBLIC>.
La formule <WITH GRANT OPTION> permet de dterminer si l'on peut nouveau transmettre les
droits acquis.
GRANT <Liste des privilges> ON <Table / Vue>
TO <Liste des utilisateurs> / PUBLIC
[WITH GRANT OPTION] ;
Exemples :
GRANT INSERT ON client TO PUBLIC.
Tous les utilisateurs ont le droit d'ajouter des clients dans la table CLIENT.
GRANT SELECT, INSERT, UPDATE ON facture TO Roger, Robert WITH GRANT
OPTION
Roger et Robert ont le droit de slectionner, insrer et modifier les tuples de la
table FACTURE et ont le droit de retransmettre ces droits.
H.Chappert
Version 3.0
33 / 46
SQL Partie IV
H.Chappert
Version 3.0
34 / 46
SQL Partie IV
H.Chappert
Version 3.0
35 / 46
SQL Partie V
S.Q.L.
SQL
Union
Intersection
Diffrence
Produit
SQL
Slection
Projection
Jointure
Division
Elle n'existe pas directement, elle doit tre ralise avec des
requtes imbriques.
Exemple de division :
Quelles sont les factures avec tous les produits ?
H.Chappert
Version 3.0
36 / 46
SQL Partie V
Ou
facture.nofact=lig_fac.nofact
AND
produit.refpdt = lig_fac.refpdt(+)
AND
lig_fac.refpdt IS NULL);
H.Chappert
Version 3.0
37 / 46
SQL Partie V
H.Chappert
Version 3.0
38 / 46
SQL
S.Q.L.
VI - ANNEXES.
A. TABLES UTILISEES.
TABLES
CLIENT
PRODUIT
FACTURE
LIG_FAC
H.Chappert
Type
Longueur
Cls
NoCli
Primaire
NomCli
20
PnomCli
20
RefPdt
LibPdt
20
PxPdt
6,2
NoFact
DateFact
10
Montant
8,2
NoCli
Etrangre
NoFact
Primaire
RefPdt
Primaire
QteCde
Version 3.0
Primaire
Primaire
1 / 46
SQL
Commandes
Description
/* */
ALTER TABLE
COMMENT
COMMIT
CREATE INDEX
CREATE TABLE
CREATE VIEW
DELETE
DROP
GRANT
INSERT
REVOKE
ROLLBACK
SELECT
UPDATE
H.Chappert
Version 3.0
2 / 46
SQL
Les mots suivants sont explicitement rservs en MySQL. La plupart sont interdits par ANSI
SQL92 en tant que nom de colonnes ou de tables (par exemple, GROUP). Quelques-uns sont
rservs parce que MySQL en a besoin et utilise (actuellement) un analyseur yacc :
ADD
ALL
ALTER
ANALYZE
AND
AS
ASC
ASENSITIVE
BEFORE
BETWEEN
BIGINT
BINARY
BLOB
BOTH
BY
CALL
CASCADE
CASE
CHANGE
CHAR
CHARACTER
CHECK
COLLATE
COLUMN
CONDITION
CONSTRAINT
CONTINUE
CONVERT
CREATE
CROSS
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
DATABASE
DATABASES
DAY_HOUR
DAY_MICROSECOND
DAY_MINUTE
DAY_SECOND
DEC
DECIMAL
DECLARE
DEFAULT
DELAYED
DELETE
DESC
DESCRIBE
DETERMINISTIC
DISTINCT
DISTINCTROW
DIV
DOUBLE
DROP
DUAL
EACH
ELSE
ELSEIF
ENCLOSED
ESCAPED
EXISTS
EXIT
EXPLAIN
FALSE
FETCH
FLOAT
FLOAT4
FLOAT8
H.Chappert
Version 3.0
3 / 46
SQL
FOR
FORCE
FOREIGN
FROM
FULLTEXT
GRANT
GROUP
HAVING
HIGH_PRIORITY
HOUR_MICROSECOND HOUR_MINUTE
HOUR_SECOND
IF
IGNORE
IN
INDEX
INFILE
INNER
INOUT
INSENSITIVE
INSERT
INT
INT1
INT2
INT3
INT4
INT8
INTEGER
INTERVAL
INTO
IS
ITERATE
JOIN
KEY
KEYS
KILL
LEADING
LEAVE
LEFT
LIKE
LIMIT
LINES
LOAD
LOCALTIME
LOCALTIMESTAMP
LOCK
LONG
LONGBLOB
LONGTEXT
LOOP
LOW_PRIORITY
MATCH
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MIDDLEINT
MINUTE_MICROSECOND
MINUTE_SECOND
MOD
MODIFIES
NATURAL
NOT
NO_WRITE_TO_BINLOG
NULL
NUMERIC
ON
OPTIMIZE
OPTION
OPTIONALLY
OR
ORDER
OUT
OUTER
OUTFILE
PRECISION
PRIMARY
PROCEDURE
PURGE
READ
READS
REAL
REFERENCES
REGEXP
RELEASE
RENAME
REPEAT
REPLACE
H.Chappert
Version 3.0
4 / 46
SQL
REQUIRE
RESTRICT
RETURN
REVOKE
RIGHT
RLIKE
SCHEMA
SCHEMAS
SECOND_MICROSECOND
SELECT
SENSITIVE
SEPARATOR
SET
SHOW
SMALLINT
SONAME
SPATIAL
SPECIFIC
SQL
SQLEXCEPTION
SQLSTATE
SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS
SQL_SMALL_RESULT SSL
STARTING
STRAIGHT_JOIN
TABLE
TERMINATED
THEN
TINYBLOB
TINYINT
TINYTEXT
TO
TRAILING
TRIGGER
TRUE
UNDO
UNION
UNIQUE
UNLOCK
UNSIGNED
UPDATE
USAGE
USE
USING
UTC_DATE
UTC_TIME
UTC_TIMESTAMP
VALUES
VARBINARY
VARCHAR
VARCHARACTER
VARYING
WHEN
WHERE
WHILE
WITH
WRITE
XOR
YEAR_MONTH
ZEROFILL
H.Chappert
Version 3.0
5 / 46
SQL
ASENSITIVE
CALL
CONDITION
CONTINUE
CURSOR
DECLARE
DETERMINISTIC EACH
ELSEIF
EXIT
FETCH
INOUT
INSENSITIVE
ITERATE
LEAVE
LOOP
MODIFIES OUT
READS
RELEASE
REPEAT
RETURN
SCHEMA
SCHEMAS
SENSITIVE
SPECIFIC SQL
SQLEXCEPTION
SQLSTATE SQLWARNING
TRIGGER
UNDO
WHILE
All
Continue
Exists
Into
Precision
And
Count
Fetch
Is
Privileges Sum
Any
Create
Float
Like
Procedure Table
AS
Current
For
Max
Public
To
Asc
Cursor
Found
Min
Real
Union
Authorization
Dec
From
Module
Rollback
Update
Avg
Decimal
Go
Not
Schema
User
Begin
Declare
Goto
Null
Section
Values
Between
Delete
Grant
Numeric
Select
View
By
Desc
Group
Of
Set
Whenever
Char
Distinc
Having
On
Smallint
Where
Character
Double
In
Open
Some
With
Check
End
Insert
Option
SQL
Work
Close
Escape
Int
Or
Sqlcode
Commit
Exec
Integer
Order
Unique
H.Chappert
Version 3.0
Sqlerror
6 / 46
SQL
Synonymes
Description
TEXTES
CHARACTER (longueur)
CHAR (longueur)
NUMERIQUES
NUMERIC (prcision, chelle)*
INTEGER
INT
Echelle = 0
SMALLINT
FLOAT (prcision)
REAL
DOUBLE PRECISION
* : Prcision et chelles sont optionnelles. Lchelle a pour valeur par dfaut 0. La valeur par
dfaut de la prcision dpend de la machine.
** : Certains SQL utilisent le type DATE.
H.Chappert
Version 3.0
7 / 46
SQL
http://dev.mysql.com/doc/
http://sgbd.developpez.com/cours/
SQL
Support de Cours
Patrick Pons
Presses Pocket
Uriel Chouchena
PSI
Jean-Paul Anton
IUT
1989
1994
H.Chappert
Version 3.0
8 / 46