راهنماها

SQL چیست؟ زبان پایگاه داده، توضیح ساده

SQL (Structured Query Language، که «اس-کیو-ال» یا «سیکوئل» خوانده می‌شود) زبان استاندارد کار با پایگاه داده‌های رابطه‌ای است؛ همان نوعی که داده‌ها را در جدول‌هایی از سطر و ستون ذخیره می‌کند، مثل Postgres، MySQL، SQLite و SQL Server. با SQL از داده‌ها سؤال می‌پرسید («کدام مشتری‌ها این ماه نوبت گرفتند؟») و رکوردها را اضافه، تغییر یا حذف می‌کنید. از دهه‌ی ۱۹۷۰ وجود دارد، یک استاندارد بین‌المللی است و بخش بزرگی از اپلیکیشن‌های دنیا را اداره می‌کند.

چرا SQL وقتی با هوش مصنوعی می‌سازید مهم است

وقتی از یک ابزار ساخت اپلیکیشن با هوش مصنوعی بخواهید «سفارش‌ها را ذخیره کن» یا «فهرست نوبت‌های پیش رو را نشان بده»، باید چیزی با پایگاه داده حرف بزند؛ و در بیشتر اپلیکیشن‌ها این SQL است، یا مستقیم نوشته شده یا از طریق یک ORM تولید شده.

لازم نیست خودتان SQL بنویسید، ولی کمی فهمیدنش به کارتان می‌آید:

  • می‌توانید داده‌هایتان را بررسی کنید. یک کوئری کوتاه به «این هفته چند ثبت‌نام داشتیم؟» سریع‌تر جواب می‌دهد تا ساختن یک صفحه‌ی جدید.
  • می‌توانید گزارش‌های بهتری بخواهید. «درآمد را بر اساس ماه و خدمت گروه‌بندی کن» یک ایده‌ی SQL است. دانستن آن درخواستتان را واضح‌تر می‌کند.
  • می‌توانید تغییرات خطرناک را تشخیص دهید. یک DELETE یا UPDATE بدون بند WHERE روی همه‌ی سطرها اثر می‌گذارد. ارزش دارد پیش از اجرا متوجهش شوید.
  • داده‌تان قفل نیست. SQL یک استاندارد مشترک است، پس داده در یک پایگاه داده‌ی SQL را می‌شود با ابزارهای زیادی منتقل و خواند.

یک تشبیه روزمره

یک کتابخانه‌ی بسیار منظم را تصور کنید با کتابداری که فقط با یک زبان دقیق و ساده حرف می‌زند.

خودتان قفسه‌ها را نمی‌گردید. یک کارت به کتابدار می‌دهید: «همه‌ی کتاب‌های این نویسنده را که بعد از ۲۰۱۰ منتشر شده‌اند، جدیدترین اول، پیدا کن.» کتابدار ساختمان را کاملاً می‌شناسد و دقیقاً همان کتاب‌ها را به همان ترتیب برمی‌گرداند.

SQL زبان روی آن کارت است. شما می‌گویید چه چیزی می‌خواهید، نه چطور پیدایش کنید؛ پایگاه داده خودش سریع‌ترین مسیر را پیدا می‌کند.

SQL چطور کار می‌کند: جدول، سطر و ستون

یک پایگاه داده رابطه‌ای داده‌ها را در جدول نگه می‌دارد. هر جدول یک نوع چیز را نگه می‌دارد، هر سطر یک رکورد است و هر ستون یک اطلاع:

customers (مشتری‌ها)

idnameemailcity
1Lena Ortizlena@example.comLisbon
2Sam Patelsam@example.comLeeds

orders (سفارش‌ها)

idcustomer_idtotalplaced_at
101142.002026-09-20
102218.502026-09-22
103125.002026-09-27

ستون customer_id هر سفارش را به یک مشتری وصل می‌کند. همین پیوند است که پایگاه داده را «رابطه‌ای» می‌کند.

یک مثال کامل: پاسخ به سؤال‌های واقعی

۱. خواندن داده — «همه‌ی مشتری‌های لیسبون را نشان بده»:

SELECT name, email
FROM customers
WHERE city = 'Lisbon';

۲. مرتب‌سازی و محدود کردن — «پنج سفارش آخر»:

SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;

۳. ترکیب جدول‌ها — «هر سفارش با نام مشتری»:

SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;

۴. خلاصه‌سازی — «مجموع خرج هر مشتری»:

SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;

با داده‌ی نمونه، این کوئری Lena Ortiz را با ۶۷.۰۰ و Sam Patel را با ۱۸.۵۰ برمی‌گرداند.

۵. تغییر داده:

INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');

UPDATE customers SET city = 'Porto' WHERE id = 1;

DELETE FROM orders WHERE id = 102;

اینها با چهار عمل پایه‌ی تقریباً هر اپلیکیشن مطابقت دارند: ایجاد، خواندن، به‌روزرسانی و حذف، که به CRUD معروف‌اند.

یک هشدار: UPDATE customers SET city = 'Porto'; بدون بند WHERE همه‌ی مشتری‌ها را تغییر می‌دهد. همیشه پیش از اجرای هر تغییر، WHERE را بررسی کنید.

بخش‌های اصلی SQL

دستورکارش
SELECTخواندن داده
INSERTافزودن سطرهای جدید
UPDATEتغییر سطرهای موجود
DELETEحذف سطرها
CREATE TABLE / ALTER TABLEساختن یا تغییر ساختار یک جدول
WHEREفیلتر کردن سطرهایی که تحت تأثیر قرار می‌گیرند
JOINترکیب جدول‌های مرتبط
GROUP BYخلاصه کردن سطرها در گروه‌ها، با COUNT، SUM، AVG
ORDER BY / LIMITمرتب‌سازی و محدود کردن نتایج

SQL استانداردسازی شده، ولی هر پایگاه داده امکانات اضافه‌ی خودش را دارد که dialect نامیده می‌شود. Postgres، MySQL و SQLite همه‌ی مثال‌های بالا را می‌فهمند، ولی جزئیاتی مثل توابع تاریخ کمی فرق دارند.

توضیح اصطلاحات کلیدی

اصطلاحمعنی
کوئرییک دستور SQL، به‌ویژه آنکه داده می‌خواند.
جدول / سطر / ستونیک نوع چیز / یک رکورد / یک ویژگی.
کلید اصلی (Primary key)ستونی که هر سطر را به‌طور یکتا مشخص می‌کند، معمولاً id.
کلید خارجی (Foreign key)ستونی که به سطری در جدول دیگری اشاره می‌کند، مثل customer_id.
Indexساختار جستجویی که پیدا کردن در یک ستون را خیلی سریع‌تر می‌کند.
Schemaساختار همه‌ی جدول‌ها و ستون‌ها.
Transactionگروهی از تغییرات که با هم موفق یا ناموفق می‌شوند.
SQL injectionحمله‌ای که ورودی کاربر به درون یک کوئری قاچاق می‌شود. با کوئری‌های پارامتری جلوگیری می‌شود.

برداشت‌های غلط رایج

  • «SQL یک پایگاه داده است.» SQL زبان است؛ Postgres، MySQL و SQLite پایگاه‌های داده‌ای هستند که به آن حرف می‌زنند.
  • «SQL قدیمی است، پس منسوخ است.» بالغ است، نه منسوخ. پایگاه داده‌های مدرن و ابزارهای داده هنوز از آن استفاده می‌کنند و بسیاری از تازه‌ترها پشتیبانی از SQL را اضافه کرده‌اند.
  • «فقط برنامه‌نویس‌ها می‌توانند SQL کار کنند.» تحلیل‌گران، بازاریاب‌ها و بنیان‌گذاران هر روز از کوئری‌های ساده استفاده می‌کنند.
  • «SQL از داده‌ی انعطاف‌پذیر ناتوان است.» خیلی از پایگاه داده‌های SQL هم JSON ذخیره می‌کنند. Postgres، مثلاً، نوع jsonb دارد. SQL در برابر NoSQL را ببینید.
  • «اجازه دادن به هوش مصنوعی که هر SQLی را روی داده‌ی واقعی اجرا کند، ایمن است.» خواندن کم‌ریسک است؛ تغییر و حذف روی داده‌ی زنده نیاز به پشتیبان و بررسی مجدد دارد. چطور از پایگاه داده‌ی اپلیکیشنمان پشتیبان بگیریم را ببینید.

