GO语言进阶 - 数据库 | 青训营

59 阅读2分钟

数据库是什么?

数据库(Database)是用于存储、管理和组织数据的系统。它可以被视为一个电子化的数据仓库,用于持久地存储大量结构化或半结构化数据,并提供一种方便的方式来查询、更新和操作数据。数据库系统通常支持数据的持久性、安全性、一致性和可用性,以确保数据的有效管理和使用。

数据库通常分为两类主要类型:关系型数据库和非关系型数据库。

- 关系型数据库(RDBMS):采用表格的形式来组织数据,每个表格包含多个行和列,以及定义了数据之间的关系。常见的关系型数据库包括MySQL、PostgreSQL、Oracle等。
- 非关系型数据库(NoSQL):以不同的数据模型来存储数据,如文档、键值对、列族等。常见的非关系型数据库包括MongoDB、Redis、Cassandra等。

Go语言数据库使用简介

Go语言作为一门现代的编程语言,提供了丰富的库和框架来与各种类型的数据库进行交互。下面简要介绍一些常见的数据库库及其用法。

1. SQL数据库(关系型数据库)

1.1 MySQL

MySQL是一种流行的开源关系型数据库,Go语言通过第三方库 ![]()github.com/go-sql-driver/mysql 提供了与MySQL数据库的交互支持。

使用示例:

package main  
  
import (  
    "database/sql"  
    "fmt"  
    _ "![]()github.com/go-sql-driver/mysql"  
)  
  
func main() {  
    db, err := sql.Open("mysql""user:password@tcp(localhost:3306)/dbname")  
    if err != nil {  
        panic(err)  
    }  
    defer db.Close()  
  
    rows, err := db.Query("SELECT name, age FROM users")  
    if err != nil {  
        panic(err)  
    }  
    defer rows.Close()  
  
    for rows.Next() {  
        var name string  
        var age int  
        err := rows.Scan(&name, &age)  
        if err != nil {  
            panic(err)  
        }  
        fmt.Printf("Name: %s, Age: %d\n", name, age)  
    }  
}  

1.2 PostgreSQL

PostgreSQL是另一种流行的开源关系型数据库,Go语言通过第三方库 ![]()github.com/lib/pq 提供了与PostgreSQL数据库的交互支持。

使用示例:

package main  
  
import (  
    "database/sql"  
    "fmt"  
    _ "![]()github.com/lib/pq"  
)  
  
func main() {  
    db, err := sql.Open("postgres""user=user dbname=dbname sslmode=disable")  
    if err != nil {  
        panic(err)  
    }  
    defer db.Close()  
  
    rows, err := db.Query("SELECT name, age FROM users")  
    if err != nil {  
        panic(err)  
    }  
    defer rows.Close()  
  
    for rows.Next() {  
        var name string  
        var age int  
        err := rows.Scan(&name, &age)  
        if err != nil {  
            panic(err)  
        }  
        fmt.Printf("Name: %s, Age: %d\n", name, age)  
    }  
}  

2. NoSQL数据库(非关系型数据库)

2.1 MongoDB

MongoDB是一种流行的文档型NoSQL数据库,Go语言通过第三方库 ![]()go.mongodb.org/mongo-driver 提供了与MongoDB数据库的交互支持。

使用示例:

package main  
  
import (  
    "context"  
    "fmt"  
    "![]()go.mongodb.org/mongo-driver/mongo"  
    "![]()go.mongodb.org/mongo-driver/mongo/options"  
    "![]()go.mongodb.org/mongo-driver/mongo/readpref"  
    "time"  
)  
  
func main() {  
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)  
    defer cancel()  
  
    client, err := mongo.Connect(ctx, options.Client().Apply