Práce s SQL s využitím GitHub Copilotu

Dokončeno

GitHub Copilot se dá použít k interakci se všemi typy kódu, to zahrnuje interakci s oblíbenými programovacími jazyky a poskytuje vám možnost psaní, ladění a optimalizace kódu SQL.

GitHub Copilot může provádět následující úlohy související s kódem SQL:

  • Vysvětlení dotazu: Použití Copilotu k vysvětlení složitých dotazů SQL k lepšímu pochopení jejich logiky a struktury.
  • Optimalizace dotazů: Požádejte Copilot o návrhy na optimalizaci pomalých nebo neefektivních dotazů, jako je odebrání nepotřebných JOIN, optimalizace select DISTINCT nebo refaktoring poddotazů.
  • Refaktoring dotazů: Požádejte Copilot, aby přepsal dotazy za účelem lepší čitelnosti nebo udržovatelnosti, například nahrazením CROSS JOIN nebo zjednodušením vnořených dotazů.
  • Generování dotazů: Vygenerujte nové dotazy SQL na základě vašich požadavků na data, jako jsou příkazy SELECT, INSERT, UPDATE nebo DELETE.
  • Ověření dat: Pomocí Copilotu můžete psát dotazy SQL, které ověřují integritu dat nebo kontrolují konkrétní podmínky v databázi.
  • Zkoumání schématu: Požádejte Copilot, aby vám pomohl psát dotazy, které prozkoumávají nebo dokumentují schéma databáze (například výpis tabulek, sloupců nebo relací).
  • Generování testů: Požadavek Copilot pro generování testů nebo kontrolních výrazů založených na SQL za účelem ověření výsledků dotazu nebo stavu databáze.
  • Ladění chyb: Požádejte Copilot, aby pomohl ladit chyby SQL nebo navrhovat opravy běžných problémů (např. chyby syntaxe, chybějící indexy).
  • Vytváření podnětů: Nechte Copilot vygenerovat podněty nebo šablony pro vytváření vysoce výkonných dotazů úplně od začátku.

GitHub Copilot poskytuje lepší výsledky, když jsou vaše výzvy konkrétnější. Pokud zadáte obecné výzvy, pravděpodobně dostanete obecné odpovědi. Pokud do výzev zadáte další podrobnosti a položíte si podrobnější otázky, pravděpodobně získáte podrobné odpovědi.

Pomocí GitHub Copilotu můžete například vytvořit tabulku obsahující sloupce pro křestní jméno, příjmení, datum narození, oblíbený film a jméno domácího mazlíčka tak, že zadáte následující výzvu:

Poskytněte mi kód SQL a vytvořte tabulku, která obsahuje sloupce pro křestní jméno, příjmení, datum narození, oblíbený film a jméno domácího mazlíčka.

Snímek obrazovky s výzvou GitHub Copilot související s vytvořením tabulky v SQL.

Vysvětlení aplikace, která zahrnuje SQL

Pokud jste například otevřeli prostor kódu, zobrazila se aplikace, která obsahovala kód SQL, můžete dotazovat GitHub Copilot s následující výzvou, abyste pochopili více o projektu následujícím způsobem:

Stručně vysvětlete strukturu tohoto projektu. Co mám udělat pro spuštění?

Snímek obrazovky znázorňující odpověď GitHub Copilotu na dotaz na strukturu projektu

Principy kódu SQL

Pomocí výzvy /explain můžete porozumět konkrétnímu kódu. Projekt může například obsahovat soubor s názvem complex.sql, který obsahuje dotaz, který se spouští v aplikaci. Pokud chcete porozumět obsahu complex.sql, můžete ho vybrat v podokně Průzkumník v GitHub Codespaces a poté použít příkaz /explain v chatu.

Snímek obrazovky počítače s obsahem vygenerovaným AI může být nesprávný.

Místo výběru celého souboru můžete vybrat oddíly kódu a požádat GitHub Copilot o poskytnutí podrobností o těchto oddílech.

Optimalizace a refaktoring dotazů SQL

Někdy se zobrazují dotazy, které jsou pomalé nebo neefektivní, protože nejsou potřeba funkce JOINS, tabulky dotazované nemají indexy ani neobsahují redundantní vnořené poddotazy. Pomocí GitHub Copilotu můžete vybrat dotaz a zobrazit výzvu k optimalizacím, které můžou zvýšit výkon.

Podobně můžete požádat Copilot, aby přepsal dotazy pro lepší čitelnost nebo udržovatelnost a požádal Copilot, aby poskytl komentáře k vysvětlení funkčnosti pro budoucí vývojáře, kteří můžou potřebovat zkontrolovat kód.

Příkladem výzvy může být:

"Do souboru complex.sql přidejte podrobné komentáře vysvětlující účel a funkčnost jednotlivých CTE, klauzulí SQL a výpočtů. Nezapomeňte popsat, co každá část dotazu dělá, včetně způsobu extrahování roku, způsobu výpočtu klouzavého průměru, logiky za poměrem výkonu a významu každého příkazu CASE. Komentáře by měly uživatelům, kteří soubor nezná, usnadnit pochopení logiky a záměru celého dotazu.

Ověření integrity dat

Pomocí Copilotu můžete psát dotazy SQL, které ověřují integritu dat nebo kontrolují konkrétní podmínky v databázi. Můžete například vyzvat GitHub Copilot k provedení jedné ze čtyř typů kontrol integrity:

  • Jedinečnost / duplicitní kontroly
  • Referenční integrita (porušení cizího klíče)
  • Integrita domény (hodnoty v rámci očekávaných rozsahů)
  • Kontroly obchodních pravidel (porušení vlastní logiky)

Příkladem dotazu může být:

"Napište dotaz SQL, který kontroluje osiřelé cizí klíče mezi tabulkami Orders a Customers."

Dokumentace ke schématu databáze

Můžete požádat GitHub Copilot, aby vám pomohl psát dotazy, které prozkoumávají nebo dokumentují schéma databáze. Díky tomu, že GitHub Copilotu poskytne kontext databáze, se kterou pracujete, budete moct určit, jestli je možné optimalizovat kód, který s ní komunikuje. GitHub Copilot sice podrobně neanalyzuje plány provádění dotazů, ale pochopení kontextu databáze SQL, se kterou pracujete, může poskytovat lepší rady.

Generování testů SQL

Můžete požádat GitHub Copilot, aby vygeneroval testy nebo kontrolní výrazy založené na SQL k ověření výsledků dotazu nebo stavu databáze. Copilot může navrhnout vhodné testovací architektury na základě typu projektu. Pokud chcete nakonfigurovat testovací prostředí, zadejte do vstupního pole chatu příkaz /setupTests a podle pokynů GitHub Copilotu nakonfigurujte projekt.

GitHub Copilot vám může pomoct psát testy kódu vaší aplikace vygenerováním testovacího kódu, který pokrývá váš základ kódu. To zahrnuje jednotkové testy, komplexní testy a testy hraničních případů.

Ladění chyb SQL

Můžete požádat GitHub Copilot, aby vám pomohl ladit chyby SQL nebo navrhnout opravy běžných problémů. Můžete například vybrat soubor nebo blok kódu a požádat GitHub Copilot o vyhledání a opravu všech chyb syntaxe.

Díky tomu, že vám GitHub Copilot poskytne úplné schéma tabulek a indexy, můžete mít GitHub Copilot generovat reprezentativní dotazy na tabulky a navrhnout všechny další indexy, které by mohly zlepšit výkon.

Vytváření promptů pro GitHub Copilot

Pomocí GitHub Copilotu můžete vygenerovat výzvy k vytvoření kódu, který funguje lépe než existující kód. Při interakci s GitHub Copilotem uveďte co nejvíce podrobností, abyste zvýšili pravděpodobnost, že poskytnutá odpověď splňuje vaše požadavky. Chcete-li toho dosáhnout:

  • Mít porozumění pro kód. Toto porozumění může být odvozeno z existující interakce s GitHub Copilotem.
  • Vyberte původní kód a otevřete GitHub Copilot Chat.
  • Uveďte co nejvíce podrobností. Například můžete zadat do chatu GitHub Copilot následující výzvu:

Vzhledem k následujícím požadavkům:Databáze je SQLite a obsahuje tabulky relevantní pro hodnocení filmů (viz struktura v complex.sql).Dotaz by měl efektivně agregovat a vracet nejlépe hodnocené filmy podle oblastí, minimalizovat dobu provádění a vyhnout se zbytečným operacím (jako jsou redundantní casty, nepotřebné JOINs nebo SELECT DISTINCT, pokud není potřeba).Výsledek by měl obsahovat název filmu, průměrné hodnocení, oblast a všechna další relevantní pole.Dotaz musí být u velké datové sady dokončen do 1,5 sekund. Veškerá obchodní logika a správnost musí být zachovány jako v původním complex.sql.Napište vysoce výkonný dotaz SQL, který splňuje tyto požadavky, a vysvětlete všechny optimalizace, které použijete.