Você está na página 1de 6

Bases de donnes

Chapitre 4 : SQL (Structured Query Language)

1- Dfinition:
 Cest le langage d'interrogation Structur. En fait SQL est un langage complet de gestion de
bases de donnes relationnelles.
 Il a t conu par IBM dans les annes 70. Il est devenu le langage standard des systmes de
gestion de bases de donnes (SGBD) relationnelles (SGBDR).
C'est la fois :
Un langage de dfinition des donnes (LDD) ordres CREATE, ALTER, DROP

Un langage de manipulation des donnes (LMD)  ordres UPDATE, INSERT,


DELETE

Un langage d'interrogation de la base (ordre SELECT)

2- LDD
2.1) La cration d'une table
L'ordre CREATE TABLE permet de crer une table en dfinissant le nom, le type de
chacune des colonnes de la table ainsi que les contraintes. Une syntaxe simplifie est la
suivante :

CREATE TABLE nom_table


{ ( nom-col type-col [DEFAULT val] [ [CONSTRAINT] contrainte-col] )*
[ [CONSTRAINT] contrainte-table] };

Exemples :
CREATE TABLE Clients (ncin NUMBER(8),
nom VARCHAR(20) NOT NULL,
prnom VARCHAR(15),
adresse VARCHAR(20),
CONSTRAINT PK_cl PRIMARY KEY (ncin)) ;
CREATE TABLE Commandes (num_com NUMBER,
date_com DATE,
ncin NUMBER(8),
CONSTRAINT PK_com PRIMARY KEY (num_com),
CONSTRAINT FK_com FOREIGN KEY (ncin) REFERENCES Clients(ncin),
CONSTRAINT CK_com CHECK (num_com between 1 and 999));

HEDFI SOUHIR Page 1


Bases de donnes

2.1.1) Les types :


A-) Les nombres entiers

On peut ajouter lattribut unsigned pour indiquer que votre nombre nest pas sign.

B-) Les nombres dcimaux :


Cinq mots-cls permettent de stocker des nombres dcimaux dans une colonne :
DECIMAL, NUMERIC, FLOAT, REAL et DOUBLE.
NUMERIC et DECIMAL sont quivalents et acceptent deux paramtres : la prcision
et l'chelle. Exemple : DECIMAL(5,3)
Le mot-cl FLOAT peut s'utiliser sans paramtre, auquel cas quatre octets sont utiliss
pour stocker les valeurs de la colonne. Il est cependant possible de spcifier une
prcision et une chelle, de la mme manire que pour DECIMAL et NUMERIC.
Quant REAL et DOUBLE, ils ne supportent pas de paramtres. DOUBLE est
normalement plus prcis que REAL

C-) Les types alphanumriques :


Pour stocker un texte relativement court (moins de 255 caractres), vous pouvez utiliser les
types CHAR et VARCHAR.
Ces deux types s'utilisent avec un paramtre qui prcise la taille que peut prendre votre texte
(entre 1 et 255). La diffrence entre CHAR et VARCHAR est la manire dont ils sont stocks
en mmoire. Un CHAR(x) stockera toujours x caractres, en remplissant si ncessaire le texte
avec des espaces vides pour le complter, tandis qu'un VARCHAR(x) stockera
jusqu' x caractres (entre 0 et x), et stockera en plus en mmoire la taille du texte stock.

D-) Texte >255 caractres

HEDFI SOUHIR Page 2


Bases de donnes

E-) Chanes de type binaire

Les types binaires sont dfinis de la mme faon que les types de chanes de
texte. VARBINARY(x) et BINARY(x) permettent de stocker des chanes binaires
de x caractres maximum (avec une gestion de la mmoire identique
VARCHAR(x) et CHAR(x)). Pour les chanes plus longues, il existe les
types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB.

E-) Date et heure

Exemples DATE :

'AAAA-MM-JJ' (c'est sous ce format-ci qu'une DATE est stocke dans MySQL)
'AAMMJJ'
'AAAA/MM/JJ'
'AA+MM+JJ'
'AAAA%MM%JJ'
AAAAMMJJ (nombre)
AAMMJJ (nombre)

Exemples : TIME

'HH:MM:SS'
'HHH:MM:SS'
'MM:SS'
'J HH:MM:SS'
'HHMMSS'
HHMMSS (nombre)

Exemple DATETIME :

