JavaRush /Java Blog /Random-IT /Analizziamo i database e il linguaggio SQL. (Parte 2) - "...
Roman Beekeeper
Livello 35

Analizziamo i database e il linguaggio SQL. (Parte 2) - "Progetto Java dalla A alla Z"

Pubblicato nel gruppo Random-IT
Un articolo tratto da una serie sulla creazione di un progetto Java (i collegamenti ad altri materiali sono alla fine). Il suo obiettivo è analizzare le tecnologie chiave, il risultato è scrivere un bot di Telegram. "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 1Buona salute, cari lettori. Oggi parleremo un po' e scriveremo di più, perché le nostre mani ricordano molto meglio dei nostri occhi. Forse ti starai chiedendo: perché utilizziamo MySQL? Esistono, ad esempio, lo stesso PostgreSQL e altre soluzioni. Tutto è semplice qui. Prima di tutto, è gratuito. In secondo luogo, ha una comoda interfaccia utente (ne parleremo in un articolo separato). In terzo luogo, mi è familiare e piacevole. Oltre a tutto quanto sopra, anche MySQL è molto comune.

Controllo dei compiti

L'ultima volta ho assegnato un compito: installare MySQL sul mio computer e accedervi. Tramite la console o in qualche altro modo. È tutto fatto? "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 2Bravi a chi lo ha fatto! Non importa quale sia il tuo livello in JavaRush, è importante essere in grado di installare e configurare gli strumenti necessari per lavorare secondo i manuali. E vi assicuro che ce ne saranno molti. Anche coloro che ci hanno provato, ma non ci sono riusciti, non hanno paura. Questo non accade sempre la prima volta: a volte è necessario prendersi una pausa e riprovare con nuove forze. Chi ha installato MySQL tu stesso: scrivi "+" nei commenti in modo che io sappia che qualcuno lo sta facendo. Lo farò anch'io. Dato che non ho più un laptop Windows, lo mostrerò su un MacBook. Non penso che il processo di installazione sarà molto diverso. Per coloro che desiderano installarlo da soli utilizzando il manuale inglese, fare clic qui .

Installazione di MySQL su MacOS

Innanzitutto, recati al seguente link , seleziona il sistema operativo, che sia Windows, Ubuntu o macOS, come mostrato di seguito: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 3Scarica e avvia. Tuttavia, non tutto è andato subito per il verso giusto. Si è scoperto che Apple non consente l'installazione della versione più recente: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 4ovviamente puoi disabilitarlo, ma il MacBook funziona e non giocherò con le sue impostazioni. Pertanto, attraverso tentativi ed errori, ho trovato una versione che può essere installata: questa è la 5.7.21 . Per trovare altre versioni, vai alla scheda Archivio e seleziona la versione desiderata: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 5Successivamente, esegui il file scaricato. Fai clic su Avanti, Avanti, Avanti, ma alla fine fai attenzione! Ci sarà un nome utente e una password per accedere al database. Per me sembrava così: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 6qui dice che ci sarà un utente con il nome root e la password Vac/zto=.24q . Questo completa l'installazione.

Accedi alla riga di comando di MySQL

Per accedere è necessario assicurarsi che il server MySQL sia acceso. Per fare ciò, vai su Preferenze di Sistema , trova lì l'icona MySQL: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 7vai su di essa e vedi che il server deve prima essere acceso. Per fare ciò basta fare clic su Avvia MySQL Server e il gioco è fatto. Sì, puoi anche selezionare la casella in modo che il server si avvii in background ogni volta che si avvia la macchina. "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 8È importante notare che inizierò tutte le richieste nel terminale con il simbolo $ per renderlo chiaro. Successivamente, è necessario connettersi direttamente al server MySQL tramite la riga di comando. Per fare ciò, apri il terminale e scrivi: $ mysql E ci sono due opzioni:
  1. Se la risposta è "ERRORE 1045 (28000): Accesso negato per l'utente 'roman_beskrovnyi'@'localhost' (utilizzando la password: NO" , significa che il server è installato e viene richiamato. È sufficiente passare il comando corretto ad esso.
  2. Se la risposta è comando non trovato: mysql , va bene: semplicemente non c'è collegamento al server. Per fare questo, dovrai creare un alias con la variabile mysql, quindi scriviamo la seguente riga:

    $ alias mysql=/usr/local/mysql/bin/mysql

    Questo aiuterà solo per questa sessione terminale. Ma non ne abbiamo bisogno di altro: sicuramente non lavoreremo sempre tramite il terminale.

  3. MySQL non è installato, non ingannare il tuo computer.
