Comment effectuer des requêtes de base dans MySQL et MariaDB sur un serveur cloud
Qu'est-ce que MySQL et MariaDB ?
MySQL et MariaDB sont des systèmes de gestion de bases de données relationnelles. Ces outils peuvent être utilisés sur votre serveur VPS pour gérer les données de nombreux programmes différents. Les deux implémentent des formes du langage d'interrogation SQL, et l'un ou l'autre peut être utilisé sur un serveur cloud.
Ce guide explique comment rechercher des informations dans vos bases de données en spécifiant différents critères de recherche. Cela vous aidera à extraire les données nécessaires de manière flexible de vos bases de données.
Pour ce guide, nous utiliserons MySQL sur un serveur cloud Ubuntu 12.04, mais les étapes impliquées fonctionneront sur MySQL ou MariaDB sur n'importe quelle distribution Linux moderne.
Comment interroger des informations de MySQL et MariaDB
Nous disons au logiciel de base de données de récupérer les informations de nos bases de données en utilisant la syntaxe suivante :
SELECT selection_fields FROM data_source WHERE selection_criteria_is_met;
Sélection d'une source de données à interroger dans MySQL et MariaDB
Nous allons utiliser la base de données "mysql" par défaut pour nous entraîner à former des requêtes :
USE mysql;
Database changed
Consultez les tables de la base de données "mysql" pour avoir une idée des sources de données que nous pouvons interroger :
SHOW TABLES;
+---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | host | . . . . . .
Sur l'installation MySQL par défaut d'Ubuntu, cette commande renvoie 24 résultats.
Choisissons la table "utilisateur" pour interroger les résultats. Pour avoir une idée des catégories parmi lesquelles nous pouvons sélectionner, consultez les en-têtes de colonne du tableau :
SHOW COLUMNS FROM user;
+------------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+---------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | . . . . . .
Les valeurs de la colonne "Champ" sont des en-têtes de colonne pour la table "utilisateur".
Comment créer une requête de base dans MySQL et MariaDB
Choisissons quelques informations de base sur nos utilisateurs :
SELECT user,password,host FROM user;
+------------------+-------------------------------------------+-----------+ | user | password | host | +------------------+-------------------------------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost | | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 | | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1 | | debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost | +------------------+-------------------------------------------+-----------+ 4 rows in set (0.00 sec)
Les champs de sélection que nous avons choisis sont trois des colonnes de la table "utilisateur". Remarquez comment nous avons séparé les différents champs par une virgule.
Chaque colonne que nous demandons est renvoyée, dans l'ordre, à partir de chaque enregistrement de la table.
Comment utiliser les caractères génériques dans les requêtes MySQL et MariaDB
L'exemple précédent a renvoyé un bel ensemble de données. Cette syntaxe est utile si vous souhaitez renvoyer toutes les données liées à des critères spécifiques et connus.
Le langage d'interrogation SQL permet des recherches plus flexibles. Si nous voulions tout renvoyer de la table "user", nous pourrions utiliser le caractère générique astérisque (*), qui correspond à n'importe quelle valeur :
SELECT * FROM user;
Les résultats sont un peu compliqués, ils ne seront donc pas inclus ici. La commande vous donnera chaque valeur de chaque colonne pour chaque enregistrement (ligne) de la table.
Comment filtrer les résultats dans MySQL et MariaDB
Si nous voulons uniquement renvoyer les résultats qui répondent à certains critères, nous pouvons filtrer les résultats avec un filtre "où".
Par exemple, si nous voulons uniquement renvoyer les données de la table où l'utilisateur est "debian-sys-maint", nous pouvons filtrer la requête comme ceci :
SELECT user,password,host FROM user WHERE user = "debian-sys-maint";
+------------------+-------------------------------------------+-----------+ | user | password | host | +------------------+-------------------------------------------+-----------+ | debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost | +------------------+-------------------------------------------+-----------+ 1 row in set (0.00 sec)
De la même manière, nous pouvons voir quels utilisateurs sont attachés à l'hôte "localhost":
SELECT user,password,host FROM user WHERE host = "localhost";
+------------------+-------------------------------------------+-----------+ | user | password | host | +------------------+-------------------------------------------+-----------+ | debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost | | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost | +------------------+-------------------------------------------+-----------+ 2 rows in set (0.00 sec)
Si nous voulons filtrer par plus d'un terme, nous pouvons séparer les critères par "et".
SELECT user,password,host FROM user WHERE host = "localhost" AND user = "root";
+------+-------------------------------------------+-----------+ | user | password | host | +------+-------------------------------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost | +------+-------------------------------------------+-----------+ 1 row in set (0.00 sec)
Comment utiliser l'opérateur de comparaison similaire
Dans les filtres "où", le signe de pourcentage (%) est utilisé comme caractère générique "tout" au lieu d'un astérisque. Il correspondra à zéro ou plusieurs caractères.
En utilisant cette connaissance, nous pouvons utiliser l'opérateur de comparaison "like", qui est une autre façon de filtrer avec "where".
L'opérateur "like" compare les valeurs d'un certain champ à une expression sur le côté droit. Par exemple, pour sélectionner les lignes dont l'utilisateur commence par "d", nous pouvons effectuer la requête suivante :
SELECT user,password,host FROM user WHERE user LIKE "d%";
+------------------+-------------------------------------------+-----------+ | user | password | host | +------------------+-------------------------------------------+-----------+ | debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost | +------------------+-------------------------------------------+-----------+ 1 row in set (0.00 sec)
Vous pouvez spécifier des comparaisons "similaires" en utilisant "et" ou "ou" comme vous pouvez le faire avec des comparaisons d'égalité :
SELECT user,password,host FROM user WHERE user LIKE "d%" OR user LIKE "r%";
+------------------+-------------------------------------------+-----------+ | user | password | host | +------------------+-------------------------------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost | | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 | | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1 | | debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost | +------------------+-------------------------------------------+-----------+ 4 rows in set (0.00 sec)
Conclusion
Vous devriez maintenant avoir une compréhension de base de la façon de récupérer des données à partir de vos bases de données.
Il existe de nombreuses autres requêtes que nous n'avons pas couvertes, mais la liste que nous avons mentionnée est un bon début sur la façon d'effectuer la récupération d'informations dans MySQL et MariaDB.
Vous pouvez en savoir plus sur comment créer et gérer des bases de données dans MySQL et MariaDB ici et comment créer des tables dans MySQL et MariaDB en cliquant sur ce lien.