Perché le espressioni di colonna vengono prima dei riferimenti di tabella nelle query SELECT?

2

Mi sembra strano che le espressioni di colonna (tutto tra SELECT e FROM ) in un'istruzione SQL SELECT vengano prima dei riferimenti di tabella, quando le espressioni di colonna dipendono direttamente dagli alias, join e sottoquery della tabella Riferimenti. Il contrario non è spesso il caso, così spesso finisco sempre per scrivere i riferimenti del tavolo, soprattutto con query complesse. Questo rende la scrittura delle query meno lineare in tutti i casi, quindi sono curioso di sapere se c'è qualche motivo storico e / o pratico dietro l'ordine?

    
posta concat 03.09.2017 - 17:42
fonte

1 risposta

9

SQL è stato progettato per essere simile all'inglese, il che significa che le espressioni dovrebbero più o meno leggere come frasi inglesi. Nel documento iniziale puoi vedere le frasi di esempio del caso d'uso che traducono in SQL:

Q1. Find the names of employees in the toy department.

Q2: Find the names and salaries of employees who are in the toy department and whose manager is Anderson.

Q3: Find the items sold by departments on the second floor.

Q4: Find the average salary of employees in the shoe department.

etc.

Noterai che queste frasi seguono naturalmente questo modello:

Find <property> of <entity> <satisfying some condition>

Che porta alla sintassi SQL:

SELECT <columns> FROM <table> WHERE <predicate>

Quindi l'ordine delle clausole segue naturalmente il desiderio di avere la lingua come inglese.

La questione controversa è se fosse una buona idea cercare un linguaggio simile all'inglese. Nella mia esperienza lo rende molto più accessibile ai non programmatori, ma lo rende piuttosto goffo per i programmatori. (Si noti che Linq ha invertito le due prime clausole per supportare meglio il completamento automatico.Niente di fatto il completamento automatico non esisteva al momento della progettazione di SQL.Il Linq supporta anche la composizione in modo molto più elegante.Infine Linq non è progettato per l'uso da parte dei non programmatori.)

    
risposta data 03.09.2017 - 18:02
fonte

Leggi altre domande sui tag