2012-05-09 19 views
5

estoy estudiando para un examen de SQL base de datos y la forma en que he visto SQL es que como se ve en esta página:Cuándo utilizar SQL natural join en lugar de join .. on?

http://en.wikipedia.org/wiki/Star_schema IE join escrita el camino Join <table name> On <table attribute> y luego la condición para unirse a la selección. Sin embargo, el libro de mi curso y los ejercicios que me imparte la institución académica solo utilizan la combinación natural en sus ejemplos. Entonces, ¿cuándo es correcto usar la combinación natural? ¿Debería usarse la unión natural si la consulta también se puede escribir utilizando JOIN .. ON?

Gracias por cualquier respuesta o comentario

+4

un artículo muy bueno visualmente Representante de uniones SQL que podría ayudar http: //www.codinghorror. com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Sanath

+1

http://en.wikipedia.org/wiki/Join_%28SQL % 29 – Sanath

+1

A [combinación natural] (http://en.wikipedia.org/wiki/Join_ (SQL) #Natural_join) es un tipo de equi-join, lo que significa que las condiciones solo usan comparaciones de igualdad ('='). Si tuviera algo como '... JOIN tblA a ON a.amount> b.amount', eso no podría expresarse como una unión natural. – Wiseguy

Respuesta

9

Una unión natural encontrará columnas con el mismo nombre en ambas tablas y agregará una columna en el resultado para cada par encontrado. La combinación interna le permite especificar la comparación que desea hacer usando cualquier columna.

+1

Esta es la mejor respuesta ya que es objetivo, teórico y no solo SQL. –

5

OMI, la combinación en la sintaxis es mucho más legible y fácil de mantener que la sintaxis de la combinación natural. Las uniones naturales son un remanente de algunos viejos estándares, y trato de evitarlo como la peste.

+1

Aprendí algo hoy :) – keyser

+2

las uniones naturales tienen muchos problemas además de legibilidad. P.ej. si cambia una de las tablas, puede interrumpir la consulta. – svallory

+0

Estoy de acuerdo. Gracias por responder. –

1

Una unión natural encontrará columnas con el mismo nombre en ambas tablas y agregará una columna en el resultado para cada par encontrado. La combinación interna le permite especificar la comparación que desea hacer usando cualquier columna.

La palabra clave JOIN se utiliza en una instrucción SQL para consultar datos de dos o más tablas, en función de una relación entre ciertas columnas en estas tablas.

diferente une

* JOIN: Return rows when there is at least one match in both tables 
* LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table 
* RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table 
* FULL JOIN: Return rows when there is a match in one of the tables 

INNER JOIN http://www.w3schools.com/sql/sql_join_inner.asp

full join http://www.w3schools.com/sql/sql_join_full.asp

+0

Gracias por la respuesta. +1 –

+1

Esta respuesta no aborda la pregunta en absoluto. – Brad