Si bien las respuestas que explican las diferencias exactas están bien, quiero mostrar cómo el álgebra relacional se transforma en SQL y cuál es el valor real de los 3 conceptos.
El concepto clave en su pregunta es la idea de una combinación. Para comprender una combinación, debe comprender un producto cartesiano (el ejemplo se basa en SQL, donde el equivalente se denomina combinación cruzada, como señala onedaywhen);
Esto no es muy útil en la práctica. Considere este ejemplo.
Product(PName, Price)
====================
Laptop, 1500
Car, 20000
Airplane, 3000000
Component(PName, CName, Cost)
=============================
Laptop, CPU, 500
Laptop, hdd, 300
Laptop, case, 700
Car, wheels, 1000
El producto cartesiano Producto x Componente será - abajo o violín sql . Puede ver que hay 12 filas = 3 x 4. Obviamente, las filas como "Laptop" con "ruedas" no tienen significado, por eso en la práctica el producto cartesiano se usa raramente.
| PNAME | PRICE | CNAME | COST |
--------------------------------------
| Laptop | 1500 | CPU | 500 |
| Laptop | 1500 | hdd | 300 |
| Laptop | 1500 | case | 700 |
| Laptop | 1500 | wheels | 1000 |
| Car | 20000 | CPU | 500 |
| Car | 20000 | hdd | 300 |
| Car | 20000 | case | 700 |
| Car | 20000 | wheels | 1000 |
| Airplane | 3000000 | CPU | 500 |
| Airplane | 3000000 | hdd | 300 |
| Airplane | 3000000 | case | 700 |
| Airplane | 3000000 | wheels | 1000 |
Los JOIN están aquí para agregar más valor a estos productos. Lo que realmente queremos es "unir" el producto con sus componentes asociados, porque cada componente pertenece a un producto. La forma de hacer esto es con una combinación:
Producto JOIN Component ON Pname
La consulta SQL asociada sería así (puedes jugar con todos los ejemplos aquí )
SELECT *
FROM Product
JOIN Component
ON Product.Pname = Component.Pname
y el resultado:
| PNAME | PRICE | CNAME | COST |
----------------------------------
| Laptop | 1500 | CPU | 500 |
| Laptop | 1500 | hdd | 300 |
| Laptop | 1500 | case | 700 |
| Car | 20000 | wheels | 1000 |
Observe que el resultado tiene solo 4 filas, porque la computadora portátil tiene 3 componentes, el automóvil tiene 1 y el avión ninguno. Esto es mucho más útil.
Volviendo a sus preguntas, todas las uniones sobre las que pregunta son variaciones del JOIN que acabo de mostrar:
Unión natural = la combinación (la cláusula ON) se realiza en todas las columnas con el mismo nombre; elimina las columnas duplicadas del resultado, a diferencia de todas las demás combinaciones; la mayoría de los DBMS (sistemas de bases de datos creados por varios proveedores, como SQL Server de Microsoft, MySQL de Oracle, etc.) ni siquiera se molestan en admitir esto, es solo una mala práctica (o decidieron no implementarlo a propósito). Imagine que llega un desarrollador y cambia el nombre de la segunda columna en Producto de Precio a Costo. Luego, todas las uniones naturales se realizarían en PName Y en Cost, lo que daría como resultado 0 filas ya que ningún número coincide.
Theta Join = esta es la combinación general que todos usan porque le permite especificar la condición (la cláusula ON en SQL). Puede unirse en prácticamente cualquier condición que desee, por ejemplo, en Productos que tienen las 2 primeras letras similares o que tienen un precio diferente. En la práctica, este rara vez es el caso: en el 95% de los casos, se unirá en una condición de igualdad, lo que nos lleva a:
Equi Join = el más común utilizado en la práctica. El ejemplo anterior es una combinación equi. ¡Las bases de datos están optimizadas para este tipo de uniones! Lo contrario de una combinación equi es una combinación no equi, es decir, cuando se une en una condición distinta de "=". ¡Las bases de datos no están optimizadas para esto! Ambos son subconjuntos de la combinación theta general. La combinación natural también es una combinación theta, pero la condición (theta) está implícita.
Fuente de información: universidad + desarrollador certificado de SQL Server + recientemente completó el MOO "Introducción a las bases de datos" de Stanford, así que me atrevo a decir que tengo el álgebra relacional fresca en mente.