1. MEMO MY SQL
Un BON exemple
vaut mieux qu'un
long cours
dis
AbdelMonem NAAMANE
isamm@naamane.com
2. Manipulation des bases de données
shell> mysql -h host -u user -p
mysql> show databases
mysql> USE mabase
mysql> QUIT
CREATE DATABASE nom_base;
DROP DATABASE nom_base;
AbdelMonem NAAMANE
isamm@naamane.com
4. Types de données les plus utilisés
INTEGER (INT) : Entier positif ou négatif. 4 octet (-2³² → 2³²-1 )
FLOAT : Un nombre à virgule flottante. 4 octet(-/+1.17E-38 → -/+3.40E+38)
TIME : Heure, de '00:00:00' à '23:59:59'
DATE : Une date, de '1000-01-01' à '9999-12-31' au maximum.
DATETIME : Date et Heure, de '1000-01-01 00:00:00' à '9999-12-31 23:59:59'
VARCHAR : Chaîne de caractère, (1 → 255 caractères)
TEXT : Chaîne de caractère, max 2¹⁶-1 octet
ENUM ('valeur1','valeur2',...) Liste de 65 535 valeurs au maximum.
SET ('valeur1','valeur2',...) Liste de 65 535 valeurs au maximum.
AbdelMonem NAAMANE
isamm@naamane.com
5. Création de table
CREATE TABLE Etudiant (id_etudiant INT(6),
nom VARCHAR(255) NOT NULL,
note FLOAT(7,2) DEFAULT 0,
classe INT,
cin INT(6),
CONSTRAINT PK_etudiant PRIMARY KEY(identifiant),
CONSTRAINT UNIQUE (cin),
CONSTRAINT FK_etu_classe FOREIGN KEY (classe)
REFERENCES Classe(id_classe)
ON DELETE CASCADE);
RENAME TABLE Etudiant TO eleves;
AbdelMonem NAAMANE
isamm@naamane.com
6. Manipulation
de la
structure
AbdelMonem NAAMANE
isamm@naamane.com
7. Manipulation de la structure 1/2
DROP TABLE nom_table;
ALTER TABLE client DROP tel;
ALTER TABLE Etudiant DROP PRIMARY KEY;
ALTER TABLE Etudiant RENAME COL1 TO COL3;
ALTER TABLE Etudiant MODIFY nom_eleve
varchar(40) NOT NULL
AbdelMonem NAAMANE
isamm@naamane.com
8. Manipulation de la structure 2/2
ALTER TABLE Etudiant ADD UNIQUE cin;
ALTER TABLE etudiant
ADD (Ville VARCHAR(255) DEFAULT 'Tunis',
Pays VARCHAR(30) );
ALTER TABLE Etudiant ADD CONSTRAINT
FOREIGN KEY (classe) REFERENCES
Classe(id_classe));
AbdelMonem NAAMANE
isamm@naamane.com
9. Insertion
de
données
AbdelMonem NAAMANE
isamm@naamane.com
10. Insertion de données 1/2
INSERT INTO nom_de_table
VALUES(4,15,'NAAMANE', '2011-11-11') ;
INSERT INTO nom_de_table (col1,col2,col3)
VALUES (1,2,3),(4,5,6);
INSERT INTO nom_de_table
SET col3 = 1, col5 = '2011-11-11';
INSERT INTO table1 (clonne1, colonne2)
SELECT nom, age
FROM table2
WHERE age > 18;
AbdelMonem NAAMANE
isamm@naamane.com
11. Insertion de données 2/2
REPLACE INTO nom_de_table (col1,col2,col3)
VALUES (1,2,3),(4,5,6);
LOAD DATA LOCAL IN FILE "fichier.txt"
INTO etudiants
FIELDS TERMINATED BY ","
LINES TERMINATED BY "rn"
IGNORE 1 LINES
AbdelMonem NAAMANE
isamm@naamane.com
13. Mise à jour des données
UPDATE clients
SET prenom ='Mohamed', nom ='NAAMANE',
ville = 'Bizerte', enfants = 2
WHERE id > 10
ORDER BY note DESC
LIMIT 20;
UPDATE clients
SET note = note+4;
UPDATE clients
SET classe = REPLACE( classe,'MIN','Master IM')
AbdelMonem NAAMANE
isamm@naamane.com
15. Suppression des données
DELETE FROM clients
WHERE age = 20
AND ville LIKE '%uni%'
ORDER BY note DESC
limit 10;
TRUNCATE clients;
AbdelMonem NAAMANE
isamm@naamane.com
16. Selection
de
données
AbdelMonem NAAMANE
isamm@naamane.com
17. Selection de données simple
SELECT *
FROM etudiant ;
SELECT nom, prenom, note, date_naissance
FROM etudiant
ORDER BY note DESC; [ASC | DESC]
SELECT nom, prenom, cin, note
FROM etudiant
WHERE ville = 'Tunis'
AND note > 10
OR ville = 'Bizerte'
AND nom != 'A'
AND prenom LIKE 'Mo%';
AbdelMonem NAAMANE
isamm@naamane.com
18. Selection : fonctions utililes 1
SELECT 1+2, "bon, Jour";
SELECT CONCAT(prenom, " ", nom) AS nom_complet
FROM etudiants;
SELECT *
FROM etudiants
WHERE age IS NULL;
SELECT *
FROM etudiants
WHERE age IS NOT NULL;
AbdelMonem NAAMANE
isamm@naamane.com
19. Selection : fonctions utililes 2
SELECT *
FROM etudiants
WHERE date_naissance > '1980-12-15'
AND date_naissance < '2005-05-10';
SELECT *
FROM etudiants
WHERE MONTH(date_naissance) = 2
AND DAYOFMONTH(date_naissance) = 29;
SELECT *
FROM etudiants
WHERE nom LIKE 'A%'
AND prenom LIKE '__b%N';
AbdelMonem NAAMANE
isamm@naamane.com
20. Selection : fonctions utililes 3
SELECT DISTINCT ville
FROM etudiants;
SELECT COUNT(*), COUNT(ville)
FROM etudiants;
SELECT COUNT(DISTINCT ville)
FROM etudiants;
AbdelMonem NAAMANE
isamm@naamane.com
21. Selection : fonctions utililes 4
SELECT *
FROM etudiants
WHERE age IN (11,12,13,14,15);
SELECT DISTINCT nom_livre
FROM livre
WHERE type_livre NOT IN
(SELECT type_livre
FROM anciens_livre);
SELECT *
FROM etudiants
ORDER BY RAND()
LIMIT 1;
AbdelMonem NAAMANE
isamm@naamane.com
22. Fonctions pour date
NOW() → 2012-11-10 33:44:21
CURDATE() → 2012-11-10
CURTIME() → 20:11:09
DATE_ADD('2000-11-16', 3 YEAR) → MONTH | DAY | HOUR | MINUTE |
SECOND
DATE_SUB('2000-11-16', 3 YEAR) → MONTH | DAY | HOUR | MINUTE |
SECOND
YEAR()
MONTH()
DAY()
HOUR()
MINUTE()
SECOND()
AbdelMonem NAAMANE
isamm@naamane.com
23. Groupement
SELECT MAX(note), MIN(note), SUM(note),AVG(note),
COUNT(note), COUNT(*),
FROM etudiant;
SELECT article, sum(montant) as M
FROM vente
GROUP BY article;
SELECT article, sum(montant)
FROM vente
WHERE date_achat > '2011-01-01'
GROUP BY article;
SELECT article, sum(montant)
FROM vente
GROUP BY article
HAVING sum(montant) > 100); AbdelMonem NAAMANE
isamm@naamane.com
24. Groupement 2
SELECT nom_article, sum(montant), max(montant),
max(date_vente) AS date_derniere_vente
FROM vente
WHERE date_achat > '2011-01-01'
AND nom_article != 'A'
AND prenom LIKE 'ch%'
GROUP BY article
HAVING sum(montant) > 100
ORDER BY date_derniere_vente DESC
limit 5;
AbdelMonem NAAMANE
isamm@naamane.com
25. Jointure
SELECT *
FROM etudiant , classe
WHERE etudiant.classe = classe.id_classe
AND classe.niveau_classe >= 2
SELECT *
FROM classe
LEFT JOIN etudiant
ON etudiant.classe = classe.id_classe
WHERE classe.niveau_classe >= 2;
AbdelMonem NAAMANE
isamm@naamane.com
26. MEMO MY SQL
AbdelMonem NAAMANE
isamm@naamane.com