Arbejd med SQL ved hjælp af GitHub Copilot

Fuldført

GitHub Copilot kan bruges til at interagere med alle typer kode. Dette omfatter interaktion med populære programmeringssprog og giver dig mulighed for at skrive, foretage fejlfinding og optimere SQL-kode.

GitHub Copilot kan udføre følgende opgaver, der er relateret til SQL-kode:

  • Forklaring af forespørgsel: Brug Copilot til at forklare komplekse SQL-forespørgsler for bedre at forstå deres logik og struktur.
  • Forespørgselsoptimering: Bed Copilot om forslag til at optimere langsomme eller ineffektive forespørgsler, f.eks. fjernelse af unødvendige JOIN'er, optimering af SELECT DISTINCT eller omstrukturering af underforespørgsler.
  • Omstrukturering af forespørgsler: Anmod Copilot om at omskrive forespørgsler, så de bliver nemmere at læse eller vedligeholde, f.eks. ved at erstatte CROSS JOIN'er eller forenkle indlejrede forespørgsler.
  • Generering af forespørgsler: Få Copilot til at generere nye SQL-forespørgsler baseret på dine datakrav, f.eks. SELECT-, INSERT-, UPDATE- eller DELETE-sætninger.
  • Datavalidering: Brug Copilot til at hjælpe med at skrive SQL-forespørgsler, der validerer dataintegritet eller kontrollerer, om der er specifikke betingelser i databasen.
  • Skemaudforskning: Bed Copilot om at hjælpe dig med at skrive forespørgsler, der udforsker eller dokumenterer databaseskemaet (f.eks. visning af tabeller, kolonner eller relationer).
  • Testgenerering: Anmod Copilot om at generere SQL-baserede test eller antagelser for at bekræfte forespørgselsresultater eller databasetilstand.
  • Fejlfejlfinding: Bed Copilot om at hjælpe med at foretage fejlfinding af SQL-fejl eller foreslå rettelser til almindelige problemer (f.eks. syntaksfejl, manglende indekser).
  • Oprettelse af prompt: Få Copilot til at generere prompter eller skabeloner til oprettelse af forespørgsler med høj ydeevne fra bunden.

GitHub Copilot giver bedre resultater, når dine prompter er mere specifikke. Hvis du angiver generelle prompts, modtager du sandsynligvis generelle svar. Hvis du angiver flere detaljer i dine prompter og stiller mere detaljerede spørgsmål, er det mere sandsynligt, at du får detaljerede svar.

Du kan f.eks. bruge GitHub Copilot til at give dig SQL-koden til at oprette en tabel, der indeholder kolonner til fornavn, efternavn, fødselsdato, yndlingsfilm og kæledyrsnavn ved at udstede følgende prompt:

@workspace Angiv SQL-koden for at oprette en tabel, der indeholder kolonner til fornavn, efternavn, fødselsdato, yndlingsfilm og kæledyrsnavn

Et skærmbillede af en GitHub Copilot-prompt, der er relateret til oprettelsen af en tabel i SQL.

Forstå et program, der indeholder SQL

Hvis du f.eks. har åbnet et kodeområde, der blev præsenteret for et program, der indeholdt SQL-kode, kan du forespørge GitHub Copilot med følgende prompt for at få mere at vide om projektet på følgende måde:

@workspace Forklar kort projektets struktur. Hvad skal jeg gøre for at køre den?

Et skærmbillede, der viser GitHub Copilots svar på en forespørgsel om projektstruktur.

Forstå SQL-kode

Du kan bruge /explain-prompten til at forstå specifik kode. Et projekt kan f.eks. indeholde en fil med navnet complex.sql, som indeholder den forespørgsel, der udføres i programmet. Hvis du vil forstå indholdet af complex.sql, kan du vælge det i ruden Stifinder i GitHub Codespaces og derefter bruge prompten /explain i chatten.

Et skærmbillede af ai-genereret indhold på en computerskærm kan være forkert.

I stedet for at vælge hele filen kan du vælge sektioner i koden og bede GitHub Copilot om at angive en detaljeret beskrivelse af disse sektioner.

Optimer og refactor SQL-forespørgsler

Nogle gange får du vist forespørgsler, der er langsomme eller ineffektive, fordi der er unødvendige JOINS, tabeller, der forespørges, ikke har indekser eller indeholder redundante indlejrede underforespørgsler. Ved hjælp af GitHub Copilot kan du vælge en forespørgsel og bede om eventuelle optimeringer, der kan forbedre ydeevnen.

På samme måde kan du anmode Copilot om at omskrive forespørgsler for at forbedre læsbarheden eller vedligeholdelsen og bede Copilot om at angive kommentarer for at forklare funktionaliteten for fremtidige udviklere, der muligvis har brug for at gennemse koden.

En eksempelprompt kan være:

"Føj detaljerede kommentarer til filen complex.sql, der forklarer formålet med og funktionaliteten for hver CTE, SQL-delsætning og beregning. Sørg for at beskrive, hvad hvert afsnit i forespørgslen gør, herunder hvordan året udtrækkes, hvordan det rullende gennemsnit beregnes, logikken bag ydelsesforholdet og betydningen af hver CASE-sætning. Kommentarerne bør gøre det nemt for en person, der ikke kender filen, at forstå logikken og hensigten med hele forespørgslen."

Valider dataintegritet

Brug Copilot til at hjælpe med at skrive SQL-forespørgsler, der validerer dataintegritet eller kontrollerer, om der er specifikke betingelser i databasen. Du kan f.eks. bede GitHub Copilot om at udføre en af de fire typer integritetskontroller:

  • Entydighed/duplikerede kontroller
  • Referentiel integritet (overtrædelser af fremmede nøgler)
  • Domæneintegritet (værdier inden for forventede områder)
  • Kontrol af forretningsregler (brugerdefinerede logikovertrædelser)

En eksempelforespørgsel kan være:

"Skriv en SQL-forespørgsel, der søger efter tabte fremmede nøgler mellem tabellerne Orders og Customers."

Dokumentation til databaseskema

Du kan bede GitHub Copilot om at hjælpe dig med at skrive forespørgsler, der udforsker eller dokumenterer dit databaseskema. Ved at give GitHub Copilot konteksten for den database, du arbejder med, kan du afgøre, om den kode, der interagerer med den pågældende database, kan optimeres. Selvom GitHub Copilot ikke analyserer udførelsesplanerne for forespørgsler dybt, men forstår konteksten for den SQL-database, du interagerer med, kan den give bedre råd.

Oprettelse af SQL-test

Du kan anmode GitHub Copilot om at generere SQL-baserede test eller antagelser for at bekræfte forespørgselsresultater eller databasetilstand. Copilot kan foreslå relevante testrammer baseret på din projekttype. Hvis du vil konfigurere dit testmiljø, skal du angive kommandoen /setupTests i chatinputfeltet og følge GitHub Copilots vejledning til at konfigurere dit projekt.

GitHub Copilot kan hjælpe dig med at skrive test for din programkode ved at generere testkode, der dækker din codebase. Dette omfatter enhedstests, end-to-end-test og test for edge cases.

Foretag fejlfinding af SQL-fejl

Du kan bede GitHub Copilot om at hjælpe med at foretage fejlfinding af SQL-fejl eller foreslå rettelser til almindelige problemer. Du kan f.eks. vælge en fil eller kodeblok og bede GitHub Copilot om at finde og rette eventuelle syntaksfejl.

Når GitHub Copilot giver dig et komplet tabelskema og indeks, kan du derefter få GitHub Copilot til at generere repræsentative forespørgsler i forhold til tabellerne og foreslå yderligere indekser, hvilket kan forbedre ydeevnen.

Oprettelse af GitHub Copilot-prompt

Du kan bruge GitHub Copilot til at generere prompter for at oprette kode, der fungerer bedre end eksisterende kode. Når du interagerer med GitHub Copilot, skal du angive så mange detaljer i spørgsmålet som muligt for at øge risikoen for, at svaret opfylder dine krav. Sådan gør du:

  • Få en forståelse af koden. Denne forståelse kan udledes af eksisterende interaktion med GitHub Copilot.
  • Vælg den oprindelige kode, og åbn GitHub Copilot Chat.
  • Angiv så mange detaljer som muligt. Du kan f.eks. angive GitHub Copilot-chat med følgende prompt:

På grund af følgende krav:Databasen er SQLite og indeholder tabeller, der er relevante for filmklassifikationer (se strukturen i complex.sql).Forespørgslen skal samle og returnere de bedst bedømte film efter område effektivt, minimere udførelsestiden og undgå unødvendige handlinger (f.eks. overflødige CAST'er, unødvendige JOIN'er eller SELECT DISTINCT, hvis det ikke er nødvendigt).Resultatet skal omfatte filmtitel, gennemsnitlig bedømmelse, område og andre relevante felter.Forespørgslen skal fuldføres om under 1,5 sekunder på et stort datasæt. Al forretningslogik og -korrekthed skal bevares som i den oprindelige complex.sql.Skriv en SQL-forespørgsel med høj ydeevne, der opfylder disse krav, og forklar eventuelle optimeringer, du anvender.