一、数据库基础概念
数据库是按照数据结构来组织、存储和管理数据的仓库。常见的数据库类型有关系型数据库(如 MySQL、Oracle 等)和非关系型数据库(如 MongoDB、Redis 等)。
关系型数据库基于关系模型,使用表来存储数据,表由行(记录)和列(字段)组成。表与表之间可以通过外键建立关系。例如,有一个students表:
| id | name | age |
|---|---|---|
| 1 | Alice | 20 |
| 2 | Bob | 22 |
还有一个scores表:
| id | student_id | score |
|---|---|---|
| 1 | 1 | 90 |
| 2 | 2 | 85 |
这里scores表中的student_id是外键,关联到students表中的id。
二、MySQL 实践
-
安装与启动
- 在 Linux 系统上,可以使用包管理器来安装 MySQL,例如在 Ubuntu 上:
plaintext
sudo apt - get update
sudo apt - get install mysql - server
- 安装完成后,可以使用
systemctl命令启动 MySQL 服务:
plaintext
复制
sudo systemctl start mysql
-
创建数据库和表
- 登录到 MySQL 控制台:
plaintext
mysql - u root - p
- 创建一个新的数据库:
plaintext
CREATE DATABASE mydb;
USE mydb;
- 在
mydb数据库中创建students表:
plaintext
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT
);
-
插入和查询数据
- 插入数据:
plaintext
INSERT INTO students (name, age) VALUES ('Charlie', 21);
- 查询数据:
plaintext
SELECT * FROM students;
-
连接数据库的 Go 代码示例
-
在 Go 中,可以使用
database/sql包和 MySQL 驱动(如github.com/go - sql - driver/mysql)来连接和操作 MySQL 数据库。 -
示例代码:
-
go
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go - sql - driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/mydb")
if err!= nil {
log.Fatal(err)
}
defer db.Close()
// 查询数据
rows, err := db.Query("SELECT * FROM students")
if err!= nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err = rows.Scan(&id, &name, &age)
if err!= nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
}
- 上述代码首先打开与 MySQL 数据库的连接,然后执行查询操作并遍历结果集。