از ابزار ساخت اپلیکیشنتان چه بخواهید

  • «جدول‌های پایگاه داده‌ام را و معنی هر ستون را نشانم بده.»
  • «یک کوئری فقط‌خواندنی بنویس: در ۳۰ روز گذشته، هر روز چند ثبت‌نام جدید داشتیم؟»
  • «پیش از اجرای هر UPDATE یا DELETE، کوئری و تعداد سطرهایی که تحت تأثیر قرار می‌گیرند را نشانم بده.»
  • «روی ستون‌هایی که بیشتر فیلتر و مرتب می‌شوند index بگذار.»
  • «مطمئن شو هر کوئری که از ورودی کاربر استفاده می‌کند پارامتری باشد.»
  • «به‌روزرسانی سفارش‌ها و پرداخت‌ها را در یک transaction بگذار تا نیمه‌موفق نشوند.»

SQL در Mythex

وقتی اپلیکیشنتان به ذخیره‌ی داده نیاز دارد، Mythex یک پایگاه داده‌ی Postgres اختصاصی به پروژه اضافه می‌کند؛ در گفتگو بخواهید، مثلاً «ایمیل‌های لیست انتظار را در پایگاه داده ذخیره کن»، یا از دستور /database استفاده کنید (Database). عامل جدول‌ها را می‌سازد و کوئری‌ها را می‌نویسد، و می‌توانید در حالت Ask از آن بخواهید هر کوئری را به زبان ساده توضیح دهد. برای اطلاعات بیشتر دربارهٔ خود پایگاه داده، Postgres چیست را بخوانید.

پرسش‌ها

SQL به زبان ساده چیست؟

SQL (Structured Query Language) زبان استاندارد کار با پایگاه داده‌های رابطه‌ای است. با آن از داده‌ها سؤال می‌پرسید، مثل «سفارش‌های این هفته کدام‌ها بودند»، و رکوردها را اضافه، تغییر یا حذف می‌کنید.

SQL را چطور تلفظ کنیم؟

هم «اس-کیو-ال» (با هجی کردن حروف) و هم «سیکوئل» رایج و درست هستند. این زبان در ابتدا SEQUEL نام داشت و تلفظ دوم از همان جا آمده است.

آیا SQL یک زبان برنامه‌نویسی است؟

SQL یک زبان کوئری است که برای مدیریت داده طراحی شده. شما می‌گویید چه نتیجه‌ای می‌خواهید و پایگاه داده خودش می‌فهمد چطور آن را پیدا کند. به‌تنهایی برای ساختن کل یک اپلیکیشن به کار نمی‌رود، ولی بخشی از تقریباً هر اپلیکیشنی است که از پایگاه داده‌ی رابطه‌ای استفاده می‌کند.

یادگرفتن SQL سخت است؟

اصول آن قابل‌یادگیری است: SELECT، WHERE، ORDER BY، INSERT، UPDATE و DELETE بیشتر نیازهای روزمره را پوشش می‌دهند و تقریباً مثل انگلیسی خوانده می‌شوند. Joinها، گروه‌بندی و بهینه‌سازی عملکرد زمان بیشتری می‌برند.

برای ساختن اپلیکیشن با هوش مصنوعی باید SQL بدانم؟

نه. ابزار ساخت با هوش مصنوعی کد SQL یا کد پایگاه داده را برایتان می‌نویسد. کمی دانستن آن کمک می‌کند داده‌هایتان را بررسی کنید، گزارش بخواهید و تغییرات پرریسک را پیش از اجرا تشخیص دهید.

Mythex · Pricing · با هوش مصنوعی هر چیزی بسازید · قالب‌های وب‌سایت و اپلیکیشن · مقایسه‌ی Mythex · واژه‌نامه‌ی ساخت اپلیکیشن با هوش مصنوعی · ابزارهای رایگان ساخت اپلیکیشن با هوش مصنوعی · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)