GitHub Copilot를 사용하여 SQL 작업

완료됨

GitHub Copilot를 사용하여 모든 유형의 코드와 상호 작용할 수 있습니다. 여기에는 인기 있는 프로그래밍 언어와 상호 작용하고 SQL 코드 작성, 디버깅 및 최적화 옵션을 제공하는 것이 포함됩니다.

GitHub Copilot는 SQL 코드와 관련된 다음 작업을 수행할 수 있습니다.

  • 쿼리 설명: Copilot를 사용하여 복잡한 SQL 쿼리를 설명하여 논리와 구조를 더 잘 이해합니다.
  • 쿼리 최적화: 불필요한 JOIN 제거, SELECT DISTINCT 최적화 또는 하위 쿼리 리팩터링과 같은 느리거나 비효율적인 쿼리를 최적화하기 위한 제안을 Copilot에 요청합니다.
  • 쿼리 리팩터링: 더 나은 가독성 또는 유지 관리를 위해 쿼리를 다시 작성하도록 Copilot를 요청합니다(예: CROSS JON을 대체하거나 중첩된 쿼리 간소화).
  • 쿼리 생성: 부조종사에서 SELECT, INSERT, UPDATE 또는 DELETE 문과 같은 데이터 요구 사항에 따라 새 SQL 쿼리를 생성하게 합니다.
  • 데이터 유효성 검사: Copilot를 사용하여 데이터 무결성의 유효성을 검사하거나 데이터베이스의 특정 조건을 확인하는 SQL 쿼리를 작성할 수 있습니다.
  • 스키마 탐색: 데이터베이스 스키마(예: 테이블, 열 또는 관계 나열)를 탐색하거나 문서화하는 쿼리를 작성할 수 있도록 Copilot에 요청합니다.
  • 테스트 생성: 쿼리 결과 또는 데이터베이스 상태를 확인하기 위해 SQL 기반 테스트 또는 어설션을 생성하도록 Copilot를 요청합니다.
  • 오류 디버깅: Copilot에게 SQL 오류를 디버그하거나 일반적인 문제(예: 구문 오류, 누락된 인덱스)에 대한 수정 사항을 제안하도록 요청합니다.
  • 프롬프트 만들기: Copilot가 처음부터 고성능 쿼리를 만들기 위한 프롬프트 또는 템플릿을 생성하도록 합니다.

GitHub Copilot는 프롬프트가 더 구체적일 때 더 나은 결과를 제공합니다. 일반적인 프롬프트를 제공하는 경우 일반적인 답변을 받을 수 있습니다. 프롬프트에 더 자세한 정보를 제공하고 더 자세한 질문을 하는 경우 자세한 답변을 얻을 가능성이 높습니다.

예를 들어 GitHub Copilot를 사용하여 SQL 코드를 제공하여 다음 프롬프트를 실행하여 이름, 성, 생년월일, 즐겨 찾는 영화 및 애완 동물 이름에 대한 열이 포함된 테이블을 만들 수 있습니다.

이름, 성, 생년월일, 좋아하는 영화 및 애완 동물 이름에 대한 열이 포함된 테이블을 만드는 SQL 코드를 제공하세요.

SQL에서 테이블 만들기와 관련된 GitHub Copilot 프롬프트 스크린샷

SQL을 포함하는 애플리케이션 이해

예를 들어 코드스페이스를 연 경우 SQL 코드가 포함된 애플리케이션이 제공된 경우 다음 프롬프트를 사용하여 GitHub Copilot를 쿼리하여 다음과 같은 방식으로 프로젝트에 대해 자세히 이해할 수 있습니다.

이 프로젝트의 구조를 간략하게 설명하세요. 실행하려면 어떻게 해야 하나요?

프로젝트 구조에 대한 쿼리에 대한 GitHub Copilot의 응답을 보여 주는 스크린샷

SQL 코드 이해

/explain 프롬프트를 사용하여 특정 코드를 이해할 수 있습니다. 예를 들어 프로젝트에는 애플리케이션에서 실행 중인 쿼리가 포함된 complex.sql 파일이 포함될 수 있습니다. complex.sql 내용을 이해하려면 GitHub Codespaces의 탐색기 창에서 선택한 다음 채팅에서 /explain 프롬프트를 사용할 수 있습니다.

컴퓨터 화면 AI 생성 콘텐츠의 스크린샷이 올바르지 않을 수 있습니다.

전체 파일을 선택하는 대신 코드의 섹션을 선택하고 GitHub Copilot에 해당 섹션에 대한 세부 정보를 제공하도록 요청할 수 있습니다.

SQL 쿼리 최적화 및 리팩터링

불필요한 JOINS가 있거나 쿼리된 테이블에 인덱스가 없거나 중복 중첩된 하위 쿼리가 포함되어 있기 때문에 느리거나 비효율적인 쿼리가 표시되는 경우가 있습니다. GitHub Copilot를 사용하여 쿼리를 선택하고 성능을 향상시킬 수 있는 최적화를 프롬프트할 수 있습니다.

마찬가지로, 코필로트에게 더 나은 가독성 또는 유지 관리를 위해 쿼리를 다시 작성하도록 요청할 수 있으며, 코드를 검토해야 할 수 있는 향후 개발자를 위한 기능을 설명하기 위해 주석을 제공하도록 Copilot에 요청할 수 있습니다.

