Le langage SQL
SQL signifie Structured Query Language c’est-
à-dire « langage d'interrogation structuré ».
C’est un langage de gestion des bases de
données relationnelles.
SQL est à la fois :
– un langage de définition des données : ordres
CREATE, ALTER, DROP;
– un langage de manipulation des données :
ordres UPDATE, INSERT, DELETE;
– un langage d’interrogation : ordre SELECT.
22/06/24 ENSAO 1
WAMP Server
WAMP est un acronyme informatique
signifiant :
« Windows »
« Apache »
« MySQL »
« PHP » dans la majorité des cas mais
aussi parfois, « Perl », ou « Python ».
22/06/24 ENSAO 2
CREATE DATABASE ma_base
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
DROP DATABASE ma_base
Créer une nouvelle table : USE ma_base;
CREATE TABLE villes (
Id int,
nom varchar(80),
date_nai DATE )
supprimer une table : DROP TABLE nom_table;
renommer une table: RENAME TABLE client TO client1 ;
show create table etudiant
Vider une table TRUNCATE TABLE nom_table
Ajouter une colonne
ALTER TABLE nom_table
ADD nom_colonne type_donnees
Supprimer une colonne
ALTER TABLE nom_table
DROP nom_colonne
Renommer une colonne
ALTER TABLE nom_table
CHANGE colonne_ancien_nom colonne_nouveau_nom
ENSAO
type_donnees 3
22/06/24
1-INSERT INTO table VALUES (valeur1,
valeur2....)
2-INSERT INTO table (champ1, champ2)
VALUES (valeurduchamps1,
valeurduchamps2);
Pour insérer plusieurs lignes en une seule requête :
INSERT INTO table (champs1, champs2) VALUES
(valeur1_ligne1, valeur2_ligne1),
(valeur1_ligne2, valeur2_ligne2);
Syntaxe d'insertion alternative (propre à MySQL) :
INSERT INTO table SET champs1 = valeur1, champs2 = valeur2;
22/06/24 ENSAO 4
Remplir une table avec des lignes (syntaxe classique et alternative (SET))
INSERT INTO table VALUES (null,‘val1', 46, 50, 0.25, '1994-11-27');
Je fais null ou ‘’ ‘’ <==> ‘’ ou ‘’ ‘’
INSERT INTO table VALUES
(‘val1', 46, 50, 0.25, '1994-11-27'),
(‘val2', 46, 50, 0.25, '1994-11-27'),
(‘val3', 46, 50, 0.25, '1994-11-27');
INSERT INTO etudiant (nom_etud,dat_nais)
VALUES (‘m\’barek','2006/11/09');
Remplir une table avec des lignes (syntaxe alternative SET)
INSERT INTO table SET nom_etud='Ali',prenom='barbou';
22/06/24 ENSAO 5
DELETE FROM table WHERE conditions;
DELETE FROM table WHERE conditions LIMIT 1;
Pour vider complètement une table :
TRUNCATE TABLE table;
Pour modifier une ou plusieurs lignes
UPDATE table SET champ=valeur,
champ=valeur WHERE (conditions)
22/06/24 ENSAO 6
Interroger une table :
SELECT * FROM table;
SELECT nom, prenom, date FROM table;
SELECT * FROM etudiant LIMIT 5,2
SELECT id_etud,nom_etud FROM etudiant where id_etud in (1,10,9)
SELECT cne, nom, (moy_bac*2) AS moyxcoef FROM etudiant;
la clause AS est utilisée pour renommer la sortie d'une colonne (cette clause AS est
optionnelle).
SELECT ville, COUNT(*) AS total FROM etudiant group by ville;
Une requête peut être « qualifiée » en ajoutant une clause WHERE qui spécifie quelles
lignes sont souhaitées
select * from etudiant
where id_acad='o' and moy_bac > 10;
ORDER BY nom DESC;
Vous pouvez demander que les lignes dupliquées soient supprimées du résultat d'une
requête :
SELECT DISTINCT ville
FROM etudiant
ORDER BY cne;
SELECT * FROM `etudiant` WHERE nom like'%fil%‘ like'f%‘ -- like'%f‘--‘pa%on’--LIKE ‘%a_c%’
SELECT CURTIME(), CURRENT_TIME(), SELECT NOW(), SYSDATE();
22/06/24 ENSAO 7
Les opérations ensemblistes
L'opérateur UNION
Cet opérateur permet d'effectuer une union des
lignes sélectionnées par deux clauses SELECT
(les deux tables sur lesquelles on travaille
devant avoir le même schéma).
SELECT ---- FROM ---- WHERE ------
UNION
SELECT ---- FROM ---- WHERE ------
Par défaut les doublons sont automatiquement
éliminés. Pour conserver les doublons, il est
possible d'utiliser une clause UNION ALL.
22/06/24 ENSAO 8
SELECT *
FROM utilisateur
WHERE date_inscription BETWEEN ’2012-04-01′ AND ’2012-04-20′
NOT BETWEEN
IS NULL / IS NOT NULL / “” / ’’
22/06/24 ENSAO 9
VIEW
Une vue est une table virtuelle, c'est-à-dire une table qui n'a pas d'existence propre mais qui apparaît
réelle à l'utilisateur.
CREATE VIEW ma_vue AS
SELECT id,nom_prenom,fonction,ville
FROM client1
WHERE ville = 'oujda'
22/06/24 ENSAO 10
requête de jointure.
Une requête qui consulte plusieurs lignes de la même ou de
différentes tables en même temps est appelée requête de jointure.
select * from etudiant, series, academies, provinces
where
etudiant.id_serie = series.id_serie
and
etudiant.id_acad = academies.id_acad
and
etudiant.id_prov = provinces.id_prov;
select etudiant.nom, etudiant.cne, etudiant.moy_bac,
provinces.province, series.serie, academies.academie from
etudiant, series, academies, provinces
Where…..
22/06/24 ENSAO 11
Mises à jour
UPDATE etudiant SET nom = 'filali2' WHERE
nom = ‘filali';
Suppressions
Les lignes peuvent être supprimées de la table
avec la commande DELETE.
DELETE FROM etudiant WHERE cne = 44444;
22/06/24 ENSAO 12
Les fonctions d’agrégation
AVG( [ DISTINCT | ALL ] expression ) :
Calcule la moyenne des valeurs de l’expression expression.
COUNT( * | [DISTINCT | ALL] expression ) :
Dénombre le nombre de lignes du groupe. Si expression est
présent, on ne compte que les lignes pour lesquelles cette
expression n’est pas NULL.
MAX( [ DISTINCT | ALL ] expression ) :SELECT max(id) as maximum
Retourne la plus grande des valeurs de l’expression expression.
MIN([ DISTINCT | ALL ] expression ) :
Retourne la plus petite des valeurs de l’expression expression.
STDDEV([ DISTINCT | ALL ] expression) :
Calcule l’écart-type des valeurs de l’expression expression.
SUM([ DISTINCT | ALL ] expression) :
Calcule la somme des valeurs de l’expression expression.
VARIANCE([ DISTINCT | ALL ] expression) :
Calcule la variance des valeurs de l’expression expression.
ABS(champ): valeure absolue
ROUND (champ) arrondir (CEIL (1.2 =>2 & FLOOR 1.2 =>1)
SQRT
TRUNCATE (champ,2) affiche 2 chiffres après la vergule
MOD (champ,3) modulo ou on
22/06/24 ecrit champ%3 AS modulo
ENSAO 13
Les fonctions d’agrégation
Une fonction d'agrégat calcule un seul résultat à partir de plusieurs lignes en entrée. Par exemple,
il y a des agrégats pour calculer le nombre (count), la somme (sum), la moyenne (avg), le
maximum (max) et le minimum (min) d'un ensemble de lignes.
Exemple:
SELECT DISTINCT nom,moy_bac FROM etudiant
WHERE moy_bac = (SELECT max(moy_bac) FROM etudiant)
SELECT DISTINCT count(nom) FROM etudiant;
CONCAT(nom," ", prenom)
LENGTH(nom) : compter le nombre de caractère
Lower(champ) minuscule
UPPER(champ) majuscule
substr(prenom,3.2)
reverse(nom)
trim(' ssss ') supprime l’espace
22/06/24 ENSAO 14
SQL HAVING
La condition HAVING en SQL est presque similaire a WHERE a la seule difference que HAVING
permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou MAX().
SELECT client, SUM(tarif)
FROM achat
GROUP BY client
HAVING SUM(tarif) > 40
DATE
SELECT *, ADDDATE(date_n, 7) FROM `etudiant => Ajouter 7jours
SELECT *, ADDDATE(date_n, INTERVAL 7 HOUR) => Ajouter 7heures
SELECT *, SUBDATE(date_n, INTERVAL 7 HOUR) => Moin 7heures
SELECT *, ADDDATE(date_n, interval 1 year) FROM `etudiant Ajouter un an
SELECT * FROM etudiant where date_n > (SUBDATE('2018-12-10', INTERVAL 10 YEAR))
…… DATE_ADD = DATE_SUB……
SELECT * FROM `etudiant` WHERE date_n=CURDATE() CURTIME() + NOW()
SELECT *, DATEDIFF (CURDATE(), date_n) FROM `etudiant`
SELECT *, FROM_DAYS (DATEDIFF (CURDATE(), date_n)) FROM `etudiant`
22/06/24 ENSAO 15