sql >> Databasteknik >  >> RDS >> Mysql

Varför måste jag använda främmande nyckel om jag kan använda WHERE?

Det behövs inte strikt för frågan, det är sant. Det finns av flera anledningar:

  1. Som en begränsning på bordet för att hindra dig från att infoga något som inte pekar på någonting;
  2. Som en ledtråd för optimeraren; och
  3. Av historiska skäl var det mer behövligt.

(1) är förmodligen den viktiga av de tre. Detta kallas referensintegritet . Det betyder att om det finns ett värde i en främmande nyckel kommer det att finnas en motsvarande post med det värdet som en primärnyckel i den överordnade tabellen.

Med detta sagt stöder inte alla databaser referensintegritet (t.ex. MySQL/MyISAM-tabeller) och de som gör det upprätthåller inte nödvändigtvis det (av prestandaskäl).



  1. Hur man får det korta månadsnamnet från ett datum i MySQL

  2. Det effektivaste sättet att lagra IP-adress i MySQL

  3. mysql-struktur för kommentarer och kommentarsvar

  4. Finns det en motsvarighet till SQL Servers @@-fel i MySQL