sql >> Databáze >  >> RDS >> Mysql

Cizí klíče – co pro mě dělají?

Cizí klíče poskytují referenční integritu. Data ve sloupci cizího klíče jsou ověřena – hodnota může být pouze ta, která již existuje v tabulce a sloupci definovaném v cizím klíči. Je to velmi účinné při zastavení "špatných dat" - někdo nemůže zadat, co chce - čísla, ASCII text atd. Znamená to, že data jsou normalizována - opakující se hodnoty byly identifikovány a izolovány do vlastní tabulky, takže už nemusíte dělat starosti o řešení rozlišování malých a velkých písmen v textu... a hodnoty jsou konzistentní. To vede k další části - cizí klíče jsou to, co používáte ke spojení tabulek.

Váš dotaz na projekty uživatele by nefungoval – odkazujete na sloupec z USERS tabulka, když v dotazu není žádný odkaz na tabulku a není použit žádný poddotaz k získání těchto informací před jejich propojením s PROJECTS stůl. Co byste opravdu použili, je:

SELECT p.*
   FROM PROJECTS p
   JOIN USERS u ON u.user_id = p.creator
WHERE u.username = 'John Smith'


  1. SQL aritmetické operátory

  2. Jak převést řetězec na datum v MySQL?

  3. Efektivní datový model pro dotazy na rozsah

  4. SQL Server:Připojte nesprávnou verzi 661