Corso
Un database modella entità reali come professori e università memorizzandole in tabelle. Ogni tabella contiene dati di un unico tipo di entità. Questo riduce la ridondanza perché ogni entità viene archiviata una sola volta. Per esempio, basta una sola riga di dati con i dettagli di una determinata azienda. Infine, un database può essere usato per modellare le relazioni tra le entità.
SQL sta per Structured Query Language, ovvero un linguaggio per archiviare, manipolare e recuperare dati memorizzati in un database relazionale.
SQL è il linguaggio standard per i sistemi di database relazionali. Tutti i Relational Database Management System (RDMS) come MySQL, MS Access, Oracle, Sybase, Informix, Postgres e SQL Server usano SQL come linguaggio standard per i database.
Database PostgreSQL
information_schema è un meta-database che contiene informazioni sul tuo database corrente. Non è specifico di PostgreSQL ed è disponibile anche in altri sistemi di gestione di database come MySQL o SQL Server. information_schema ha diverse tabelle che puoi interrogare con la nota sintassi SELECT * FROM:
- tables: informazioni su tutte le tabelle nel tuo database corrente
- columns: informazioni su tutte le colonne di tutte le tabelle nel tuo database corrente
SELECT table_schema, table_name
FROM information_schema.tables;
table_schema | table_name
-------------------+------------------------------
pg_catalog | pg_statistic
pg_catalog | pg_type
pg_catalog | pg_policy
pg_catalog | pg_authid
pg_catalog | pg_shadow
public | university_professors
pg_catalog | pg_settings
...
Comandi in SQL
Data Definition Language (DDL)
- CREATE: crea una nuova tabella o una vista di una tabella.
- ALTER: modifica una tabella esistente.
- DROP: elimina l’intera tabella o altri oggetti nel database.
Data Manipulation Language (DML)
- SELECT: estrae determinati record da una o più tabelle.
- INSERT: crea un record nella tabella esistente.
- UPDATE: modifica un record esistente della tabella.
- DELETE: elimina i record nella tabella e può eliminare anche l’intera tabella.
Esaminare le colonne di una determinata tabella
information_schema contiene anche informazioni sulle colonne nella tabella "columns". Una volta che conosci il nome di una tabella, puoi interrogarne le colonne accedendo alla tabella "columns".
SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'pg_config';
table_name | column_name | data_type
-----------+-------------+-----------
pg_config | name | text
pg_config | setting | text
Qui vedi che la tabella di sistema pg_config ha solo due colonne, presumibilmente per memorizzare coppie nome-valore.
Esempio interattivo
In questo esercizio, ti serviranno solo le informazioni dallo schema 'public', che è indicato come colonna table_schema delle tabelle tables e columns. Lo schema 'public' contiene informazioni su tabelle e database definiti dagli utenti. Gli altri tipi di table_schema contengono informazioni di sistema: qui ci interessano solo gli elementi definiti dall’utente.
Otterrai informazioni su tutti i nomi delle tabelle nel database corrente limitando la query allo 'public' table_schema.
## Query the right table in information_schema
SELECT table_name
FROM information_schema.tables
## Specify the correct table_schema value
WHERE table_schema = 'public';
Eseguendo il codice sopra, si ottiene il seguente risultato:

Per saperne di più sui database relazionali in SQL, guarda questo video dal nostro corso Introduction to Relational Databases in SQL.
Questo contenuto è tratto dal corso Introduction to Relational Databases in SQL di Timo Grossenbacher su DataCamp.
Dai un’occhiata anche al nostro tutorial Introduction to Indexing in SQL.

