¿Cómo unir (combinar) marcos de datos (interno, externo, izquierdo, derecho)?

Dados dos marcos de datos:

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))

df1
#  CustomerId Product
#           1 Toaster
#           2 Toaster
#           3 Toaster
#           4   Radio
#           5   Radio
#           6   Radio

df2
#  CustomerId   State
#           2 Alabama
#           4 Alabama
#           6    Ohio

¿Cómo puedo hacer el estilo de base de datos, es decir,estilo sql, se une? Es decir, ¿cómo obtengo?

Ununir internamente dedf1 ydf2:
Devuelve solo las filas en las que la tabla izquierda tiene claves coincidentes en la tabla derecha.Ununión externa dedf1 ydf2:
Devuelve todas las filas de ambas tablas, une registros desde la izquierda que tienen claves coincidentes en la tabla derecha.A combinación externa izquierda (o simplemente combinación izquierda) dedf1 ydf2
Devuelve todas las filas de la tabla izquierda y cualquier fila con claves coincidentes de la tabla derecha.A unión externa derecha dedf1 ydf2
Devuelve todas las filas de la tabla derecha y cualquier fila con claves coincidentes de la tabla izquierda.

Crédito adicional:

¿Cómo puedo hacer una declaración de selección de estilo SQL?