sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder främmande nyckel när man frågar från två tabeller

Jag är inte säker på om du förstod vad främmande nycklar används till. En främmande nyckel säger i princip "för denna post måste det finnas en post i den överordnade tabellen". Du sa att user_id is foreign key in vehicle table , vilket inte är klart för mig.

Så låt oss anta att du har en tabelldefinition så här:

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

När du vill infoga en ny användare i tabellen måste user_id vara en befintlig post i kolumnen car_owner i fordonstabellen.

Främmande nycklar är till för att implementera affärsregler. Måste varje användare nödvändigtvis vara bilägare? Eller tvärtom, måste varje bil ägas av någon? Om du kan svara på båda frågorna med nej, implementera inte några främmande nycklar för det här fallet. Men gör det, om du säkert kan svara ja.

För att få informationen du letar efter gör du bara

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


  1. generera enum-klass från tabell med JOOQ

  2. ändra auto_increment inom samma tabell med hjälp av subquery mysql

  3. Hur skapar man ett id (autoincremented) i Mysql med en sträng sammanlänkad med den? använder endast php

  4. SQL:hämta N:te objekt i varje grupp