Go

Database/SQL

database/sql 패키지로 Go에서 SQL 데이터베이스 접근을 마스터하세요: 연결, 쿼리, 트랜잭션, prepared statements, 커넥션 풀 관리.

22 면접 질문·
Mid-Level
1

DB.Query와 DB.Exec의 주요 차이점은 무엇입니까?

답변

DB.Query는 데이터 행을 반환하는 SELECT 쿼리를 실행하는 데 사용되며, DB.Exec는 결과를 반환하지 않는 SQL 명령(INSERT, UPDATE, DELETE)을 실행하는 데 사용됩니다. Query는 반복 처리하고 rows.Close()로 닫아야 하는 Rows 객체를 반환하는 반면, Exec는 영향받은 행 수와 마지막으로 삽입된 ID를 포함하는 Result를 반환합니다.

2

쿼리 후에 Rows 객체를 닫는 것이 중요한 이유는 무엇입니까?

답변

rows.Close()로 Rows를 닫으면 database 연결 리소스가 해제되어 연결이 pool로 돌아갈 수 있습니다. 닫지 않으면 연결이 사용 중 상태로 남아 pool이 고갈되어 블로킹을 일으킬 수 있습니다. 이후에 오류가 발생하더라도 닫힘을 보장하기 위해 Query 오류를 확인한 직후에 defer rows.Close()를 사용하는 것이 권장됩니다.

3

결과에서 단일 행을 가져오려면 어떤 메서드를 사용해야 합니까?

답변

DB.QueryRow는 단일 행을 가져오도록 특별히 설계되었으며 Row 객체(단수)를 반환합니다. Rows를 반환하여 rows.Next()로 반복해야 하는 Query와 달리, QueryRow는 직접 scan을 허용하여 코드를 단순화합니다. 오류 처리는 Scan 중에 이루어지며, sql.ErrNoRows는 행을 찾지 못했음을 나타냅니다.

4

database/sql로 데이터베이스 연결을 여는 방법은 무엇입니까?

5

rows.Scan() 메서드는 무엇을 반환합니까?

+19 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기