Esplora SQL
SQL è l'acronimo di Structured Query Language e viene usato per comunicare con un database relazionale. È il linguaggio standard per i sistemi di gestione di database relazionali. Le istruzioni SQL vengono usate per eseguire attività come l'aggiornamento dei dati in un database o il recupero dei dati da un database. Tra i sistemi di gestione di database relazionali comuni che usano SQL ci sono Microsoft SQL Server, MySQL, PostgreSQL, MariaDB e Oracle.
Annotazioni
SQL è stato originariamente standardizzato dall'American National Standards Institute (ANSI) nel 1986 e dall'International Organization for Standardization (ISO) nel 1987. Da allora, lo standard è stato esteso più volte perché i fornitori di database relazionali hanno aggiunto nuove funzionalità ai propri sistemi. Inoltre, la maggior parte dei fornitori di database include le proprie estensioni proprietarie che non fanno parte dello standard, che ha portato a una varietà di dialetti di SQL.
È possibile usare istruzioni SQL come SELECT, INSERT, UPDATE, DELETE, CREATE e DROP per eseguire quasi tutte le operazioni necessarie per un database. Anche se queste istruzioni SQL fanno parte dello standard SQL, molti sistemi di gestione di database hanno anche estensioni proprietarie aggiuntive per gestire le specifiche del sistema di gestione di database. Queste estensioni forniscono funzionalità non coperte dallo standard SQL e includono aree come la gestione della sicurezza e la programmabilità. Ad esempio, Microsoft SQL Server e i servizi di database di Azure basati sul motore di database di SQL Server, usare Transact-SQL. Questa implementazione include estensioni proprietarie per la scrittura di stored procedure e trigger (codice dell'applicazione che può essere archiviato nel database) e la gestione degli account utente. PostgreSQL e MySQL hanno anche versioni specifiche di queste funzionalità.
Alcuni dialetti popolari di SQL includono:
Transact-SQL (T-SQL). Questa versione di SQL viene usata dai servizi Microsoft SQL Server e SQL di Azure.
pgSQL. Questo è il dialetto, con le estensioni implementate in PostgreSQL.
PL/SQL. Questo è il dialetto usato da Oracle. PL/SQL è l'acronimo di Procedural Language/SQL.
Gli utenti che intendono lavorare in modo specifico con un singolo sistema di database devono apprendere le complessità del dialetto e della piattaforma SQL preferiti.
Annotazioni
Gli esempi di codice SQL in questo modulo sono basati sul dialetto Transact-SQL, a meno che non diversamente indicato. La sintassi per altri dialetti è in genere simile, ma può variare in alcuni dettagli.
Tipi di istruzione SQL
Le istruzioni SQL vengono raggruppate in tre gruppi logici principali:
- DDL (Data Definition Language)
- Linguaggio DCL (Data Control Language)
- DML (Data Manipulation Language)
Istruzioni DDL
Le istruzioni DDL vengono usate per creare, modificare e rimuovere tabelle e altri oggetti in un database (tabella, stored procedure, viste e così via).
Le istruzioni DDL (Data Definition Language) più comuni sono:
| Dichiarazione | Descrizione |
|---|---|
CREATE |
Creare un nuovo oggetto nel database, ad esempio una tabella o una vista. |
ALTER |
Modificare la struttura di un oggetto . Ad esempio, modificando una tabella per aggiungere una nuova colonna. |
DROP |
Rimuovere un oggetto dal database. |
RENAME |
Rinominare un oggetto esistente. |
Avvertimento
L'istruzione DROP è molto potente. Quando si elimina una tabella, tutte le righe vengono perse. A meno che non si disponga di un backup, non sarà possibile recuperare questi dati.
Nell'esempio seguente viene creata una nuova tabella di database. Gli elementi tra parentesi specificano i dettagli di ogni colonna, incluso il nome, il tipo di dati, se la colonna deve contenere sempre un valore (NOT NULL) e se i dati nella colonna vengono usati per identificare in modo univoco una riga (CHIAVE PRIMARIA). Ogni tabella deve avere una chiave primaria, anche se SQL non applica questa regola.
Annotazioni
Le colonne contrassegnate come NOT NULL sono denominate colonne obbligatorie . Se si omette la clausola NOT NULL , è possibile creare righe che non contengono un valore nella colonna. Una colonna vuota in una riga ha un valore NULL .
CREATE TABLE Product
(
ID INT PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Price DECIMAL NULL
);
I tipi di dati disponibili per le colonne di una tabella variano tra i sistemi di gestione del database. Tuttavia, la maggior parte dei sistemi di gestione di database supporta tipi numerici come INT (un numero intero o intero), DECIMAL (un numero decimale) e tipi stringa come VARCHAR (VARCHAR è l'acronimo di dati di tipo carattere di lunghezza variabile). Per altre informazioni, vedere la documentazione relativa al sistema di gestione dei database selezionato.
Istruzioni DCL
Gli amministratori di database usano in genere istruzioni DCL per gestire l'accesso agli oggetti in un database concedendo, negando o revocando le autorizzazioni a utenti o gruppi specifici.
Le tre istruzioni DCL principali sono:
| Dichiarazione | Descrizione |
|---|---|
GRANT |
Concedere l'autorizzazione per eseguire azioni specifiche |
DENY |
Negare l'autorizzazione per eseguire azioni specifiche |
REVOKE |
Rimuovere un'autorizzazione concessa in precedenza |
Ad esempio, l'istruzione GRANT seguente consente a un utente denominato user1 di leggere, inserire e modificare i dati nella tabella Product .
GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;
Istruzioni DML
Le istruzioni DML vengono usate per modificare le righe nelle tabelle. Queste istruzioni consentono di recuperare dati (query), inserire nuove righe o modificare righe esistenti. È anche possibile eliminare righe se non sono più necessarie.
Le quattro istruzioni DML principali sono:
| Dichiarazione | Descrizione |
|---|---|
SELECT |
Leggere le righe da una tabella |
INSERT |
Inserire nuove righe in una tabella |
UPDATE |
Modificare i dati nelle righe esistenti |
DELETE |
Eliminare righe esistenti |
La forma di base di un'istruzione INSERT inserirà una riga alla volta. Per impostazione predefinita, le istruzioni SELECT, UPDATE e DELETE vengono applicate a ogni riga di una tabella. In genere si applica una clausola WHERE con queste istruzioni per specificare i criteri; verranno selezionate, aggiornate o eliminate solo le righe che corrispondono a questi criteri.
Avvertimento
SQL non fornisce sei sicuro? quindi fai attenzione quando usi DELETE o UPDATE senza una clausola WHERE perché è possibile perdere o modificare molti dati.
Il codice seguente è un esempio di istruzione SQL che seleziona tutte le colonne (indicate da *) dalla tabella Customer in cui il valore della colonna City è "Seattle":
SELECT *
FROM Customer
WHERE City = 'Seattle';
Per recuperare solo un subset specifico di colonne dalla tabella, elencarle nella clausola SELECT , come illustrato di seguito:
SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle';
Se una query restituisce molte righe, non vengono necessariamente visualizzate in una sequenza specifica. Se si desidera ordinare i dati, è possibile aggiungere una clausola ORDER BY . I dati verranno ordinati in base alla colonna specificata:
SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;
È anche possibile eseguire istruzioni SELECT che recuperano dati da più tabelle usando una clausola JOIN . I join indicano in che modo le righe di una tabella sono connesse con righe nell'altra per determinare quali dati restituire. Una condizione di join tipica corrisponde a una chiave esterna di una tabella e alla relativa chiave primaria associata nell'altra tabella.
La query seguente mostra un esempio che unisce le tabelle Customer e Order . La query usa alias di tabella per abbreviare i nomi di tabella quando si specificano le colonne da recuperare nella clausola SELECT e le colonne da confrontare nella clausola JOIN.
SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM Order AS o
JOIN Customer AS c
ON o.Customer = c.ID
Nell'esempio seguente viene illustrato come modificare una riga esistente usando SQL. Modifica il valore della colonna Address nella tabella Customer per le righe con il valore 1 nella colonna ID . Tutte le altre righe vengono lasciate invariate:
UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;
Avvertimento
Se si omette la clausola WHERE , un'istruzione UPDATE modificherà ogni riga della tabella.
Usare l'istruzione DELETE per rimuovere righe. Specificare la tabella da cui eliminare e una clausola WHERE che identifica le righe da eliminare:
DELETE FROM Product
WHERE ID = 162;
Avvertimento
Se si omette la clausola WHERE , un'istruzione DELETE rimuoverà ogni riga dalla tabella.
L'istruzione INSERT assume una forma leggermente diversa. Specificare una tabella e colonne in una clausola INTO e un elenco di valori da archiviare in queste colonne. SQL standard supporta solo l'inserimento di una riga alla volta, come illustrato nell'esempio seguente. Alcuni dialetti consentono di specificare più clausole VALUES per aggiungere più righe alla volta:
INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);
Annotazioni
In questo argomento vengono descritte alcune istruzioni SQL di base e la sintassi per comprendere in che modo SQL viene usato per lavorare con gli oggetti in un database. Per altre informazioni sull'esecuzione di query sui dati con SQL, vedere il percorso di apprendimento Introduzione alle query con Transact-SQL in Microsoft Learn.