Nel mondo odierno di maggiore digitalizzazione, big data e cloud computing, la gestione dei dati è tra le competenze più importanti che un ingegnere del software può avere. A tal fine, uno degli strumenti di database più potenti è SQL.
SQL (Structured Query Language) è il linguaggio di programmazione standard utilizzato per manipolare gli oggetti della struttura dei dati. Operano sui dati contenuti in un sistema di gestione di database relazionali (RDBMS). Alcuni noti RDBMS sono MySQL e PostgreSQL.
In questa guida imparerai i sottoinsiemi del linguaggio SQL e come utilizzare alcuni comandi SQL fondamentali, come SELECT
, INSERT
, UPDATE
e DELETE
.
Sottoinsiemi di SQL
L'elenco seguente include i diversi sottoinsiemi di lingua di vari comandi SQL. Ogni sottoinsieme ha la propria funzione e scopo.
- Lingua di definizione dei dati (DDL):consente di creare, eliminare e aggiornare le definizioni dello schema del database (ovvero tabelle e indici), senza manipolare effettivamente i dati all'interno delle tabelle del database.
- Lingua di query dei dati (DQL):DQL viene utilizzato per recuperare i dati dal database utilizzando il
SELECT
dichiarazione. - Lingua di manipolazione dei dati (DML):questo sottolinguaggio consente la manipolazione dei dati nel database utilizzando il
INSERT
,UPDATE
eDELETE
dichiarazioni.
Questa guida utilizza un database di esempio per una scuola per dimostrare ulteriormente i comandi SQL per ogni sottoinsieme sopra elencato. Il database della scuola ha diverse tabelle, per studenti, corsi, voti e così via. La definizione dello Student
la tabella contiene colonne per il SSNumber
dello studente , Firstname
e Lastname
e la definizione del CourseTaken
la tabella contiene colonne per SSNumber
, CourseId
, NumericGrade
e YearTaken
.
L'esempio presuppone che ci siano tre studenti nella scuola, ognuno dei quali ha completato due corsi. I dati di esempio sono mostrati nella tabella seguente:
SSNumero | Cognome | Nome | CourseId | Grado numerico | YearTaken |
---|---|---|---|---|---|
111111111 | Smith | Giovanni | CSC101 | 98 | 2021 |
111111111 | Smith | Giovanni | ITA101 | 95 | 2022 |
222222222 | Jones | Maria | CSC101 | 100 | 2022 |
222222222 | Jones | Maria | EEE101 | 75 | 2022 |
333333333 | Hansen | Robert | POL101 | 92 | 2021 |
333333333 | Hansen | Robert | SOC103 | 84 | 2022 |
Crea, altera e rilascia tabelle usando i comandi SQL
Dalla riga di comando, usa CREATE TABLE
comando seguito dal nome della tabella e dai dati della tabella. Il comando seguente crea lo Student
tabella.
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
La parentesi racchiude i dati della tabella, iniziando con una colonna che etichetta i dati di ogni riga. La colonna successiva indica il tipo di dati che contiene questa riga. CHAR
indica un tipo di dati stringa di lunghezza fissa e VARCHAR
indica un tipo di dati stringa di lunghezza variabile. Nella colonna finale, il NOT NULL
assicura che un record non possa essere aggiunto alla tabella se uno qualsiasi dei NOT NULL
le colonne non hanno dati associati.
Nota Il CREATE TABLE
l'istruzione è delimitata da un punto e virgola finale (;), sebbene sia possibile che alcuni sistemi di database relazionali commerciali non richiedano tale delimitatore.
Nota Salvo diversa indicazione, tutti i comandi del database illustrati in questa guida funzionano bene su entrambi MySQL e PostgreSQL .
Per creare il CourseTaken
tabella, eseguire il comando seguente:
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
Il YearTaken
la colonna non è intenzionalmente inclusa nel CourseTaken
tabella per dimostrare l'utilizzo di ALTER TABLE
comando. Per aggiungere il YearTaken
colonna nel CourseTaken
tabella, non è necessario eliminare il CourseTaken
tavolo interamente. Invece, puoi usare il DDL ALTER TABLE
comando. Il comando seguente altera il CourseTaken
tabella aggiungendo la colonna mancante alla tabella.
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
Il comando sopra segue una sintassi simile a prima. Richiede il nome della tabella e tre argomenti:nome riga, tipo di dati riga e NOT NULL
attributo. Se vuoi eliminare il CourseTaken
tabella completamente, emettere il DDL DROP TABLE
comando seguito dal nome della tabella.
DROP TABLE CourseTaken;
Attenzione L'eliminazione di una tabella elimina tutti i dati nella tabella.
Come inserire dati in una tabella in SQL
Per inserire i dati nella tabella, utilizzare l'SQL INSERT INTO
dichiarazione. Per chiamare questo comando, fornisci il nome della tabella e l'elenco dei nomi di riga (tra parentesi) in cui vuoi inserire i dati. Questo è seguito da VALUES
parola chiave e i valori effettivi (tra parentesi) che si desidera inserire. I valori vengono inseriti nelle righe nell'ordine in cui vengono chiamati.
Nota
- I comandi SQL possono essere suddivisi su più righe. La fine del comando SQL è delimitata da un punto e virgola (
;
).- I dati del carattere sono delimitati da un apostrofo di apertura e chiusura (
‘
), mentre i dati numerici non lo sono.
Il seguente INSERT
i comandi inseriscono tre righe nello Student
tavolo. Questi comandi utilizzano più INSERT
dichiarazioni.
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
Allo stesso modo, puoi anche inserire più righe nella tabella in una singola query SQL come mostrato di seguito:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
NotaPuoi usare il
INSERT INTO
comando in modo simile in PostgreSQL per aggiungere righe alla tabella. Assicurati che i valori corrispondano all'ordine delle colonne nella definizione della tabella.INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Elimina dati da una tabella
Per eliminare i dati da una tabella, utilizzare l'SQL DELETE FROM
dichiarazione. Usa il WHERE
clausola per specificare la condizione e, se è presente più di una condizione, utilizzare AND
clausola insieme a WHERE
.
Ad esempio, il comando seguente elimina un record da CourseTaken
tabella con SSNumero 333333333
e ID corso POL101
.
Attenzione Se ometti il WHERE
clausola, tutti i record nella tabella vengono eliminati.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
Comando SQL per aggiornare i dati in una tabella
Per aggiornare il record esistente in una tabella, utilizzare l'SQL UPDATE
comando. Il SET
La clausola viene utilizzata per impostare (aggiornare) un nuovo valore in una particolare colonna e il WHERE
viene utilizzata per aggiornare le righe selezionate.
Ad esempio, il comando seguente aggiorna NumericGrade
colonna del CourseTaken
tabella per i record con SSNumber 222222222
e ID corso EEE101
.
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
Comando SQL per recuperare i dati da una tabella
Il vero potere dei sistemi di database relazionali sta nella sua capacità di recuperare informazioni in uno schema multi-tabella, tramite l'SQL SELECT
comando e la possibilità di unire tabelle tramite chiavi comuni. Sebbene questa guida introduttiva non esamini la creazione di chiavi e indici utilizzando tali chiavi, utilizza il SSNumber
colonna di ogni tabella come veicolo (chiave) per mettere in relazione (o unire) le tabelle per generare informazioni. Gli esempi seguenti forniscono diversi casi d'uso dell'utilizzo di SQL SELECT
comando dalla riga di comando.
Esempio 1: Per recuperare l'elenco di tutti gli studenti della scuola.
SELECT * from Student;
Risultato:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Esempio 2: Per recuperare l'elenco di tutti gli studenti e dei corsi che hanno frequentato.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Risultato:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Nota Nel comando sopra, le due tabelle,Student
eCourseTaken
si uniscono per recuperare le informazioni richieste. I nomi delle colonne inSELECT
eWHERE
le clausole sono precedute dai nomi delle tabelle per chiarezza. Tuttavia, nel caso delSSNumber
colonna, è necessario specificare i prefissi dei nomi di tabella appropriati, poiché entrambe le tabelle condividono lo stesso nome di colonna. IlFROM
La clausola indica le tabelle utilizzate in questa query.
Esempio 3: Recupera l'elenco degli studenti con CourseId CSC101
e l'anno in cui hanno frequentato questo corso.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Risultato:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Esempio 4: Recupera l'elenco dei nomi degli studenti, dei corsi seguiti e dei voti ricevuti, per quelli con voti del corso superiori a 90
.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Risultato:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Nota Il AND
La clausola nel comando sopra ti consente di filtrare i risultati mediante un test con punteggio condizionale.
Conclusione
Questa guida sui comandi SQL è una guida introduttiva su come creare schemi di database e manipolare i dati all'interno di tali database. Sebbene i concetti qui introdotti si limitino a scalfire la superficie per quanto riguarda l'utilizzo dei sistemi di database relazionali, è un buon punto di partenza per comandi e concetti di base ed essenziali.