Successivamente, utilizziamo il nome e la password forniti durante l'installazione e scriviamo: $ mysql --user=root -p"Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 9 Lì scriviamo la password e saremo felici in questa forma: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 10Solo l'ultima riga dice che abbiamo effettuato l'accesso a MySQL server terminale. Ma questa password per root si è rivelata una password monouso e deve essere cambiata con un'altra. Per ragioni di sicurezza, ovviamente. Se non lo modifichiamo e proviamo a creare un nuovo database sul server, riceveremo la seguente risposta: ERROR 1820 (HY000): è necessario reimpostare la password utilizzando l'istruzione ALTER USER prima di eseguire questa istruzione . "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 11Sono costretti, per così dire. Bene, ok, è difficile per noi? Rendiamo la password più semplice (questo è solo per il lavoro locale; per il lavoro reale, la password deve essere complessa, ovviamente). Diciamo root∫ , come il nome utente. Per modificare la password è necessario inserire la riga: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; E la risposta sarà questa: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 12Per essere sicuri che tutto funzioni correttamente, proviamo a creare un nuovo database utilizzando la seguente sintassi : $ CREATE DATABASE test_db; Per assicurarti che tale database sia stato creato sul server, scrivi il comando: $ SHOW DATABASES; E come risultato otteniamo quanto segue: "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 13Questo è tutto :) È impossibile dire che sia stato semplice e veloce. Pertanto, chiunque lo abbia fatto da solo, ha un rispetto speciale. Per chi non l'ha fatto, non preoccupatevi, ci sono manuali per tutti i tipi di installazione: Tutto è descritto lì in modo abbastanza sensato. L'unica cosa è che è tutto in inglese. Ora scriviamo le nostre prime righe in SQL.

Scrivere le nostre prime righe in SQL

Come avrai notato sopra, conosciamo due comandi:
  1. CREATE DATABASE - crea un database sul server;
  2. MOSTRA DATABASES - Mostra tutti i database creati e disponibili sul server.
Noto che a SQL non interessa il modo in cui scriviamo i loro comandi: tutti in maiuscolo o no. Tuttavia è considerata buona educazione scrivere i comandi in maiuscolo. Successivamente, per eliminare un database, è necessario scrivere il comando DROP DATABASE database_name ; dove database_name è il nome del database che vogliamo eliminare. Abbiamo già creato un database di test chiamato test_db , quindi eliminiamolo. Per fare questo scriviamo: $ DROP DATABASE test; Vale la pena notare che la risposta Query OK, 0 righe interessate (0,02 sec) è molto importante, poiché conferma che la richiesta è andata a buon fine. Inoltre, ti dice quante righe nelle tabelle è cambiata questa query e in quanto tempo. "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 15In generale, la parola DROP è responsabile della rimozione di qualcosa. In questo caso, abbiamo eliminato il database. Ma questo può essere utilizzato anche per altri scopi (ad esempio, eliminare una tabella). Ed ora, per fidarvi , controllate il risultato, vediamo quanti database sono rimasti: $ SHOW DATABASES; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 16Come possiamo vedere, non esiste un database denominato test_db. CHTD:D

Crea il tuo database e la tua tabella

Creare un database di città: $ CREATE DATABASE city; Per lavorare in un database specifico, è necessario accedere ad esso. Per fare ciò, utilizzare il comando USE nome_database , dopodiché tutti i comandi per lavorare con le tabelle verranno eseguiti in questo database. $ USA città; Come si può vedere dalla risposta - Database modificato , il passaggio a questo database è avvenuto con successo. "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 17Il passo successivo è creare la tabella. Quale? Bene, per prima cosa creiamo una tabella con i paesi. Perché? Perché le città hanno bisogno di una chiave straniera per il paese in cui si trovano. E può essere ottenuto dopo che questi paesi generalmente iniziano ad essere presenti nel database (di seguito - abbreviato dal database). Come ricordiamo dall'articolo precedente , nella tabella in cui sono descritti i paesi, abbiamo due campi: ID e nome, dove ID è un identificatore univoco e nome è il nome del paese. Pertanto, creare un database di questo tipo è facile come sgusciare le pere. Scriviamo: $ CREATE TABLE country (id INT, nome VARCHAR(30)); "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 18Come puoi vedere, tutto è andato bene. Per analogia con SHOW DATABASES, possiamo guardare l'elenco delle tabelle: $ SHOW TABLES; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 19Eccolo, il nostro tavolo. Ora impariamo come eliminare le tabelle. Per fare questo scriviamo: $ DROP TABLE paese; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 20È importante notare che una volta eliminata una tabella o un database, non è possibile ripristinarlo!

Lavorare con il tavolo

Ripristiniamo la tabella che abbiamo creato. Per fare ciò, devi solo ripetere ciò che hai già fatto. Per visualizzare la struttura della tabella, è necessario utilizzare il seguente comando: DESC nome_tabella : $ DESC paese; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 21Come puoi vedere, tutte le informazioni sulla tabella sono registrate qui. Per aggiungere qualcosa a una tabella, è necessario utilizzare il comando INSERT INTO table_name VALUES() . Aggiungiamo tre record per tre paesi: $ INSERT INTO country VALUES (1, 'Ucraina'); $ INSERISCI NEI VALORI del paese (2, 'Russia'); $ INSERT INTO country VALUES(3, 'Bielorussia'); "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 22Per vedere cosa è memorizzato nel database, utilizzeremo una semplice richiesta per ottenere i dati. Per fare ciò, vogliamo ottenere i dati di tutti i campi dalla tabella dei paesi. Ricordatevi attentamente la frase precedente perchè la query sql sarà così: $ SELECT * FROM country; Dove * significa che devi compilare tutti i campi. "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 23Ecco quanto siamo diventati belli. Se vogliamo ottenere solo un campo specifico, non c'è problema: al posto della stella scriviamo i nomi dei campi che devono essere separati da virgole. Provalo tu stesso ;) Abbiamo già creato una tabella, ma per qualche motivo non abbiamo abbastanza informazioni al riguardo. La dimensione della popolazione certamente non farebbe male, giusto? E come si fa?
  1. Aggiungi un nuovo campo allo schema della tabella: popolazione.
  2. Aggiorna le voci esistenti.
Per il primo utilizzeremo il comando ALTER TABLE table_name ADD COLUMN . In generale, ALTER TABLE è un insieme di comandi per le operazioni DDL (ricordate di cosa si tratta? Era nell'articolo precedente). A proposito, SELECT si riferisce a un'operazione DML. Scriviamo quanto segue: $ ALTER TABLE paese ADD COLUMN popolazione INT; $ DESC paese; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 24Come puoi vedere dalla figura, abbiamo aggiunto con successo un nuovo campo alla tabella e verificato con il secondo comando che il campo sia nello schema. Il secondo passaggio consiste nell'aggiornare le voci nella tabella e assegnare i valori. Prendiamo il numero da Wikipedia. Non che mi fidi di loro, ma comunque questo è il modo più semplice e veloce. Per fare ciò, utilizzare un altro comando DML. Ma prima, diciamo cosa vogliamo fare: vogliamo aggiornare la tabella del paese, rendere il campo popolazione uguale a 41806221 nel record dove id = 1. Ed ecco come appare questa costruzione: UPDATE nome_tabella SET riga_tabella1 = valore WHERE riga_tabella2 = valore2; Sulla base di esso scriviamo: $ UPDATE paese SET popolazione = 41806221 WHERE id = 1; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 25Qui abbiamo utilizzato per la prima volta la parola chiave WHERE . È necessario aggiungere valori per il filtraggio. Ad esempio, questa volta abbiamo detto che è necessario aggiornare solo per il campo (i campi) il cui ID è uguale a uno (fino a quando non abbiamo detto a SQL che questa è la chiave primaria - potrebbero essercene diversi). Potremmo anche specificare una condizione come WHERE id > 2. Se non avessimo specificato il filtraggio, questo valore sarebbe stato scritto su tutti i record della tabella. Per Russia, Bielorussia e altri paesi aggiornatevi ;) Ora proviamo a ottenere i dati dalla tabella per i campi nome e popolazione, a condizione che l'id sia maggiore di 1. $ SELECT nome, popolazione FROM paese WHERE id >1; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 26Pertanto, abbiamo ricevuto solo i campi che noi stessi volevamo. Utilizzando INSERT INTO possiamo specificare quali campi vogliamo aggiungere e quali vogliamo lasciare vuoti. Per fare ciò, scriviamo: $ INSERT INTO paese (nome, popolazione) VALUES('Georgia', 1234566); Per verificare cosa è successo, diamo un'occhiata all'elenco di tutti i campi: $ SELECT * FROM country; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 27Senza ID, la voce è errata e la popolazione, ovviamente, è stata presa dalla testa, quindi è necessario eliminarla. Utilizza il comando DELETE FROM nome_tabella : $ DELETE FROM paese WHERE nome = 'Georgia'; "Progetto Java dalla A alla Z": analizziamo i database e il linguaggio SQL.  Parte 2 - 28In questo modo abbiamo imparato come eliminare un campo dalla tabella.

Compiti a casa

I compiti a casa saranno i seguenti:
  1. È necessario aggiungere una chiave primaria (PRIMARY KEY) dal campo ID allo schema della tabella del paese.
  2. Aggiungi un altro paese alla tabella dei paesi: Moldavia.
  3. Secondo lo schema dell'articolo precedente, crea una tabella città, che conterrà tutti i campi descritti. I nomi dei campi saranno i seguenti: id, nome, country_id, popolazione.
  4. Aggiungi una chiave primaria alla tabella della città.
  5. Aggiungi una chiave esterna alla tabella delle città.
Il compito è interessante, per chi ne sa, sarà rapido e semplice. Per coloro che non l'hanno fatto, servirà come eccellente rinforzo del materiale di questo articolo.

Riassumiamo

Abbiamo fatto molte cose in questo articolo. Per prima cosa abbiamo installato e avviato il server del database MySQL. In secondo luogo, abbiamo imparato un intero elenco di parole chiave e query, con l'aiuto delle quali ora possiamo creare/eliminare database e tabelle. Abbiamo imparato come aggiungere dati alle tabelle, aggiornarli ed eliminarli. Ecco tutti i comandi che abbiamo utilizzato, insieme alle loro descrizioni:
  • CREA DATABASE nome_database; - creare un nuovo database
  • MOSTRA DATABASE; — visualizzare l'elenco dei database
  • DROP DATABASE nome_database; - eliminare la banca dati
  • USA nome_database; - lavorare nel database
  • CREATE TABLE nome_tabella (id INT, ....); - creare una tabella
  • MOSTRA TABELLE; — visualizza l'elenco dei tavoli
  • DESC TABLE nome_tabella; — vedere lo schema della tabella
  • DROP TABLE nome_tabella; - eliminare la tabella
  • INSERISCI IN NOME_tabella VALORI (); - aggiungi un campo alla tabella
  • SELECT * FROM nome_tabella WHERE riga_tabella = valore; — ottieni i campi nella tabella sotto la condizione dopo WHERE
  • SELECT * FROM nome_tabella; - ottieni tutti i campi nella tabella
  • ALTER TABLE nome_tabella ADD COLUMN nome_colonna COLUMN_TYPE; - aggiungi un nuovo campo allo schema della tabella
  • AGGIORNA nome_talbe SET riga_talbe1 = valore1 DOVE riga_tabella2 = valore2; — aggiorna i record nella tabella: imposta i valori di un campo in base alla condizione per un altro campo
  • DELETE FROM nome_tabella DOVE riga_tabella1 = valore1; — rimuovere uno o più campi da una tabella in una determinata condizione.
Penso che abbiamo fatto un ottimo lavoro con te. Invito tutti coloro a cui piace il mio lavoro a iscriversi al mio account GitHub , dove pubblico progetti e sviluppi interessanti che stanno accadendo nella mia carriera. Invito chiunque sia interessato a lavorare nell'open source a partecipare ai miei progetti (repository). Grazie a tutti per l'attenzione. Restate sintonizzati per il prossimo articolo sui database in arrivo.

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