Bạn có thể truy xuất và cập nhật dữ liệu trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) bằng ngôn ngữ SQL. Cơ sở dữ liệu SQL lưu trữ bộ sưu tập dữ liệu theo hàng và cột. Cơ sở dữ liệu SQL được sử dụng rộng rãi nhất là MySQL, PostgreSQL, Microsoft SQL Server và SQLite
Gói cơ sở dữ liệu/sql, một thành phần của thư viện chuẩn, chứa chức năng tương tác với cơ sở dữ liệu trong Go
Bạn có thể nhập gói trình điều khiển phù hợp cho RDBMS của mình và sử dụng gói đó để tương tác với cơ sở dữ liệu bằng gói cơ sở dữ liệu/sql tương tác với cơ sở dữ liệu SQL
Giới thiệu về cơ sở dữ liệu SQL trong Go
Bạn phải sử dụng một trong nhiều trình điều khiển có sẵn để tương tác với một máy chủ cơ sở dữ liệu cụ thể vì gói cơ sở dữ liệu/sql chỉ cung cấp giao diện chung cho cơ sở dữ liệu quan hệ
Rất may, gói cơ sở dữ liệu/sql đảm nhiệm các hoạt động của cơ sở dữ liệu độc lập với máy chủ mà bạn đang kết nối, vì vậy bạn không phải lo lắng về việc triển khai cụ thể ngoài trình điều khiển
Trình điều khiển cơ sở dữ liệu Go phổ biến nhất bao gồm
- Trình điều khiển Go-SQL (MySQL)
- PQ (PostgreSQL)
- Truy cập SQLite3 (SQLite)
- Cơ sở dữ liệu MSSQL (Máy chủ Microsoft SQL)
Danh sách này cũng hiển thị mức độ phổ biến tương đối của từng hệ thống cơ sở dữ liệu, vì vậy bạn có thể sử dụng nó để tìm tương đương cho các loại cơ sở dữ liệu khác
Truy cập Cài đặt và nhập trình điều khiển cơ sở dữ liệu
Cài đặt trình điều khiển tương ứng với hệ thống cơ sở dữ liệu của bạn sau khi tạo không gian làm việc Go và khởi tạo tệp mô-đun Go. Chẳng hạn, hãy chạy một trong các lệnh sau trong thư mục không gian làm việc của bạn để cài đặt trình điều khiển MySQL hoặc SQLite
Sau khi cài đặt trình điều khiển của bạn, hãy nhập nó cùng với gói cơ sở dữ liệu/sql bằng cách thêm dấu gạch dưới trước tên gói, chẳng hạn, để nhập trình điều khiển MySQL
________Đầu tiênBạn có thể kết nối với cơ sở dữ liệu và thực hiện các thao tác trên đó bằng cách nhập gói trình điều khiển tác dụng phụ
Sử dụng Chuyển đến Kết nối với Cơ sở dữ liệu SQL
Phương thức Open của gói cơ sở dữ liệu/sql, chấp nhận tên trình điều khiển và đường dẫn đến cơ sở dữ liệu (đối với SQLite) hoặc chuỗi kết nối (đối với MySQL), cho phép bạn thiết lập kết nối cơ sở dữ liệu sau khi nhập trình điều khiển cơ sở dữ liệu. Cân nhắc sử dụng một trong các ví dụ sau
db, err := sql.Open("sqlite3", "models/testdb.db") // SQLite\n \ndb, err := sql.Open("mysql", "user:password@/dbname") // MySQLSau khi cố gắng thiết lập kết nối, hãy nhớ tìm bất kỳ lỗi nào
if err != nil {\n log.Fatalln(err)\n}\nKhi bạn đã kết nối với cơ sở dữ liệu, bạn có thể thực hiện các truy vấn và chuẩn bị các câu lệnh bằng cách sử dụng phiên bản cơ sở dữ liệu mà Open trả về. Tùy thuộc vào hệ thống cơ sở dữ liệu của bạn, phương thức Mở có thể trả về lỗi nếu cơ sở dữ liệu không tồn tại
Thực thi các lệnh SQL
Phương thức Chuẩn bị của phiên bản cơ sở dữ liệu của bạn chấp nhận một lệnh SQL và trả về một câu lệnh đã chuẩn bị để thực thi cùng với một đối tượng lỗi, cho phép bạn thực thi các lệnh SQL. Như một minh họa, nếu bạn muốn tạo một bảng mới
Nếu một bảng có tên đăng nhập chưa tồn tại, thì câu lệnh đã nói ở trên sẽ tạo bảng đó và điền vào đó các trường loại TEXT được gọi là tên người dùng và mật khẩu
Sử dụng ký hiệu dấu chấm hỏi (?) để chỉ ra các chỗ dành sẵn khi chèn các giá trị từ chương trình của bạn vào các truy vấn;
_15Khi bạn đã tạo một câu lệnh đã chuẩn bị, bạn có thể chạy nó bằng cách gọi phương thức Exec của nó, phương thức này cho phép bạn chuyển các giá trị tham số của chương trình
_16Bạn có thể kiểm tra số lượng hàng bị ảnh hưởng hoặc ID của lần chèn gần đây nhất bằng cách sử dụng kết quả truy vấn SQL mà Exec() trả về làm giá trị đầu tiên của nó
_17Tìm nạp kết quả truy vấn
Sử dụng phương thức Truy vấn của phiên bản cơ sở dữ liệu, gói cơ sở dữ liệu/sql cho phép bạn truy vấn kết quả cơ sở dữ liệu
rows, err := db.Query("SELECT * FROM User")\n \nif err != nil {\n return\n}\nCấu trúc Hàng do phương thức Truy vấn trả về có thể được sử dụng để tương tác với tập kết quả của bạn;
_19Phương thức Quét giải mã hàng hiện tại thành các biến chuỗi tên người dùng và mật khẩu tương ứng, trong ví dụ trên đại diện cho từng giá trị cột
Cơ sở dữ liệu SQL luôn hữu ích
Gói cơ sở dữ liệu/sql giúp việc sử dụng cơ sở dữ liệu trong Go trở nên đơn giản, cho phép bạn dễ dàng truy vấn và chạy các lệnh SQL
Bạn có thể sử dụng cơ sở dữ liệu như cơ sở dữ liệu SQLite trong bộ nhớ cho các dự án đơn giản của mình như quét web và xây dựng bot. Cơ sở dữ liệu SQL là cốt lõi của nhiều ứng dụng, đặc biệt là những ứng dụng xử lý các bộ dữ liệu lớn hoặc phức tạp
Nếu bạn chọn không học SQL, thay vào đó, bạn có thể học cách sử dụng ORM để tương tác với cơ sở dữ liệu SQL trong Go. Tuy nhiên, kiến thức thích hợp về SQL và các hệ thống quản lý cơ sở dữ liệu là điều cần thiết để sử dụng chúng trong các chương trình của bạn một cách hiệu quả
Cơ sở dữ liệu SQL lưu trữ bộ sưu tập dữ liệu theo hàng và cột. Bạn có thể truy xuất và cập nhật dữ liệu trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) bằng ngôn ngữ SQL. Trong số nhiều cơ sở dữ liệu SQL có sẵn, phổ biến nhất là MySQL, PostgreSQL, Microsoft SQL Server và SQLite
Chức năng tương tác với cơ sở dữ liệu trong Go nằm trong gói cơ sở dữ liệu/sql, một phần của thư viện chuẩn
Gói cơ sở dữ liệu/sql tương tác với cơ sở dữ liệu SQL bằng trình điều khiển. Bạn có thể nhập gói trình điều khiển thích hợp cho RDBMS của mình và sử dụng gói đó để tương tác với cơ sở dữ liệu
Bắt đầu với cơ sở dữ liệu SQL trong Go
Gói cơ sở dữ liệu/sql là giao diện chung cho cơ sở dữ liệu quan hệ. Để làm việc với một máy chủ cơ sở dữ liệu cụ thể, bạn sẽ cần sử dụng một trong nhiều trình điều khiển có sẵn
Rất may, bạn không phải lo lắng về việc triển khai cụ thể ngoài trình điều khiển. Gói cơ sở dữ liệu/sql xử lý các hoạt động cơ sở dữ liệu độc lập với máy chủ mà bạn đang kết nối tới
Một số trình điều khiển cơ sở dữ liệu Go phổ biến nhất là
- Trình điều khiển Go-SQL (MySQL)
- PQ (PostgreSQL)
- Truy cập SQLite3 (SQLite)
- Cơ sở dữ liệu MSSQL (Máy chủ Microsoft SQL)
Bạn có thể sử dụng danh sách trình điều khiển LibHunt để tìm tương đương cho các loại cơ sở dữ liệu khác. Danh sách cũng cho thấy mức độ phổ biến tương đối của từng hệ thống cơ sở dữ liệu
Cài đặt và nhập trình điều khiển cơ sở dữ liệu Go
Khi bạn đã tạo không gian làm việc Go và khởi tạo tệp mô-đun Go, hãy cài đặt trình điều khiển phù hợp với hệ thống cơ sở dữ liệu của bạn. Ví dụ: chạy một trong các lệnh sau trong thư mục không gian làm việc của bạn để cài đặt trình điều khiển MySQL hoặc SQLite
go get -u github.com/go-sql-driver/mysql\ngo get github.com/mattn/go-sqlite3\nSau khi bạn đã cài đặt trình điều khiển của mình, hãy nhập trình điều khiển đó để biết các tác dụng phụ bằng cách thêm tiền tố vào dấu gạch dưới trước gói. Ví dụ: để nhập trình điều khiển MySQL cùng với gói cơ sở dữ liệu/sql
import (\n "database/sql"\n _ "github.com/go-sql-driver/mysql"\n)\nBằng cách nhập gói trình điều khiển cho các tác dụng phụ, bạn có thể sử dụng nó để kết nối và thực hiện các thao tác trên cơ sở dữ liệu
Kết nối với cơ sở dữ liệu SQL với Go
Sau khi nhập trình điều khiển cơ sở dữ liệu, bạn có thể tạo kết nối cơ sở dữ liệu bằng phương thức Mở của gói cơ sở dữ liệu/sql. Phương thức này lấy tên của trình điều khiển và đường dẫn đến cơ sở dữ liệu (đối với SQLite) hoặc chuỗi kết nối (đối với MySQL). Ví dụ: sử dụng một trong hai cách sau
db, err := sql.Open("sqlite3", "models/testdb.db") // SQLite\n \ndb, err := sql.Open("mysql", "user:password@/dbname") // MySQLKhi bạn đã cố gắng mở kết nối, hãy nhớ kiểm tra lỗi
if err != nil {\n log.Fatalln(err)\n}\nTùy thuộc vào hệ thống cơ sở dữ liệu của bạn, phương thức Mở có thể trả về lỗi nếu cơ sở dữ liệu không tồn tại. Khi bạn đã kết nối với cơ sở dữ liệu, bạn có thể thực hiện các truy vấn và chuẩn bị các câu lệnh bằng cách sử dụng phiên bản cơ sở dữ liệu mà Open trả về
Thực thi các lệnh SQL
Bạn có thể thực thi các lệnh SQL bằng phương thức Chuẩn bị của phiên bản cơ sở dữ liệu của mình. Phương thức Chuẩn bị nhận một lệnh SQL và trả về một câu lệnh đã chuẩn bị để thực thi cùng với một đối tượng lỗi. Ví dụ, nếu bạn muốn tạo một bảng mới
command, err := db.Prepare("CREATE TABLE IF NOT EXISTS login(username TEXT, password TEXT)")\nCâu lệnh trên tạo một bảng có tên đăng nhập, nếu nó chưa tồn tại. Bảng mới có các trường tên người dùng và mật khẩu, mỗi loại TEXT
Nếu bạn đang chèn các giá trị từ chương trình vào các truy vấn của mình, bạn có thể sử dụng ký hiệu dấu chấm hỏi (?) để biểu thị các trình giữ chỗ rồi chuyển các tham số khi thực thi câu lệnh
command, err := db.Prepare("INSERT INTO login(username, password) values(?,?)")\nKhi bạn đã tạo một câu lệnh đã chuẩn bị, bạn có thể thực thi nó bằng phương thức Exec của nó. Phương pháp này cho phép bạn chuyển các giá trị tham số từ chương trình của bạn
if err != nil {\n log.Fatalln(err)\n}\n0Giá trị đầu tiên mà Exec() trả về là kết quả của truy vấn SQL trên cơ sở dữ liệu của bạn. Sử dụng kết quả truy vấn này, bạn có thể kiểm tra số hàng bị ảnh hưởng hoặc ID được chèn lần cuối
if err != nil {\n log.Fatalln(err)\n}\n1Tìm nạp kết quả truy vấn
Gói cơ sở dữ liệu/sql cho phép bạn truy vấn kết quả cơ sở dữ liệu bằng phương thức Truy vấn của phiên bản cơ sở dữ liệu
rows, err := db.Query("SELECT * FROM User")\n \nif err != nil {\n return\n}\nPhương thức Truy vấn trả về cấu trúc Hàng mà bạn có thể sử dụng để làm việc với tập kết quả của mình. Ví dụ: bạn có thể sử dụng phương thức Tiếp theo của phiên bản hàng của mình để lặp lại nó và làm việc với các hàng riêng lẻ
if err != nil {\n log.Fatalln(err)\n}\n3Trong ví dụ trên, hai biến chuỗi—tên người dùng và mật khẩu—đại diện cho từng giá trị cột. Phương thức Quét giải mã hàng hiện tại thành các biến tương ứng đó
Cơ sở dữ liệu SQL luôn có ích
Sử dụng cơ sở dữ liệu trong Go rất đơn giản với gói cơ sở dữ liệu/sql. Bạn có thể sử dụng nó để truy vấn và thực thi các lệnh SQL trong Go một cách dễ dàng
Cơ sở dữ liệu SQL là cốt lõi của nhiều ứng dụng, đặc biệt là những ứng dụng xử lý các bộ dữ liệu lớn hoặc phức tạp. Bạn có thể sử dụng cơ sở dữ liệu như cơ sở dữ liệu SQLite trong bộ nhớ cho các dự án đơn giản của mình như quét web và xây dựng bot
Kiến thức đúng đắn về SQL và các hệ thống quản lý cơ sở dữ liệu là điều cần thiết để sử dụng chúng trong các chương trình của bạn một cách hiệu quả. Tuy nhiên, nếu bạn chọn không học SQL, bạn có thể học cách sử dụng ORM để tương tác với cơ sở dữ liệu SQL trong Go