La maggior parte delle moderne applicazioni Web oggi interagisce con i database, di solito con un linguaggio chiamato SQL. Fortunatamente per noi, questa lingua è abbastanza facile da imparare. In questo articolo, inizieremo con alcune query SQL di base e li useremo per interagire con un database MySQL.
SQL (Structured Query Language) è un linguaggio progettato per interagire con i sistemi di gestione dei database relazionali (RDBMS), come MySQL, Oracle, Sqlite, ecc. Per eseguire le query SQL in questo articolo, suggerisco di avere installato MySQL. Raccomando anche phpMyAdmin come interfaccia visiva per MySQL.
Le seguenti applicazioni semplificano l'installazione di MySQL e phpMyAdmin sulla tua macchina locale:
Useremo la riga di comando per le query. WAMP è già dotato di una console MySQL. Per MAMP, puoi leggere questo articolo.
Ecco la nostra prima domanda. Stiamo per creare un database con cui lavorare.
Per prima cosa, apri la tua console MySQL e accedi. Per WAMP, la password predefinita è vuota. Per MAMP, la password dovrebbe essere 'root' per impostazione predefinita.
Dopo aver effettuato l'accesso, digita questa query e premi invio:
CREATE DATABASE my_first_db;
Nota che il punto e virgola (;) viene aggiunto alla fine della query, proprio come alla fine delle righe di codice.
Inoltre, le parole speciali 'CREATE DATABASE' sono case insensitive, insieme a tutte le parole speciali in SQL. Ma per motivi di leggibilità, li scriveremo in maiuscolo.
Se si desidera impostare il set di caratteri e le regole di confronto predefiniti, è possibile scrivere la stessa query in questo modo:
CREATE DATABASE my_first_db SET DI CARATTERE PREDEFINITO utf8 COLLATE utf8_general_ci;
Ecco una lista di set di caratteri e regole di confronto supportati in MySQL.
Questa query viene utilizzata per ottenere un elenco di tutti i database che hai.
È possibile eliminare un database esistente con questa query.
Fai attenzione a questa query, perché non ti dà alcun avvertimento. Se hai tabelle e dati sotto il database, saranno tutti cancellati all'istante.
Questo tecnicamente non è una domanda. È una "dichiarazione" e non richiede un punto e virgola alla fine.
Indica a MySQL di selezionare un database predefinito con cui lavorare, per la sessione corrente. Ora siamo pronti per creare tabelle e fare altre cose sotto questo database.
Puoi pensare a una tabella di database come un foglio di calcolo o un file CSV che contiene dati strutturati.
Proprio come in questo esempio, le tabelle hanno nomi di colonne e righe di dati. Con le query SQL possiamo creare queste tabelle. Possiamo anche aggiungere, leggere, aggiornare e cancellare i dati.
Con questa query possiamo creare tabelle nel database. Sfortunatamente la documentazione di MySQL non è molto amichevole per i nuovi studenti. La struttura di questo tipo di query può diventare molto complessa, ma inizieremo con una semplice.
La seguente query creerà una tabella con 2 colonne.
CREA TABELLA utenti (username VARCHAR (20), create_date DATE);
Si noti che siamo in grado di scrivere una query su più righe e persino utilizzare le schede per il rientro.
La prima linea è facile. Creiamo solo una tabella denominata 'utenti'. Dopodiché, nelle parestes, abbiamo una colonna della tabella di lista separata da virgole. Dopo il nome di ogni colonna, abbiamo un tipo di dati, come VARCHAR o DATE.
VARCHAR (20) significa che la colonna è un tipo di stringa e può avere una lunghezza massima di 20 caratteri. DATE è anche un tipo di dati utilizzato specificamente per la memorizzazione delle date, in questo formato: "AAAA-MM-GG".
Prima di eseguire quella query, dovremmo includere anche una colonna per "user_id", che sarà una PRIMARY KEY. Senza entrare troppo nei dettagli, puoi pensare a una CHIAVE PRIMARIA come modo per identificare ogni riga di dati in una tabella.
Ora la query diventa:
CREA TABELLA utenti (user_id INT AUTO_INCREMENT PRIMARY KEY, nome utente VARCHAR (20), create_date DATE);
INT rende questo un tipo intero a 32 bit (cioè numerico). AUTO_INCREMENT genera automaticamente un nuovo numero ID ogni volta che aggiungiamo nuove righe di dati. Non è richiesto, ma lo rende molto più conveniente.
Questa colonna non deve essere un numero intero, ma è il tipo più utilizzato. Non è richiesta anche la colonna PRIMARY KEY, ma è fortemente raccomandata per una buona progettazione e prestazioni del database.
Eseguiamo la query:
Questa query consente di ottenere un elenco di tabelle attualmente presenti nel database.
Per vedere la struttura di una tabella esistente, puoi usare questa query.
I campi (aka colonne) sono elencati nei risultati, con le loro proprietà.
Proprio come i DATABASE DROP, questa query cancella una tabella e il suo contenuto, senza alcun avviso.
Questa query può anche avere una struttura abbastanza complessa a causa della moltitudine di modifiche che può eseguire su una tabella. Diamo un'occhiata ad alcuni semplici esempi.
(Assicurati di ricreare la tabella che abbiamo appena abbandonato o che le seguenti query ovviamente non funzioneranno.)
ALTER TABLE users AGGIUNGI email VARCHAR (100) DOPO il nome utente;
Grazie alla leggibilità di SQL, non penso che la query abbia bisogno di una spiegazione.
Anche questo è stato molto semplice. Ma usalo con cautela poiché rimuove permanentemente i dati senza un avviso.
Riaggiungi la colonna email perché la useremo in seguito:
ALTER TABLE users AGGIUNGI email VARCHAR (100) DOPO il nome utente;
A volte potresti voler cambiare le proprietà di una colonna, quindi non devi eliminarlo e ricrearlo.
Questo ha rinominato la colonna username in "user_name" e ha cambiato il tipo da VARCHAR (20) a VARCHAR (30). Una modifica come questa non dovrebbe disturbare nessuno dei dati esistenti nella tabella.
Aggiungiamo alcuni dati nella tabella utilizzando questa query.
Come puoi vedere, VALUES () contiene l'elenco dei valori dei campi, separati da virgole. I valori di stringa sono racchiusi tra virgolette singole. E i valori devono essere nell'ordine delle colonne che sono state definite quando abbiamo creato la tabella.
Si noti che il primo valore è NULL per il campo PRIMARY KEY che abbiamo chiamato 'user_id'. Lo facciamo in modo che venga generato automaticamente un ID, perché la colonna è impostata su AUTO_INCREMENT. Quando inserisci una riga di dati per la prima volta, l'ID sarà 1. La riga inserita successiva sarà 2 e così via ...
Ecco un'altra sintassi per l'inserimento di righe.
Questa volta stiamo usando la parola chiave SET invece di VALORI, e non è seguita da parate. Ci sono alcune cose da notare qui:
Ecco un'altra sintassi.
Ancora una volta, poiché ogni colonna fa riferimento al nome, possono essere in qualsiasi ordine.
È possibile utilizzare questa query per ottenere l'ID AUTO_INCREMENT dell'ultima riga inserita, nella sessione corrente.
Penso che sia un buon momento per dimostrare come è possibile utilizzare una funzione MySQL all'interno delle query.
La funzione NOW () restituisce la data corrente. Quindi puoi usarlo per impostare automaticamente una colonna DATE sul giorno corrente mentre inserisci una nuova riga.
Si noti che abbiamo ricevuto un avviso da MySQL, ma non è un grosso problema. Il motivo è che NOW () restituisce effettivamente anche le informazioni sull'ora.
Ma la colonna create_date che abbiamo creato contiene solo la data e non l'ora, quindi i dati restituiti sono stati troncati. Potremmo usare invece la funzione CURDATE (), che restituisce solo la data, ma i dati memorizzati alla fine sarebbero uguali in entrambi i casi.
Ovviamente i dati che abbiamo aggiunto sarebbero inutili a meno che non possiamo leggerlo. È qui che entra in gioco la query SELECT.
Ecco la query SELECT più semplice possibile per la lettura da una tabella:
In questo caso, l'asterisco (*) significa che abbiamo chiesto di recuperare tutte le colonne dalla tabella. Se si desidera solo colonne specifiche, la query sarà simile a questa:
Più spesso, siamo interessati solo ad alcune delle righe, e non a tutte. Ad esempio, supponiamo di volere l'indirizzo email per l'utente "nettuts".
Pensalo come una dichiarazione IF. WHERE ti consente di inserire le condizioni nella query per i risultati che stai cercando.
Nota che per la condizione di uguaglianza, viene utilizzato un solo segno di uguale (=), invece di doppio (==) a cui potresti essere abituato dalla programmazione.
Puoi usare anche altre condizioni di confronto:
AND e OR possono essere usati per combinare le condizioni:
Si noti che i valori numerici non devono essere racchiusi tra virgolette.
Questo è utile per la corrispondenza di più valori.
Questo ti permette di fare ricerche con caratteri jolly.
Il segno percentuale (%) viene utilizzato come carattere jolly.
Se si desidera che i risultati vengano restituiti in un ordine specifico, utilizzare questa clausola:
L'ordine predefinito è ASC (vale a dire in ordine crescente). È possibile aggiungere DESC per invertire l'ordine.
È possibile limitare il numero di risultati restituiti.
LIMIT 2 ottiene solo i primi 2 risultati. LIMIT 1 OFFSET 2 ottiene 1 risultato, dopo i primi 2 risultati. LIMIT 2, 1 significa la stessa cosa, ma nota che il primo numero è l'offset e il secondo numero è il limite.
Questa query viene utilizzata per l'aggiornamento dei dati in una tabella.
La maggior parte delle volte, viene utilizzata con una clausola WHERE, poiché si desidera aggiornare solo le righe specifiche. Se non viene fornita una clausola WHERE, tutte le righe verranno aggiornate con le stesse modifiche.
È inoltre possibile utilizzare una clausola LIMIT per limitare il numero di righe da aggiornare.
Proprio come UPDATE, anche questa query viene solitamente utilizzata con una clausola WHERE.
Per eliminare l'intero contenuto di una tabella, puoi fare questo:
CANCELLA DA utenti;
Ma di solito è più efficiente in termini di prestazioni usare TRUNCATE.
TRUNCATE reimposta anche i numeri AUTO_INCREMENT in modo che una nuova riga abbia nuovamente l'ID 1. Ma questo non accade con una query DELETE e il contatore continua a salire.
Alcuni personaggi devono essere sfuggiti, altrimenti puoi avere problemi.
La barra rovesciata (\) viene utilizzata per l'escape.
Questo è anche molto importante per motivi di sicurezza. Ogni input dell'utente che entra nel database deve essere opportunamente scappato. In PHP, usi la funzione mysql_real_escape_string () o usi le istruzioni preparate poiché eseguono automaticamente l'escape.
Poiché MySQL ha molte parole speciali come SELECT o UPDATE, puoi evitare la collisione inserendo virgolette tra i nomi di tabelle e colonne. Ma queste non sono le virgolette regolari; è necessario utilizzare il carattere backtick (').
Supponiamo che tu voglia aggiungere una colonna chiamata "cancella" per qualche motivo:
Grazie per aver letto l'articolo Spero di essere in grado di mostrarti che SQL ha una curva di apprendimento facile ma è molto potente.
Si prega di lasciare i vostri commenti e domande, e buona giornata!
Sei pronto a portare le tue abilità a un livello superiore e a trarre profitto dagli script e dai componenti? Dai un'occhiata al nostro marketplace, CodeCanyon.