sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar una clave externa al consultar desde dos tablas

No estoy seguro si entendiste para qué se usan las claves externas. Una clave externa básicamente dice "para esta entrada tiene que haber una entrada en la tabla principal". Dijiste que user_id is foreign key in vehicle table , que no me queda claro.

Entonces, supongamos que tiene una definición de tabla como esta:

CREATE TABLE vehicles
(`id_car` int, `car_model` varchar(2), `car_owner` int);


CREATE TABLE users
(`user_id` int, `user_name` varchar(5), `user_phone` varchar(7)
, CONSTRAINT `fk_your_foreign_key` FOREIGN KEY (user_id) REFERENCES vehicles(car_owner)
);

Cuando desee insertar un nuevo usuario en la tabla, el ID_de_usuario debe ser una entrada existente en la columna propietario_de_automóvil en la tabla de vehículos.

Las claves foráneas están ahí para implementar reglas de negocio. ¿Todo usuario tiene que ser necesariamente propietario de un coche? O al revés, ¿todo coche tiene que ser propiedad de alguien? Si puede responder ambas preguntas con un no, entonces no implemente ninguna clave externa para este caso. Pero hazlo, si puedes responder que sí con seguridad.

Para obtener la información que busca, simplemente haga

SELECT 
* 
FROM 
vehicles 
INNER JOIN users ON vehicles.car_owner = users.user_id