SQL бази данни съхраняват колекции от данни в редове и колони. Можете да извличате и актуализирате данните в система за управление на релационна база данни (RDBMS), използвайки езика SQL. От многото налични SQL бази данни, най-популярните са MySQL, PostgreSQL, Microsoft SQL Server и SQLite.
Функционалността за взаимодействие с бази данни в Go е в пакета база данни/sql, част от стандартната библиотека.
Пакетът база данни/sql взаимодейства със SQL бази данни с помощта на драйвери. Можете да импортирате подходящ пакет драйвери за вашата RDBMS и да го използвате за взаимодействие с базата данни.
Първи стъпки с SQL бази данни в Go
Пакетът база данни/sql е общ интерфейс към релационни бази данни. За да работите с конкретен сървър на база данни, ще трябва да използвате един от многото налични драйвери.
За щастие, не е нужно да се притеснявате за конкретни реализации извън драйвера. Пакетът база данни/sql обработва операции с база данни независимо от сървъра, към който се свързвате.
Някои от най-популярните драйвери за бази данни Go са:
- Go-SQL драйвер (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- MSSQL DB (Microsoft SQL Server)
Можете да използвате Списък с драйвери на LibHunt за намиране на еквиваленти за други типове бази данни. Списъкът също така показва относителната популярност на всяка система за бази данни:
Инсталиране и импортиране на драйвери за Go Database
След като създадете работно пространство на Go и инициализирате файл с модули на Go, инсталирайте драйвера, който съответства на вашата система от база данни. Например, изпълнете една от следните команди в директорията на работното си пространство, за да инсталирате драйвера MySQL или SQLite:
отидете get -u github.com/go-sql-driver/mysql
отидете на github.com/mattn/go-sqlite3
След като инсталирате драйвера си, импортирайте го за странични ефекти, като поставите префикс за долна черта преди пакета. Например, за да импортирате MySQL драйвера заедно с пакета база данни/sql:
внос (
"база данни/sql"
_ "github.com/отивам-sql-драйвер/mysql"
)
Като импортирате пакета с драйвери за странични ефекти, можете да го използвате, за да се свържете с базата данни и да изпълнявате операции върху нея.
Свързване към SQL база данни с Go
След като импортирате драйверите на базата данни, можете да създадете връзка с базата данни с помощта на Отвори метод на база данни/sql пакет. Този метод взема името и пътя на драйвера към базата данни (за SQLite) или низ за връзка (за MySQL). Например, използвайте едно от следните:
db, err := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, err := sql. Open("mysql", "потребител: парола@/dbname") // MySQL
След като се опитате да отворите връзката, не забравяйте да проверите за грешка:
ако греш!= нула {
дневник. Fatalln (грешка)
}
В зависимост от вашата система от база данни, Отвори методът може да върне грешка, ако базата данни не съществува. След като се свържете с база данни, можете да изпълнявате заявки и да подготвяте изрази, като използвате екземпляра на базата данни, който Отвори се завръща.
Изпълнение на SQL команди
Можеш изпълнява SQL команди използвайки приготви се метод на вашата база данни. В приготви се методът приема SQL команда и връща подготвен израз за изпълнение заедно с обект за грешка. Например, ако искате да създадете нова таблица:
команда, err := db. Подгответе ("СЪЗДАЙТЕ ТАБЛИЦА АКО НЕ СЪЩЕСТВУВА вход (потребителско име ТЕКСТ, парола ТЕКСТ)")
Изявлението по-горе създава таблица с име Влизам, ако вече не съществува. Новата таблица има полета с име потребителско име и парола, всеки от вида ТЕКСТ.
Ако вмъквате стойности от вашата програма в заявките си, можете да използвате нотация на въпросителен знак (?), за да обозначите заместители и след това да предадете параметрите при изпълнение на оператора.
команда, err := db. Prepare("INSERT INTO вход (потребителско име, парола) стойности(?,?)")
След като създадете подготвен оператор, можете да го изпълните, като използвате неговия Изп метод. Този метод ви позволява да предавате стойности на параметрите от вашата програма:
exec, err := команда. Exec (стойност 1, стойност 2)
ако греш!= нула {
връщане
}
Първата стойност, която Exec() returns е резултат от SQL заявката във вашата база данни. Използвайки този резултат от заявката, можете да проверите за броя на засегнатите редове или последния вмъкнат идентификатор:
засегнати, err := exec. Засегнати редове()
ако греш!= нула {
връщане
}fmt. Println (засегнато)
id, err := exec. LastInsertId()
ако греш!= нула {
връщане
}
fmt. Println (идентификатор)
Извличане на резултати от заявка
Пакетът база данни/sql ви позволява да заявявате резултатите от базата данни с помощта на Запитване метод на екземпляр на база данни:
редове, err := db. Заявка("ИЗБЕРЕТЕ * ОТ потребител")
ако греш!= нула {
връщане
}
В Запитване метод връща a Редове структура, която можете да използвате за работа с вашия набор от резултати. Например, можете да използвате Следващия метод на вашия екземпляр на редове, за да го преглеждате и работите с отделни редове:
вар потребителско име, парола низ
за редове. Следващия() {
err := редове. Сканиране (&потребителско име, &парола)ако греш!= нула {
дневник. Fatalln (грешка)
}
fmt. Println (потребителско име, парола)
}
В примера по-горе, две низови променливи -потребителско име и парола—представлява стойността на всяка колона. В Сканиране метод декодира текущия ред в тези съответни променливи.
SQL бази данни винаги са полезни
Използването на бази данни в Go е лесно с пакета база данни/sql. Можете да го използвате за заявки и изпълнение на SQL команди в Go с лекота.
SQL бази данни са в основата на много приложения, особено тези, които се занимават с големи или сложни набори от данни. Можете да използвате бази данни като базата данни SQLite в паметта за вашите прости проекти като уеб изстъргване и изграждане на ботове.
Правилното познаване на SQL и системите за управление на бази данни е от съществено значение, за да ги използвате ефективно във вашите програми. Въпреки това, ако решите да не изучавате SQL, можете да научите как да използвате ORM за взаимодействие със SQL бази данни в Go.