
Database/SQL
Thành thạo truy cập cơ sở dữ liệu SQL trong Go với package database/sql: kết nối, truy vấn, transaction, prepared statements và quản lý connection pool.
1Sự khác biệt chính giữa DB.Query và DB.Exec là gì?
Sự khác biệt chính giữa DB.Query và DB.Exec là gì?
Câu trả lời
DB.Query được dùng để thực thi các truy vấn SELECT trả về các hàng dữ liệu, trong khi DB.Exec dùng để thực thi các lệnh SQL không trả về kết quả (INSERT, UPDATE, DELETE). Query trả về một đối tượng Rows phải được duyệt qua và đóng bằng rows.Close(), còn Exec trả về một Result chứa số hàng bị ảnh hưởng và ID được chèn cuối cùng.
2Tại sao việc đóng đối tượng Rows sau một truy vấn lại quan trọng?
Tại sao việc đóng đối tượng Rows sau một truy vấn lại quan trọng?
Câu trả lời
Đóng Rows bằng rows.Close() giải phóng các tài nguyên kết nối database, cho phép kết nối trở về pool. Nếu không đóng, các kết nối vẫn bận và pool có thể cạn kiệt, gây tắc nghẽn. Nên dùng defer rows.Close() ngay sau khi kiểm tra lỗi của Query để đảm bảo việc đóng ngay cả khi có lỗi xảy ra sau đó.
3Nên dùng phương thức nào để lấy một hàng kết quả duy nhất?
Nên dùng phương thức nào để lấy một hàng kết quả duy nhất?
Câu trả lời
DB.QueryRow được thiết kế riêng để lấy một hàng duy nhất và trả về một đối tượng Row (số ít). Khác với Query trả về Rows và yêu cầu duyệt bằng rows.Next(), QueryRow đơn giản hóa mã bằng cách cho phép scan trực tiếp. Việc xử lý lỗi diễn ra trong quá trình Scan, trong đó sql.ErrNoRows cho biết không tìm thấy hàng nào.
Làm thế nào để mở kết nối đến cơ sở dữ liệu với database/sql?
Phương thức rows.Scan() trả về gì?
+19 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Go khác
Kiến thức cơ bản về Go
Cấu trúc dữ liệu Go
Interface trong Go
Xử lý lỗi
Cơ bản về Goroutine
Channels
Go Modules
Máy chủ HTTP
HTTP Client
Mã hóa JSON
Gói context
Testing
Các mẫu Concurrency
Primitive đồng bộ hóa
Framework web Go
Thiết kế API REST
gRPC
Reflection
Quản lý bộ nhớ
Tối ưu hóa hiệu năng
Generics
Go Design Patterns
Microservices
Bảo mật và Xác thực
Docker & Containerization
Kubernetes Basics
Go Nâng cao
Phát triển CLI
Nắm vững Go cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí