Maison  >  Article  >  base de données  >  Base de données MySQL et langage Go : comment effectuer une requête de données ?

Base de données MySQL et langage Go : comment effectuer une requête de données ?

PHPz
PHPzoriginal
2023-06-17 08:37:021522parcourir

Avec le développement continu d'Internet et de la technologie de traitement des données, les bases de données jouent un rôle de plus en plus important en tant qu'outil de base pour le stockage et la gestion des données. Dans le développement Web moderne, MySQL, en tant que l'une des bases de données relationnelles les plus utilisées, est souvent utilisée pour stocker et gérer des données. Le langage Go est devenu l'un des langages de programmation les plus populaires en raison de son efficacité, de sa rapidité et de sa simplicité. Il possède également de nombreuses excellentes bibliothèques et frameworks liés aux opérations de bases de données. Alors, comment effectuer une requête de données dans la base de données MySQL et le langage Go ? Cet article présentera cela en détail.

1. Bases du langage Go

Tout d'abord, nous devons maîtriser certaines connaissances de base du langage Go. Le langage Go fournit la bibliothèque standard base de données/sql, qui est une couche d'accès aux données légère qui prend en charge l'accès et le fonctionnement des bases de données SQL. En utilisant le package database/sql, nous pouvons facilement effectuer des opérations telles que la connexion à la base de données, la requête et la mise à jour.

Les étapes de base pour l'interrogation de données à l'aide de la bibliothèque standard base de données/sql en langage Go sont les suivantes :

  1. Ouvrez la connexion à la base de données

Créez une connexion à la base de données en appelant la fonction sql.Open. Cette fonction nécessite deux paramètres : le nom du pilote et le nom de la source de données. Dans MySQL, le nom du pilote est « mysql ». Le nom de la source de données contient toutes les informations nécessaires pour se connecter à la base de données, telles que l'adresse IP de la base de données, le port, le nom d'utilisateur, le mot de passe, le nom de la base de données, etc.

L'exemple de code ressemble à ceci :

import (
  "database/sql"
  _ "github.com/go-sql-driver/mysql"
)

func main() {
  db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/my_database")
  if err != nil {
    panic(err)
  }
  defer db.Close()
}
  1. Créez une instruction de requête SQL

Utilisez une instruction de requête SQL pour définir l'opération à effectuer. Dans le langage Go, vous pouvez utiliser ? comme espace réservé pour remplacer les paramètres dans la requête. Ces paramètres sont automatiquement remplacés par les valeurs réelles lors de l'exécution de la requête, empêchant ainsi les attaques par injection SQL.

L'exemple de code est le suivant :

stmt, err := db.Prepare("SELECT * FROM users WHERE age > ?")
if err != nil {
  panic(err)
}
defer stmt.Close()
  1. Exécuter l'opération de requête

Exécutez l'instruction de requête SQL en appelant la fonction stmt.Query ou la fonction stmt.QueryRow. La fonction Query renvoie un objet rowset, qui peut être parcouru pour obtenir l'ensemble de résultats. La fonction QueryRow renvoie une seule ligne du jeu de résultats.

L'exemple de code est le suivant :

rows, err := stmt.Query(18)
if err != nil {
  panic(err)
}
defer rows.Close()

for rows.Next() {
  // 处理查询结果
}
  1. Analyser les résultats de la requête

Utilisez la fonction rows.Scan ou la fonction rows.Columns pour traiter les résultats de la requête. La fonction Scan récupère les valeurs de la ligne actuelle et les stocke dans une variable spécifiée, tandis que la fonction Columns renvoie les noms de colonnes du jeu de résultats.

L'exemple de code est le suivant :

var id int
var name string

err := rows.Scan(&id, &name)
if err != nil {
  panic(err)
}

2. Introduction aux instructions MySQL

Après avoir compris les connaissances de base du langage Go, nous devons également maîtriser certaines connaissances des instructions MySQL. MySQL prend en charge une variété d'instructions de requête, telles que SELECT, INSERT, UPDATE, DELETE, etc. Dans cet article, nous présenterons l'instruction de requête SELECT, qui est l'une des instructions de requête les plus couramment utilisées dans MySQL.

  1. Instruction SELECT

