جدول، SELECT و FROM

ساختار یک جدول را بشناسی و با SELECT و FROM ستون‌های دلخواه را از یک جدول بخوانی.

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

پایگاه داده‌ی رابطه‌ای و SQL

داده‌های بیشتر برنامه‌ها (فروشگاه، بانک، دانشگاه) در پایگاه داده‌ی رابطه‌ای نگه‌داری می‌شود: مجموعه‌ای از جدول‌ها. هر جدول از ستون‌ها (نوع اطلاعات، مثل name) و ردیف‌ها (هر رکورد، مثل یک مشتری) ساخته شده است.

SQL (Structured Query Language) زبان استاندارد پرسیدن از این جدول‌هاست. SQL توصیفی است: شما می‌گویید چه چیزی می‌خواهید، نه چطور پیدا شود؛ انتخاب راه سریع با خود پایگاه داده است.

در همه‌ی درس‌های این دوره با یک فروشگاه کوچک کار می‌کنیم. چهار جدول داریم (قیمت‌ها به هزار تومان):

customers (مشتری‌ها)

| id | name | city | joined_at | |---|---|---|---| | 1 | Sara | Tehran | 2025-01-10 | | 2 | Ali | Tehran | 2025-02-03 | | 3 | Maryam | Shiraz | 2025-02-20 | | 4 | Reza | Isfahan | 2025-03-05 | | 5 | Negar | Tehran | 2025-03-18 | | 6 | Pouya | NULL | 2025-04-01 |

products (کالاها)

| id | name | category | price | |---|---|---|---| | 1 | Notebook | stationery | 40 | | 2 | Pen | stationery | 10 | | 3 | Backpack | bags | 300 | | 4 | Lamp | home | 150 | | 5 | Headphones | electronics | 500 | | 6 | Mouse | electronics | 200 |

orders (سفارش‌ها)

| id | customer_id | order_date | status | |---|---|---|---| | 101 | 1 | 2025-04-02 | paid | | 102 | 1 | 2025-04-20 | paid | | 103 | 2 | 2025-04-05 | paid | | 104 | 3 | 2025-04-11 | cancelled | | 105 | 3 | 2025-05-01 | paid | | 106 | 5 | 2025-05-03 | paid | | 107 | 1 | 2025-05-10 | paid | | 108 | 2 | 2025-05-12 | cancelled |

order_items (اقلام هر سفارش)

| order_id | product_id | quantity | |---|---|---| | 101 | 1 | 2 | | 101 | 2 | 5 | | 102 | 5 | 1 | | 103 | 3 | 1 | | 103 | 2 | 3 | | 104 | 4 | 2 | | 105 | 6 | 1 | | 105 | 1 | 1 | | 106 | 3 | 2 | | 107 | 4 | 1 | | 107 | 6 | 2 | | 108 | 5 | 1 |

شهر مشتری شماره‌ی ۶ را نمی‌دانیم، پس در ستون city مقدار NULL (یعنی «نامعلوم») دارد. این NULL در چند درس بعد مهم می‌شود.

SELECT و FROM

ساده‌ترین پرس‌وجو دو بخش دارد: کدام ستون‌ها (SELECT) از کدام جدول (FROM):

SELECT name, city
FROM customers;

نتیجه خودش یک جدول است: همان دو ستون برای هر شش مشتری. چند نکته‌ی پایه:

  • SELECT * یعنی «همه‌ی ستون‌ها». برای نگاه سریع خوب است، ولی در کد واقعی بهتر است ستون‌ها را اسم ببرید (سریع‌تر است و با تغییر جدول خراب نمی‌شود).
  • با AS می‌توان به ستون نتیجه نام مستعار داد: SELECT name AS customer_name ...
  • در SELECT می‌توان محاسبه هم کرد: SELECT name, price * 1.1 AS price_with_tax FROM products;
  • SELECT DISTINCT ردیف‌های تکراری را حذف می‌کند.
  • کلمه‌های کلیدی (SELECT، FROM) به بزرگی و کوچکی حروف حساس نیستند و هر دستور با ; تمام می‌شود.

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