Usare SQL con GitHub Copilot

Completato

GitHub Copilot può essere usato per interagire con tutti i tipi di codice, che include l'interazione con i linguaggi di programmazione più diffusi e offre la possibilità di scrivere, eseguire debug e ottimizzare il codice SQL.

GitHub Copilot può eseguire le attività seguenti correlate al codice SQL:

  • Spiegazione delle query: usare Copilot per spiegare query SQL complesse per comprendere meglio la logica e la struttura.
  • Ottimizzazione delle query: chiedere a Copilot suggerimenti per ottimizzare query lente o inefficienti, come la rimozione di JOIN non necessari, l'ottimizzazione di SELECT DISTINCT o il refactoring delle sottoquery.
  • Refactoring delle query: Richiedere a Copilot di riscrivere le query per migliorare la leggibilità o la gestibilità, ad esempio sostituendo CROSS JOIN o semplificando le query annidate.
  • Generazione di query: fare in modo che Copilot generi nuove query SQL in base ai requisiti dei dati, ad esempio SELECT, INSERT, UPDATE o DELETE.
  • Convalida dei dati: usare Copilot per scrivere query SQL per convalidare l'integrità dei dati o verificare la presenza di condizioni specifiche nel database.
  • Esplorazione dello schema: chiedere a Copilot di scrivere query che esplorano o documentano lo schema del database, ad esempio elencando tabelle, colonne o relazioni.
  • Generazione di test: richiedere a Copilot di generare test o asserzioni basati su SQL per verificare i risultati delle query o lo stato del database.
  • Debug degli errori: chiedere a Copilot di eseguire il debug degli errori SQL o suggerire correzioni per i problemi comuni, ad esempio errori di sintassi, indici mancanti.
  • Creazione richiesta: Chiedere a Copilot di generare richieste o modelli per la creazione di query ad alte prestazioni da zero.

GitHub Copilot offre risultati migliori quando le richieste sono più specifiche. Se si forniscono richieste generali, è probabile che si ricevano risposte generali. Se si forniscono maggiori dettagli nelle richieste e si chiedono domande più dettagliate, è più probabile ottenere risposte dettagliate.

Ad esempio, è possibile usare GitHub Copilot per fornire il codice SQL per creare una tabella che include colonne per nome, cognome, data di nascita, film preferito e nome animale domestico inviando il prompt seguente:

Specificare il codice SQL per creare una tabella che include colonne per nome, cognome, data di nascita, film preferito e nome animale domestico

Screenshot di un prompt di GitHub Copilot relativo alla creazione di una tabella in SQL.

Comprendere un'applicazione che include SQL

Ad esempio, se è stato aperto uno spazio di codice con un'applicazione che include codice SQL, è possibile eseguire una query su GitHub Copilot con il prompt seguente per ottenere altre informazioni sul progetto nel modo seguente:

Spiegare brevemente la struttura di questo progetto. Cosa devo fare per eseguirlo?

Screenshot che mostra la risposta di GitHub Copilot a una query sulla struttura del progetto.

Informazioni sul codice SQL

È possibile usare il prompt /explain per comprendere codice specifico. Ad esempio, un progetto potrebbe contenere un file denominato complex.sql, che contiene la query eseguita nell'applicazione. Per comprendere il contenuto di complex.sql, è possibile selezionarlo nel riquadro Explorer di GitHub Codespaces e quindi usare il prompt /explain nella chat.

Uno screenshot di un contenuto generato dall'intelligenza artificiale sullo schermo di un computer potrebbe non essere corretto.

Invece di selezionare l'intero file, è possibile selezionare sezioni del codice e chiedere a GitHub Copilot di fornire un dettaglio su tali sezioni.

Ottimizzare e rifattorizzare le query SQL

A volte vengono presentate delle query lente o inefficienti perché non sono necessarie JOINS, le tabelle sottoposte a query non hanno indici o contengono sottoquery annidate ridondanti. Usando GitHub Copilot, è possibile selezionare una query e richiedere eventuali ottimizzazioni che potrebbero migliorare le prestazioni.

Analogamente, è possibile richiedere a Copilot di riscrivere le query per migliorare la leggibilità o la manutenibilità, chiedendo a Copilot di fornire commenti per spiegare le funzionalità per gli sviluppatori futuri che potrebbero dover esaminare il codice.

