info:bdd:basesql

Sommaire Bdd

[Mise à jour le 8/3/2024]

  • Mots-clés : SGBD, base, table, enregistrement, champ, requêtes, SQL.

Une base de données peut être définie comme un moyen de stocker des informations de manière structurée. L’objectif d’une base de données et de permettre à des utilisateurs ou à des programmes de partager des informations. Grâce à un système de gestion de base de données (SGBD1)), il est possible d’ajouter des informations, de gérer plusieurs bases, de consulter les informations contenues … Le SGBD utilisé avec PHP2) est MySQL3). Les informations contenues dans un SGBD sont hiérarchisées et respectent certains formats.

PREALABLE

* MySQL doit être installé sur un serveur tel qu'Apache sous WAMP.

Pour tester des requêtes SQL avec l'interface en ligne de commandes sous Windows :
- Entrer le chemin vers mysql.exe dans les variables d'environnement ou se placer dans le répertoire
c:\wamp64\bin\mysql\mysqlx.x.x\bin (sous wamp)
- Se connecter avec la commande : mysql -u root -p (utilisateur root et pas de mot de passe)

Exemple

La communication avec un SGBD se fait avec un langage normalisé de définition et de manipulation des données et de protection d’accès : SQL (Structured Query Language).

2.1 Principales instructions SQL

Ordres SQL Aspect du langage
CREATE - ALTER - DROP - RENAME TRUNCATE Définition des données
INSERT - UPDATE - DELETE - LOCK TABLE Manipulation des données
SELECTInterrogation des données
GRANT - REVOKE - COMMIT - ROLLBACK - SAVEPOINT SET TRANSACTIONContrôle des données
Lors de la création d’une table, il est nécessaire de définir pour chaque champ : son nom et son type.

2.2 Types couramment utilisés

Type MySQL Type de donnée Remarques
INTEntier
FLOATRéel
VARCHAR(M)Texte courtM : nombre de caractères, min = 1, max = 255
TEXTtexte long
DATEDateformat jour, mois, année
TIMEheureformat HH:MM:SS

2.3 Ecriture de commentaires

Le double tiret -- et le symbole dièse # permettent de faire un commentaire jusqu’à la fin de la ligne. /* et */ permettent de faire des commentaires sur plusieurs lignes.

3.1 Extrait de la table "jeux_video" de la base "test" utilisée dans les exemples

On utilise le Système de Gestion de Base de Données (SGDB) MySQL dans les exemples ci-dessous (test). La table jeux_video est téléchargeable ici.

Vérification de la version de mySQL

*.sql
-- Entrer la commande à la suite du prompt mysql>
mysql> SELECT --version();
Ne pas oublier le point-virgule ; à la fin des requêtes !!!

3.2 Création, connexion et destruction

  • Création et destruction d'une base de données

Syntaxe

*.sql
CREATE DATABASE nom_base ; -- Création
DROP DATABASE nom_base; -- Destruction

Exemple

ex1.sql
CREATE DATABASE test;
  • Connexion à une base de données
Cette requête doit précéder celles qui suivent.

Syntaxe

*.sql
USE nom_base ; 

Exemple

ex.sql
USE test;

  • Création et destruction d'une table

Syntaxe

*.sql
CREATE TABLE nom_table(nom_champ1 type_champ1, nom_champ2 type_champ2,); -- Création
DROP TABLE nom_table; -- Destruction

Exemple

ex1.sql
CREATE TABLE news( -- Ecriture en colonnes pour plus de lisibilité
id INT,            -- NOT NULL impose la saisie d'une valeur
titre VARCHAR(255) NOT NULL, 
contenu TEXT NOT NULL);

3.3 Manipulation des données

  • Mots-clés : INSERT INTO , VALUES, DELETE, FROM, WHERE, UPDATE, SET

  • Insertion d'une entrée dans une table

Syntaxe

*.sql
INSERT INTO nom_table (champ1, champ2,..., champn) VALUES('val_champ1', 'val_champ2',,val_champn) ;  
ou
INSERT INTO nom_table VALUES('val_champ1', 'val_champ2',,val_champn) ; 

Exemple

ex.sql
INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max, commentaires) 
VALUES('Battlefield 1942', 'Patrick', 'PC', 45, 50, '2nde guerre mondiale');

Résultat dans la console : Query OK, 1 row affected (0.00 sec)

Résultat dans phpMyAdmin : ajout de l'entrée 52 à la fin de la table

  • Suppression d'une entrée dans une table

Syntaxe

