2012-12-24 14 views
5

Qual è la differenza tra queste due istruzioni SQLENTRA/Dove CONCETTI

a) select * from T1,T2 where T1.A=T2.A ;

b) select * from T1,T2 where T2.A=T1.A ;

io sono sempre lo stesso output in entrambi i casi, c'è qualche differenza tra i due affermazioni?

c) select * from T1 inner join T2 on T1.A=T2.A ;

Qual è il diffence tra la Dichiarazione di C e di un? In tal caso anche ottenere lo stesso output di A e B ...

Può interno si unisce anche essere scritto come dichiarazione di sql un?

risposta

8

sono tutti essenzialmente modi diversi per unire due tabelle che utilizzano la stessa condizione di join.

Tra 1 e 2, non vi è assolutamente alcuna differenza per quanto riguarda il database.

L'ultima opzione è la sintassi di join standardizzata: è ciò che dovresti utilizzare per garantire che il tuo SQL sia leggibile: questo è ciò che le persone che leggono il tuo SQL si aspettano di vedere quando ti unisci alle tabelle.

1

SQL è come la matematica in quel modo; l'uguaglianza è simmetrica. Se A = B, quindi B = A. Lì dovrebbe essere non fare alcuna differenza.

La notazione JOIN/ON è solo un altro modo di scrivere la stessa cosa. La notazione è diversa per enfatizzare visivamente l'unione.

L'output indica la risposta meglio di qualsiasi numero di utenti SO. Perché non credi ai tuoi stessi occhi?

1

Tutti sono lo stesso non v'è alcuna differenza

Questi sono modi diiferent

0

(a) e (c) sono uguali eccetto il secondo sintassi ANSI-92 SQL e il primo è la sintassi SQL precedente che non incorporava la clausola join. Dovrebbero produrre esattamente lo stesso piano di query interno, anche se potresti voler controllare.

Si dovrebbe usare la sintassi ANSI-92 per vari motivi

  • L'uso della clausola JOIN separa la logica rapporto dal logica filtro (WHERE) e quindi è più pulita e più facile da capire .
  • Non importa con questa query particolare, ma ci sono alcuni circostanze in cui la vecchia sintassi join esterno (usando +) è ambigua e risultati dell'interrogazione sono quindi dipende dall'implementazione - oppure la richiesta non può essere risolta a tutti. Questi non si verificano con ANSI-92
  • È buona norma poiché molti sviluppatori e dba useranno ANSI-92 al giorno d'oggi e si dovrebbe seguire lo standard. Certamente tutti gli strumenti di ricerca moderni genereranno ANSI-92.
Problemi correlati