Bases de données Langage SQL

publicité
Bases de données
1/14
Bases de données
Langage SQL
Nils Schaefer
[email protected]
Nils Schaefer
Bases de données
2/14
SGBD et SQL
●
●
Système de Gestion de Bases de Données
–
Gestion physique des bases de données
–
Manipulation des bases de données
–
Exemples : MySQL, PostGreSQL, SQL Serveur ...
Structured Query Language
–
Langage normalisé
●
Base commune entre les différents SGBD
–
Langage pour créer des bases de données
–
Langage pour manipuler des données
Nils Schaefer
Bases de données
3/14
Requête SQL d'extraction
●
Requête SELECT
●
Retourne une ou plusieurs lignes
–
Avec un ou plusieurs champs par ligne
●
Aucun impact sur les données
●
Exemple
–
●
SELECT nom,prenom FROM utilisateurs
Nombreuses possibilités de sélection, d'agrégation
et de tri des données extraites
Nils Schaefer
Bases de données
4/14
Requêtes SQL de modification
●
●
Requête qui ont un impact sur une ou plusieurs
lignes d'une base de données
Ajout de données
–
●
Mise à jour de données
–
●
INSERT INTO
UPDATE
Suppression de données
–
DELETE
Nils Schaefer
Bases de données
5/14
Requêtes SELECT avancées
●
Utilisation de WHERE
–
Filtrage des lignes de la requête
–
Test réalisé ligne par ligne
●
●
–
●
Si le test est vrai la ligne est conservée
Si le test est faux la ligne n'est pas conservée
Penser à l'indexation !
Exemple
SELECT * FROM Salaries
WHERE Salaire>20000 AND
(Nom='Durand' OR Nom='Dupond')
Nils Schaefer
Bases de données
6/14
Requêtes SELECT avancées
●
Utilisation de GROUP BY
–
Fusionne les lignes de résultat
●
–
Couplé à un agrégat
●
●
Basé sur un ou plusieurs champs
Dénombrement, somme, moyenne...
Exemple
SELECT Salaire,COUNT(*)
FROM Salaries
WHERE Salaire>20000
GROUP BY Salaire
Nils Schaefer
Bases de données
7/14
Requêtes SELECT avancées
●
Utilisation de HAVING
–
Couplé à un GROUP BY
–
Equivalent du WHERE
●
–
●
Intervient APRES le GROUP BY
Possibilité d'utiliser les agrégats
Exemple
SELECT Salaire,COUNT(*)
FROM Salaries
WHERE Salaire>20000
GROUP BY Salaire
HAVING COUNT(*)>5
Nils Schaefer
Bases de données
8/14
Requêtes SELECT avancées
●
●
Utilisation de JOIN
–
Fusionne deux tables sur égalité d'un ou plusieurs
champs
–
Plusieurs JOIN successifs possibles
–
Entre deux tables qui ont une relation PK/FK
Exemple
SELECT Nom,Prenom FROM Utilisateurs AS u
JOIN CommandesUtilisateurs AS cu ON u.idUtilisateur= cu.idUtilisateur
JOIN Commandes AS c ON cu.idCommande=c.idCommande
WHERE montant>=500
Nils Schaefer
Bases de données
9/14
Requêtes SELECT avancées
●
●
Utilisation de ORDER BY
–
Réalisation d'un tri des données
–
Un ou plusieurs champs
–
Croissant ou décroissant
–
Plus efficace qu'en PHP grâce aux index !
Exemple
SELECT Nom,Prenom,Salaire
FROM Salaries
ORDER BY Nom,Prenom,Salaire DESC
Nils Schaefer
Bases de données
10/14
Fonctions sur les chaînes
●
CHAR_LENGTH(str)
–
●
CONCAT(str1,str2,...)
–
●
Concaténation avec séparateur
LOWER(str)
–
●
Concaténation d'au moins deux chaînes
CONCAT_WS(separator, str1, str2,...)
–
●
Longueur d'une chaîne (éviter LENGTH)
Conversion en minuscules
UPPER(str)
–
Conversion en majuscules
Nils Schaefer
Bases de données
11/14
Fonctions sur les dates
●
NOW()
–
●
CURDATE()
–
●
Heure au format 'HH:MM:SS'
UNIX_TIMESTAMP()
–
●
Date au format 'YYYY-MM-DD'
CURTIME()
–
●
Date au format 'YYYY-MM-DD HH:MM:SS'
Date sous la forme d'un Timestamp Unix
Opérations possibles (+ et -) avec INTERVAL
–
'1997-12-31 23:59:59' + INTERVAL 1 SECOND
Nils Schaefer
Téléchargement