go語言是一門非常強大的語言,它在多個領域都有廣泛的應用。其中,在與數據庫的連接和操作方面,它也有著非常豐富的功能和優秀的表現。
在與mysql數據庫進行交互時,go語言提供了多種選擇。比如我們可以使用原生的mysql driver,還可以使用許多開源的第三方庫。而在這篇文章中,我們將介紹如何使用go連接mysql并創建多對多關系。
func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { log.Fatal(err) } defer db.Close() _, err = db.Exec("CREATE TABLE IF NOT EXISTS user (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL)") if err != nil { log.Fatal(err) } _, err = db.Exec("CREATE TABLE IF NOT EXISTS course (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL)") if err != nil { log.Fatal(err) } _, err = db.Exec("CREATE TABLE IF NOT EXISTS user_course (user_id INT UNSIGNED NOT NULL, course_id INT UNSIGNED NOT NULL, PRIMARY KEY(user_id, course_id))") if err != nil { log.Fatal(err) } insertUser(db, "張三") insertUser(db, "李四") insertCourse(db, "語文") insertCourse(db, "數學") insertUserCourse(db, 1, 1) insertUserCourse(db, 1, 2) insertUserCourse(db, 2, 1) insertUserCourse(db, 2, 2) rows, err := db.Query("SELECT u.name, c.name FROM user u, course c, user_course uc WHERE u.id = uc.user_id AND c.id = uc.course_id") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var userName string var courseName string err := rows.Scan(&userName, &courseName) if err != nil { log.Fatal(err) } fmt.Printf("%s選了%s\n", userName, courseName) } }
以上就是我們在go語言中連接mysql并創建多對多關系的代碼。其中,我們創建了user、course、user_course三張表,分別用于存儲用戶、課程以及用戶選課關系。
再次運行程序,我們可以看到控制臺輸出:
張三選了語文 張三選了數學 李四選了語文 李四選了數學
這表明我們成功地建立了多對多關系,并從數據庫中查詢出了正確的結果。
總之,通過上述的代碼,我們可以使用go語言連接mysql,并創建多對多關系。這為我們在實際的開發過程中帶來了很大的便利。如果您對go語言和mysql的連接還不太了解,可以試著動手實踐一下,相信您一定會有收獲。
上一篇mysql @