JavaRush /Java Blog /Random-IT /Analizziamo database e linguaggio SQL - "Progetto Java da...
Roman Beekeeper
Livello 35

Analizziamo database e linguaggio SQL - "Progetto Java dalla A alla Z"

Pubblicato nel gruppo Random-IT
Un articolo tratto da una serie sulla creazione di un progetto Java. Il suo obiettivo è analizzare le tecnologie chiave, il risultato è scrivere un bot di Telegram. La parte introduttiva è qui . Aloha, ingegneri del software. Oggi parliamo di database e del linguaggio SQL. “Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 1A chi è destinato questo articolo? Sì a tutti coloro che sono interessati. Alcuni potranno iniziare il loro viaggio con questo articolo, altri potranno rinfrescarsi la memoria con fatti interessanti. Questa parte sarà puramente teorica. Prima di dirti cosa sono i database e la sintassi SQL, dobbiamo capire e determinare perché li studieremo. In questa fase parleremo SOLO di database SQL: non prenderemo in considerazione NoSQL in questa serie di articoli.

Banca dati: cos'è

“Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 2Un database (di seguito denominato DB) è un luogo in cui vengono archiviati dati strutturati , che possono essere ottenuti utilizzando un linguaggio di query. I database non solo possono archiviare, ma anche elaborare e modificare informazioni in grandi volumi. Nota: prova a modificare rapidamente un insieme di valori in Excel in base ad alcuni criteri. In linea di principio, niente di complicato. Non come nel nostro mondo reale non digitalizzato. Ad esempio, rinominare vicoli, strade, città. Se tutto fosse virtuale e inserito nel database, sarebbe normalizzato, sarebbero un paio di sciocchezze. Allo stato attuale, molti supporti di memorizzazione soffrono perché non possono cambiare automaticamente. In questo contesto, SQL per database è un linguaggio che il database comprende e risponde di conseguenza. Diciamo che rinominare la città non sarebbe difficile; rinominare Dnepropetrovsk in Dnipro sarebbe simile a questo:
UPDATE city SET name = “Днипро” WHERE id = 1231;
Tutte le successive richieste al sistema produrrebbero già il nome di cui abbiamo bisogno.

Perché sono necessari i database?

Come ho già detto, utilizzando i database è possibile archiviare dati. Ma quali sono questi dati? Per comprendere utilizzando un esempio di vita reale, possiamo parlare di alcune applicazioni. Ad esempio, sullo stesso bot di Telegram. Vogliamo sapere quante persone utilizzano il bot. Come può essere implementato? In una normale applicazione Java, puoi creare molti elementi univoci: un Set, che memorizzerà il nickname o l'ID chat dell'utente. Funzionerà? Volere. Esattamente finché l'applicazione Java non verrà arrestata, e non appena verrà riavviata, l'insieme degli elementi univoci sarà vuoto. Cioè, i dati archiviati nell'applicazione in esecuzione sono semplicemente scomparsi. Cosa puoi fare al riguardo? È possibile spostare l'archiviazione dello stato del sistema (dati) da un'applicazione Java altrove. Puoi memorizzarlo in formato CSV in un normale file sul tuo computer. Puoi farlo in una riga in un file separato. È possibile eseguire questa operazione e quindi sovrascrivere questi dati prima che l'applicazione Java si interrompa. Anche se la garanzia che la registrazione avrà successo è lontana dal 100%, perché basta semplicemente staccare il cavo di alimentazione del server e la registrazione non avverrà. Questo approccio presenta uno svantaggio significativo: non esiste alcuna funzionalità per ottenere, aggregare e cercare informazioni a livello di file. Sì, certo, puoi leggere un file e creare oggetti per esso, ma dovrai inserire tutti i dati nell'applicazione OGNI volta. E possono essercene molti, ad esempio un paio di gigabyte. Ciò può essere evitato memorizzando i dati in un database. Come? Attraverso tabelle e relazioni tra loro. Questo è ciò su cui si basano tutti i database relazionali.

SQL: un linguaggio compreso dai database

Esistono sistemi di gestione di database (di seguito denominati DBMS) e il linguaggio che comprendono è SQL. SQL è un linguaggio di programmazione per manipolare e gestire database. Per capire come funziona, guardiamo la figura: “Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 3L'utente invia query SQL al DBMS, il DBMS capisce cosa deve essere fatto, lo fa e, se la richiesta era per ottenere dati, lo restituisce. Pertanto, come sviluppatori, dobbiamo padroneggiare il linguaggio di query SQL. Potresti pensare: “Oh, un’altra lingua. Con l’aiuto di Dio qui capisco a malapena Java e tu mi offri subito un’altra lingua”. Questo non è vero: SQL è stato inventato come linguaggio di specifica per un DBMS in modo che i contabili molto lontani dai database e dalla programmazione in generale potessero scrivere in questo linguaggio. Ciò significa che impararlo non sarà così difficile. La cosa principale è PRATICA-PRATICA-PRATICA. Oggi parleremo della teoria, ma il prossimo articolo riguarderà la pratica. Dato che un database relazionale è un insieme di tabelle-array bidimensionali e di relazioni tra di esse, il lavoro risolverà il problema. Se parliamo di un esempio, possiamo mostrare due tabelle: "Paesi" e "Città" e come sono collegate. “Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 4In questa fase, è importante per noi capire che i record nella tabella sono dati su alcuni oggetti del mondo Java. Ad esempio, queste due tabelle possono essere descritte in Java in questo modo:
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Beh, non è bellissimo, eh? Il database può memorizzare un numero qualsiasi di tabelle. Nel nostro caso ce ne sono due.

