Linguaggi per l'accesso alle basi di dati
I linguaggi per l'accesso alle basi di dati comprendono i seguenti linguaggi:
- Linguaggio di definizione dei dati (data-definition language, DDL)
- Questo linguaggio permettono di definire i tre livelli di astrazione della base di dati: esterno, logico e fisico.
- Linguaggio di manipolazione dei dati (data-manipulation language, DML)
- Questo linguaggio permette di inserire, cancellare, modificare e reperire i dati. Questo linguaggio può essere procedurale (l'utente specifica che dati recuperare e come farlo) o dichiarativo (l'utente specifica che dati recuperare ma non dice come. Il sistema si occupa di implementare le richieste dell'utente).
Il linguaggio SQL è un linguaggio dichiarativo globale che permette sia la definizione dei dati che la loro manipolazione in una base di dati relazionale. Una interrogazione (query) è una istruzione ben formata del linguaggio SQL.
Solitamene l'accesso diretto alla base di dati con l'interprete SQL è effettuato dall'amministratore, dai progettisti e dagli utenti esperti della base. L'accesso più tipico ad una base di dati avviene invece attraverso applicazioni scritte in un linguaggio ad alto livello (C, C++, Java) che richiamano interrogazioni SQL. L'integrazione tra il linguaggio ospite ad alto livello e SQL può avvenire in due modi:
- SQL Embedded
- Questo metodo prevede di introdurre direttamente nel programma sorgente scritto in linguaggio ad alto livello le istruzioni SQL distinguendole con un opportuno separatore. Prima della compilazione del codice un precompilatore traduce le istruzioni SQL in istruzioni del linguaggio ospite.
- Call Level Interface
- Questa soluzione consiste nel mettere a disposizione una libreria di procedure scritte nel linguaggio ad alto livello per realizzare il dialogo con la base di dati. Due esempi di interfacce per la connettività sono ODBC (Open Database Connectivity), sviluppato originariamente da Microsoft e diventato in seguito uno standard, e JDBC (Java Database Connectivity), ideato dalla Sun Microsystems per gestire la connettività di Java verso le basi di dati relazionali.