Un prompt di esempio potrebbe essere:

"Aggiungere commenti dettagliati al file di complex.sql che illustra lo scopo e la funzionalità di ogni CTE, clausola SQL e calcolo. Assicurarsi di descrivere il funzionamento di ogni sezione della query, tra cui il modo in cui viene estratto l'anno, il modo in cui viene calcolata la media mobile, la logica dietro il rapporto prestazioni e il significato di ogni istruzione CASE. I commenti dovrebbero semplificare la comprensione della logica e dell'intento dell'intera query da parte di un utente che non ha familiarità con il file."

Convalidare l'integrità dei dati

Usare Copilot per scrivere query SQL per convalidare l'integrità dei dati o verificare la presenza di condizioni specifiche nel database. Ad esempio, è possibile richiedere a GitHub Copilot di eseguire uno dei quattro tipi di controlli di integrità:

  • Univocità/controlli duplicati
  • Integrità referenziale (violazioni di chiave esterna)
  • Integrità del dominio (valori compresi negli intervalli previsti)
  • Controlli delle regole di business (violazioni della logica personalizzata)

Una query di esempio potrebbe essere:

"Scrivere una query SQL che verifica la presenza di chiavi esterne orfane tra le tabelle Orders e Customers."

Documentazione dello schema del database

È possibile chiedere a GitHub Copilot di scrivere query che esplorano o documentano lo schema del database. Assegnando a GitHub Copilot il contesto del database con cui si sta lavorando, sarà possibile determinare se il codice che interagisce con tale database può essere ottimizzato. Anche se GitHub Copilot non analizza in modo approfondito i piani di esecuzione delle query, ma comprende il contesto del database SQL con cui si interagisce, può fornire consigli migliori.

Generazione di test SQL

È possibile richiedere a GitHub Copilot di generare test o asserzioni basati su SQL per verificare i risultati delle query o lo stato del database. Copilot può suggerire framework di test appropriati in base al tipo di progetto. Per configurare l'ambiente di test, immettere il comando /setupTests nel campo di input della chat e seguire le indicazioni di GitHub Copilot per configurare il progetto.

GitHub Copilot consente di scrivere test per il codice dell'applicazione generando codice di test che copre la codebase. Sono inclusi unit test, test end-to-end e test per i casi limite.

Eseguire il debug di errori SQL

È possibile chiedere a GitHub Copilot di eseguire il debug degli errori SQL o suggerire correzioni per i problemi comuni. Ad esempio, è possibile selezionare un file o un blocco di codice e chiedere a GitHub Copilot di individuare e correggere eventuali errori di sintassi.

Con GitHub Copilot è disponibile uno schema e indici di tabella completi, è quindi possibile avere GitHub Copilot generare query rappresentative sulle tabelle e suggerire eventuali indici aggiuntivi, che potrebbero migliorare le prestazioni.

Creazione del prompt di GitHub Copilot

È possibile usare GitHub Copilot per generare richieste di creazione di codice che offre prestazioni migliori rispetto al codice esistente. Quando si interagisce con GitHub Copilot, fornire il maggior numero di dettagli possibile nella domanda per aumentare la probabilità che la risposta fornita soddisfi i requisiti. A tale scopo:

  • Comprendere il codice. Questa comprensione può essere derivata dall'interazione esistente con GitHub Copilot.
  • Selezionare il codice originale e aprire GitHub Copilot Chat.
  • Fornire il maggior numero di dettagli possibili. Ad esempio, è possibile fornire una chat di GitHub Copilot con il prompt seguente:

In base ai requisiti seguenti:il database è SQLite e contiene tabelle rilevanti per le classificazioni dei film (vedere la struttura in complex.sql).La query deve aggregare e restituire in modo efficiente i film di livello superiore in base all'area, riducendo al minimo i tempi di esecuzione ed evitando operazioni non necessarie, ad esempio CAST ridondanti, JOIN non necessari o SELECT DISTINCT, se non necessario.Il risultato deve includere titolo del film, valutazione media, area geografica e altri campi pertinenti.La query deve essere completata in meno di 1,5 secondi in un set di dati di grandi dimensioni. Tutte le regole di business e la correttezza devono essere mantenute come nel complex.sql originale.Scrivere una query SQL ad alte prestazioni che soddisfi questi requisiti e spiegare le ottimizzazioni applicate.