Struttura della tabella

Penso che tutti si siano imbattuti nelle tabelle di Excel in un modo o nell'altro e tu capisca i termini riga e colonna . Nel contesto dei database si parla più di record e di campi: “Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 5risulta quindi che ogni oggetto della classe City è un record in una tabella del database.

Chiave primaria

“Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 6Accade spesso che i campi nei database abbiano gli stessi valori. Ad esempio, i social network, dove è possibile trovare più persone per nome, cognome e persino patronimico. Inoltre, i database relazionali richiedono un campo univoco che può essere utilizzato per accedere a un record. Questa è chiamata la prima chiave o chiave primaria. In genere, il campo ID(id) viene utilizzato come chiave: è l'abbreviazione di identificatore. Questo è il motivo per cui è necessario aggiungere un campo ID a ogni tabella .“Progetto Java dalla A alla Z”: analisi dei database e linguaggio SQL - 7

Chiave esterna

Nel nostro esempio, un campo di questo tipo si trova nella tabella Città, che utilizza la chiave di Paese. E funziona così: ogni città conosce un identificatore di informazioni univoco per il proprio paese e se lo prendiamo e creiamo una query nel database, riceveremo informazioni complete sul paese. Come puoi vedere nell'immagine, esiste una relazione tra due tabelle: “Progetto Java dalla A alla Z”: analisi di database e linguaggio SQL - 8qui viene mostrato il principio di una chiave esterna.

Quali sezioni ci sono in SQL?

A proposito, durante le interviste viene spesso chiesto loro quali operazioni sono in SQL:
  • DDL (Data Definition Language) è un gruppo di operatori che modificano/creano tabelle, la loro struttura e altro. Cioè creare una tabella, eliminarla, creare/eliminare campi nelle tabelle; creazione di una nuova chiave primaria e così via;
  • DML (Data Manipulation Language) è un gruppo di operatori che gestiscono la modifica dei dati. Queste sono tutte le operazioni che modificano i dati nel database: aggiungere, ottenere, modificare ed eliminare;
  • DCL (Data Control Language) è un mezzo per confermare i diritti dell'utente per eseguire azioni. Operazioni per concedere accesso e diritti a un utente specifico in modo che possa eseguire operazioni DDL/DML.

Quali tipi di dati sono presenti in SQL

Le tabelle possono archiviare ed elaborare determinati tipi di dati. Tutto qui sarà simile a quello che usiamo in Java. Parliamo di quelli principali. Sono solo tre, ne aggiungeremo altri secondo necessità e/o desiderio: “Progetto Java dalla A alla Z”: analisi di database e linguaggio SQL - 9Come si può vedere dalla foto, questi sono:
  • INT - valori interi. Utilizzato per un identificatore univoco e per un numero intero semplice;
  • VARCHAR è la nostra stringa ;
  • DATE è il nostro LocalDate.
Fin qui è tutto semplice, vero? I tipi di campo vengono specificati durante la creazione della tabella. È chiaro che non sarà possibile scrivere nel campo un valore di tipo diverso.

Cosa sono gli operatori SQL

Un operatore è un comando separato che esegue alcune azioni. Gli operatori sono costituiti da frasi, che a loro volta sono costituite da parole chiave utilizzate nelle query. Diamo un'occhiata ad un esempio: “Progetto Java dalla A alla Z”: analisi di database e linguaggio SQL - 10qui è più interessante, qui è già stata creata una query. Cosa stanno facendo lì? È semplice, dice: "Prendi tre campi (Nome, Età e Data di creazione) dalla tabella Clienti, seleziona solo quei record in cui nome è uguale a Romano."

Conclusione

In questo articolo abbiamo iniziato a studiare i database. Abbiamo capito di cosa si tratta e perché ne abbiamo bisogno. Successivamente, abbiamo esaminato i primi segnali di SQL, di cui parleremo più in dettaglio nel prossimo articolo. Come al solito, suggerisco di registrarsi su GitHub e di seguire il mio account per seguire questa serie e gli altri progetti su cui lavoro lì.

Compiti a casa

Per aggiungere interesse a questa serie di articoli su JRTB, di tanto in tanto ci saranno dei compiti a casa. Ad esempio, senza il compito di oggi, il prossimo articolo sarà molto più difficile da capire, perché lì ci sarà molta pratica. Pertanto, il compito è installare il DBMS MySQL sul tuo computer e accedere al database tramite la console o tramite altre soluzioni. Grazie a tutti per aver letto, a presto!

Un elenco di tutti i materiali della serie si trova all'inizio di questo articolo.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION