Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Databases

SQL per Principianti

by
Length:MediumLanguages:

Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)

La maggior parte delle moderne applicazioni web interagiscono con la basedati solitamente con un linguaggio chiamato SQL. Fortunatamente per noi , questo linguaggio è facile da imparare. In questo articolo, inizieremo con alcune interrogazioni SQL di base e le utilizzeremo per interfacciarci con il database MySql.

Di cosa avete bisogno.

SQL(Linguaggio di interrogazione strutturata) è un linguaggio per interagire con un sistema di gestione di basedati relazionali (RDBMS), come MySql,Oracle, Sqlite etc...Per eseguire le interrogazioni in questo articolo, vi suggerisco di aver installato MySql. Vi raccomando anche phpMyAdmin come interfaccia visuale con MySql.

Le seguenti applicazioni consentono di installare facilmente entrambe MySql e phpMyAdmin sulla vostra macchina.

Utilizzeremo la linea comando per le interrogazioni. WAMP dispone già della Console con MySql. Per MAMP, se volete potete leggere questo articolo.

CREATE DATABASE: Creazione di un Database

Qui eseguiremo la nostra prima interrogazione: Creiamo un database su cui lavoreremo nel corso del tutorial.

Per prima cosa, aprite la vostra Console MySQL e accedete. Per WAMP, la passward di default è blank. Per MAMP, la password di default dovrebbe essere 'root'.

Acceduti nel sistema, scrivete questa query e spingete invio:

Notate che il punto e virgola (;) è aggiunto alla fine della query, come avviene alla fine delle linee di codice.

Anche, le parole speciali 'CREATE DATABASE' non sono sensibili al carattere , insieme a tutte le parole speciali in SQL. Ma per una questione di leggibilità , le scriveremo tutte in maiuscolo.

Optional : Set di Caratteri e Regole di confronto

Se desiderate impostare il set di caratteri di default e le regole di confronto potete scrivere invece, la stessa query come questa:

Qui c'è l'elenco dei set di caratteri e regole di confronto supportate in MySQL

SHOW DATABASE : Elenca Tutti i Database

Questa query viene utilizzata per ottenere la lista di tutti i database esistenti.

DROP DATABASE: Cancella un database

Potete cancellare un database esistente con questa query:

Fate attenzione con questa query, perchè non vi da nessun avvertimento. Se ci sono delle tabelle e dei dati nel database, verranno cancellati all'istante.

USE : Selezionare un database

Questa tecnicamente non è una query. E' una dichiarazione e non richiede il punto e virgola alla fine.

indica a MySQL, di selezionare il database di default su cui lavorare, per la sessione corrente. Adesso siamo pronti per creare le tabelle e fare altre cose sotto questo database.

Che cos'è una tabella di un database?

Potete pensare ad una tabella di un database come ad un foglio elettronico o un file csv che contiene dei dati strutturati.

Proprio come in questo esempio, le tabelle hanno nomi per le colonne e righe per i dati. Con le query SQL possiamo creare queste tabelle. Possiamo anche aggiungere, leggere, aggiornare e cancellare i dati.

CREATE TABLE : Creazione di una tabella

Con questa query possiamo creare una tabella nel database. Sfortunatamente la documentazione MySQL non è molto semplice per i neofiti. La struttura di questo tipo di query potrebbe essere molto complessa, ma cominceremo con una semplice.

La query seguente creerà una tabella con 2 colonne.

Notate che siamo in grado di scrivere una query su più righe e persino utilizzare il tab per l'indentazione.

La prima riga è facile. Abbiamo appena creato una tabella chiamata 'utenti'. Successivamente, fra parentesi, abbiamo elencato le colonne della tabella sepatate dalla virgola. Dopo ogni nome colonna, abbiamo il tipo dato ad esempio VARCHAR o DATE.

VARCHAR (20) significa che la colonna è  di tipo stringa e può essere lunga al massimo 20 caratteri. DATE è anch'esso un tipo di dato , utilizzato nello specifico per memorizzare le date nel formato 'YYYY-MM-DD'.

PRIMARY KEY

Prima di eseguire la query, dobbiamo includere anche una colonna per l'identificativo utente l' 'id_user', che sarà la PRIMARY KEY. Senza entrare troppo nei dettagli, pensate alla PRIMARY KEY come al modo per identificare ogni singola riga della tabella.

Adesso la query diventa:

