Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zrozumienie naturalnego łączenia w SQL

To za długo na komentarz. Nie używaj sprzężeń naturalnych. Nie zawracaj sobie głowy nauką naturalnych sprzężeń. Są obrzydliwością.

Czemu? Warunki łączenia są oparte na kolumnach o tych samych nazwach . Sprzężenia naturalne nie uwzględniają nawet zadeklarowanych relacji klucza obcego. To może być dość niebezpieczne. Lub -- w moim przypadku -- ponieważ prawie wszystkie moje tabele mają CreatedAt i CreatedBy , i tak są bezużyteczne.

Zamiast tego wymień join Klucze. W twoim przypadku (ponieważ masz select * ), using klauzula jest najbardziej odpowiednia:

SELECT * 
FROM R JOIN
     S
     USING (A, B);

Ma to również tę zaletę, że klucze są wyraźnie widoczne w zapytaniu, co znacznie zmniejsza zakres błędów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepszy sposób na przechowywanie wiadomości czatu w bazie danych?

  2. Czy ma sens używanie indeksu, który będzie miał niską kardynalność?

  3. Jak przyspieszyć ładowanie danych do InnoDB (LOAD DATA INFILE)?

  4. Suwak formularza HTML

  5. Konkatenacja pola związanego z wieloma wierszami rekordu w zapytaniu ustawionym w Django