Praca z bazą danych SQL przy użyciu narzędzia GitHub Copilot

Ukończone

Narzędzie GitHub Copilot może służyć do interakcji ze wszystkimi typami kodu. Obejmuje to interakcję z popularnymi językami programowania i zapewnienie możliwości pisania, debugowania i optymalizowania kodu SQL.

Narzędzie GitHub Copilot może wykonywać następujące zadania związane z kodem SQL:

  • Wyjaśnienie zapytania: Użyj narzędzia Copilot, aby wyjaśnić złożone zapytania SQL, aby lepiej zrozumieć ich logikę i strukturę.
  • Optymalizacja zapytań: Poproś Copilot o sugestie dotyczące optymalizacji wolnych lub nieefektywnych zapytań, takich jak usuwanie niepotrzebnych łączeń JOIN, optymalizowanie zapytań SELECT DISTINCT lub refaktoryzacja podzapytań.
  • Refaktoryzacja zapytań: poproś Copilot o przepisywanie zapytań w celu uzyskania lepszej czytelności lub łatwiejszej konserwacji, np. zastępowanie CROSS JOIN lub upraszczanie zagnieżdżonych zapytań.
  • Generowanie zapytań: Pozwól Copilotowi generować nowe zapytania SQL na podstawie wymagań dotyczących danych, takie jak instrukcje SELECT, INSERT, UPDATE lub DELETE.
  • Weryfikacja danych: użyj narzędzia Copilot, aby ułatwić pisanie zapytań SQL, które weryfikują integralność danych lub sprawdzają określone warunki w bazie danych.
  • Eksploracja schematu: Poproś Copilota o pomoc w pisaniu zapytań eksplorujących lub dokumentujących schemat bazy danych (np. wyświetlanie listy tabel, kolumn lub relacji).
  • Generowanie testów: poproś Copilot o wygenerowanie testów lub asercji opartych na języku SQL w celu zweryfikowania wyników zapytania lub stanu bazy danych.
  • Debugowanie błędów: poproś Copilot o pomoc w debugowaniu błędów SQL lub sugerowanie poprawek typowych problemów (np. błędów składniowych, brakujących indeksów).
  • Tworzenie podpowiedzi: Copilot generuje podpowiedzi lub szablony do tworzenia wydajnych zapytań od podstaw.

Narzędzie GitHub Copilot zapewnia lepsze wyniki, gdy monity są bardziej szczegółowe. Jeśli podasz monity ogólne, prawdopodobnie otrzymasz ogólne odpowiedzi. Jeśli podasz więcej szczegółów w swoich pytaniach i zadasz bardziej szczegółowe pytania, masz większe szanse na uzyskanie szczegółowych odpowiedzi.

Na przykład możesz użyć narzędzia GitHub Copilot, aby udostępnić kod SQL w celu utworzenia tabeli zawierającej kolumny dla imienia, nazwiska, daty urodzenia, ulubionego filmu i nazwy zwierzaka, wysyłając następujący monit:

@workspace Podaj mi kod SQL, aby utworzyć tabelę zawierającą kolumny dla imienia, nazwiska, daty urodzenia, ulubionego filmu i nazwy zwierzaka

Zrzut ekranu przedstawiający monit narzędzia GitHub Copilot związany z tworzeniem tabeli w języku SQL.

Omówienie aplikacji obejmującej język SQL

Jeśli na przykład otwarto przestrzeń kodu z aplikacją zawierającą kod SQL, możesz wysłać zapytanie do narzędzia GitHub Copilot z następującym monitem, aby dowiedzieć się więcej o projekcie w następujący sposób:

@workspace Krótko wyjaśnij strukturę tego projektu. Co należy zrobić, aby go uruchomić?

Zrzut ekranu przedstawiający odpowiedź narzędzia GitHub Copilot na zapytanie dotyczące struktury projektu.

Omówienie kodu SQL

Aby zrozumieć konkretny kod, możesz użyć monitu /explain. Na przykład projekt może zawierać plik o nazwie complex.sql, który zawiera zapytanie wykonywane w aplikacji. Aby zrozumieć zawartość complex.sql, możesz wybrać ją w okienku Eksplorator usługi GitHub Codespaces, a następnie użyć /explain monitu w czacie.

Zrzut ekranu przedstawiający zawartość wygenerowaną przez sztuczną inteligencję na ekranie komputera może być niepoprawna.

Zamiast wybierać cały plik, możesz wybrać sekcje kodu i poprosić GitHub Copilot o podanie szczegółowych informacji o tych sekcjach.

Optymalizowanie i refaktoryzacja zapytań SQL

Czasami są wyświetlane zapytania, które są powolne lub nieefektywne, ponieważ istnieją niepotrzebne JOINy, tabele objęte zapytaniem nie mają indeksów lub zawierają nadmiarowe zagnieżdżone podzapytania. Za pomocą narzędzia GitHub Copilot możesz wybrać zapytanie i wyświetlić monit o wszelkie optymalizacje, które mogą poprawić wydajność.

