SQL Panoramica

Esempio

Algebra relazionale non è un linguaggio SQL in piena regola , ma piuttosto un modo per acquisire una comprensione teorica dell'elaborazione relazionale. In quanto tale, non dovrebbe fare riferimento a entità fisiche come tabelle, record e campi; dovrebbe fare riferimenti a costrutti astratti come relazioni, tuple e attributi. Detto questo, non userò i termini accademici in questo documento e rimarrò fedele ai più noti termini laici - tabelle, record e campi.

Un paio di regole dell'algebra relazionale prima di iniziare:

  • Gli operatori utilizzati nell'algebra relazionale funzionano su intere tabelle anziché su singoli record.
  • Il risultato di un'espressione relazionale sarà sempre una tabella (questa è chiamata la proprietà closure )

In questo documento mi riferirò alle seguenti due tabelle:

Tabelle di esempio

SELEZIONARE

L'operatore select restituisce un sottoinsieme della tabella principale.
seleziona <table> dove <condizione>

Ad esempio, esamina l'espressione:

seleziona Persone dove DepartmentID = 2

Questo può essere scritto come:
inserisci la descrizione dell'immagine qui

Ciò comporterà una tabella i cui record comprendono tutti i record nella tabella Persone in cui il valore DepartmentID è uguale a 2:
inserisci la descrizione dell'immagine qui

Le condizioni possono anche essere unite per limitare ulteriormente l'espressione:

selezionare Persone dove StartYear> 2005 e DepartmentID = 2

risulterà nella seguente tabella:
inserisci la descrizione dell'immagine qui

PROGETTO

L'operatore di progetto restituirà valori di campo distinti da una tabella.
progetto <table> su <field list>

Ad esempio, esaminare la seguente espressione:
progetto People over StartYear

Questo può essere scritto come:
inserisci la descrizione dell'immagine qui

Ciò comporterà una tabella che comprende i valori distinti contenuti nel campo StartYear della tabella People .
inserisci la descrizione dell'immagine qui

I valori duplicati vengono rimossi dalla tabella risultante a causa della proprietà di chiusura che crea una tabella relazionale: tutti i record in una tabella relazionale devono essere distinti.

Se l' elenco dei campi comprende più di un singolo campo, la tabella risultante è una versione distinta di questi campi.
progetto People over StartYear, DepartmentID restituirà:
inserisci la descrizione dell'immagine qui
Un record viene rimosso a causa della duplicazione di StartYear 2006 e 1 DepartmentID .

DANDO

Le espressioni relazionali possono essere concatenate assegnando un nome alle singole espressioni utilizzando la parola chiave giving o incorporando un'espressione in un'altra.

<espressione algebra relazionale> che fornisce <nome alias>

Ad esempio, considera le seguenti espressioni:
seleziona Persone dove DepartmentID = 2 che A
progetto A su PersonName che B

Questo risulterà nella tabella B sottostante, con la tabella A che è il risultato della prima espressione.
inserisci la descrizione dell'immagine qui

La prima espressione viene valutata e alla tabella risultante viene fornito l'alias A. Questa tabella viene quindi utilizzata all'interno della seconda espressione per fornire alla tabella finale un alias di B.

Un altro modo di scrivere questa espressione è di sostituire il nome alias della tabella nella seconda espressione con l'intero testo della prima espressione racchiuso tra parentesi:
progetto ( selezionare People where DepartmentID = 2) su PersonName che fornisce B

Questa è chiamata espressione annidata .

JOIN NATURALE

Un join naturale attacca due tabelle usando un campo comune condiviso tra le tabelle.

unisciti a <table 1> e <table 2> dove <field 1> = <field 2>
supponendo che <campo 1> sia in <tabella 1> e <campo 2> sia in <tabella 2>.

Ad esempio, la seguente espressione di join si unirà a People and Departments in base alle colonne DepartmentID e ID nelle rispettive tabelle:
unisciti a Persone e dipartimenti dove DepartmentID = ID

inserisci la descrizione dell'immagine qui

Si noti che viene visualizzato solo DepartmentID dalla tabella People e non l' ID dalla tabella Department . È necessario mostrare solo uno dei campi confrontati, che generalmente è il nome del campo della prima tabella dell'operazione di join.

Sebbene non mostrato in questo esempio, è possibile che le tabelle di unione possano generare due campi con la stessa intestazione. Ad esempio, se avessi usato il nome dell'intestazione per identificare i campi PersonName e Dept (ad es. Per identificare il nome della persona e il nome del dipartimento). Quando si verifica questa situazione, utilizziamo il nome della tabella per qualificare i nomi dei campi usando la notazione dot: People.Name e Departments.Name

join combinato con select e project possono essere usati insieme per ottenere informazioni:

unisciti a Persone e dipartimenti dove DepartmentID = ID che A
selezionare A dove StartYear = 2005 e Dept = 'Produzione' dando B
progetto B su PersonName che C

o come espressione combinata:

progetto ( selezionare ( unire People and Departments dove DepartmentID = ID) dove StartYear = 2005 e Dept = 'Production') su PersonName che fornisce C

Ciò comporterà questa tabella:
inserisci la descrizione dell'immagine qui

ALIAS

DIVIDERE

UNIONE

INTERSEZIONE

DIFFERENZA

AGGIORNAMENTO (: =)

VOLTE