Aller au contenu principal

Cours

Objectifs

Comment manipuler les données ?

Présentation

Requête

Programmation Web et bases de données

Structured Query Language (SQL)

  • Prononcé SQL /ɛs kjuː ɛl/ ou sequel /ˈsiːkwəl/.

  • Langage pour manipuler des DB relationnelles depuis 1974.

  • Norme ISO depuis 1987 pour DBMS relationnels.

  • Proche d'un langage naturel pour faciliter l'apprentissage.

  • Paradigmes : déclaratif (≠ impératif), orienté objet, procédural.

https://upload.wikimedia.org/wikipedia/commons/a/aa/SQL_ANATOMY_wiki.svg

https://commons.wikimedia.org/wiki/File:SQL_ANATOMY_wiki.svg

ISO 8601

https://imgs.xkcd.com/comics/iso_8601.png

https://xkcd.com/1179/

Standards

https://xkcd.arnaud.at/comics/927.jpg

https://xkcd.arnaud.at/927

Tables SQL

https://substack-post-media.s3.amazonaws.com/public/images/b79ae41d-0969-4dfe-ab65-cc974995ec79_3676x2034.png

https://www.blog.datawithbaraa.com/p/what-is-sql

Commandes SQL

https://substack-post-media.s3.amazonaws.com/public/images/3e9d6cbe-0c4d-4904-8dd9-496c397482e9_3654x1954.png

https://www.blog.datawithbaraa.com/p/what-is-sql

Commandes SQL

  • DDL (Data Definition Language)

    • CREATE, ALTER, DROP, TRUNCATE

  • DML (Data Manipulation Language)

    • INSERT, UPDATE, DELETE

  • DQL (Data Query Language)

    • SELECT

  • DCL (Data Control Language)

    • GRANT, REVOKE

  • TCL (Transaction Control Language)

    • COMMIT, ROLLBACK, SAVEPOINT

DDL (Data Definition Language)

Définition de la structure des données (tables, vues, index, …).


CREATE TABLE table1 (
  colonne1 type1,
  colonne2 type2
);
ALTER TABLE table1 ADD colonne type;
DROP TABLE table1;
TRUNCATE TABLE table1;
  • CREATE : créer une table (et ses colonnes).

  • ALTER : modifier une table (ajouter, modifier ou supprimer une colonne).

  • DROP : supprimer une table (et ses données).

  • TRUNCATE : vider une table (sans la supprimer).

DML (Data Manipulation Language)

Manipulation des données dans les tables.


INSERT INTO table1 (colonne1, colonne2) VALUES (value1, value2);
UPDATE table1 SET colonne = value WHERE condition1;
DELETE FROM table1 WHERE condition1;
  • INSERT : ajouter des lignes dans une table.

  • UPDATE : modifier des lignes existantes.

  • DELETE : supprimer des lignes existantes.

DQL (Data Query Language)

Interrogation des données dans les tables.


SELECT colonne1, colonne2 FROM table1 WHERE condition1;
SELECT * FROM table1;

SELECT * FROM table1 JOIN table2 ON table1.colonne = table2.colonne;
SELECT * FROM table1 JOIN table2 ON table1.colonne = table2.colonne WHERE condition1;
  • SELECT : sélectionner des colonnes dans une table.

    • * : toutes les colonnes.

    • WHERE : filtrer les lignes sélectionnées.

    • JOIN : joindre plusieurs tables pour une requête (clés primaire/étrangère).

  • Résultat sous forme de table.

DCL (Data Control Language)

Gestion des droits d'accès aux données.


GRANT SELECT ON table1 TO user1;
REVOKE SELECT ON table1 FROM user1;
  • GRANT : accorder des droits d'accès.

  • REVOKE : retirer des droits accordés.

TCL (Transaction Control Language)

Gestion des transactions pour garantir l'intégrité des données.


BEGIN;
UPDATE table1 SET colonne = value WHERE condition1;
SAVEPOINT savepoint1;
UPDATE table1 SET colonne = value WHERE condition2;
ROLLBACK TO savepoint1; -- annule la deuxième mise à jour
COMMIT; -- valide la première mise à jour
  • COMMIT : valider une transaction.

  • ROLLBACK : annuler une transaction.

  • SAVEPOINT : définir un point de sauvegarde dans une transaction.

Conditions


SELECT * FROM table1 WHERE colonne = value;
SELECT * FROM table1 WHERE colonne > value;
SELECT * FROM table1 WHERE colonne <= value;
SELECT * FROM table1 WHERE colonne <> value; -- ou !=
SELECT * FROM table1 WHERE colonne IS NULL;
SELECT * FROM table1 WHERE colonne IS NOT NULL;
SELECT * FROM table1 WHERE colonne BETWEEN value1 AND value2;
SELECT * FROM table1 WHERE colonne IN (value1, value2);
SELECT * FROM table1 WHERE colonne LIKE 'value%';
SELECT * FROM table1 WHERE condition1 AND condition2;
SELECT * FROM table1 WHERE condition1 OR condition2;
SELECT * FROM table1 WHERE NOT condition1;

Fonctions

Pour appliquer des opérations sur les données dans les requêtes :


SELECT COUNT(colonne) FROM table1;
SELECT SUM(colonne) FROM table1;
SELECT AVG(colonne) FROM table1;
SELECT MIN(colonne) FROM table1;
SELECT MAX(colonne) FROM table1;
SELECT DISTINCT colonne FROM table1;
SELECT colonne1, colonne2 FROM table1 ORDER BY colonne1 ASC, colonne2 DESC;
SELECT colonne1, colonne2 FROM table1 LIMIT 10 OFFSET 5;

Jointure

https://www.programiz.com/sites/tutorial2program/files/join-in-sql.png

https://www.programiz.com/sql/join

PostgreSQL

https://www.postgresql.org/media/img/about/press/elephant.png

https://www.postgresql.org/about/press/presskit16/base/

  • Système de gestion de base de données relationnelles.

  • Open-source depuis 1996 et conforme à la norme SQL.

  • Documentation complète et communauté active.

  • Deuxième DBMS le plus utilisé après MySQL.

  • pgAdmin : interface graphique pour PostgreSQL.

Query

https://imgs.xkcd.com/comics/query.png

https://xkcd.com/1409/

Exploitation Maternelle

https://xkcd.arnaud.at/comics/327.jpg

https://xkcd.arnaud.at/327

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références