2009-11-16 11 views
9

Spesso vedo gente che scrive SQL come questo:Usi la parola chiave OUTER quando scrivi JOIN left/right in SQL?

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2) 

Io stesso scrivo semplicemente:

SELECT * from TableA LEFT JOIN TableB ON (ID1=I2) 

Per me la parola "esterno" è come il rumore di linea - aggiunge nessuna informazione aggiuntiva, basta ingombra l'SQL. È addirittura opzionale nella maggior parte degli RDBMS che conosco. Quindi ... perché la gente lo scrive ancora? È un'abitudine? Portabilità? (I tuoi SQL sono davvero portatili in ogni caso?) Qualcos'altro di cui non sono a conoscenza?

+0

Non potrei essere più d'accordo. La parola chiave OUTER è solo rumore. Meno è meglio. – gerryster

+0

Possiamo usarlo quando non siamo sicuri di quale tabella abbia effettivamente i dati ... e abbiamo bisogno di dati da qualcuno? –

+0

Sembra che tu abbia bisogno di 'FULL [OUTER] JOIN', anche se non è abbastanza chiaro dalla tua descrizione. Forse hai bisogno di un 'UNION' invece. Scrivi una nuova domanda e descrivi i tuoi dati e le strutture in dettaglio. Otterrai una risposta rapidamente. –

risposta

11

OUTER è davvero superfluo, come si scrive, dal momento che tutti OUTER giunzioni sono o LEFT o RIGHT, e reciprocamente tutte LEFT o RIGHT si unisce sono OUTER. Quindi sintatticamente è soprattutto rumore, come dici tu. È opzionale anche in ISO SQL. Per quanto riguarda il motivo per cui le persone lo usano, suppongo che alcuni ritengano necessario insistere sul fatto che il join sia OUTER, anche se la parola chiave left-or-right lo dice già. Del resto, anche lo INNER è superfluo!

1

È semplicemente una questione di gusti, suppongo che le persone lo usino perché scoprono che porta a un codice più leggibile. Ad esempio, preferisco utilizzare anche la parola chiave AS opzionale poiché SELECT ... FROM table AS t sembra più leggibile di SELECT ... FROM table t per me.

5

SI

E 'solo rendere le cose più chiare a mio parere - la più chiara e più evidente dichiarate il vostro intento, tanto meglio (soprattutto per qualcun altro cercando di leggere e comprendere il codice in seguito).

Ma questa è solo la mia opinione: non è tecnicamente necessario, quindi puoi usarlo o lasciarlo.

+1

+1 per "specialmente per qualcun altro che sta cercando di leggere e comprendere il codice in un secondo momento" – Seb

1

Utilizzo 'inner join', 'left join', 'right join' e 'full outer join'. 'unirsi' senza 'interiore' lo rende in qualche modo ambiguo per me; 'Sinistra' e 'destra' sono auto-descrittivo e 'pieno' è questo tipo di una bestia che merita speciale sintassi :)

2

No. Io uso

  • ENTRA
  • LEFT JOIN
  • RIGHT JOIN
  • full outer join
  • CROSS JOIN

non c'è amb iguità per me.

+3

perché non utilizzare "full join" invece di "full outer join", quindi? –

0

Uso personalmente la parola chiave OUTER. Sono d'accordo che è solo una questione di gusti ma omettendo mi sembra un po 'trascurato, ma non così male come omettere la parola chiave INNER (sciatta) o scrivere parole chiave SQL in minuscolo (molto sciatto).

2

Una cosa che diversi mesi su Stackoverflow mi ha mostrato è quanto SQL è scritto e/o gestito da persone senza alcuna precedente esposizione a database SQL o relazionali.

Per questo motivo, penso che quanto più esplicito possa essere il meglio del prossimo programmatore sarà quando guardi il tuo codice.

0

Penso che non ci sia nulla come SQL portatile nell'anno 2009 comunque ... A un certo punto, è necessario scrivere istruzioni specifiche DBMS (come il recupero delle prime N righe).

Personalmente trovo ridondante la sintassi JOIN e invece i nomi di tabella separati da virgola.