'AAAA-MM-JJ HH:MM:SS'
'AA*MM*JJ HH+MM+SS'
AAAAMMJJHHMMSS (nombre)

HEDFI SOUHIR Page 3


Bases de donnes

2.2) La modification d'une table


L'ordre ALTER TABLE permet de modifier la dfinition dune table. Sa syntaxe est la
suivante :

ALTER TABLE nom-table


{ RENAME TO nouveau-nom-table |
ADD ( [ (nom-col type-col [DEFAULT valeur] [contrainte-col])* ] |
MODIFY (nom-col [type-col] [DEFAULT valeur] [contrainte-col])*|
DROP COLUMN nom-col [CASCADE CONSTRAINTS] |
RENAME COLUMN old-name TO new-name
};

Exemples :
ALTER TABLE Clients RENAME TO LESCLIENTS ;
ALTER TABLE LESCLIENTS
ADD (age NUMBER(3) CHECK (age < 150), taille NUMBER(3,2));
ALTER TABLE LESCLIENTS
MODIFY (age NUMBER CHECK (age BETWEEN 15 and 150));
ALTER TABLE LESCLIENTS
DROP COLUMN taille CASCADE CONSTRAINTS;
ALTER TABLE LESCLIENTS RENAME COLUMN age TO age_cli;

2.3) Suppression d'une table

L'ordre DROP TABLE permet de supprimer une table et tout son contenu. Sa syntaxe est la
suivante :

DROP TABLE nom_table [CASCADE CONSTRAINTS];

CASCADE CONSTRAINTS
Supprime toutes les contraintes de cl externe rfrenant cette table
Si on cherche dtruire une table dont certains attributs sont rfrencs sans spcifier
CASCADE CONSTRAINT: refus
Exemples :
DROP TABLE Commandes CASCADE CONSTRAINTS;

3. LMD
Une fois les tables cres, on peut commencer y insrer des donnes, les mettre jour, les
supprimer. Toutes ces oprations sont des oprations de manipulation des bases de donnes.
Pour effectuer ces manipulations, SQL dispose de 3 instructions :

INSERT

UPDATE

DELETE
3.1) Insrer des donnes
La commande INSERT est utilise pour ajouter des enregistrements ou des parties
d'enregistrements dans des tables. Elle est utilise gnralement sous deux formes :

1re forme :
INSERT INTO table [(liste dattributs)] VALUES (liste des valeurs) ;

HEDFI SOUHIR Page 4


Bases de donnes

2me forme :
INSERT INTO table [(liste dattributs)] {requte SQL} ;

Exemples :

Soit la table CLIENT (CodeClt, NomClt, AdrClt, TelClt)

A-Insrer le client suivant dans la table client : 100, Karray, Tunis, 98111222 .

INSERT INTO Client (CodeClt, NomClt, AdrClt, TelClt)


VALUES (100, 'Karray', 'Tunis', 98111222);
B-Insrer tous les clients de kairouan dans la table Client_Kr dj cre.

INSERT INTO Client_kr


SELECT * FROM Client WHERE AdrClt = 'Kairouan';

3.2) Modifier des donnes


La commande UPDATE est utilise pour mettre jour les valeurs des champs dans des
tables. Sa syntaxe est :
UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
{WHERE condition};

Exemples :
Soit la table PRODUIT (RefProd, LibProd, PrixU, Stock)
A-Modifier les prix de tous les produits. Le nouveau prix = 1000.
UPDATE Produit SET PrixU = 1000 ;
B-Modifier les prix de tous les produits dont le stock est suprieur 25.
(PrixU = PrixU *1.1)
UPDATE Produit SET PrixU = PrixU * 1.1
WHERE Stock > 25 ;
C-Modifier la quantit en stock des produits dont le prix est infrieur la moyenne des prix.
(Stock= Stock 10).
UPDATE Produit SET Stock = Stock 10
WHERE PrixU < (SELECT AVG(PrixU) FROM Produit);

3.3) Supprimer des donnes


Pour supprimer des enregistrements d'une table, utilisez la commande DELETE. Sa syntaxe
est :
DELETE FROM table {WHERE condition };

Exemples :
Supprimer tous les produits DELETE FROM Produit
Supprimer tous les produits dont le stock est infrieur 10.
DELETE FROM Produit
HEDFI SOUHIR Page 5
Bases de donnes

WHERE Stock < 10 ;

HEDFI SOUHIR Page 6

Você também pode gostar