发布时间:2024-11-24 21:21:10
1. CHAR类型
CHAR类型适用于存储固定长度的字符串,它的长度在创建表时定义,并且不受实际内容的影响。例如,如果将一个长度为10的CHAR字段定义为存储"Hello World",那么它将占用整个字段,不论实际内容的长度是多少。2. VARCHAR类型
VARCHAR类型适用于存储可变长度的字符串,它的长度也在创建表时定义,但受实际内容的影响。例如,如果将一个长度为10的VARCHAR字段定义为存储"Hello World",那么它将只占用实际内容的长度,即11个字节(包括一个字节的长度前缀)。3. TEXT类型
TEXT类型适用于存储较长的字符串,它可以存储最大64KB的数据。它的长度不需要在创建表时指定。1. 连接MySQL数据库
首先,我们需要导入"go-sql-driver/mysql"库,并使用`sql.Open`函数创建一个数据库连接。然后,我们可以使用`db.Ping()`方法来测试连接是否成功。 ``` import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname") if err != nil { panic(err.Error()) } defer db.Close() err = db.Ping() if err != nil { panic(err.Error()) } // 连接成功 } ```2. 插入文本数据
使用`db.Exec`方法可以执行插入语句。在插入文本数据时,我们可以将文本字符串直接传入SQL语句中。 ``` stmt, err := db.Prepare("INSERT INTO mytable (text_column) VALUES (?)") if err != nil { panic(err.Error()) } defer stmt.Close() res, err := stmt.Exec("Hello World") if err != nil { panic(err.Error()) } id, err := res.LastInsertId() if err != nil { panic(err.Error()) } ```3. 查询文本数据
使用`db.Query`方法可以执行查询语句,并获取查询结果。 ``` rows, err := db.Query("SELECT text_column FROM mytable WHERE id = ?", id) if err != nil { panic(err.Error()) } defer rows.Close() for rows.Next() { var text string err = rows.Scan(&text) if err != nil { panic(err.Error()) } // 处理查询结果 fmt.Println(text) } ```4. 更新文本数据
使用`db.Exec`方法可以执行更新语句。 ``` stmt, err := db.Prepare("UPDATE mytable SET text_column = ? WHERE id = ?") if err != nil { panic(err.Error()) } defer stmt.Close() res, err := stmt.Exec("Hello Golang", id) if err != nil { panic(err.Error()) } rowsAffected, err := res.RowsAffected() if err != nil { panic(err.Error()) } ```5. 删除文本数据
使用`db.Exec`方法可以执行删除语句。 ``` stmt, err := db.Prepare("DELETE FROM mytable WHERE id = ?") if err != nil { panic(err.Error()) } defer stmt.Close() res, err := stmt.Exec(id) if err != nil { panic(err.Error()) } rowsAffected, err := res.RowsAffected() if err != nil { panic(err.Error()) } ```