INT rende questo tipo un numero intero a 32 bit (cioè numerico). AUTO_INCREMENT genera automaticamente un nuovo idetificativo numerico ogni volta che viene aggiunta una riga. Non è necessario, ma lo rende molto più conveniente.

Questa colonna non deve essere un numero intero, ma è il tipo più comunemente usato. Avere una colonna PRIMARY KEY, inoltre, non è obbligatorio, ma è fortemente consigliato per un buon design e le prestazioni del database.

Eseguiamo la query:

SHOW TABLE : Elenca tutte le tabelle

Questa query ci permette di ottenere la lista di tutte le tabelle che sono attualmente nel database.

EXPLAIN: Mostra la struttura delle tabelle

Per vedere la struttura di una tabella esistente, potete usare questa query:

I campi (colonne aka) sono elencate nel risultato, con le loro proprietà.

DROP TABLE : Cancellare una tabella

Proprio come la query DROP DATABASE, questa cancella una tabella ed il suo contenuto senza avvisi.

ALTER TABLE : Modificare una tabella

Questa query può anche avere una struttura piuttosto complessa a causa della moltitudine di modifiche che può eseguire sulla tabella. Diamo un'occhiata a qualche semplice esempio.

(Assicuratevi di ri-creare la tabella che abbiamo appena cancellato o le domande seguenti, ovviamente, non funzioneranno.)

Aggiungere una Colonna 

Grazie alla leggibilità di SQL, non penso che questa query necessiti di una spiegazione.

Rimuovere una Colonna

Anche questa è molto semplice. Ma utilizzatela con attenzione rimuove permanentemente i dati senza avviso.

Aggiungete di nuovo la colonna email, perchè la useremo più tardi.

Modificare una Colonna

A volte vorreste cambiare le proprietà di una colonna, senza doverla cancellare e ricreate.

Abbiamo rinominato la colonna 'user_name' e modificato la tipologia da VARCHAR (20) a VARCHAR(30). Una modifica come questa non dovrebbe interferire sui dati presenti all'interno della tabella.

INSERT: Aggiungere dati in una tabella

Aggiungiamo alcune informazioni nella tabella utilizzando questa query.

Come potete vedere, VALUES() contiene l'elenco dei valori del campo , separati da virgola. I valori delle stringhe sono complesi in singole virgolette. Ed i valori devono essere inseriti nell'ordine delle colonne, definito quando è stata creata la tabella.

Notate che il primo valore è NULL per il campo PRIMARY KEY, che chiamiamo 'user_id'. Facciamo questo cosi un id viene generato automaticamente, perchè la colonna è impostata in AUTO_INCREMENT. Quando si inserisce una riga per la prima volta, l'id sarà 1. La riga successivamente inserita sarà 2 e cosi via..

Sintassi Alternativa

Qui c'è un'altra sintassi per l'inserimento di righe.

