راهنمای جامع زبان پرسوجوی ساختیافته (SQL)
زبان پرسوجوی ساختیافته
Structured Query Language — Version 1.2
فهرست مطالب
فهرست کامل بخشهای کتاب| عنوان | صفحهٔ نسخهٔ چاپی |
|---|
| ۱. مقدمه | 2 |
| اهداف دوره | 3 |
| پایگاه دادهٔ رابطهای چیست؟ | 4 |
| SQL چیست؟ | 5 |
| ۲. پرسوجوهای پایه | 8 |
| انتخاب همهٔ ستونها و ردیفها | 9 |
| انتخاب ستونهای مشخص | 11 |
| انتخاب ردیفهای مشخص | 13 |
| مرتبسازی ردیفها | 17 |
| حذف ردیفهای تکراری | 20 |
| ۳. عملگرهای پیشرفته | 22 |
| عملگر LIKE | 23 |
| عملگر AND | 25 |
| عملگر BETWEEN | 27 |
| عملگر OR | 29 |
| عملگر IN | 31 |
| عملگر IS NULL | 33 |
| تقدم و نقیض | 35 |
| ۴. عبارتها | 37 |
| عبارتهای حسابی | 38 |
| عبارتها در بندهای دیگر | 41 |
| نام مستعار ستون | 43 |
| ۵. توابع | 45 |
| توابع آماری | 46 |
| گروهبندی | 49 |
| توابع در بندهای دیگر | 51 |
| ۶. پرسوجوهای چندجدولی | 54 |
| Joinها | 55 |
| نامهای مستعار جدول | 59 |
| Unionها | 61 |
| ۷. پرسوجو درون پرسوجو | 63 |
| زیرپرسوجوهای تکمقداری | 64 |
| زیرپرسوجوهای چندمقداری | 66 |
| زیرپرسوجوهای همبسته | 68 |
| ۸. نگهداری جدولها | 70 |
| درج ردیفها | 71 |
| بهروزرسانی ردیفها | 73 |
| حذف ردیفها | 75 |
| تراکنشها | 77 |
| ۹. تعریف اشیای پایگاه داده | 79 |
| تعریف جدولها | 80 |
| بارگذاری جدولها | 82 |
| قیود جامعیت | 84 |
| تعریف ایندکسها | 88 |
| تعریف Viewها | 90 |
| A. ضمائم | 92 |
| پایگاه دادهٔ تمرینها | 93 |
| پاسخ تمرینها | 94 |
| خلاصهٔ نحو | 111 |
| نقد کوتاه | 116 |
| مطالعهٔ پیشنهادی | 117 |
| نمایه | 118 |
۱. مقدمه
این فصل سه موضوع را پوشش میدهد: اهداف دوره، «پایگاه دادهٔ رابطهای چیست؟» و «SQL چیست؟».
اهداف دوره
پس از پایان این دوره، خواهید دانست پایگاه دادهٔ رابطهای (Relational Database) چیست، SQL چیست و با استفاده از SQL چه کارهایی میتوان روی پایگاه دادهٔ رابطهای انجام داد. همچنین خواهید دانست چرا SQL یک زبان مهم برای پایگاههای دادهٔ رابطهای است و در عمل قادر خواهید بود کارهای زیر را انجام دهید:
پرسوجو از یک پایگاه دادهٔ رابطهای
دامنهٔ کامل قابلیتهای پرسوجوی SQL در این دوره بررسی میشود. برای هر موضوع، تمرینهای فراوان همراه با پاسخ ارائه شده است. پس از پایان دوره میتوانید با استفاده از SQL اطلاعات را از یک پایگاه دادهٔ رابطهای به دست آورید.
نگهداری یک پایگاه دادهٔ رابطهای
همچنین میتوانید از طریق SQL اطلاعات را در یک پایگاه دادهٔ رابطهای وارد کنید. خواهید آموخت چگونه دادهٔ جدید درج کنید، دادهٔ موجود را بهروزرسانی کنید و دادهٔ منسوخ را حذف کنید. علاوه بر این، با نحوهٔ کار پایگاه داده در محیطهای چندکاربره آشنا میشوید.
تعریف یک پایگاه دادهٔ رابطهای
در پایان، خواهید آموخت چگونه با SQL اشیای پایگاه داده را ایجاد کنید؛ از جمله جدولها، قیدها (Constraints)، ایندکسها و Viewها. طراحی پایگاه داده در این درس پوشش داده نمیشود و موضوع دورههای دیگری است.
پایگاه دادهٔ رابطهای چیست؟
پایگاه دادهٔ رابطهای مجموعهای از دادههاست که در جدولها ذخیره میشود. هر جدول از یک یا چند ستون عمودی و صفر یا چند ردیف افقی تشکیل شده است. دو جدول زیر از پایگاه دادهٔ تمرینی کتاب گرفته شدهاند و در هرکدام سه ردیف دادهٔ نمونه نشان داده شده است.
PERSONS| PERSON | NAME | BDATE | GENDER | COUNTRY | JOB |
|---|
| 1 | Einstein | 1879-03-20 | Male | Germany | S |
| 2 | Dickinson | 1812-07-22 | Male | England | W |
| 3 | Dickinson | 1830-07-15 | Female | USA | W |
COUNTRIES| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Germany | 81337541 | 137823 | 1331000 | German | 100 |
| USA | 263814032 | 3679192 | 6380000 | English | 95 |
| England | 58295119 | 94251 | 980200 | English | 99 |
جدولها با نام شناسایی میشوند
نام جدول باید در پایگاه داده یکتا باشد. پایگاههای دادهٔ متداول SQL اجازه میدهند نام جدول تا ۱۸ نویسه طول داشته باشد. نخستین نویسه باید یک حرف باشد و نویسههای بعدی میتوانند حرف، عدد یا زیرخط باشند.
ستونها با نام شناسایی میشوند
نام ستون درون هر جدول یکتا است، اما یک نام ستون میتواند در جدولهای مختلف تکرار شود. برای نمونه، هر دو جدول بالا ستون COUNTRY دارند.
ردیفها با محتوای خود شناسایی میشوند
ردیفهای یک جدول نام ندارند و جایگاه آنها در جدول نیز ثابت نیست. بنابراین، برای اشاره به ردیفهای یک جدول، مقادیر دادهای موجود در آنها را توصیف میکنیم؛ مانند «Person number 2»، «مثلاً Einstein» یا «همهٔ کشورهای انگلیسیزبان».
SQL چیست؟
SQL محبوبترین زبان پایگاه داده است. نام آن مخفف Structured Query Language است، هرچند SQL بسیار بیش از یک زبان پرسوجو است. برخی افراد نام آن را بهصورت سه حرف جداگانه و برخی آن را «sequel» تلفظ میکنند.
STRUCTURED
QUERY
LANGUAGE
توسعهیافته توسط IBM
SQL در اصل در سال ۱۹۷۴ توسط D. D. Chamberlin و همکارانش در آزمایشگاه تحقیقاتی San Jose شرکت IBM توسعه یافت. SQL سرانجام در سالهای ۱۹۸۲ تا ۱۹۸۳ بهعنوان بخشی جداییناپذیر از محصولات پایگاه دادهٔ SQL/DS و DB2 شرکت IBM برای عموم منتشر شد.
پذیرفتهشده در سراسر جهان
SQL در سال ۱۹۸۶ توسط American National Standards Institute (ANSI) و در سال ۱۹۸۷ توسط International Organization for Standardization (ISO) بهعنوان استاندارد رسمی پذیرفته شد. در زمان نگارش این کتاب، این زبان در بیش از ۱۰۰ محصول تجاری در دسترس بود.
پیادهسازیشده به شیوههای گوناگون
با وجود محبوبیت و پذیرش SQL بهعنوان استاندارد رسمی، تعریف زبان SQL نسبتاً ضعیف است و از ناسازگاریهای داخلی متعددی رنج میبرد. نتیجهٔ این وضعیت، شکلگیری مجموعهای از «گویشهای SQL» است که هرکدام اندکی ــ و گاهی آزاردهنده ــ با دیگری تفاوت دارند.
زبان پایهٔ SQL در واقع کوچک و یادگیری و استفاده از آن نسبتاً آسان است. این زبان از شش نوع دستور اصلی تشکیل میشود ــ select, insert, update, delete, create, drop ــ که میتوان آنها را در سه دستهٔ زیر گروهبندی کرد.
دستورهای SQL بر اساس دستهبندی| CATEGORY | STATEMENT | PURPOSE |
|---|
| Query | SELECT | نمایش ردیفهای یک یا چند جدول |
| Maintenance | INSERT | افزودن ردیف به جدول |
| Maintenance | UPDATE | تغییر ردیفهای جدول |
| Maintenance | DELETE | حذف ردیفهای جدول |
| Definition | CREATE | افزودن جدولها، ایندکسها و Viewها |
| Definition | DROP | حذف جدولها، ایندکسها و Viewها |
دستورهای پرسوجو
دستور SELECT که شکلهای گوناگونی دارد، برای صورتبندی همهٔ پرسوجوها استفاده میشود. دستورهای SELECT «سؤالهایی میپرسند» که پاسخ آنها ممکن است در یک یا چند جدول پایگاه داده وجود داشته باشد یا از آنها مشتق شود.
دستورهای نگهداری
دستور INSERT که دو شکل متفاوت دارد، برای افزودن ردیفهای جدید به جدول ــ یک ردیف یا چند ردیف در هر بار ــ استفاده میشود. دستور UPDATE برای تغییر ردیفهای موجود و دستور DELETE برای حذف ردیفهای منسوخ به کار میروند.
دستورهای تعریف
دستور CREATE که چندین شکل متفاوت دارد، برای تعریف جدولها، ایندکسها و Viewهای جدید در پایگاه داده استفاده میشود. شکلهای مختلف دستور DROP برای حذف همین مؤلفهها زمانی که دیگر موردنیاز نیستند به کار میروند.
یک دستور SQL مجموعهای از بندها (Clauses)، کلیدواژهها (Keywords) و پارامترها (Parameters) است که کار مشخصی انجام میدهد. در نمونههای زیر هر بند در خط جداگانه نمایش داده شده است؛ کلیدواژهها با حروف بزرگ و پارامترها با حروف کوچک نشان داده شدهاند.
SELECT columns
FROM table
WHERE comparisons
DELETE
FROM table
WHERE comparisons
CREATE
INDEX index
ON table ( columns )
بندها
بخشهای مختلف دستورهای SQL بر اساس واژهٔ آغازین خود نامگذاری میشوند: برای نمونه، بند SELECT یا بند FROM. SQL اجازه میدهد در هر بند چندین Clause وجود داشته باشد، اما بیشتر Clauseها اختیاری هستند یا روش دیگری برای روشنتر بیانکردن پرسوجو فراهم میکنند.
کلیدواژهها
SQL تعداد کمی واژه را که «کلیدواژه» نامیده میشوند برای اهداف مشخص رزرو میکند. کلیدواژهها را میتوان با حروف بزرگ، کوچک یا ترکیبی نوشت؛ در این کتاب برای وضوح با حروف بزرگ نشان داده میشوند. از کلیدواژهها نمیتوان بهعنوان نام جدول یا ستون استفاده کرد.
پارامترها
پارامترها بخشهای «متغیر» هر بند هستند. هنگام نوشتن یک دستور SQL، بهجای پارامترهای نمونهای که در متن با حروف کوچک نمایش داده شدهاند، نام ستون مناسب، نام جدول و سایر مقادیر موردنیاز را وارد میکنید.