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. A 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'è
Un 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: L'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. In 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: risulta quindi che ogni oggetto della classe City è un record in una tabella del database.Chiave primaria
Accade 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 .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: qui 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: Come 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.
GO TO FULL VERSION