Questa volta utilizzeremo la parola chiave SET invece di VALUES, e non è seguita dalle parentesi. Ci sono alcune cose da notare qui:

  • Una colonna può essere omessa. Per esempio non abbiamo assegnato un valore allo user_id , il quale verrà assegnato di default con la funzionatità AUTO_INCREMENT. Se omettete una colonna VARCHAR,di default sarebbe una stringa vuota((a meno che non venga specificato un valore predefinito diverso durante la creazione della tabella).
  • Ogni colonna deve essere referenziata con il proprio nome. Per questo , possono essere in qualsiasi ordine, a differenza della sitassi precedente.

Sintassi Alternativa 2

Qui c'è ancora un'altra sintassi.

Di nuovo, poiché ogni colonna viene riferita per nome, possono essere in qualsiasi ordine.

LAST_INSERT_ID()

Potete usare questa query per recuperare l'id autogenerato dell'ultima riga inserita, nella sessione corrente.

NOW()

Credo è un buon modo per dimostrate come potete usare le funzioni MySQL all'interno delle vostre query.

La funzione NOW() restituisce la data corrente. Cosi la potete usare per impostare automaticamente la colonna DATE con la data del giorno corrente mentre inserite.

Notate che riceverete una avviso da MySQL , ma non è un grosso problema. La ragione è che NOW () restituisce effettivamente anche informazioni sul tempo.

Ma la colonna create_date che abbiamo creato contiene solo la data e non l'ora, perciò la data restituita viene troncata. Invece possiamo utilizzare la funzione CURDATE(), che restituisce solo la data, ma i dati memorizzati alla fine sarebbero comunque gli stessi.

SELECT : Leggere i dati dalla tabella

Ovviamente i dati che abbiamo aggiunto sarebbero inutili se non li potessimo leggere. Questo è dove la query SELECT entra in gioco.

Qui c'è la query di SELECT più semplice possibile per leggere i dati dalla tabella.

In questo caso l'asterisco(*) significa che è stato richiesto di prendere tutte le colonne della tabella. Se volete solo delle colonne specifiche, la query sarebbe simile a questa.

la clausola WHERE

Assai spesso, ci interessano solo alcune delle righe e non tutte. Per esempio, diciamo che volgliamo l'indirizzo email dell'utente 'nettuts'.

Penda a questo come ad un'istruzione IF. la clausola WHERE consente di inserire una condizione nella query per ottenere il risultato desiderato.

Notate che per la condizione di uguaglianza, viene utilizzato un sigolo uguale (=), invece di due (==),che potrebbero essere utilizzati per la programmazione.

Potete usare anche un'altra condizione comparativa:

AND oppure OR possono essere utilizzati per combinare le condizioni:

Notate che i valori numerici non devone essere tra virgolette.

IN()

Questa funzione di solito è per confrontare valori multipli.

LIKE

Questo permette di fare ricerche con caratteri jolly.

Il simbolo percentuale (%) è utlizzato come carattere jolly.

La clausola ORDER BY

Se volete che i dati vengano restituiti secondo un ordine specifico, utilizzate questa clausola.

L'ordinamento di default è ASC (ascendente). Potete aggiungere DESC per l'ordine inverso.

LIMIT ...OFFSET ...

Potete limitare il numero dei risultati restituiti.

LIMIT 2 prende solo i primi due risultati. LIMIT 1 OFFSET 2 prende 1 risultato dopo i primi 2. LIMIT 2, 1 significa la stessa cosa, ma notate che il primo numero è l'OFFSET ed il secondo il LIMIT.

UPDATE : Aggironare i dati nella Tabella

Questa query è utilizzata per aggiornare i dati in una tabella.

Per la maggior parte del tempo, viene utilizzata con una clausola WHERE , perchè dovete aggiornare solo delle righe specifiche. Se la clausola WHERE non viene fornita, tutte le righe verranno aggiornate con la stessa modifica.

Potete utilizzare anche la clausola LIMIT, per limitare il numero di righe da aggiornare.

DELETE : Cancellare i dati da una tabella

Proprio come l'UPDATE, questa query viene utilizzata di solito con una clausola WHERE.

TRUNCATE TABLE

Per cancellare l'intero contenuto di una tabella, potete fare solo questo:

Ma, invece è solitamente molto più veloce ed efficiente  utilizzare TRUNCATE.

TRUNCATE inoltre, reimposta il valore dell'AUTO_INCREMENT cosi una nuova riga avrà di nuovo l'id 1. Ma questo non accade con la query DELETE, ed il contatore continua ad andare avanti.

Valore delle stringhe di evasione e parole speciali

Valori Stringhe

Alcuni tipi di carattere devono essere evasi,altimenti potreste avere dei problemi

Il Backslash (\) è utilizzato per l'evasione.

Questo è importante anche per ragioni di sicurezza. Qualsiasi input dell'utente che entra nel database deve essere adeguatamente evaso. In PHP, utilizzate la funzione mysql_real_escape_string() o utilizzate istruzioni preparate in modo che eseguono l'evasione in automatico.

Parole Speciali

Dal momento che MySQL ha molte parole speciali come SELECT o UPDATE, è possibile impedire la collisione mettendo le virgolette per racchiudere i nomi di tabella e di colonna. Ma queste non sono le virgolette regolari; è necessario utilizzare il carattere di apice inverso (').

Diciamo che si desidera aggiungere una colonna denominata 'Elimina' per qualche motivo:

Conclusione

Grazie per la lettura dell'articolo. Spero di essere stato in grado di mostrarvi che SQL ha un curva di apprendimento facile, ma è molto potente.

Vi prego  di lasciare i vostri commenti e domande e vi auguro una buona giornata!

Pronto a portare le vostre abilità ad un livello successivo e iniziare a trarre profitto dal vostro script e componenti? Scopri la nostro Marketplace, CodeCanyon

CodeCanyon

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.