Podobnie możesz poprosić Copilot o ponowne zapisywanie zapytań w celu uzyskania lepszej czytelności lub możliwości konserwacji, prosząc Copilot o podanie komentarzy w celu wyjaśnienia funkcji dla przyszłych deweloperów, którzy mogą potrzebować przejrzeć kod.

Przykładowy monit może być:

"Dodaj szczegółowe komentarze do pliku complex.sql wyjaśniając przeznaczenie i funkcjonalność każdego CTE, klauzuli SQL i obliczeń. Pamiętaj, aby opisać, co robi każda sekcja zapytania, w tym sposób wyodrębniania roku, sposób obliczania średniej kroczącej, logikę współczynnika wydajności i znaczenie każdej instrukcji CASE. Komentarze powinny ułatwić komuś, kto nie zna pliku, aby zrozumieć logikę i intencję całego zapytania.

Weryfikowanie integralności danych

Użyj narzędzia Copilot, aby ułatwić pisanie zapytań SQL, które weryfikują integralność danych lub sprawdzają określone warunki w bazie danych. Możesz na przykład wyświetlić monit o wykonanie jednego z czterech typów kontroli integralności w usłudze GitHub Copilot:

  • Unikatowość/zduplikowane kontrole
  • Integralność referencyjna (naruszenia klucza obcego)
  • Integralność domeny (wartości w oczekiwanych zakresach)
  • Kontrole reguł biznesowych (naruszenia niestandardowych zasad logiki)

Przykładowe zapytanie może być następujące:

"Napisz zapytanie SQL, które sprawdza osierocone klucze obce między tabelami Orders i Customers."

Dokumentacja schematu bazy danych

Możesz poprosić narzędzie GitHub Copilot o pomoc w pisaniu zapytań eksplorujących lub dokumentujących schemat bazy danych. Dając usłudze GitHub Copilot kontekst bazy danych, z którą pracujesz, będzie można określić, czy kod, który wchodzi w interakcję z bazą danych, można zoptymalizować. Chociaż narzędzie GitHub Copilot nie analizuje głęboko planów wykonywania zapytań, ale zrozumienie kontekstu bazy danych SQL, z którą korzystasz, może zapewnić lepszą poradę.

Generowanie testów SQL

Możesz zażądać, aby narzędzie GitHub Copilot wygenerowało testy lub asercji oparte na języku SQL w celu zweryfikowania wyników zapytania lub stanu bazy danych. Copilot może sugerować odpowiednie struktury testowania na podstawie typu projektu. Aby skonfigurować środowisko testowe, wprowadź /setupTests polecenie w polu danych wejściowych czatu i postępuj zgodnie ze wskazówkami usługi GitHub Copilot, aby skonfigurować projekt.

Narzędzie GitHub Copilot może pomóc w pisaniu testów dla kodu aplikacji, generując kod testowy, który obejmuje bazę kodu. Obejmuje to testy jednostkowe, kompleksowe testy i testy dla przypadków brzegowych.

Debugowanie błędów SQL

Możesz poprosić narzędzie GitHub Copilot o pomoc w debugowanie błędów SQL lub sugerowanie poprawek typowych problemów. Możesz na przykład wybrać plik lub blok kodu i poprosić Narzędzie GitHub Copilot o zlokalizowanie i skorygowanie błędów składniowych.

GitHub Copilot, dostarczając pełny schemat tabeli oraz indeksy, umożliwia generowanie reprezentatywnych zapytań wobec tych tabel i sugerowanie dodatkowych indeksów, co może poprawić wydajność.

Tworzenie podpowiedzi Copilot w GitHub

Możesz użyć narzędzia GitHub Copilot, aby generować podpowiedzi do tworzenia kodu, który działa lepiej niż istniejący kod. Podczas interakcji z usługą GitHub Copilot podaj jak najwięcej szczegółów w pytaniu, aby zwiększyć prawdopodobieństwo, że podana odpowiedź spełnia Twoje wymagania. Aby to osiągnąć:

  • Znajomość kodu. To zrozumienie może pochodzić z istniejącej interakcji z rozwiązaniem GitHub Copilot.
  • Wybierz oryginalny kod i otwórz GitHub Copilot Chat.
  • Podaj jak najwięcej szczegółów. Na przykład możesz podać czat w usłudze GitHub Copilot z następującym monitem:

Biorąc pod uwagę następujące wymagania:baza danych w SQLite zawiera tabele istotne dla ocen filmów (zobacz strukturę w complex.sql).Zapytanie powinno wydajnie agregować i zwracać najwyżej oceniane filmy według regionu, minimalizować czas wykonywania i unikać niepotrzebnych operacji (takich jak zbędne CAST, niepotrzebne JOIN lub SELECT DISTINCT, jeśli nie jest to konieczne).Wynik powinien zawierać tytuł filmu, średnią ocenę, region i inne odpowiednie pola.Zapytanie musi zostać ukończone w ciągu 1,5 sekundy w dużym zbiorze danych. Cała logika biznesowa i poprawność muszą być zachowane tak jak w oryginalnym complex.sql.Napisz zapytanie SQL o wysokiej wydajności spełniające te wymagania i wyjaśnij wszelkie stosowane optymalizacje.