کلید اصلی و خارجی، INNER JOIN

بفهمی چرا داده در چند جدول نگه‌داری می‌شود و با INNER JOIN جدول‌ها را به هم وصل کنی.

14 دقیقه مطالعه · 5 سؤال تمرینی · SQL از صفر: پرس‌وجو برای تحلیل داده

چرا چند جدول؟ کلید اصلی و کلید خارجی

اگر نام و شهر مشتری را در هر سفارش تکرار می‌کردیم، تغییر یک شهر یعنی ویرایش ده‌ها ردیف و خطر ناهماهنگی. راه‌حل: هر واقعیت فقط یک جا ذخیره شود و جدول‌ها با شناسه به هم وصل شوند.

  • کلید اصلی (PRIMARY KEY): ستونی (مثل customers.id) که هر ردیف را یکتا مشخص می‌کند: تکراری و NULL ندارد.
  • کلید خارجی (FOREIGN KEY): ستونی (مثل orders.customer_id) که به کلید اصلی جدول دیگر اشاره می‌کند. پایگاه داده جلوی ثبت سفارش برای مشتریِ ناموجود را می‌گیرد.

پس سفارش ۱۰۱ فقط می‌گوید customer_id = 1؛ اینکه ۱ همان Sara است در جدول customers می‌ماند. برای دیدن همه با هم باید جدول‌ها را JOIN کنیم.

INNER JOIN

SELECT c.name, o.id AS order_id, o.status
FROM customers AS c
JOIN orders AS o ON o.customer_id = c.id;
  • JOIN ... ON شرط ردیف‌های دو جدول را وقتی کنار هم می‌گذارد که شرط درست باشد. (JOIN تنها یعنی INNER JOIN.)
  • c و o نام مستعار جدول هستند تا کوتاه بنویسیم و ستون‌های هم‌نام (مثل id که در هر دو جدول هست) مبهم نشوند: c.id و o.id.
  • INNER یعنی فقط ردیف‌هایی که در هر دو طرف جفت دارند می‌مانند. مشتری بدون سفارش یا سفارش بدون مشتری حذف می‌شود.
  • همین‌طور می‌توان چند جدول را پشت هم JOIN کرد.

اگر ON را فراموش کنید یا غلط بنویسید، هر ردیف با هر ردیف ترکیب می‌شود (ضرب دکارتی): ۶ مشتری × ۸ سفارش = ۴۸ ردیف بی‌معنی.

تمرین‌های این درس را حل کن (رایگان)