Académique Documents
Professionnel Documents
Culture Documents
I- Dfinition
http://sql.sh/cours
http://www.w3schools.com/sql/default.asp
2016-2017 Semestre II
Exemple :
CREATE
CREATE
CREATE
DROP
CREATE
DATABASE
DATABASE
DATABASE
DATABASE
DATABASE
hmida;
ali;
informatique;
hmida ;
ESSATlemcen ;
SHOW DATABASES;
+--------------------+
| Database
|
+--------------------+
| ali
|
| informatique
|
| ESSATlemcen
|
+--------------------+
Exemple :
CREATE TABLE CUSTOMERS(
ID
INT
NOT NULL,
NAME VARCHAR (20)
NOT NULL,
AGE INT
NOT NULL,
ADDRESS CHAR (25) ,
SALARY
DECIMAL (18, 2),
PRIMARY KEY (ID)
);
+-------+-----------+----+-----+--------+-----+
| Field | Type
|Null| Key | Default|Extra|
+-------+-----------+----+-----+--------+-----+
| ID
|int(11)
| NO | PRI |
|
|
| NAME |varchar(20)| NO |
|
|
|
| AGE
|int(11)
| NO |
|
|
|
| ADDR |char(25)
| YES|
| NULL
|
|
| SALARY |decimal(18,2)|YES |
NULL
+-------+-----------+----+-----+--------+-----+
Exemple :
ALTER TABLE CUSTOMERS MODIFY NAME varchar(30);
ALTER TABLE CUSTOMERS DROP COLUMN ADDR;
ALTER TABLE CUSTOMERS ADD ADDR char(20);
+-------+-----------+----+-----+--------+-----+
| Field | Type
|Null| Key | Default|Extra|
+-------+-----------+----+-----+--------+-----+
| ID
|int(11)
| NO | PRI |
|
|
| NAME |varchar(30)| NO |
|
|
|
| AGE
|int(11)
| NO |
|
|
|
| ADDR |char(20)
| YES|
| NULL
|
|
| SALARY |decimal(18,2)|YES |
NULL
+-------+-----------+----+-----+--------+-----+
AS
Requte
Exemple:
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 1
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDRESS
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 6 | Komal
| 22 | MP
| 4500.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
- La requte DELETE :
On utilise cette requte pour supprimer des lignes dune table.
La vue sera:
+----------+-----+
| name
| age |
+----------+-----+
| Ramesh
| 32 |
| Khilan
| 25 |
| kaushik | 23 |
+----------+-----+
2016-2017 Semestre II
La table devient :
- La requte UPDATE :
On utilise cette requte pour modifier les valeurs dune ligne.
UPDATE Nom_table
SET colonne1= valeur1, colonne2= valeur2....,
colonneN= valeurN
WHERE [condition];
Considrant la table CUSTOMERS suivante :
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDRESS
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 6 | Komal
| 22 | MP
| 4500.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDRESS
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 2
suivantes :
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDR
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 6 | Ramesh
| 22 | NULL
| 4500.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
SELECT ID, NAME, SALARY FROM CUSTOMERS;
On obtient:
+----+----------+----------+
| ID | NAME
| SALARY
|
+----+----------+----------+
| 1 | Ramesh
| 2000.00 |
| 2 | Khilan
| 1500.00 |
| 3 | kaushik | 2000.00 |
| 4 | Chaitali | 6500.00 |
| 5 | Hardik
| 8500.00 |
| 6 | Ramesh
| 4500.00 |
| 7 | Muffy
| 10000.00 |
+----+----------+----------+
SELECT * FROM CUSTOMERS;
On obtient:
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDR
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 6 | Ramesh
| 22 | NULL
| 4500.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
2016-2017 Semestre II
- La clause DISTINCT : On utilise cette clause pour liminer
les redondances dans le rsultat.
SELECT DISTINCT NAME FROM CUSTOMERS;
+----------+
| NAME
|
+----------+
Dans quelque systmes tel que
| Ramesh
|
| Khilan
|
ORACLE la clause DISTINCT est
| kaushik |
remplace par UNIQUE.
| Chaitali |
| Hardik
|
| Muffy
|
+----------+
- La clause WHERE:
La clause WHERE est utilise pour spcifier une condition.
SELECT colonne1, colonne2, colonneN
FROM nom_table
WHERE [condition];
On prenant toujours lexemple de la table CUSTOMERS
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
+----+----------+----------+
| ID | NAME
| SALARY
|
+----+----------+----------+
| 4 | Chaitali | 6500.00 |
| 5 | Hardik
| 8500.00 |
| 6 | Ramesh
| 4500.00 |
| 7 | Muffy
| 10000.00 |
+----+----------+----------+
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
+----+----------+----------+
| ID | NAME
| SALARY
|
+----+----------+----------+
| 5 | Hardik
| 8500.00 |
+----+----------+----------+
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 3
2016-2017 Semestre II
+----+---------+-----+-----------+---------+
| ID | NAME
| AGE | ADDR
| SALARY |
+----+---------+-----+-----------+---------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi
| 1500.00 |
+----+---------+-----+-----------+---------+
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 4
2016-2017 Semestre II
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 4 | kaushik | 25 | Mumbai
| 6500.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 6 | Komal
| 22 | MP
| 4500.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
+---------+-------------+
| NAME
| SUM(SALARY) |
+---------+-------------+
| Hardik |
8500.00 |
| kaushik |
8500.00 |
| Komal
|
4500.00 |
| Muffy
|
10000.00 |
| Ramesh |
3500.00 |
+---------+-------------+
| 7 | Muffy
| 24 | Indore
| 10000.00 |
+----+----------+-----+-----------+----------+
SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME
HAVING SUM(SALARY) > 9000;
+---------+-------------+
| NAME
|COUNT(SALARY)|
+---------+-------------+
| Ramesh |
2
|
| kaushik |
2
|
+---------+-------------+
SELECT NAME, AVG (SALARY) FROM CUSTOMERS
GROUP BY NAME
HAVING AVG(SALARY) BETWEEN 3000 AND 4500;
+----+----------+-----+-----------+----------+
| ID | NAME
| AGE | ADDRESS
| SALARY
|
+----+----------+-----+-----------+----------+
| 1 | Ramesh
| 32 | Ahmedabad | 2000.00 |
| 7 | Muffy
| 24 | Indore
| 10000.00 |
| 6 | Komal
| 22 | MP
| 4500.00 |
| 2 | Khilan
| 25 | Delhi
| 1500.00 |
| 3 | kaushik | 23 | Kota
| 2000.00 |
| 5 | Hardik
| 27 | Bhopal
| 8500.00 |
| 4 | Chaitali | 25 | Mumbai
| 6500.00 |
+----+----------+-----+-----------+----------+
SELECT ID,
NAME,
Age,
CASE
WHEN Age=27 THEN 'Age bon'
WHEN Age>24 THEN 'Age bien'
ELSE 'Age loin' END
,
ADDRESS,
SALARY
FROM CUSTOMERS;
+----+---------+----+----------+----------+--------+
| ID | NAME
|AGE |CASE
| ADDRESS
| SALARY
|
+----+---------+----+----------+----------+--------+
| 1 | Ramesh | 32 |Age bien |Ahmedabad | 2000.00 |
| 7 | Muffy
| 24 |Age loin |Indore
|10000.00 |
| 6 | Komal
| 22 |Age loin |MP
| 4500.00 |
| 2 | Khilan | 25 |Age bien |Delhi
| 1500.00 |
| 3 | kaushik | 23 |Age loin |Kota
| 2000.00 |
| 5 | Hardik | 27 |Age bon |Bhopal
| 8500.00 |
| 4 | Chaitali| 25 |Age bien |Mumbai
| 6500.00 |
+----+---------+----+----------+---------+---------+
prenom
Lon
Marie
Sophie
Marcel
nom
Dupuis
Bernard
Dupond
Martin
ville
Paris
Paris
Marseille
Paris
date_naiss
1983-03-06
1993-07-03
1986-02-22
1976-11-24
total_achat
135
75
27
39
Magasin2
prenom
Marion
Paul
Marie
Marcel
nom
Leroy
Moreau
Bernard
Martin
ville
Lyon
Lyon
Paris
Paris
date_naiss
1982-10-27
1976-04-19
1993-07-03
1976-11-24
total_achat
285
133
75
39
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 5
2016-2017 Semestre II
prenom
Lon
Marie
Sophie
Marcel
Marie
Paul
nom
Dupuis
Bernard
Dupond
Martin
Leroy
Moreay
ville
Paris
Paris
Marseille
Paris
Lyon
Lyon
commande
date_naiss
1983-03-06
1993-07-03
1986-02-22
1976-11-24
1982-10-27
1976-04-19
total_achat
135
75
27
39
285
133
utilisateur_id
1
1
5
date_achat
2013-01-23
2013-02-14
2013-02-17
num_factur
A00103
A00104
A00105
- INNER JOIN:
SELECT id, prenom, nom, date_achat, num_factur,
prix_total
FROM utilisateur
INNER JOIN commande ON utilisateur.id =
commande.utilisateur_id;
Ou bien encore:
prenom nom
ville
date_naiss
Lon
Dupuis Paris
1983-03-06
Sophie Dupond Marseille 1986-02-22
total_achat
135
27
UNINON
INTERSECT
EXCEPT
- La clause JOIN: il existe plusieurs manires pour raliser une
jointure :
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
FULL JOIN SANS INTERSECT
Et CROSS JOIN (voir lexemple).
Soit les deux tables:
utilisateur
id
1
2
3
4
prenom
Aime
Esme
Marine
Luc
nom
Marechal
Lefort
Prevost
Rolland
email
marechal@example.com
lefort@example.com
prevost@example.com
lucrolland@example.com
prix_total
203.14
124.00
149.45
ville
Paris
Lyon
Lille
Marseille
id
1
1
1
2
2
2
3
3
3
4
4
4
prenom
Aime
Aime
Aime
Esme
Esme
Esme
Marine
Marine
Marine
Luc
Luc
Luc
nom
Marechal
Marechal
Marechal
Lefort
Lefort
Lefort
Prevost
Prevost
Prevost
Rolland
Rolland
Rolland
utilisateur_id
1
1
5
1
1
5
1
1
5
1
1
5
date_achat
2013-01-23
2013-02-14
2013-02-17
2013-01-23
2013-02-14
2013-02-17
2013-01-23
2013-02-14
2013-02-17
2013-01-23
2013-02-14
2013-02-17
id
1
1
2
3
4
prenom
Aime
Aime
Esme
Marine
Luc
Nom
Marechal
Marechal
Lefort
Prevost
Rolland
date_achat
2013-01-23
2013-02-14
NULL
NULL
NULL
utilisateur_id
1
1
NULL
NULL
NULL
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 6
id
2
3
4
prenom
Esme
Marine
Luc
Nom
Lefort
Prevost
Rolland
date_achat
NULL
NULL
NULL
utilisateur_id
NULL
NULL
NULL
id
id
prenom
1
Aime
1
Aime
2
Esme
3
Marine
4
Luc
NULL NULL
nom
Marechal
Marechal
Lefort
Prevost
Rolland
NULL
utilisateur_id
1
1
NULL
NULL
NULL
5
date_achat
2013-01-23
2013-02-14
NULL
NULL
NULL
2013-02-17
2016-2017 Semestre II
id
prenom
2
Esme
3
Marine
4
Luc
NULL NULL
nom
Lefort
Prevost
Rolland
NULL
utilisateur_id
NULL
NULL
NULL
5
date_achat
NULL
NULL
NULL
2013-02-17
user_id
1
2
3
4
5
user_prenom
Jrmie
Damien
Sophie
Yann
La
user_ville
Paris
Montral
Marseille
Lille
Paris
pays_id
1
2
NULL
9999
1
pays:
pays_id
1
2
3
4
pays_nom
France
Canada
Belgique
Suisse
pays_id
1
2
NULL
9999
1
user_id
1
2
3
4
5
user_prenom
Jrmie
Damien
Sophie
Yann
La
user_ville
Paris
Montral
Marseille
Lille
Paris
pays_nom
France
Canada
NULL
NULL
France
b- Les fonctions :
Le langage SQL contient des fonctions permettant de faire des
SELECT
id,
prenom,
nom,
utilisateur_id, calculs (traitement) sur les donnes. On distingue trois types de
date_achat
fonctions.
FROM utilisateur
- Les fonctions dagrgation : Ces fonctions retournent une
FULL JOIN commande ON utilisateur.id =
seule valeur calcule partir de plusieurs valeurs dans une
commande.utilisateur_id
colonne. Parmi ces fonctions AVG() - retourne la moyenne.
WHERE utilisateur_id IS NULL AND id IS NULL;
COUNT() retourne le nombre de lignes.
FIRST() retourne la premire valeur.
LAST() retourne la dernire valeur.
MAX() retourne la plus grande valeur.
MIN() retourne la plus petite valeur.
Module : Base de donnes Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 7
Table
100
18
Chaise
24 - 80 19
4
Porte
2
2
48 - 60 21.35
SELECT UCASE(ProductName) AS Product,
MID(ProductName,1,3)AS Pro, LEN(Productname) AS
L, ROUND(Price,1) AS R, NOW(),
FORMAT(Now(),'YYYY-MM-DD') AS F FROM produit;
Product Pro L R
NOW( )
F
TABLE Tab 5 18
CHAISE Cha 6 19
IV-
- CREATE
DATABASE
NOM_DE_LA_BASE;
- DROP
DATABASE
NOM_DE_LA_BASE ;
- CREATE TABLE Nom_Table( colonne1 datatype,
colonne2 datatype,
.....
colonneN datatype,
PRIMARY KEY( un ou plusieurs colonnes )
);
- DROP TABLE Nom_Table;
- ALTER TABLE Nom_Table ADD Nom_col Type_donnee;
- ALTER TABLE Nom_Table DROP COLUMN Nom_col;
- ALTER TABLE Nom_Table MODIFY COLUMN Nom_col;
- CREATE
VIEW
Nom_de_vue
AS
SELECT nom_de_colonne (s)
FROM Nom_table
WHERE condition ;
- INSERT INTO Nom_table (colonne1, colonne2,
colonne3 ,... colonneN)]
VALUES (valeur1, valeur2, valeur3,...valeurN);
- DELETE FROM Nom_table WHERE [condition];
- UPDATE Nom_table SET colonne1= valeur1,
colonne2= valeur2...., colonneN= valeurN
WHERE [condition];
- SELECT colonne1, colonne2, colonneN
FROM nom_table ;
- SELECT DISTINCT ma_colonne FROM nom_table;
- SELECT nom_colonnes FROM nom_table WHERE
condition;
- SELECT nom_colonnes FROM nom_table WHERE
condition1 AND condition2;
- SELECT nom_colonnes FROM nom_table WHERE
condition1 OR condition2;
- SELECT nom_colonne FROM table WHERE
nom_colonne IN ( valeur1, valeur2, valeur3,
... ) ;
- SELECT * FROM table WHERE nom_colonne BETWEEN
valeur1 AND valeur2;
2016-2017 Semestre II
- SELECT * FROM table WHERE colonne LIKE modele;
- SELECT * FROM table WHERE nom_colonne IS NULL;
- SELECT * FROM table WHERE nom_colonne IS NOT
NULL;
- SELECT colonne1, fonction(colonne2)FROM table
GROUP BY colonne1
- SELECT colonne1, fonction(colonne2)FROM
nom_table WHERE condition GROUP BY colonne1
HAVING condition;
- SELECT colonne1, colonne2, colonne3, FROM
table ORDER BY colonne1 DESC|ASC, colonne2
DESC| ASC, colone3 DESC|ASC, ;
- SELECT nom_colonnes FROM table LIMIT
nombre_max_de_ligne_resultat ;
- CASE
WHEN condition1 THEN resultat1
WHEN condition1 THEN resultat2
WHEN condition1 THEN resultat3
ELSE resultat4
END
- SELECT * FROM table1 UNION SELECT * FROM
table2;
- SELECT * FROM table1 INTERSECT SELECT * FROM
table2;
- SELECT * FROM table1 EXCEPT SELECT * FROM
table2;
- SELECT * FROM table1 INNER JOIN table2 ON
table1.id = table2.CS_id
Ou encore: SELECT * FROM table1 INNER JOIN
table2 WHERE table1.id = table2.CS_id;
- SELECT * FROM table1 CROSS JOIN table2
Ou encore: SELECT * FROM table1, table2 ;
- SELECT * FROM table1 LEFT JOIN table2 ON
table1.id = table2.CS_id
Ou encore: SELECT * FROM table1 LEFT OUTER
JOIN table2 ON table1.id = table2.CS_id;
- SELECT * FROM table1 RIGHT JOIN table2 ON
table1.id = table2.CS_id
Ou encore: SELECT * FROM table1 RIGHT OUTER
JOIN table2 ON table1.id = table2.CS_id;
- SELECT * FROM table1 FULL JOIN table2 ON
table1.id = table2.CS_id;
Ou encore: SELECT * FROM table1 FULL OUTER
JOIN table2 ON table1.id = table2.CS_id;
- SELECT * FROM table1 NATURAL JOIN table2;
Chap4 : Structured query language SQL (Langage de requte structure) A.BEKADDOUR page 8