L'istruzione SQL SELECT

Recupero dei dati utilizzando l'istruzione SQL Select

SQL è un linguaggio di database completo. SQL, pronunciato Sequel o semplicemente SQL, è un linguaggio di programmazione per computer utilizzato per interrogare database relazionali seguendo un approccio non procedurale. Quando si estraggono informazioni da un database utilizzando SQL, ciò viene definito interrogazione del database.

Un database relazionale viene implementato tramite l'uso di un Relational Database Management System (RDBMS). Un RDBMS esegue tutte le funzioni di base del software DBMS sopra menzionato insieme a una moltitudine di altre funzioni che rendono il modello relazionale più facile da capire e da implementare. Gli utenti di RDBMS manipolano i dati attraverso l'uso di uno speciale linguaggio di manipolazione dei dati. Le strutture del database vengono definite tramite l'uso di un linguaggio di definizione dei dati. I comandi che gli utenti del sistema eseguono per memorizzare e recuperare i dati possono essere inseriti in un terminale con un'interfaccia RDBMS digitando i comandi, oppure inseriti mediante l'uso di qualche tipo di interfaccia grafica. Il DBMS elabora quindi i comandi.

Funzionalità dell'istruzione SELECT

Il recupero dei dati dal database avviene tramite un uso appropriato ed efficiente di SQL. Tre concetti della teoria relazionale comprendono la capacità dell'istruzione SELECT: proiezione, selezione e unione.

  • Proiezione: un'operazione di progetto seleziona solo determinate colonne (campi) da una tabella. La tabella dei risultati ha un sottoinsieme delle colonne disponibili e può includere qualsiasi cosa, da una singola colonna a tutte le colonne disponibili.

  • Selezione: un'operazione di selezione seleziona un sottoinsieme di righe (record) in una tabella (relazione) che soddisfano una condizione di selezione. La capacità di selezionare righe da un set di risultati non completo è chiamata Selezione. Implica il filtro condizionale e la gestione temporanea dei dati. Il sottoinsieme può variare da nessuna riga, se nessuna delle righe soddisfa la condizione di selezione, a tutte le righe di una tabella.

  • Unione: un'operazione di unione combina i dati di due o più tabelle in base a uno o più valori di colonna comuni. Un'operazione di unione consente a un utente del sistema informativo di elaborare le relazioni esistenti tra le tabelle. L'operazione di unione è molto potente perché consente agli utenti del sistema di esaminare le relazioni tra elementi di dati che potrebbero non essere previste al momento della progettazione di un database.

Considera le strutture della tabella sopra. Il recupero di first_name name, department_id e stipendio per un singolo dipendente dalla tabella EMPLOYEES è Proiezione. Il recupero dei dettagli dei dipendenti il ​​cui stipendio è inferiore a 5000, dalla tabella DIPENDENTI è Selezione. Recuperare il nome del dipendente, il nome del reparto entrando a far parte di EMPLOYEES and DEPARTMENTS is Join.

Istruzione SELECT di base

La sintassi di base per un'istruzione SELECT è presentata di seguito.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

La clausola SELECT è obbligatoria e realizza l'operazione di progetto relazionale.

Anche la clausola FROM è obbligatoria. Identifica una o più tabelle e / o viste da cui recuperare i dati della colonna visualizzati in una tabella dei risultati.

La clausola WHERE è facoltativa ed esegue l'operazione di selezione relazionale. Specifica quali righe devono essere selezionate.

La clausola GROUP BY è facoltativa. Organizza i dati in gruppi in base a uno o più nomi di colonna elencati nella clausola SELECT.

La clausola HAVING facoltativa stabilisce le condizioni relative ai gruppi da includere in una tabella dei risultati. I gruppi sono specificati dalla clausola GROUP BY.

La clausola ORDER BY è facoltativa. Ordina i risultati della query in base a una o più colonne in ordine crescente o decrescente.

Espressioni aritmetiche e valori NULL nell'istruzione SELECT

È possibile creare un'espressione aritmetica utilizzando i nomi delle colonne, gli operatori e i valori costanti per incorporare un'espressione in un'istruzione SELECT. L'operatore applicabile a una colonna dipende dal tipo di dati della colonna. Ad esempio, gli operatori aritmetici non si adattano ai valori letterali dei caratteri. Per esempio,

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

La query precedente contiene l'espressione aritmetica (sal * 12) per calcolare lo stipendio annuale di ciascun dipendente.