프롬프트의 예는 다음과 같습니다.

"각 CTE, SQL 절 및 계산의 목적과 기능을 설명하는 자세한 설명을 complex.sql 파일에 추가합니다. 연도 추출 방법, 롤링 평균 계산 방법, 성능 비율 뒤에 있는 논리 및 각 CASE 문의 의미를 포함하여 쿼리의 각 섹션이 수행하는 작업을 설명해야 합니다. 주석을 사용하면 파일에 익숙하지 않은 사용자가 전체 쿼리의 논리와 의도를 쉽게 이해할 수 있습니다."

데이터의 무결성 유효성 검사

Copilot를 사용하여 데이터 무결성의 유효성을 검사하거나 데이터베이스의 특정 조건을 확인하는 SQL 쿼리를 작성할 수 있습니다. 예를 들어 GitHub Copilot에게 네 가지 유형의 무결성 검사 중 하나를 수행하라는 메시지를 표시할 수 있습니다.

  • 고유성/중복 검사
  • 참조 무결성(외래 키 위반)
  • 도메인 무결성(예상 범위 내의 값)
  • 비즈니스 규칙 검사(사용자 지정 논리 위반)

예제 쿼리는 다음과 같습니다.

"Orders 테이블과 Customers 테이블 사이의 고아가 된 외래 키를 확인하는 SQL 쿼리를 작성합니다."

데이터베이스 스키마 설명서

데이터베이스 스키마를 탐색하거나 문서화하는 쿼리를 작성하는 데 도움이 되도록 GitHub Copilot에 요청할 수 있습니다. GitHub Copilot에 작업 중인 데이터베이스의 컨텍스트를 제공하면 해당 데이터베이스와 상호 작용하는 코드를 최적화할 수 있는지 여부를 확인할 수 있습니다. GitHub Copilot는 쿼리의 실행 계획을 자세히 분석하지는 않지만 상호 작용하는 SQL 데이터베이스의 컨텍스트를 이해하면 더 나은 조언을 제공할 수 있습니다.

SQL 테스트 생성

GitHub Copilot가 SQL 기반 테스트 또는 어설션을 생성하여 쿼리 결과 또는 데이터베이스 상태를 확인하도록 요청할 수 있습니다. 부조종사에서는 프로젝트 유형에 따라 적절한 테스트 프레임워크를 제안할 수 있습니다. 테스트 환경을 구성하려면 채팅 입력 필드에 /setupTests 명령을 입력하고 GitHub Copilot의 지침에 따라 프로젝트를 구성합니다.

GitHub Copilot는 코드베이스를 포함하는 테스트 코드를 생성하여 애플리케이션 코드에 대한 테스트를 작성하는 데 도움이 될 수 있습니다. 여기에는 단위 테스트, 엔드 투 엔드 테스트 및 에지 사례에 대한 테스트가 포함됩니다.

SQL 오류 디버그

GitHub Copilot에 SQL 오류를 디버그하거나 일반적인 문제에 대한 수정 사항을 제안하도록 요청할 수 있습니다. 예를 들어 파일 또는 코드 블록을 선택하고 GitHub Copilot에 구문 오류를 찾아 수정하도록 요청할 수 있습니다.

GitHub Copilot에서 전체 테이블 스키마 및 인덱스를 제공하면 GitHub Copilot가 테이블에 대한 대표적인 쿼리를 생성하고 성능을 향상시킬 수 있는 추가 인덱스를 제안할 수 있습니다.

GitHub Copilot 프롬프트 만들기

GitHub Copilot를 사용하여 프롬프트를 생성하여 기존 코드보다 더 나은 성능을 발휘하는 코드를 만들 수 있습니다. GitHub Copilot와 상호 작용할 때 제공된 답변이 요구 사항을 충족할 가능성을 높이기 위해 질문에 최대한 많은 세부 정보를 제공합니다. 이를 위해 다음 작업이 수행됩니다.

  • 코드를 이해합니다. 이러한 이해는 GitHub Copilot와의 기존 상호 작용에서 파생될 수 있습니다.
  • 원래 코드를 선택하고 GitHub Copilot 채팅을 엽니다.
  • 최대한 많은 세부 정보를 제공해주세요. 예를 들어 다음 프롬프트와 함께 GitHub Copilot 채팅을 제공할 수 있습니다.

다음 요구 사항을 고려하여데이터베이스는 SQLite이며 영화 등급과 관련된 테이블을 포함합니다(complex.sql 구조 참조).쿼리는 지역별로 최상위 영화를 효율적으로 집계하고 반환하여 실행 시간을 최소화하고 불필요한 작업(예: 중복 CAST, 불필요한 JOIN 또는 필요하지 않은 경우 SELECT DISTINCT)을 피해야 합니다.결과에는 영화 제목, 평균 평점, 지역 및 기타 관련 필드가 포함됩니다.쿼리는 큰 데이터 세트에서 1.5초 안에 완료되어야 합니다. 모든 비즈니스 논리와 정확성은 원래 complex.sql 그대로 유지되어야 합니다.이러한 요구 사항을 충족하는 고성능 SQL 쿼리를 작성하고 적용하는 모든 최적화를 설명합니다.