Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von Fremdschlüsseln bei Abfragen aus zwei Tabellen

Ich bin mir nicht sicher, ob Sie verstanden haben, wofür Fremdschlüssel verwendet werden. Ein Fremdschlüssel sagt im Grunde "für diesen Eintrag muss es einen Eintrag in der übergeordneten Tabelle geben". Sie sagten, user_id is foreign key in vehicle table , was mir nicht klar ist.

Nehmen wir also an, Sie haben eine Tabellendefinition wie diese:

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)
);

Wenn Sie einen neuen Benutzer in die Tabelle einfügen möchten, muss die user_id ein vorhandener Eintrag in der Spalte car_owner in der Tabelle cars sein.

Fremdschlüssel dienen dazu, Geschäftsregeln zu implementieren. Muss jeder Nutzer zwingend ein Autobesitzer sein? Oder muss umgekehrt jedes Auto jemandem gehören? Wenn Sie beide Fragen mit nein beantworten können, dann implementieren Sie für diesen Fall keine Fremdschlüssel. Aber tun Sie dies, wenn Sie sicher mit Ja antworten können.

Um die gesuchten Informationen zu erhalten, tun Sie einfach

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