*.sql
DELETE FROM nom_table WHERE nom_champ = valeur ;
ex.sql
DELETE FROM jeux_video WHERE nom='Battlefield 1942';

Résultat dans la console : Query OK, 1 row affected (0.00 sec)

  • Modification d'une ou plusieurs entrées dans une table

Syntaxe

*.sql
UPDATE nom_table SET champ1=val_champ1, champ2=val_champ2,,champn=val_champn) WHERE condition ;

Exemple

ex.sql
UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32 WHERE ID = 51;

Résultat dans la console : Query OK, 1 row affected (0.00 sec)

Résultat dans phpMyAdmin : modification de l'entrée 51

3.4 Interrogation des données

  • Mots-clés : SELECT, FROM, WHERE, ORDER BY (DSC), LIMIT

L'une des commandes les plus importantes de SQL utilise le triplet SELECT-FROM-WHERE qui permet de rechercher des informations au sein des tables d'une base de données.

Synthaxe

SELECT expression
FROM table(s)
[WHERE conditions]

  • Lecture de l'ensemble des champs et de l'ensemble des enregistrements d'une table

Syntaxe

*.sql
SELECT * FROM <nom_table>;  -- * extrait toutes les colonnes de la table

Exemple

ex.sql
SELECT * FROM jeux_video;

Résultat partiel dans la console

  • Lecture d’un sous-ensemble des champs et de l’ensemble des enregistrements d'une table

Syntaxe

*.sql
SELECT champ1, champ2,...,champn FROM <nom_table>;

Exemple

*.sql
SELECT nom, commentaires FROM jeux_video;

Résultat partiel dans la console

  • Lecture d’un sous-ensemble des champs d’une sélection des enregistrements, sélection selon une condition

Syntaxe

*.sql
SELECT champ1, champ2,...,champn  FROM nom_table WHERE condition;

Exemple

*.sql
SELECT  nom,commentaires,prix FROM jeux_video WHERE prix<30;

Résultat partiel dans la console

  • Lecture d’un sous-ensemble ordonné des champs d’une sélection des enregistrements, sélection selon une condition

Syntaxe

*.sql
SELECT champ1, champ2,...,champn  FROM <nom_table> WHERE nom_champ = condition ORDER BY champ(s);

Exemple

*.sql
SELECT  SELECT nom,commentaires,prix FROM jeux_video WHERE possesseur='Florent' ORDER BY prix;

Résultat partiel dans la console

  • Lecture d’un sous-ensemble ordonné et limité des champs d’une sélection des enregistrements, sélection selon une condition

Syntaxe

*.sql
SELECT champ1, champ2,...,champn  FROM <nom_table> WHERE nom_champ = condition ORDER BY champ(s);

Exemple

ex.sql
SELECT  SELECT nom,commentaires,prix FROM jeux_video WHERE possesseur='Florent' ORDER BY prix LIMIT 0,10;

Résultat dans la console

3.5 Créer un utilisateur

Syntaxe

*.sql
-- Création de l'utilisateur
CREATE USER nom_utilisateur@url IDENTIFIED BY 'password';
-- Affectation des droits
GRANT SELECT, INSERT, UPDATE,DELETE ON nom_base.* TO nom_utilisateur@url;

Exemple

ex.sql
-- Création de l'utilisateur
CREATE USER db_utilisateur@localhost IDENTIFIED BY '12345678';
-- Affectation des droits
GRANT SELECT, INSERT, UPDATE,DELETE ON coureurs.* TO db_utilisateur@localhost;

3.6 Contrôle des données

A rédiger

Pour simplifier la gestion des bases, il existe un outil accessible au travers d’un serveur web, développé en PHP : phpMyAdmin.

  • Les requêtes SQL commençant par SELECT permettent de récupérer des informations dans une base de données.
  • Le langage SQL propose de nombreux outils pour préciser nos requêtes, à l'aide notamment des mots-clés WHERE(filtre), ORDER BY(tri) et LIMIT(limitation du nombre de résultats).

1)
Un Système de Gestion de Base de Données est un logiciel qui permet de stocker des informations dans une base de données.
2)
PHP (officiellement, ce sigle est un acronyme récursif pour PHP Hypertext Preprocessor) est un langage de scripts, généraliste et Open Source, spécialement conçu pour le développement d'applications web. Il peut être intégré facilement au HTML.
3)
MySQL est un système de gestion de bases de données relationnelles. Il est distribué sous une double licence GPL et propriétaire. Wikipédia
  • info/bdd/basesql.txt
  • Dernière modification : 2024/03/08 16:04
  • de phil