یک دیتابیس رابطهای واقعاً چیست
یک Relational Database (دیتابیس رابطهای) داده را در Tables (جداول) سازماندهی میکند، که هرکدام از ردیفها و ستونها تشکیل شدهاند، جایی که هر ردیف یک رکورد را نشان میدهد و هر ستون یک ویژگی از آن رکورد را. این ساختار جدولی، که دههها پیش رسمیسازی شد، همچنان رایجترین روش ذخیره داده ساختاریافته باقی میماند چون روابط بین انواع مختلف داده را صریح و قابلپرسوجو میکند.
مثال جدول: customers
| customer_id | name | email |
|-------------|-------------|---------------------|
| 1 | Alice Smith | [email protected] |
| 2 | Bob Jones | [email protected] |یک Relational Database Management System (RDBMS) نرمافزاری است که این جداول را ذخیره میکند و اجازه میدهد کاربران با آنها تعامل داشته باشند — مثالهای رایج شامل PostgreSQL، MySQL، و SQLite هستند. کاربران تقریباً کاملاً از طریق SQL (Structured Query Language)، یک زبان تخصصی برای بازیابی و دستکاری داده ساختاریافته، با یک RDBMS تعامل میکنند.
نوشتن اولین کوئری SQL
بنیادینترین عبارت SQL SELECT است، که برای بازیابی داده از یک جدول استفاده میشود.
SELECT name, email
FROM customers
WHERE customer_id = 1;این کوئری بهطور طبیعی خوانده میشود: ستونهای name و email را انتخاب کن، از جدول customers، جایی که customer_id برابر ۱ باشد. هدف طراحی SQL اعلانیبودن است — کوئری آنچه داده مورد نیاز است را توصیف میکند، نه رویه گامبهگام برای یافتن آن، و اجازه میدهد موتور دیتابیس کارآمدترین روش برای واقعاً بازیابی آن را تعیین کند.
بلوکهای سازنده اصلی یک کوئری SQL
فراتر از یک `SELECT` ساده، تعداد کمی بند اکثریت قریببهاتفاق نیازهای روزمره بازیابی داده را مدیریت میکنند.
WHEREردیفها را بر اساس یک شرط فیلتر میکند، و فقط ردیفهایی که آن را برآورده میکنند برمیگرداند.ORDER BYردیفهای بازگرداندهشده را بر اساس یک یا چند ستون، صعودی یا نزولی، مرتب میکند.LIMITتعداد ردیفهای بازگرداندهشده را محدود میکند، که برای پیشنمایش نتایج بزرگ مفید است.GROUP BYردیفهای اشتراکگذارنده یک مقدار مشترک را گروهبندی میکند، که معمولاً با یک تابع تجمیعی ترکیب میشود.
SELECT city, COUNT(*) AS customer_count
FROM customers
GROUP BY city
ORDER BY customer_count DESC
LIMIT 5;این کوئری تعداد مشتریان بهازای هر شهر را میشمارد، شهرها را بر اساس آن تعداد از بالاترین به پایینترین مرتب میکند، و فقط ۵ تای اول را برمیگرداند — الگویی بسیار رایج در وظایف گزارشگیری و تحلیل.
مدیریت جداول: ساخت ساختار
پیش از اینکه هر دادهای بتواند ذخیره شود، ساختار یک جدول باید با استفاده از CREATE TABLE تعریف شود، که نام و Data Type (نوع داده) هر ستون را مشخص میکند — نوع مقداری که آن ستون نگه خواهد داشت، مانند متن، اعداد صحیح، یا تاریخها.
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100)
);تعیین PRIMARY KEY مشخص میکند customer_id ستونی است که هر ردیف را بهطور یکتا شناسایی میکند — هیچ دو ردیفی نمیتوانند همان مقدار را داشته باشند، و این ستون نمیتواند خالی بماند. NOT NULL بهطور مشابه نیاز دارد یک ستون همیشه یک مقدار داشته باشد، و از رکوردهای ناقص جلوگیری میکند.
مدیریت داده: درج، بهروزرسانی، و حذف
وقتی یک جدول وجود دارد، سه عبارت تغییر محتوایش را مدیریت میکنند.
-- افزودن یک ردیف جدید
INSERT INTO customers (customer_id, name, email)
VALUES (3, 'Carol White', '[email protected]');
-- تغییر یک ردیف موجود
UPDATE customers
SET email = '[email protected]'
WHERE customer_id = 1;
-- حذف یک ردیف
DELETE FROM customers
WHERE customer_id = 2;هرکدام از این عبارات معمولاً یک بند WHERE برای هدفگذاری ردیفهای خاص شامل میشوند؛ حذف آن از یک UPDATE یا DELETE تغییر را روی هر ردیف در جدول اعمال میکرد، یک اشتباه رایج و پرهزینه که ارزش دقت خاص را دارد.
چرا این اصول اهمیت دارند
هر مفهوم پیشرفتهتر دیتابیس — روابط بین جداول، نرمالسازی، ایندکسگذاری، و بهینهسازی کارایی — مستقیماً روی این پایه از جداول، انواع داده، و عبارات اصلی SQL معرفیشده در اینجا بنا میشود. یک درک محکم از نحوه تعریف ساختار یک جدول و پرسوجو و تغییر قابلاعتماد محتوایش، پیشنیازی برای هر چیزی است که در طراحی دیتابیس ادامه دارد.