info:bdd:basesql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
info:bdd:basesql [2021/08/10 09:37] – [MySQL - Requêtes dans la console] philinfo:bdd:basesql [2024/03/08 16:04] (Version actuelle) – [1. Introduction] phil
Ligne 1: Ligne 1:
 +[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&25|Sommaire Bdd}}]]
  
 +===== BDDR -  MySQL - Requêtes dans la console =====
 +
 +[Mise à jour le 8/3/2024]
 +
 +  * **Ressources**
 +    * <html><a href="https://sql.sh/" target="_blank" title="sqlite.com">Le langage SQL</a></html>
 +    * <html><a href="https://www.sqlitetutorial.net/download-install-sqlite/" target="_blank">How To Download & Install SQLite Tools</a></html>
 +    * <html><a href = "https://www.sqlite.org/cli.html" target="_blank" title="sqlite.org">Command Line Shell For SQLite</a></html>
 +
 +  * **Lectures connexes**
 +    * [[info:bdd:basesgene|Wiki - BDDR : généralités]]
 +    * [[:info:bdd:sqliteConsole|Wiki - BDDR - SQLite - Requêtes dans la console]]
 +    * [[:info:bdd:SqliteVSCode|Wiki - BDDR - SQLite dans VSCode]]
 +
 +  * **Mots-clés** : SGBD, base, table, enregistrement, champ, requêtes, SQL.
 +
 +----
 +
 +==== 1. Introduction ====
 +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** (**SGBD((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. ))**), il est possible d’ajouter des informations, de gérer plusieurs bases, de consulter les informations contenues … Le SGBD utilisé avec **PHP**((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.)) est **MySQL**((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)). Les informations contenues dans un SGBD sont **hiérarchisées** et respectent certains formats.
 +
 +<callout type="warning" title="PREALABLE" color="red" icon="true">  * 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//) </callout>
 +
 +//Exemple//
 +
 +{{ :web:mysqlconsole.png?nolink |}}
 +
 +==== 2. Le langage SQL ==== 
 +<callout type="primary" icon="true">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**).</callout>
 +
 +=== 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|
 +|**SELECT**|**Interrogation** des données|
 +|GRANT - REVOKE - COMMIT - ROLLBACK - SAVEPOINT SET TRANSACTION|**Contrôle** des données|
 +
 +<callout type="warning" icon="true">Lors de la **création** d’une **table**, il est nécessaire de définir pour chaque **champ** : son **nom** et son **type**.</callout>
 +
 +===2.2 Types couramment utilisés ===
 +
 +^  Type MySQL  ^  Type de donnée  ^  Remarques  ^
 +|**INT**|Entier||
 +|**FLOAT**|Réel||
 +|**VARCHAR**(**M**)|Texte court|M : nombre de caractères, min = 1, max = 255|
 +|**TEXT**|texte long| |
 +|**DATE**|Date|format jour, mois, année|
 +|**TIME**|heure|format HH:MM:SS|
 +
 +=== 2.3 Ecriture de commentaires ===
 +  * **Source** : <html><a href="https://sql.sh/cours/commentaires" target="_blank">SQL.sh</a></html>
 +
 +<callout type="tip" icon="true">Le **double tiret** **<nowiki>--</nowiki>** 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.</callout>
 +
 +==== 3. Débuter avec les requêtes SQL ====
 +
 +=== 3.1 Extrait de la table "jeux_video" de la base "test" utilisée dans les exemples ===
 +{{ :web:extable.png?nolink |}}
 +
 +<callout type="primary" icon="true">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 <html><a href="https://webge.fr/doc/wikis/code/web/WEB_TABLE_MSQL_jeux_video.zip">ici</a></html>.</callout>
 +
 +{{ :web:mysqlvers.png?nolink|}}
 +** Vérification de la version de mySQL**
 +
 +<code sql *.sql>
 +-- Entrer la commande à la suite du prompt mysql>
 +mysql> select --version();
 +</code>
 +
 +<callout type="warning" icon="true">Ne pas oublier le **point-virgule** **;** à la fin des requêtes !!!</callout>
 +
 +{{ :web:create.png?nolink|}}
 +=== 3.2 Création, connexion et destruction ===
 +  * **Création et destruction d'une base de données**
 +{{ :web:infosql.png?nolink|}}
 +
 +//Syntaxe//
 +<code sql *.sql>
 +CREATE DATABASE nom_base ; -- Création
 +DROP DATABASE nom_base; -- Destruction
 +</code>
 +
 +//Exemple//
 +<code sql ex1.sql>
 +CREATE DATABASE test;
 +</code>
 +
 +  * **Connexion à une base de données**
 +
 +<callout type="warning" color="red" icon="true">Cette requête doit précéder celles qui suivent.</callout>
 +
 +//Syntaxe//
 +<code sql *.sql>
 +USE nom_base ; 
 +</code>
 +
 +//Exemple//
 +<code sql ex.sql>
 +USE test;
 +</code>
 +
 +{{ :web:createtable.png?nolink|}}
 +  * **Création et destruction d'une table**
 +
 +//Syntaxe//
 +<code sql *.sql>
 +CREATE TABLE nom_table(nom_champ1 type_champ1, nom_champ2 type_champ2, …); -- Création
 +DROP TABLE nom_table; -- Destruction
 +</code>
 +
 +//Exemple//
 +<code sql 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);
 +</code>
 +
 +=== 3.3 Manipulation des données ===
 +  * **Mots-clés** : INSERT INTO , VALUES, DELETE, FROM, WHERE, UPDATE, SET
 +
 +{{ :web:insertinto.png?nolink|}}
 +  * **Insertion d'une entrée dans une table**
 +//Syntaxe//
 +<code sql *.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) ; 
 +</code>
 +
 +//Exemple//
 +<code sql ex.sql>
 +INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max, commentaires) 
 +VALUES('Battlefield 1942', 'Patrick', 'PC', 45, 50, '2nde guerre mondiale');
 +</code>
 +
 +//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
 +{{ :web:ex3table.png?nolink |}}
 +
 +{{ :web:deletefrom.png?nolink|}}
 +  * **Suppression d'une entrée dans une table**
 +//Syntaxe//
 +<code sql *.sql>
 +DELETE FROM nom_table WHERE nom_champ = valeur ;
 +</code>
 +
 +<code sql ex.sql>
 +DELETE FROM jeux_video WHERE nom='Battlefield 1942';
 +</code>
 +
 +//Résultat dans la console// : Query OK, 1 row affected (0.00 sec)
 +
 +{{ :web:update.png?nolink|}}
 +  * **Modification d'une ou plusieurs entrées dans une table**
 +//Syntaxe//
 +<code sql *.sql>
 +UPDATE nom_table SET champ1=val_champ1, champ2=val_champ2, …,champn=val_champn) WHERE condition ;  
 +
 +</code>
 +
 +//Exemple//
 +<code sql ex.sql>
 +UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32 WHERE ID = 51;
 +</code>
 +
 +//Résultat dans la console// : Query OK, 1 row affected (0.00 sec)
 +
 +//Résultat dans phpMyAdmin// : modification de l'entrée 51
 +{{ :web:ex4table.png?nolink |}}
 +
 +=== 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//
 +
 +<callout type="info" icon="true">**SELECT** //expression// \\
 +**FROM** //table(s)// \\
 +[**WHERE** //conditions//]</callout>
 +
 +{{ :web:selectfrom.png?nolink|}}
 +  * **Lecture** de l'ensemble des champs et de l'ensemble des enregistrements d'une table
 +//Syntaxe//
 +<code sql *.sql>
 +SELECT * FROM <nom_table>;  -- * extrait toutes les colonnes de la table
 +</code>
 +
 +//Exemple//
 +<code sql ex.sql>
 +SELECT * FROM jeux_video;
 +</code>
 +
 +//Résultat partiel dans la console//
 +{{ :web:requete1.png?nolink |}}
 +
 +  * **Lecture** d’un sous-ensemble des champs et de l’ensemble des enregistrements d'une table
 +//Syntaxe//
 +<code sql *.sql>
 +SELECT champ1, champ2,...,champn FROM <nom_table>;
 +</code>
 +
 +//Exemple//
 +<code sql *.sql>
 +SELECT nom, commentaires FROM jeux_video;
 +</code>
 +
 +//Résultat partiel dans la console//
 +{{ :web:requete2.png?nolink |}}
 +
 +  * **Lecture** d’un sous-ensemble  des champs d’une sélection des enregistrements, sélection selon une condition 
 +//Syntaxe//
 +<code sql *.sql>
 +SELECT champ1, champ2,...,champn  FROM nom_table WHERE condition;
 +</code>
 +
 +//Exemple//
 +<code sql *.sql>
 +SELECT  nom,commentaires,prix FROM jeux_video WHERE prix<30;
 +</code>
 +
 +//Résultat partiel dans la console//
 +{{ :web:requete3.png?nolink |}}
 +
 +  * **Lecture** d’un sous-ensemble **ordonné** des champs d’une sélection des enregistrements, sélection selon une condition
 +
 +//Syntaxe//
 +<code sql *.sql>
 +SELECT champ1, champ2,...,champn  FROM <nom_table> WHERE nom_champ = condition ORDER BY champ(s);
 +</code>
 +
 +//Exemple//
 +<code sql *.sql>
 +SELECT  select nom,commentaires,prix FROM jeux_video WHERE possesseur='Florent' ORDER BY prix;
 +</code>
 +
 +//Résultat partiel dans la console//
 +{{ :web:requete4.png?nolink |}}
 +
 +  * **Lecture** d’un sous-ensemble **ordonné** et **limité** des champs d’une sélection des enregistrements, sélection selon une condition
 +
 +//Syntaxe//
 +<code sql *.sql>
 +SELECT champ1, champ2,...,champn  FROM <nom_table> WHERE nom_champ = condition ORDER BY champ(s);
 +</code>
 +
 +//Exemple//
 +<code sql ex.sql>
 +SELECT  select nom,commentaires,prix FROM jeux_video WHERE possesseur='Florent' ORDER BY prix LIMIT 0,10;
 +</code>
 +
 +//Résultat dans la console//
 +{{ :web:requete5.png?nolink |}}
 +
 +=== 3.5 Créer un utilisateur ===
 +
 +//Syntaxe//
 +<code sql *.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;
 +</code>
 +
 +//Exemple//
 +<code sql 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;
 +</code>
 +
 +=== 3.6 Contrôle des données ===
 +A rédiger
 +
 +{{ :web:220px-phpmyadmin_logo.png?nolink&120|}}
 +==== 4. phpMyAdmin ====
 +<callout type="tip" icon="true">Pour **simplifier la gestion des bases**, il existe un outil accessible au travers d’un serveur web, développé en PHP : <html><a href="https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913893-phpmyadmin" target="_blank" title="Openclassrooms">phpMyAdmin</a></html>.</callout>
 +
 +----
 +==== Résumé ====
 +  * 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).
  • info/bdd/basesql.txt
  • Dernière modification : 2024/03/08 16:04
  • de phil