Heim >Datenbank >MySQL-Tutorial >Wie Golang MySQL-Daten verwaltet
MySQL wurde unter der Schirmherrschaft der Oracle Corporation entwickelt und ist ein relationales Datenbankverwaltungssystem, das in der Internetinfrastruktur weit verbreitet ist. Es unterstützt mehrere Betriebssysteme und Programmiersprachen, einschließlich der Go-Sprache, und verfügt über eine Reihe von Funktionen, die die Integration großer Datenmengen und leistungsstarke Abfragen unterstützen.
MySQL verwendet eine tabellenbasierte Datenstruktur, bei der jede Zeile einen Datensatz und jede Spalte ein Feld darstellt. Es verwendet die SQL-Sprache, um Daten zu bearbeiten. Zu den häufigsten SQL-Operationen gehören SELECT, INSERT, UPDATE, DELETE und CREATE TABLE.
In der Go-Sprache können wir MySQL-Treiber von Drittanbietern verwenden, um eine Verbindung zur MySQL-Datenbank herzustellen und diese abzufragen. Die Standardbibliothek der GO-Sprache enthält jedoch bereits das Paket database/sql
, das die Standard-SQL-Datenbankschnittstelle implementiert hat und mit anderen praktischen und beliebten SQL-Datenbanken interagieren kann, einschließlich MySQL, PostgreSQL und SQLite usw. database/sql
包,这个包已经实现了标准的 SQL 数据库接口,可以和其他方便的流行的 SQL 数据库交互操作,包括 MySQL、PostgreSQL 和 SQLite 等。
因此,在我们开始构建查询 MySQL 的 Go 应用程序之前,我们需要安装 MySql 驱动程序。可以使用命令行命令 go get -u github.com/go-sql-driver/mysql
快捷安装。
这是因为在 Go 语言中,所有的数据访问都需通过 SQL.DB
连接进行。并且驱动程序的目的是用来实现 database/sql
的功能中那样的的接口约定。
在 Go 语言中,建立到 MySQL 数据库的连接是基于连接字符串的,连接字符串包含连接 MySQL 所需的所有参数,如用户名、密码、主机名或 IP 地址、端口号和数据库名称等。
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname") if err != nil { log.Fatal(err) }
在 Go 语言中,可以使用 db.Query()
、db.QueryRow()
和 db.Exec()
函数查询和操作 MySQL 数据库中的数据。
db.Query()
函数用于查询多条记录,返回一个 *sql.Rows
对象。db.QueryRow()
函数用于查询单条记录,返回一个 *sql.Row
对象,类似于 resultset
,但是它只返回第一行记录,通常用于查询单个唯一记录。db.Exec()
函数用于执行非查询 SQL 语句,例如 INSERT、UPDATE 和 DELETE,返回一个 sql.Result
对象。
在本例中,我们使用 db.Query()
函数来查询所有记录。我们将使用一个简单的计数器来统计记录的数量,并将每行数据打印到控制台。
rows, err := db.Query("SELECT id, name FROM users") if err != nil { log.Fatal(err) } defer rows.Close() count := 0 for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { log.Fatal(err) } fmt.Printf("id=%d, name=%s\n", id, name) count++ } if err := rows.Err(); err != nil { log.Fatal(err) } fmt.Printf("Found %d users\n", count)
必须在检索数据后调用 rows.Close()
函数以释放与 *sql.Rows
关联的数据库资源。同时,代码中使用了 rows.Next()
函数,它返回一个布尔值,指示是否还有更多的行可以进行处理。另外,在这个例子中使用了 rows.Scan()
函数将每行记录的值复制到这个例子中定义的 id
和 name
变量中,然后在控制台中打印每个值。
我们也可以使用 Go 语言插入数据到 MySQL 数据库中,最简单的方法使用 db.Exec()
函数。我们可以将插入语句传递到 db.Exec()
函数中,它将以 SQL 语句的形式在 MySQL 中执行。
result, err := db.Exec("INSERT INTO users(name, email) VALUES('John Doe', 'johndoe@gmail.com')") if err != nil { log.Fatal(err) } rowsAffected, err := result.RowsAffected() if err != nil { log.Fatal(err) } fmt.Printf("Inserted %d rows into users table\n", rowsAffected)
我们可以使用 result.RowsAffected()
go get -u github.com/go-sql-driver/mysql
verwenden. 🎜🎜Das liegt daran, dass in der Go-Sprache der gesamte Datenzugriff über eine SQL.DB
-Verbindung erfolgen muss. Und der Zweck des Treibers besteht darin, die Schnittstellenkonventionen in den Funktionen von database/sql
zu implementieren. 🎜🎜🎜Herstellen einer Verbindung🎜🎜🎜In der Go-Sprache basiert der Verbindungsaufbau auf der Verbindungszeichenfolge. Die Verbindungszeichenfolge enthält alle für die Verbindung mit MySQL erforderlichen Parameter, wie Benutzername, Passwort, Hostname oder IP-Adresse, Portnummer und Datenbankname usw. 🎜rrreee🎜🎜Daten abfragen🎜🎜🎜In der Go-Sprache können Sie db.Query()
, db.QueryRow()
und db.Exec() verwenden
Funktionen zum Abfragen und Bearbeiten von Daten in der MySQL-Datenbank. 🎜🎜db.Query()
-Funktion wird zum Abfragen mehrerer Datensätze verwendet und gibt ein *sql.Rows
-Objekt zurück. Die Funktion db.QueryRow()
wird zum Abfragen eines einzelnen Datensatzes verwendet und gibt ein *sql.Row
-Objekt zurück, ähnlich wie resultset
, jedoch nicht Gibt nur die erste A-Zeile von Datensätzen zurück, die normalerweise zum Abfragen eines einzelnen eindeutigen Datensatzes verwendet wird. Die Funktion db.Exec()
führt Nicht-Abfrage-SQL-Anweisungen wie INSERT, UPDATE und DELETE aus und gibt ein sql.Result
-Objekt zurück. 🎜🎜In diesem Beispiel verwenden wir die Funktion db.Query()
, um alle Datensätze abzufragen. Wir werden einen einfachen Zähler verwenden, um die Anzahl der Datensätze zu zählen und jede Datenzeile auf der Konsole auszugeben. 🎜rrreee🎜Die Funktion rows.Close()
muss nach dem Abrufen von Daten aufgerufen werden, um die mit *sql.Rows
verknüpften Datenbankressourcen freizugeben. Außerdem verwendet der Code die Funktion rows.Next()
, die einen booleschen Wert zurückgibt, der angibt, ob weitere Zeilen verarbeitet werden können. Darüber hinaus wird in diesem Beispiel die Funktion rows.Scan()
verwendet, um den Wert jedes Zeilendatensatzes in die definierte id
und name
zu kopieren in diesem Beispiel > Variable und geben Sie jeden Wert in der Konsole aus. 🎜🎜🎜Daten einfügen🎜🎜🎜Wir können auch die Go-Sprache verwenden, um Daten in die MySQL-Datenbank einzufügen. Der einfachste Weg ist die Verwendung der Funktion db.Exec()
. Wir können die Einfügeanweisung an die Funktion db.Exec()
übergeben und sie wird in MySQL als SQL-Anweisung ausgeführt. 🎜rrreee🎜Wir können result.RowsAffected()
verwenden, um die Anzahl der betroffenen Zeilen im Ergebnissatz abzurufen und diesen Wert verwenden, um die Anzahl der aktualisierten Daten in der Konsole auszugeben. 🎜Das obige ist der detaillierte Inhalt vonWie Golang MySQL-Daten verwaltet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!