Operatori aritmetici

Gli operatori agiscono sulle colonne (note come operandi) per ottenere un risultato diverso. In caso di più operatori in un'espressione, l'ordine di valutazione è deciso dalla precedenza dell'operatore. Ecco le regole elementari di precedenza:

  • La moltiplicazione e la divisione si verificano prima dell'addizione e della sottrazione.

  • Gli operatori con la stessa priorità vengono valutati da sinistra a destra.

  • Usa le parentesi per sovrascrivere il comportamento predefinito degli operatori.

La tabella sottostante mostra la precedenza degli operatori, in questi casi. Operatore di livello di precedenza Simbolo Operazione

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest

Esamina le seguenti query (a), (b) e (c)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

La query (a) moltiplica due numeri, mentre (b) mostra l'aggiunta di $ 1500 agli stipendi di tutti i dipendenti. La query (c) mostra l'aggiunta della componente di commissione allo stipendio del dipendente. Come per la precedenza, la prima commissione sarebbe calcolata sullo stipendio, quindi aggiunta allo stipendio.

Alias ​​di colonna

Un alias viene utilizzato per rinominare una colonna o un'espressione durante la visualizzazione. L'alias di una colonna o di un'espressione viene visualizzato come intestazione nell'output di una query. È utile per fornire un'intestazione significativa a espressioni lunghe nella query SELECT. Per impostazione predefinita, l'alias viene visualizzato in maiuscolo nell'output della query senza spazi. Per ignorare questo comportamento, l'alias deve essere racchiuso tra virgolette doppie per preservare le maiuscole e gli spazi nel nome dell'alias.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Operatori di concatenazione

L'operatore di concatenazione può essere utilizzato per unire due espressioni o valori di stringa in una query SELECT. Il simbolo della doppia barra verticale viene utilizzato come operatore di concatenazione di stringhe. È applicabile solo per i valori delle colonne di caratteri e stringhe che risultano in una nuova espressione di caratteri. Esempio

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

La query precedente mostra la concatenazione di due valori letterali di caratteri.

Letterali

Qualsiasi valore hardcoded, che non è memorizzato nel database, nella clausola SELECT, è noto come Literal. Può essere un numero, un carattere o un valore di data. I valori di carattere e data devono essere racchiusi tra virgolette. Considera le query SQL seguenti. Esempi di utilizzo di valori letterali di diversi tipi di dati nelle query SQL.

La query seguente utilizza due caratteri letterali per unirli insieme.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

La query seguente utilizza i caratteri letterali per stampare abbastanza lo stipendio del dipendente.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Operatore preventivo

L'operatore di citazione viene utilizzato per specificare il delimitatore delle virgolette. Puoi scegliere un comodo delimitatore, a seconda dei dati.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

NULLO

Se una colonna non ha un valore definito, viene considerata NULL. Il valore NULL indica sconosciuto o non disponibile. Non è zero per i valori numerici, non uno spazio vuoto per i valori dei caratteri.

Le colonne con valore NULL possono essere selezionate in una query SELECT e possono essere la parte di un'espressione aritmetica. Qualsiasi espressione aritmetica che utilizza valori NULL restituisce NULL. Per questo motivo, le colonne con valore NULL devono essere gestite in modo diverso specificando i loro valori alternativi utilizzando le funzioni fornite da Oracle come NVL o NULLIF.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

Parola chiave DISTINCT

Se si prevede che i dati abbiano risultati duplicati, utilizzare la parola chiave DISTINCT per eliminare i duplicati e visualizzare solo i risultati univoci nell'output della query. Solo le colonne selezionate vengono convalidate per la duplicazione e le righe verranno eliminate logicamente dall'output della query. Per essere notato, la parola chiave DISTINCT deve apparire subito dopo la clausola SELECT.

La semplice query riportata di seguito dimostra l'uso di DISTINCT per visualizzare ID reparto univoci dalla tabella EMPLOYEES.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

DESCRIVERE il comando

I metadati strutturali di una tabella possono essere ottenuti interrogando il database per l'elenco delle colonne che lo compongono utilizzando il comando DESCRIBE. Elencherà i nomi delle colonne utilizzate, la loro proprietà null e il tipo di dati.

Syntax:

DESC[RIBE] [SCHEMA].object name

Per esempio,

DESC EMPLOYEE

mostrerà la struttura della tabella EMPLOYEE cioè le colonne, i loro tipi di dati, la precisione e la proprietà nullable.