L'instruction SELECT est utilisée pour sélectionner des données dans une ou plusieurs tables et renvoyer l'ensemble de résultats au client. La forme générale de l'instruction SELECT est la suivante :

SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;

Parmi eux, le nom de la colonne représente le nom de la colonne à interroger, séparé par des virgules ; est facultatif et est utilisé pour filtrer les données.

L'exemple de code est le suivant :

SELECT id, name, age FROM users WHERE age > 18;
  1. Instruction WHERE

L'instruction WHERE est utilisée pour sélectionner les données qui répondent aux conditions spécifiées dans la table. La clause WHERE peut contenir une ou plusieurs conditions, reliées par AND ou OR. Les conditions sont généralement définies à l'aide d'opérateurs de comparaison (tels que >, <, =, !=) et d'opérateurs logiques (tels que AND ou OR).

L'exemple de code est le suivant :

SELECT id, name, age FROM users WHERE age > 18 AND name LIKE '%john%';
  1. Instruction ORDER BY

L'instruction ORDER BY est utilisée pour trier l'ensemble de résultats en fonction d'une ou plusieurs colonnes spécifiées. Par défaut, l'instruction ORDER BY trie par ordre croissant.

L'exemple de code est le suivant :

SELECT id, name, age FROM users WHERE age > 18 ORDER BY age DESC;
  1. Instruction LIMIT

L'instruction LIMIT est utilisée pour limiter le nombre de lignes renvoyées dans l'ensemble de résultats. Vous pouvez utiliser la clause OFFSET pour spécifier où commencer le retour.

L'exemple de code est le suivant :

SELECT id, name, age FROM users WHERE age > 18 LIMIT 5 OFFSET 10;

3. Utiliser le langage Go pour les requêtes MySQL

  1. Interroger un seul résultat

Ce qui suit est un exemple de fonction pour interroger un utilisateur avec l'identifiant 1 :

func getUserByID(db *sql.DB) (User, error) {
  var user User
  err := db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1).Scan(&user.ID, &user.Name, &user.Age)
  if err != nil {
    return User{}, err
  }
  return user, nil
}

Dans cet exemple fonction , nous interrogeons l'utilisateur avec l'identifiant 1 en appelant la fonction QueryRow. La fonction QueryRow ne renvoie qu'une seule ligne du jeu de résultats, nous pouvons donc utiliser la fonction Scan pour stocker les résultats dans la structure User.

  1. Requête de plusieurs résultats

Ce qui suit est un exemple de fonction pour interroger tous les utilisateurs de plus de 18 ans :

func getUsersByAge(db *sql.DB, age int) ([]User, error) {
  var users []User
  rows, err := db.Query("SELECT id, name, age FROM users WHERE age > ?", age)
  if err != nil {
    return nil, err
  }
  defer rows.Close()

  for rows.Next() {
    var user User
    err := rows.Scan(&user.ID, &user.Name, &user.Age)
    if err != nil {
      return nil, err
    }
    users = append(users, user)
  }

  return users, nil
}

Dans cet exemple de fonction, nous appelons la fonction Query pour interroger tous les utilisateurs de plus de 18 ans et parcourons rowset pour obtenir tous les résultats. Au fur et à mesure que nous parcourons l'ensemble de lignes, nous stockons les résultats dans la structure User via la fonction Scan et les ajoutons à la tranche des utilisateurs.

4. Résumé

Dans cet article, nous avons présenté comment utiliser le langage Go pour interroger les données MySQL. Nous avons d'abord présenté les connaissances de base du langage Go, puis expliqué les instructions de requête couramment utilisées dans MySQL et enfin démontré comment utiliser le langage Go pour effectuer des requêtes MySQL à l'aide d'un exemple de code.

Il convient de noter que l'exemple de code ci-dessus n'est qu'une opération de requête de base. Dans le développement réel, nous devons utiliser différentes instructions de requête et modèles d'application en fonction de besoins et de scénarios spécifiques. Dans le même temps, les performances des instructions de requête doivent également être prises en compte. Nous devrions essayer d'utiliser des méthodes d'optimisation telles que les index pour améliorer les performances des requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn