Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar a chave estrangeira ao consultar duas tabelas


Não tenho certeza, se você entendeu para que são usadas as chaves estrangeiras. Uma chave estrangeira basicamente diz "para esta entrada, deve haver uma entrada na tabela pai". Você disse que user_id is foreign key in vehicle table , o que não está claro para mim.

Então, vamos supor que você tenha uma definição de tabela 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)
);

Quando você deseja inserir um novo usuário na tabela, o user_id deve ser uma entrada existente na coluna car_owner na tabela de veículos.

As chaves estrangeiras existem para implementar regras de negócios. Todo usuário necessariamente precisa ser proprietário de um carro? Ou o contrário, todo carro tem que ser de propriedade de alguém? Se você puder responder a ambas as perguntas com não, não implemente nenhuma chave estrangeira para este caso. Mas faça isso, se você puder responder sim com certeza.

Para obter as informações que procura basta fazer
SELECT 
* 
FROM 
vehicles 
INNER JOIN users ON vehicles.car_owner = users.user_id