Aller au contenu

SGBD et SQL

I. Système de gestion de base de données⚓︎

Pour manipuler les données présentes dans une base de données (écrire, lire ou encore modifier), il est nécessaire d'utiliser un type de logiciel appelé "système de gestion de base de données" très souvent abrégé en SGBD. Il existe une multitude de SGBD : gratuits/payants, libres/propriétaires...

Les fonctions du SGBD⚓︎

Les SGBD permettent de grandement simplifier la gestion des bases de données :

  1. Lecture, écriture, modification des informations : les SGBD permettent de gérer les contenus dans une base de données

  2. Autorisations d'accès : Il est en effet souvent nécessaire de contrôler les accès par exemple en permettant à l'utilisateur A de lire et d'écrire dans la base de données alors que l'utilisateur B aura uniquement la possibilité de lire les informations contenues dans cette même base de données.

  3. Sécuriser les bases de données : les fichiers des bases de données sont stockés sur des disques durs, et peuvent subir des pannes. Il est souvent nécessaire que l'accès aux informations contenues dans une base de données soit maintenu, même en cas de panne matérielle. Les bases de données sont donc dupliquées sur plusieurs ordinateurs afin qu'en cas de panne d'un ordinateur A, un ordinateur B contenant une copie de la base de données présente dans A, puisse prendre le relais. Tout cela est très complexe à gérer, en effet toute modification de la base de données présente sur l'ordinateur A doit entrainer la même modification de la base de données présente sur l'ordinateur B. Cette synchronisation entre A et B doit se faire le plus rapidement possible, il est fondamental d'avoir des copies parfaitement identiques en permanence. C'est aussi les SGBD qui assurent la maintenance des différentes copies de la base de données.

  4. Accès concurrent : plusieurs personnes peuvent avoir besoin d'accéder aux informations contenues dans une base de données en même temps. Cela peut parfois poser problème, notamment si les 2 personnes désirent modifier la même donnée au même moment (on parle d'accès concurrent). Ces problèmes d'accès concurrent sont aussi gérés par les SGBD.

Utilisation des SGBD

L'utilisation des SGBD explique en partie la supériorité de l'utilisation des BDD sur des solutions plus simples, mais aussi beaucoup plus limitées, comme les fichiers au format CSV.

II. Le langage SQL⚓︎

Vidéo : cours SQL sur Lumni

Premiers pas⚓︎

TD premiers pas

Après avoir téléchargé le fichier, vous pourrez le lire à partir de Basthon en SQL

🌐 TD à télécharger : Fichier premiers_pas_sql_2023_sujet.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

😀 La correction est arrivée ...

🌐 Fichier premiers_pas_sql_2023_corr.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

SQL : allons un peu plus loin⚓︎

TD/Cours : une seule table

Après avoir téléchargé le fichier, vous pourrez le lire à partir de Basthon en SQL

🌐 TD à télécharger : Fichier une_table_sujet_2023.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

😀 La correction est arrivée ...

🌐 Fichier une_table_corr_2023_v2.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

TD/Cours : plusieurs tables - jointures

Après avoir téléchargé le fichier, vous pourrez le lire à partir de Basthon en SQL

🌐 TD à télécharger : Fichier jointures_sujet_2023.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

😀 La correction est arrivée ...

🌐 Fichier jointures_corr_2023.ipynb : "Clic droit", puis "Enregistrer la cible du lien sous"

Bilan⚓︎

CREATE TABLE

SQL
CREATE TABLE LIVRES
(id INT PRIMARY KEY, titre TEXT, auteur TEXT, ann_publi INT, note INT);

INSERT INTO

SQL
INSERT INTO LIVRES
(id, titre, auteur, ann_publi, note)
VALUES
(1, '1984', 'Orwell', 1949, 10);

UPDATE... SET... WHERE...

SQL
UPDATE LIVRES
SET auteur = 'R. Barjavel'
WHERE auteur = 'Barjavel';

DELETE FROM ... WHERE...

SQL
DELETE FROM LIVRES 
WHERE auteur = 'Asimov';

SELECT ... FROM ... WHERE...

SQL
SELECT titre, ann_publi
FROM LIVRES
WHERE auteur = 'Asimov';
Autres comparaisons :

SQL
SELECT titre, ann_publi
FROM LIVRES
WHERE 'Asimov' and ann_publi < 1954 
WHERE auteur LIKE '%Asimov';

ORDER BY

SQL
SELECT auteur, titre, ann_publi
FROM LIVRES
WHERE  ann_publi >= 1060
ORDER BY ann_publi DESC;

DISTINCT

SQL
SELECT DISTINCT auteur
FROM LIVRES;

SELECT ... FROM ... JOIN ON ...

SQL
SELECT *
FROM LIVRES
JOIN AUTEURS ON LIVRES.id_auteur = AUTEURS.id;

SELECT ... FROM ... AS ... JOIN ON... AS ...

SQL
SELECT *
FROM LIVRES AS l
JOIN AUTEURS AS a ON l.id_auteur = a.id ;

Les agrégats⚓︎

COUNT(...)

SQL
SELECT COUNT(*)
FROM LIVRES
WHERE auteur LIKE "%Asimov";

SUM(...)

SQL
SELECT SUM(note)
FROM LIVRES
WHERE auteur LIKE "%Asimov";

AVG(...)

SQL
SELECT AVG(note)
FROM LIVRES
WHERE auteur LIKE "%Asimov";

MIN(...) et MAX(...)

Les syntaxes pour MIN(...) et MAX(...) sont analogues à celles pour SUM et AVG