sql >> Database >  >> RDS >> Mysql

Hoe een externe sleutel te gebruiken bij het opvragen van twee tabellen

Ik weet niet zeker of je begrijpt waarvoor buitenlandse sleutels worden gebruikt. Een externe sleutel zegt in feite "voor dit item moet er een item in de bovenliggende tabel zijn". Je zei user_id is foreign key in vehicle table , wat niet duidelijk is voor mij.

Laten we dus aannemen dat je een tabeldefinitie hebt zoals deze:

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

Als u een nieuwe gebruiker aan de tabel wilt toevoegen, moet de user_id een bestaand item zijn in de kolom car_owner in de tabel met voertuigen.

Buitenlandse sleutels zijn er om bedrijfsregels te implementeren. Moet elke gebruiker per se autobezitter zijn? Of andersom, moet elke auto eigendom zijn van iemand? Als u beide vragen met nee kunt beantwoorden, implementeer dan geen externe sleutels voor dit geval. Maar doe dat wel, als je zeker ja kunt antwoorden.

Om de informatie te krijgen die u zoekt, doet u gewoon

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


  1. SQL INSERT INTO… SELECT Voorbeelden

  2. Hoe een Active Directory-gebruikersgroep toe te voegen als login in SQL Server

  3. Verwijder dubbele rijen in MySQL (negert primaire sleutel)

  4. Functie om het aantal weekdagen tussen twee datums te krijgen, exclusief feestdagen