Transcript دانلود
بسم هللا الرحمن الرحیم
نام درس :پايگاه دادهها
تعداد واحد2:
نام منبع:
سیستم های بانک اطالعاتی
مولف:
تهيهكننده:
س ی .جی دیت
مهندس عین هللا جعفر نژاد قمی
محسن کتابی
فصل اول :سیستم بانک اطالعاتی
فصل دوم :معماری Ansi /Sparsبرای سیستمهای بانک اطالعاتی
فصل سوم :مدل رابطه ای Relational model
فصل چهارم Standard query language (Sql):
فصل پنجم :نرمالسازی ( ) Normalization
فصل اول :سیستم بانک اطالعاتی
سیستم بانک اطالعاتی چیست :سیستم بانک اطالعاتی یک سیستم اطالعاتی
الکترونیکی مدیریت فایل است که یک دنباله ای از رکوردها را نگهداری می کند .
اجزای بانک اطالعاتی :
-1داده
-2نرم افزار
-3سخت افزار
-4کاربران
داده :اطالعاتی است که در بانک اطالعاتی ذخیره شده است .
انواع سیستم کامپیوتری :
الف ) سیستم تک کاربره :
سیستمی که در یک لحظه فقط یک نفر می تواند از آن استفاده کند
ب ) سیستم چند کاربره :
سیستمی که در یک لحظه چندین نفر بطور همزمان از آن استفاده می کند .
در یک سیستم چند کاربره چند کاربر به طور همزمان از داده ها
استفاده می نمایند بنابراین در چنین سیستمی بایستی داده ها
جامعیت داشته و مجتمع باشند .
جامعیت یعنی :
داده ها همواره صحیح باشند .
مجتمع یعنی :
داده ها در یک جا متمرکز باشند .
متمرکز یعنی :
بر روی داده ها کنترل متمرکز داشته باشیم .به عبارت دیگر یک داده
فقط در یک جا ذخیره شده باشند .
-2نرم افزار :در یک بانک اطالعاتی دو نرم افزار مهم وجود دارد :
الف ) نرم افزار سیستم مدیریت بانک اطالعاتی (: )DBMS
این نرم افزار وظیفه دارد داده ها را در فایل ذخیره نماید و مجتمع و جامعیت آنها را تضمین
نماید و همچنین تمام درخواستهای کاربر مانند ذخیره اطالعات جدید در پایگاه داده و به
روز رسانی داده ها و ...توسط DBMSصورت میگیرد .
ب) نرم افزار رابط کاربر :
یک رابط گرافیکی برای ارتباط کاربر با بانک اطالعاتی ایجاد می کند .
درخواستهای کاربران به این نرم افزار داده می شود و این نرم افزار آن را به DBMSمنقل
می کند و نتایج نیز از DBMSبه این نرم افزار برگشت داده می شود و در خروجی
گرافیکی نمایش داده می شود .
مانند نرم افزارهای …Vb , Delphi,
-3سخت افزار :
سخت افزار مورد نیاز برای سیتم بانک اطالعاتی عبارتند از :
الف ) Cpu
ج) دستگاههای IO
-4کاربران :
ب) حافظه
د) دیسک سخت ( هارد دیسک )
در یک سیستم بانک اطالعاتی کاربران به چهار دسته تقسیم می شوند :
الف ) برنامه نویس کاربردی :مسئول نوشتن برنامه های کاربردی بانک اط االعاتی
است .
ب) طراح پایگاه داده
ج) برنامه نویس سیستمی
د) کاربران نهایی :که از طریق ایستگاههای کاری یا پایانه ها به سیستم دسترس ی
دارند .
مزایای بانک اطالعاتی :
یک بانک اطالعاتی سبب می شود که ما بر روی داده ها کنترل متمرکز داشته
باشیم و مزایای کنترل متمرکز بعدا بررس ی می شود ،عالوه بر آن بانک
اطالعاتی مزایای زیر را نیز دارد :
-سرعت
-حجم کمتر
-دقت بیشتر
-هزینه کمتر
مزایای کنترل متمرکز :
-1جامعیت داده ها :سیستم بانک اطالعاتی متمرکز سبب می شود که داده ها همواره
صحیح باشند و داده ها بصورت متمرکز بین کاربران استفاده شوند .
-2امنیت داده ها :کنترل متمرکز سبب می شود که همواره داده ها را در یک محیط
امن نگهداری کنیم .چنانچه داده ها پراکنده باشند امکان دارد امنیت داده ها از
بین برود ولی در حالت متمرکز امنیت داده ها حفظ می شود .
فصل دوم :
معماری Ansi /Spars
برای سیستمهای بانک اطالعاتی
فصل دوم :معماری Ansi /Sparsبرای سیستمهای بانک اطالعاتی
برای اینکه جزئیات ذخیره و بازیابی داده ها کامال از دید کاربر مخفی باشد Ansi .یک
معماری سه الیه برای سیستمهای پایگاه داده ارائه کرده است .
-1الیه فیزیکی یا داخلی :در این الیه ،داده های فیزیکی همانگونه که روی محیط
فیزیکی ذخیره شده اند نمایش داده می شود .
-2الیه اداراکی یا انتزاعی :دیدی است که طراح پایگاه داده نسبت به کلیه م اوجودیتها و
ارتباطات میان آنها دارد .این دید یک دید جامع است که دید کلیه کاربران نهایی از
روی آن استخراج می شود .وظیفه تهیه این دید جامع ،بر عهده طراح پایگاه داده
می باشد .
-3الیه خارجی :شامل دید خارجی کلیه کاربران است و دیدی است که هر کاربر نسبت به اط االعات
ذخیره شده دارد .لزوما با دید ادراکی یکسان نیست و هر کاربر می تواند از نقطه نظر متفاوتی به
داده ها نگاه کند .همچنین ممکن است هر کاربر از چند دید خارجی متفاوت استفاده کند .
مثال :برای درک تفاوت میان دید ادراکی و دید خارجی ،محیط یک دانشگاه ارا در
نظر بگیرید .دید طراح باید شامل نیازمندیهای کلیه بخشهای دانشگاه شامل
آموزش ،امور مالی ،امورا دانشجویی و ...باشد .فرض کنید این دید شامل
جداول زیر باشد :
دانشجو ( شماره دانشجویی ،نام درس ،تعداد واحد ،نوع درس و ) ...
درس ( شماره درس ،نام درس ،تعداد واحد ،نوع درس و ) ...
استاد ( شماره استاد ،نام ،نام خانوادگی ،مدرک و ) ...
نمرات ( شماره دانشجویی ،شماره درس ،ترم ،نمره )
بسیاری از اطالعات فوق ممکن است خارج از محدوده کاری یک بخش باشند ،مثال برای
کارمند آموزش ،شماره شناسنامه و یا نوع بیمه یک دانشجو اهمیتی ندارد .پس نیازی
ندارد این فیلدها را ببیند .از طرف دیگر ممکن است در بسیاری از گزارشات قسمت
آموزش ،معدل کل دانشجو مورد نیاز باشد .در هیچ یک از جداولی که طراح در نظر
گرفته است ،ویژگی معدل وجود ندارد ولی می توان مقدار این ویژگی را بر اساس نمرات
دانشجو و تعداد واحد هر درس محاسبه کرد .پس DBAمی تواند یک دید خارجی
مخصوص کارمندان آموزش تعریف کند که به صورت زیر باشد :
دانشجو از دید آموزش ( شماره دانشجویی ،نام ،نام خانوادگی ،رشته ،سال ورود ،معدل
کل )
دانشجو از دید مالی ( شماره دانشجویی ،نام ،نام خانوادگی مبلغ وام گرفته ،تعداد اقساط
وام ،مبلغ هر قسط ،تاریخ سررسید هر قسط )
مفاهیم جدید :
) HL(Host Languageزبان میزبان :
یک زبان برنامه نویس ی است که در بانک اطالعاتی مسئول تهیه امکانات محاسباتی ،منطقی و
تصمیم گیری است .مثل زبان دلفی – -ASP-PHPویژوال بیسیک و غیره
زبان : ) Data sub language ( DSL
این زبان با اشیاء و عملیات بانک اطالعاتی سروکار دارد و ترکیبی از دو زبان زیر است :
: )Data defin language( DDL-1
این زبان برای اعالن اشیاء ( جدول ) بانک اطالعاتی بکار می رود ,مثل :تعریف بانک اطالعاتی
،تعریف جدولها و ...
: )Data manipulation language( DML-2
این زبان برای پردازش اشیاء بکار می رود .مانند :به هنگام رسانی ،حذف داده های موجود در
بانک ،افزودن داده های جدید به بانک .
نکته :در برخی اوقات نمی توان زبان میزبان و DSLرا از هم تشخیص داد .در اینگونه زبانها ،
زبان DSLدر داخل زبان میزبان تعبیه شده است و بسیار بهم پیوسته اند .
سیستم مدیریت بانک اطالعاتی ( : ) DBMSنر افزاری است که تمام دستیابیها به بانک اطالعاتی را انجام می دهد ،مراحلی که برای انجام
یک دستور یا یک رویداد خارجی توسط DBMSرخ می دهد عبارتند از :
-1کاربر با استفاده از زبان DSLمثل SQLدرخواست را اعالم می کند .
DBMS -2درخواستها را تحلیل و تغییر می دهد .
DBMS -3مطابق با نگاشت خارجی به مفهومی و نگاشت مفهومی به داخلی تمام شماهای
مفهومی و داخلی را بررس ی و ایجاد می نماید .
DBMS -4عملیات الزم را مطابق با درخواست کاربر بر روی بانک اطالعاتی انجام می دهد .
نگاشت :
-1خارجی /مفهومی :این نگاشت تناظر بین دیدگاههای خارجی و دیدگاههای مفهومی را
تعریف می کند .به عبارت دیگر ممکن است یکسری اطالعات و داده ها در سطح
خارجی نام خاص ی داشته باشند و سطح مفهومی با یک نام دیگری متناظر شوند .
-2مفهومی /داخلی :این نگاشت تناظر بین دیدگاههای مفهومی و بانک اطالعاتی
ذخیره شده ( دیدگاه داخلی ) تعریف می کند .به عبارت دیگر نحوه ذخیره سطح
مفهومی در سطح فیزیکی را بیان می کند .
DBMSو وظایف آن : DBMSبه عنوان یک نرم افزار بانک اطالعاتی دارای وظایف زیر است :
-1تعریف داده ها :همانطوریکه اشاره شد تعریف داده ها بر عهده بخش DDLزبان DSLمی
باشد .درنتیجه DBMSشامل زبان DSLخواهد بود و وظیفه دارد که تمام داده های
بانک اطالعاتی را تعریف نماید .
-2دستکاری داده ها :دستکاری داده ها به عهده بخش DMLزبان DSLو DBMSبایستی
امکان دستکاری و عملیات بانک اطالعاتی روی داده ها را فراهم نماید .
-3جامعیت و امنیت داده ها DBMS :نظارت مستقیم بر محدودیتهای جامعیتی و امنیتی دارد و
چنانچه درخواستی به آن داده شود که این محدودیتها را نقض می کند .در این صورت آن
درخواست را رد می کند .
DBMSو وظایف آن : -4ترمیم و سازگاری داده ها DBMS :وظیفه دارد تراکنشها ( )Transactionرا
بررس ی نماید و در صورت اجرای ناقص تراکنش آنرا ترمیم نماید .
تراکنش :یک دسته از دستورالعملها ئیست که بایستی یا به طور کامل اجرا شوند و
یا اصال اجرا نشوند .
-5بهینه سازی و اجرا DBMS :یک بخش ی بنام بهینه سازی دارد که تمام
درخواستهای DMLرا بهینه سازی می کند و به مدیر زمان اجرا تحویل می دهد .
-6فرهنگ داده ها :برای هر داده تعریف شده در بانک اطالعاتی بایستی یک موضوع
کافی داشته باشیم به عبارت دیگر باید داده هایی را راجع به داده ها داشته
باشیم که DBMSوظیفه دارد این امکان را فراهم نماید .
DBAو وظایف آن : Data base administratorفردی است که آشنایی کافی با تکنول اوژی
اطالعات دارد و بانک اطالعاتی را پیاده سازی و همچنین تصمیمات DA
را روی آن اعمال می کند .
DAمدیر داده : Data administratorفردیست در یک موسسه که داده ها و نیازهای
موسسه را می شناسد و آنها را در سطح عالی مدیریت قرار می دهد و
امکان دارد به مسائل فنی آشنایی کامل نداشته باشد .
وظایف : DA
-1تعریف شمای مفهومی
-2تعریف شمای داخلی
-3تعریف محدودیتهای جامعیتی و امنیتی
-4تعریف سیستمهای ترمیم و پشتیبانی
-5تعریف رابطه کاربردی
فصل سوم:
مدل رابطه ای
Relational model
هدف طراحی بانک اطالعاتی است .ما تاکنون با مفهوم
بانک اطالعاتی معماری Ansi/Sparsآشنا شدیم .به
عبارت دیگر یاد گرفتیم که برای طزاحی بانک اطالعاتی چه
ابزارهایی مورد نیاز است .
یکی از مسائل اساس ی در معماری Ansi\Parsطراحی
شمای مفهومی بود و یاد گرفتیم که برای طراحی آن یک
زبان Dslالزم داریم .گفتیم که زبان DDLبایستی
قابلیت DDLو DMLرا داشته باشد .
برای طراحی شمای مفهومی مدلهای مختلفی وجود دارد
،که امروزه در پایگاه های بزرگ معمومال از مدل رابطه
ای استفاده می شود .که مورد بررس ی قرار می گیرد .
مفاهیم مدل رابطه ای :
صفت ( : )Atributeویژگی است که به یک ش یء نسبتداده می شود به عنوان مثال اگر موجودیت دانشجو را
داشته باشیم صفتهای زیر برای آن تعریف می شود :
( ، ...شماره دانشجویی ،نام خانوادگی ،نام ) دانشجو
به دانشجو که یک ش یء خارجی است موجودیت ()Entity
می گوئیم .
کاردینالتی :تعداد سطرهای یک رابطه را کاردینالتی آن رابطه گویند .
درجه :تعداد صفات یک رابطه را درجه آن رابطه گویند .
دامنه : برای یک صفت مفروض مجموعه مقادیری که می توانداتخاذ کند را دامنه آن صفت گویند .
انواع صفت :
الف :صفت کلیدی
ب ) صفت تک مقداره /چند مقداره
ج ) صفت مشتق
د ) صفت ساده
ر ) صفت مرکب
انواع صفت :
الف ) صفت کلیدی :
صفتی است در یک رابطه که دارای دو ویژگی است :
-1منحصر به فرد باشد .
-2مقدار تهی نداشته باشد
مثل :کد ملی یا شماره دانشجویی .
الف ) رابطه چیست :
فرض کنید یک مجموع از صفات مانند، … ، R2 ، R1
Rmداریم که هر یک روی یک دامنه هستند .هر زیر
مجموعه حاصل ضرب دکارتی این صفات را رابطه می
گوئیم .
یعنی :
R=R1*R2*…Rn = {(x1,x2, … ,xn) │xi ε Ri
انواع صفت کلیدی : -1ابر کلید
-2کلید کاندید
-3کلید فرعی
-4کلید خارجی
ابر کلید :صفت کلیدی است که اجزای آن نیز می توانند کلید
باشند ،به عبارت دیگر ،ابر کلید ممکن است ترکیبی
از چند صفت باشد که بهینه نشده است
بعنوان مثال :
( ، ...شماره دانشجویی ،نام خانوادگی ،نام ) دانشجو
( شماره دانشجویی و نام )= ابر کلید
کلید کاندید ( اصلی ) :صفت کلیدی در یک رابطه که اجزای آن نمی توانند کلید
باشند .
یعنی دارای خاصیت :
-1یکتایی مقدار -2کاهش ناپذیری باشد
مثال :شماره دانشجویی ،کد ملی
کلید فرعی :در یک رابطه ممکن است چند صفت داشته باشیم که می
توانند کلید کاندید باشند و DBAفقط یکی از آنها را به
عنوان کلید اصلی معرفی کرده است ،در این صورت بقیه
کلیدها را کلید فرعی می گوئیم
مثال :در رابطه زیر :
دو کلید می توانیم داشته باشیم
-1شماره دانشجویی
-2کد ملی
فرض کنید مدیر بانک اطالعاتی شماره دانشجویی را بعن اوان
کلید اصلی معرفی کند در اینصورت کد ملی کلید فرعی خواهد
بود .
کلید خارجی :یک کلید خارجی صفتی است در یک رابطه که در رابطه دیگر
کلید اصلی است .
نکته :یک کلید خارجی می تواند تهی یا nullباشد .
مثال :رابطه های زیر را در نظر بگیرید :
کد محصول برای جدول فروش یک کلید خارجی است .
انواع صفت :
ب ) صفت تک مقداره /چند مقداره :
صفتی است که می تواند برای برخی از اشیاء یک مقدار و
برخی دیگر چند مقدار داشته باشد .
مث اال در جدول اطالعات اساتید اساتید می توانند دارای یک
یا چند مدرک تحصیلی باشد .
ج ) صفت مشتق :
صفتی است در یک رابطه که مقدار آن را می توان از روی
صفات دیگر بدست آورد .
مثال :در جدول زیر سن دانشجو یک صفت مشتق است .
تاریخ تولد – تاریخ روز = سن دانشجو
د ) صفت ساده :
صفتی است که اجزای آن نمی توانند صفت باشند .مانند
نام و نام خانوادگی
ر ) صفت مرکب:
صفتی است که اجزای آن نیز دارای معنی باشند .مثال :
آدرس ،مشخصات .
آدرس ( کشور – شهر – خیابان – منطقه و ) ...
عملگرها :
-1عملگرهای مجموعه ای
شامل اجتماع
،اشتراک
،ضرب و تفاضل
-2عملگرهای رابطه ای
شامل تصویر ،الحاق
،تقصیم
و محدودیت
عملگرهای مجموعه ای
عملگر اجتماع :
فرض کنید A , Bدور رابطه همنوع باشند .در اینصورت
اجتماع دو رابطه به صورت A union Bنمایش داده می شود و
شامل چند تاییهایی مثل Tکه یا در Aیا در Bو یا در هردو
آنهاست .
همنوع :اگر و فقط اگر تعداد صفات یکسانی داشته باشند .
عملگر اجتماع :
مثال :
عملگرهای مجموعه ای
عملگر اشتراک :
فرض کنید A , Bدور رابطه همنوع باشند .در این
صورت اشتراک دو رابطه به
صورت A Intersect
Bنمایش داده می شود و شامل چند
تاییهایی مثل Tکه هم در Aو هم در Bو باشند .
عملگر اشتراک :
مثال :
عملگرهای مجموعه ای
عملگر تفاضل :
فرض کنید A , Bدور رابطه همنوع باشند .در این
صورت تفاضل دو رابطه به
صورت A minus
Bنمایش داده می شود و شامل چند
تاییهایی مثل Tکه در Aبوده و در Bنیست .
عملگر
مثال :
تفاضل :
عملگرهای مجموعه ای
عملگر ضرب دکارتی :
}A={x1,…,xm} , B={y1,…,yn
فرض کنید
باشند که هیچ صفت مشترکی ندارند در اینصورت ضرب دکارتی آنها
به صورت
A Times B
نمایش داده می شود و شامل تمام چند تاییهایی مثل ) T=(x,yاست
که x ε Aو y ε Bمی باشد .
عملگر ضرب دکارتی
:مثال :
عملگرهای مجموعه ای
عملگر ضرب دکارتی :
نکته :1
چنانچه روابط A , Bدارای صفت مشترک باشند .در اینصورت با
استفاده از دستور Renameنام آن صفت را در یکی از روابط تغییر
می دهیم .مثال اگر در جداول فوق صفت شهر در هردو یکسان بود می
بایستی یکی از آنها را تغییر دهیم :
A Rename city as s.city
A times B
عملگرهای مجموعه ای
عملگر ضرب دکارتی :
نکته: 2
ضرب دکارتی از گرانترین عملگرهای بانک رابطه ای است که زمان و
فضای زیادی می خواهد و تا حد امکان باید ار آن اجتناب کرد .
توجه کنید که جدول فوق )2× 2=4( 4سطر و )2+3=5( 5ستون دارد
.
عملگرهای رابطه
ای
عملگر الحاق (: )Join
اگر A,Bدو رابطه باشند ،الحاق این دو رابطه را بصورت A join
Bیا A ∞ Bنمایش داده و این عملگر دو رابطه را بر مبنای یک یا
چند فیلد مشترک به هم پیوند می دهد و رکوردهایی از دو طرف جدول
را که مقدار آن فیلد مشترک برای آنها یکسان است به هم می چسباند
.
به عبارتی دیگر فقط سطرهایی از جدول را در کنار هم قرار می دهد
که همه ستونهای همنام آن دو جدول مقادیر مساوی داشته باشند .
ستونهای هم نام فقط یکبار در خروجی ظاهر می شوند
مثال :با توجه به جداول زیر خروجی A ∞ Cرا بدست آورید .
فیلد مشترک S#می باشد پس هر سطر جدول Aرا برداشته پشت سطرهایی از
جدول Cمی گذاریم که S#آنها با هم برابرند .
الحاق همواره بین کلید خارجی و کلید سازگار با آن نیست ،اگر چه این الحاق
بسیار متداول است بعنوان مثال :
نکته: 1
عملگر joinیک عملگر اولیه نیست .و می توان آنرا با ترکیب سایر
عملگرها نوشت :
A ∞ B = ( A Times B ) where A.city = B.city
عملگر ضرب
عملگر محدودیت
عملگرهای رابطه ای
عملگر محدودیت )Restrict( :
فرض کنید Aیک رابطه باشد که دارای صفات x,yاست و op
یک عملگر باشد .به طوریکه شرط X op Yخوش تعریف ( دارای
معنی ) باشد .محدودیت opروی Aبصورت زیر تعریف می شود :
A where x op y
و نتیجه آن رابطه ای است هم نوع با Aکه شامل چند تاییهایی است
که در شرط x op yصدق می کند .
مثال :
فرض کنید جدول محصوالت به صورت زیر باشد .محصوالتی که
شهر آنها زنجان است را چاپ کنید ؟
' A where A.city = ' zanjan
مثال :
)A where c1 and c2 = (A where c1 ) intersect (A where c2
)A where c1 or c2 = (A where c1 ) union (A where c2
)A where not c = A minus (A where c
نکته :
عملگر محدودیت یک زیر مجموعه افقی از یک رابطه ایجاد می کند .
یعنی زیر مجموعه ای از چند تایی های مربوط به رابطه ای که در
شرط محدودیت خاص ی صدق می کند .
عملگرهای رابطه ای
عملگر تصویر:
فرض کنید Rیک رابطه بصورت } R={x,y,zباشد یک
تصویر روی Rعبارتست از انتخاب یک زیر مجموعه از صفات
Rکه از آن چندتاییهای تکراری حذف شده اند .
مثال :
}R={s#,city,color,number
می خواهیم تصویر } R={city,colorرا پیدا کنیم :
هیچ صفتی نمی تواند بیش از یک بار در لیست کامای نام صفت ظاهر شود .
اگر لیست کامای نام صفت شامل تمام صفات رابطه باشند این عمل تصویر ،یک عمل
تصویر همانی است .
عملگرهای رابطه ای
عملگر تقسیم :
فرض کنید :
}A={x1,x2,…xm
}B={y1,y2,…yn
} C={ x1,x2,…xm , y1,y2,…yn
سه رابطه باشند .در اینصورت حاصل تقسیم Aبه Bبه واسطه Cبه صورت
زیر نوشته می شود :
R=A divid by B per C
و نتیجه آن رابطه ای است مانند } R={x1,…,xmکه شامل تمام چند
تاییهایی مانند tاست که tزیر مجموعه Aبوده و tبا تمام t ε Bدر C
رابطه دارند .
به عبارت دیگر ،نتیجه متشکل از آن مقادیر xاز Aاست که مقادیر yمتناظر با
آنها در ، Cحاوی تمام مقادیر yاز Bهستند .
مثال :
بطور کلی در مدل رابطه ای پس از ایجاد بانک اطالعاتی که یک مجموعه ای از
جداول است بایستی برای بازیابی اطالعات که در اصطالح Queryگفته می
شود ،از یک ابزاری استفاده نمود که در مدل رابطه ای دو نوع ابزار وجود دا ارد :
-1جبر رابطه ای
-2حساب رابطه ای
جبر رابطه ای :
جبر رابطه ای همان عملگرهایی هستند که تاکنون بررس ی کرده ایم
حساب رابطه ای :
زبان sqlاست که یک زبان برنامه نویس ی بوده و در فصل بعدی بررس ی می شود
.
بررس ی چند مثال :
فرض کنید در یک بانک اطالعاتی مدل رابطه ای جداول زیر را داریم ،
Queryهای زیر را به زبان جبر رابطه ای روی این بانک اطالعاتی
انجام دهید :
جدول عرضه کنندگان
}S = {s#,sname,status,city
}P={p#,pname,color,weight,city
جدول قطعات
}Sp={s#,p#,qty
جدول ارتباط :هر عرضه کننده از هر قطعه چقدر عرضه کرده است
مثال : 1
اسامی عرضه کنندگانی را مشخص کنید که قطعه P2را عرضه می
کنند .
)}((( sp where sp.p# = 'p2' ) {s#}) join s ){name
تصویر
الحاق
تصویر
محدودیت
مثال : 2
اسامی عرضه کنندگانی را مشخص کنید که حداقل یک قطعه قرمز
عرضه می کنند .
}((((( p where p.color = ' red ' ) { p#} ) join sp ) {s#} ) join s ){sname
مثال : 3
اسامی عرضه کنندگانی را مشخص نمائید که تمام قطعات را عرضه می
کنند .
}(( s{s#} divid by p {p#} per sp {s#,p#}) join s ) {sname
مثال : 4
شماره عرضه کنندگانی را مشخص کنید که حداقل تمام قطعات را
که توسط تولید کننده s2تولید می شود را تولید کرده باشد .
)}((s{s#} divid by ( sp where s# = 's2' ){p#} per sp { s#,p#
آنهایی که عرضه کنندگان آنها s2است
چه قطعاتی را تولید می کنند
شماره قطعاتی که عرضه کننده s2تولید می کند
تمام عرضه کنندگان
مثال : 5
اسامی عرضه کنندگانی که قطعه p2را عرضه نمی کنند را مشخص
کنید
}((s {s#} minus ( sp where sp.p# = 'p2' ){s#}) join s ) {sname
:فصل چهارم
Standard query language (Sql)
دستورات SQLهمانند هر زبان فرعی داده ای دیگر به سه گروه
تقسیم می شود:
-1دستورات تعریف داده یا DDL
-2دستورات دستکاری داده یا DML
-3دستورات کنترل داده ها یا DCL
چند تذکر :
-1کلیه دستورات SQLیک پرس و جو محسوب می شوند ولی برخی
کارشناسان واژه پرس و جو را تنها در مورد دستور SELECTبه کار می
برند.
-2برای برخی از پرس و جوهای این فصل چند روش ارائه شده است ولی این
به این معنای ارائه کلیه روشهای ممکن نیست.
-3در همه مثال های این فصل ،از جداول S, P, Jو SPJاستفاده شده است
که در جدول ،Sاطالعات تولید کنندگان ،در جدول ،Pاطالعات
محصوالت و در جدول ،Jاطالعات پروژه ها ذخیره شده است و ضمنا" در
جدول SPJمشخص می شود هر تولید کننده چند کیلوگرم از هر محصول
را برای هر پروژه تولید کرده است.
جداول :
)S(s# , sname, city
اطالعات تولید کنندگان
اطالعات محصوالت
)P(P# , Pname, color
اطالعات پروژه ها
هر تولید کننده چند کیلوگرم از هر محصول
را برای هر پروژه تولید کرده است.
)J(j# , jname, city
)SPJ(s#,p#,j#,qty
اطالعات تولید کنندگان
اطالعات محصوالت
اطالعات پروژه ها
هر تولید کننده چند کیلوگرم از هر محصول را برای هر پروژه تولید کرده است.
دستورات تعریف داده ها :
از دستورات تعریف داده ها برای تعیین و یا تغییر ساختار داده ها استفاده
می شود .این دستورات عبارتند از :
-1دستور ایجاد پایگاه داده ها
-2دستور ایجاد جداول
-3ایجاد ایندکس
-4اضافه کردن یک ستون جدید به یک جدول
-5تغییر مشخصات یک ستون از یک جدول
-6حذف یک ستون از جدول
-7حذف یک جدول
-8حذف یک ایندکس
دستور ایجاد پایگاه داده ها
قبل از ایجاد جداول الزم است یک پایگاه داده ایجاد شود و سپس
جداول مورد نظر در داخل آن ساخته شوند.
قالب کلی :
نام پایگاه داده ها create database
مثال :
create database sale
دستور ایجاد جداول :
قالب کلی :
نام جدول create table
]not null[ ]unique[,نوع ویژگی 1نام ویژگی 1
]not null[ ]unique[,نوع ویژگی 2نام ویژگی2
]not null[ ]unique[,نوع ویژگی 3نام ویژگی 3
...
(,نام ویژگی های تشکیل دهنده کلید اصلی) Primary Key
,نام جدول مورد نظر ( referencesنام ویژگی های کلید خارجی foreign Key)1
,نام جدول مورد نظر ( referencesنام ویژگی های کلید خارجی foreign Key)2
...
([ شرط مورد نظر ]check
تذکر :در کلیه دستورات برای مشخص کردن قسمت های اختیاری از کروشه استفاده شده
است.
معروف ترین انواع داده در SQLعبارتند از :
بازه
نوع داده ای
Integer
اعداد صحیح
Smallint
اعداد صحیح
)Decimal(p,q
اعدادی با Pرقم و qرقم اعشاری در سمت راست
float
اعدادی اعشاری با ممیز شناور
)Char(n
رشته های کاراکتری با طول n
)Varchar (n
رشته های کاراکتری با طول متغیر کوچکتر یا مساوی n
date
تاریخ با فرمت yyyymmdd
time
زمان با فرمت hhmmss
چند نکته :
-1برای عبارات فارس ی از انواع nchar , ntextو ...استفاده می شود
-2در صورت استفاده از عبارات not nullبرای یک ویژگی DBMSاز
درج تاپل هایی که در آنها برای ویژگی مورد نظر مقداری وارد نشده
باشد جلوگیری می کند .در صورت استفاده از عبارت uniqueبرای
یک ویژگی DBMS ،از درج تاپل هایی که در آنها برای ویژگی مورد
نظر مقدار تکراری وارد شده باشد جلوگیری می کند.
مثال :
جدول Sرا به گونه ای ایجاد کنید که کاربر مجاز نباشد هیچ تاپلی
با snameخالی یا تکراری در این جدول درج کند :
Create table S (s# char(2),
sname char(30) not null unique ,
city nchar(20) ,
))primary key (s#
: مثال
. باشد2000 تا500 اعداد بینqty را به گونه ای ایجاد کنید که بازه مجاز برایSPJ جدول
. استفاده شودcheck برای تعیین قوانین جامعیت داده ای از قسمت
Create table SPJ (s# char (2) ,
P# char (2) ,
J# char (2) ,
Qty integer ,
Primary key (s#,p#,j#) ,
Foreing key (s#) references S ,
Foreing key (p#) references p ,
Foreing key (j#) references j ,
Check (qty > 500 and qty < 20000 ))
ایجاد ایندکس :
ایندکس ها در واقع همان کلیدهای ثانویه هستند .از ایندکس ها برای
تسریع جستجوی یک موجودیت خاص در صورت عدم دسترس ی به مقدار
کلید اصلی استفاده می شود.
قالب کلی :
(نام ویژگی ها) نام جدول onنام ایندکس Create ]unique[ index
مثال :
create database sale
مثال :
روی جدول Sیک ایندکس بر اساس نام تولید کننده و با نام namesایجاد
کنید.
(create index names on S )sname
تذکر :
درصورت استفاده کلی ازعبارت uniqueدر این دستور DBMS ،از ورود اسم
های تکراری در جدول Sجلوگیری خواهد کرد.
اضافه کردن یک ستون جدید به یک جدول
قالب کلی :
مشخصات ستون جدید نام ستون جدید addنام جدول Alter table
مثال :در جدول Sستون جدیدی با نام telبرای درج شماره تلفن تولید کنندگان
اضافه کنید.
(alter table S add tel char )10
تغییر مشخصات یک ستون از یک جدول
قالب کلی :
مشخصات جدید نام ستون alter columnنام جدول alter table
مثال :در جدول ،Sطول ستون snameرا از 30کاراکتر به 20کاراکتر تغییر دهید
Alter table S alter column sname nchar (20) not null unique
حذف یک ستون از جدول
قالب کلی :
نام ستون drop columnنام جدول alter table
مثال :ستون snameرا از جدول Sحذف کنید.
Alter table S drop column sname
حذف یک جدول
قالب کلی :
نام جدول drop table
مثال :جدول Sرا حذف کنید.
drop table S
حذف یک ایندکس
قالب کلی :
نام ایندکس .نام جدول drop index
مثال :ایندکس namesروی جدول Sرا حذف کنید.
Drop index S.sname
دستورات دستکاری داده :
از این دستورات برای تهیه گزارشات ( خواندن تاپل ها) ،درج تاپل ها ،حذف تاپل
ها و تغییر تاپل ها استفاده می شود .این دستورات عبارتند از :
-1دستور انتخاب
-2دستور ایجاد دید خارجی یا دیدگاه
-3حذف یک دیدگاه
-4درج یک تاپل
-5اصالح تاپل ها
-6حذف تاپل ها
دستور انتخاب :
این دستور یکی از پرکاربردترین دستورات SQLاست .از این دستورات برای
انتخاب تاپل ها و ستون های مورد نظر از یک یا چند جدول استفاده می شود.
قالب کلی :
نام ستون ها و یا عبارات محاسباتی مورد نظر [Select ]distinct
نام جدول From
] where
[شرط روی تاپل ها
[نام ستون هایی که قرار است لیست بر اساس آنها گروه بندی شود ]gropup by
]having
[شرط روی گروه ها
[ نام ستون هایی که قرار است لیست بر اساس آنها مرتب شود ]order by
مثال :نام کلیه شهرهایی را بیابید که تولید کننده ای در آن ها قرار دارد.
برای این کار کافی است ستون cityاز جدول Sرا انتخاب کنیم.
Select city from s
و یا می توان نام جدول را نیز ذکر کرد :
Select s.city from s
خروجی :
City
تهران
یزد
اصفهان
تهران
مشاهده می کنید که در این جدول تاپل های تکراری وجود دارند .برای حذف
تاپلهای تکراری کافی است از عبارت distinctاستفاده کنیم :
Select distinct city from s
خروجی :
City
تهران
یزد
اصفهان
مثال :مشخصات کلیه تولید کنندگان را بیابید.
برای این کار کافی است تمام ستون های جدول Sرا انتخاب کنیم :
Select s#,sname,city
from s
به جای ذکر تمام ستون های یک جدول می توان از * استفاده کرد(* به معنی تمام ستون های
جدول است ):
خروجی :
city
sname
S#
تهران
تهران مصالح
یزد
یزد مصالح
اصفهان
البرز
تهران
ایران مصالح
S1
S2
S3
S4
* Select
from s
قسمت : where
از قسمت whereبرای انتخاب تاپل هایی از جدول که شرط به خصوص ی
دارند استفاده می شود
مثال :نام تولید کنندگان تهرانی را بیابید :
Select sname
From S
'تهران' =Where city
خروجی :
sname
تهران مصالح
ایران مصالح
عملگرهای inو : not in
برای تست وجود یا عدم وجود یک مقدار داخل یک مجموعه استفاده می
شود.
مثال :مشخصات فروشهای مربوط به محصوالت P2یا P3یا P4را بیابید.
روش اول :
* Select
From SPJ
’Where p# =‘p2’ or p# =‘p3’ or p# =‘p4
روش دوم :استفاده از عملکرد in
* Select
From SPJ
)’Where p# in (‘p2’,’p3’,’p4
: خروجی
S#
P#
J#
qty
S1
P2
J1
20000
S1
P3
J1
3000
S1
P4
J1
8000
S2
P3
J1
8000
S3
P2
J3
9000
مثال :مشخصات فروش هایی را بیابید که مربوط به محصوالت ""P2
و" "P3و" "P4نیستند.
روش اول :
* Select
From SPJ
’Where p# <>‘p2’ and p# <>‘p3’ and p# <>‘p4
روش دوم :استفاده از عملکرد not in
* Select
From SPJ
)’Where p# not in (‘p2’,’p3’,’p4
عملگر : between
توسط این عملگر می توان بازه یک جستجو را مشخص کرد .در این حالت ،تمام مقادیری
که بین value1و value2قرار می گیرند ،انتخاب می شوند.
مثال :مشخصات تولید کنندگانی را بیابید که sآنها بین ""S1و" "S3واقع شده اند
خروجی :
* Select
From S
’Where s# between ‘S1’ and ‘S3
city
sname
S#
تهران
تهران مصالح
S1
یزد
یزد مصالح
S2
اصفهان
البرز
s3
عملگر : like
از عملگر likeبرای جستجوی یک عبارت داخل مقادیر یک ستون رشته ای استفاده می
شود.
مثال :مشخصات تولید کنندگانی را بیابید که در نام آنها عبارت « مصالح» به کار رفته
باشد.
خروجی :
* Select
From S
‘%مصالحwhere sname like ’%
city
sname
S#
تهران
تهران مصالح
S1
یزد
یزد مصالح
S2
تهران
ایران مصالح
S4
تذکر :در این پرس و جو محل قرار گرفتن عبارت « مصالح» مهم نبوده ،در دو طرف عبارت
از %استفاده کردیم.
چنانچه نام تولید کنندگانی که نام آنها با عبارت « مصالح» شروع می شود مورد نظر
باشد ،از دستور زیر استفاده می کنیم :
* Select
From S
‘%مصالح’ where sname like
و چنانچه نام تولید کنندگانی که نام آنها به عبارت « مصالح» ختم می شود مورد نظر
باشد از دستور زیر استفاده می شود :
* Select
From S
‘مصالحwhere sname like ’%
تابع : sum
از تابع sumبرای محاسبه مجموع مقادیر یک ستون استفاده می شود.
مثال :میزان کل فروش " "P1را بیابید .
برای این کار کافی است مجموع مقادیر ستون qtyرا در فروش های مربوط به " "P1محاسبه
کنیم :
)Select sum(qty
From SPJ
’where p# =‘p1
خروجی :
51000
تابع : max
از تابع maxبرای محاسبه بزرگترین مقدار یک ستون استفاده می شود.
مثال :حداکثر فروش " "P1تا این لحظه را به دست آورید.
برای این کار کافی است ماکزیمم مقادیر ستون qtyرا در فروش های مربوط به ’‘P1
محاسبه کنیم :
)Select max(qty
From SPJ
’where p# =‘p1
خروجی :
1200
تابع : min
از تابع minبرای محاسبه کوچکترین مقدار یک ستون استفاده می شود.
مثال :کمترین میزان فروش ’ ‘P1توسط ’ ‘S1را به دست آورید.
برای این کار کافی است مینیمم مقادیر ستون qtyرا در فروش های مربوط به ’ ‘P1و ’‘P1
محاسبه کنیم :
خروجی :
)Select min(qty
From SPJ
'Where p# ='p1' and s# = 's1
9000
تابع : count
تابع countبرای محاسبه تعداد تاپلهای مورد نظر از یک جدول استفاده می شود.
مثال :1محصول ’ ‘P1تا کنون چند بار فروخته شده است ؟
برای این کار کافی است تعداد تاپلهایی از جدول SPJکه مربوط به ' 'P1هستند را به دست
آوریم :
)Select count(qty
From SPJ
'Where p# ='p1
خروجی :
7
مثال :2محصول ' 'P1تا کنون توسط چند تولید کننده فروخته شده است ؟
برای این کار کافی است تعداد تولید کنندگان غیر تکراری از جدول SPJکه " "P1را
فروخته اند به دست آوریم :
خروجی :
)Select count(distinict s#
From SPJ
'Where p# ='p1
3
قسمت : group by
از قسمت group byبرای گروه بندی لیست بر اساس مقادیر یک یا چند
ستون استفاده می شود .
مثال : 1لیستی از کد محصوالت و میزان کل فروش هر یک از انها تهیه کنید.
در اینجا ) sum(qtyبرای هر یک از محصوالت P1و P2و P3و ...باید به طور جداگانه
محاسبه شود.
پس الزم است لیست را بر اساس P #گروه بندی کنیم :
)select p#,sum (qty
From SPJ
group by p#
خروجی این پرس و جو به شکل زیر خواهد بود :
P#
51000
P1
29000
P2
11000
P3
8000
P4
تذکر :
در صورت استفاده از قسمت ،group byقسمت seleectباید
شامل نام ویژگی هایی که لیست بر اساس آنها گروه بندی شده است
و در صورت نیاز یکی از توابع count, min, max, avg, sum
باشد .مثال" در پرس و جوی باال چون در قسمت group byاز P#
استفاده شده است ،قسمت selectحتما" باید شامل P#و در
صورت لزوم یکی از توابع count, min, max, avg, sum
باشد.
مثال :2لیستی از کد محصوالت ،کد پروژه ها و میزان کل فروش محصول مورد نظر برای
پروژه مورد نظر تهیه کنید.
در اینجا میزان کل فروش برای هر ترکیب شماره محصول /شماره پروژه بایستی به طور
جداگانه محاسبه شود .
پس الزم است لیست را بر اساس P #و j #گروه بندی کنیم :
)select p#,j#,sum (qty
From SPJ
group by p#,j#
خروجی این پرس و جو به شکل زیر خواهد بود :
J#
P#
23000
J1
P1
20000
J1
P2
11000
J1
P3
8000
J1
P4
10000
J2
P1
18000
J3
P1
9000
J3
P2
قسمت : having
از قسمت havingبرای انتخاب گروه هایی که شرط به خصوص ی دارند
استفاده می شود.
مثال :کد محصوالتی را بیابید که میزان کل فروش آنها بیش از 20000کیلوگرم است.
در اینجا میزان کل فروش برای هر محصول بایستی به طور جداگانه محاسبه شده ،سپس کد
محصوالتی که میزان کل فروش آنها بیش از 20000است استخراج شود :
P#
P1
P2
select P#
From SPJ
group by P#
Having sum (qty) > 20000
قسمت : order by
از این قسمت برای مرتب کردن لیست بر اساس مقادیر یک یا چند ستون
عددی ،رشته ای و یا تاریخی از یک جدول به ترتیب صعودی( )ascو یا نزو لی
) )descاستفاده می شود.
مثال : 1لیستی از مشخصات تولید کنندگان تهیه کنید به طوری که بر اساس ترتیب
صعودی نام آنها مرتب باشد.
* Select
From S
Order by sname asc
خروجی :
city
sname
S#
اصفهان
البرز
S3
تهران
ایران مصالح
S4
تهران
تهران مصالح
S1
یزد
یزد مصالح
S2
تذکر :چون ترتیب مرتب سازی به طور پیش فرض صعودی است می توان عبارت ascرا
حذف کرد :
* Select
From S
Order by sname
مثال :2لیستی از مشخصات تولید کنندگان تهیه کنید به طوری که بر اساس ترتیب
صعودی شهر و ترتیب نزو لی نام مرتب باشد.
city
sname
S#
اصفهان
البرز
S3
تهران
تهران مصالح
S1
تهران
ایران مصالح
S4
یزد
یزد مصالح
S2
* Select
From S
Order by city asc,
sname desc
تذکر :در اینجا لیست ابتدا بر اساس ویژگی اول یعنی cityمرتب شده است .سپس
در مورد تاپلهایی که ویژگی cityدر انها مساوی است ،ترتیب نزو لی بر اساس ویژگی
دوم یعنی Snameاعمال شده است .
عملگر : as
از این عملگر برای تغییر نام یک ستون در لیست استفاده می شود.
مثال :لیستی از نام تولید کنندگان و شهر سکونت آنها تهیه کنید.
فرض کنید بخواهیم نام ستون snameرا به supplier Nameتغییر دهیم :
Select sname as supplierName , city
From S
city
suppliername
تهران
تهران مصالح
یزد
یزد مصالح
اصفهان
البرز
تهران
ایران مصالح
پرس و جو روی چند جدول :
در کلیه مثال های قبل اطالعات مورد نیاز در پرس و جو تنها از یک جدول
استخراج شدند ولی در بسیاری از موارد نتیجه پرس وجو را باید از چند جدول
استخراج کرد.
مثال :لیستی از نام تولید کنندگان و نام محصوالت تهیه کنید به طوری که تولید
کننده مورد نظر محصول مورد نظر را فروخته باشد.
نام تولید کنندگان در جدول Sونام محصوالت در جدول Pقرار دارد .همچنین در
جدول SPJمشخص می شود که چه تولید کننده ای چه محصولی را فروخته
است .بنابراین کافی است جدول Sو Pو SPJرا با هم پیوند دهیم.
Select distinct sname , pname
From S, SPJ , P
Where spj.s# = s.s# and spj.p# = p.p#
pname
sname
تیرآهن
آرماتور
سیمان
آلومینیم
تهران مصالح
تهران مصالح
تهران مصالح
تهران مصالح
تیرآهن
سیمان
تیرآهن
آرماتور
یزد مصالح
یزد مصالح
البرز
البرز
عملگر های existsو: not exists
از این عملگرها برای تست وجود یا عدم وجود تاپلهایی خاص در یک جدول استفاده می
شود .
مثال :نام تولید کنندگانی را بیابید که فروش ی داشته اند.
روش اول :این پرس و جو را می توان به این صورت تعبیر کرد :از جدول Sنام تولید
کنندگانی را پیدا کنید که در جدول فروش) (SPJفروش ی (تاپلی) برای آنها وجود دارد :
Select sname
From S
*Where exsists (select
From SPJ
) Where spj.s# = s.s#
روش دوم :با استفاده ار پیوند دو جدول نیز می توان نتیجه این پرس و جو را
بدست آورید :
Select sname
From s,spj
Where s.s# = spj.s#
sname
تهران مصالح
یزد مصالح
البرز
عملگر : union
از این عملگر برای به دست آوردن اجتماع دو جدول سازگار استفاده می شود.
مثال :نام شهرهایی را بیابید که تولید کننده ای در آنها قرار دارد یا پروژه ای در آنها در
حال اجرا است.
نام شهرهایی که تولید کننده ای در انها قرار دارد.
U
نام شهرهایی که پروژه ای در آنها در حال اجرا است.
)) Select city from S
union
))Select city from J
عملگر : except
از این عملگر برای تفریق دو جدول سازگار استفاده می شود.
مثال :نام شهرهایی را بیابید که تولید کننده ای در آنها قرار دارد ولی پروژه ای در آنها در
حال اجرا نیست.
نام شهرهایی که تولید کننده ای در انها قرار دارد.
نام شهرهایی که پروژه ای در آنها در حال اجرا است.
)) Select city from S
except
))Select city from J
عملگر : intersect
از این عملگر برای به دست آوردن اشتراک دو جدول سازگار استفاده می شود.
مثال :نام شهرهایی را بیابید که تولید کننده ای در آنها قرار دارد و پروژه ای در آنها در
حال اجرا است.
نام شهرهایی که تولید کننده ای در انها قرار دارد.
intersect
نام شهرهایی که پروژه ای در آنها در حال اجرا است.
)) Select city from S
intersect
))Select city from J
نکته :
در هر سه دستور فوق ،مقادیر تکراری حذف می شوند .برای نشان
دادن مقادیر تکراری کافی است کلمه کلیدی allبه هر یک اضافه
شود
یعنی union all
یا
except all
یا
intersect all
دستور ایجاد دید خارجی یا دیدگاه :
هر کاربر از دید خود به اطالعات موجود در پایگاه داده نگاه می
کند .مثال" در یک دانشگاه ،اطالعات زیادی در مورد یک دانشجو
وجود دارد .مسائل مالی یا وضعیت تأمین اجتماعی دانشجو به
امور مالی مربوط می شود و نه به آموزش ،پس هیچ لزومی ندارد
که این داده ها را در دسترس کاربران قسمت آموزش قرار دهیم.
بنابراین بهتر است برای کاربران قسمت آموزش ،یک یا چند
دیدگاه ایجاد کنیم تا بدون درگیر شدن با داده هایی که مربوط به
حوزه عملیات مورد نظر خود را انجام دهند.
دیدگاه در واقع یک جدول است که توسط طراح پایگاه داده ها
طراحی می شود DBMS .وظیفه دارد پس از اعمال هر تغییر در
داده های جداول ،محتویات دیدگاه هایی را که روی جداول مورد
نظر ساخته شده اند ،اصالح کند .بنابراین داده های موجود در
دیدگاه همیشه به روز می باشند.
استفاده از دیدگاه ها باعث سهولت انجام بسیاری از پرس وجوها و
در نتیجه تسریع تهیه بسیاری از گزارشات می شود.
قالب کلی دستور ایجاد دیدگاه :
(نام ستون های دیدگاه) نام دیدگاه create view
As
یک دستور انتخاب
مثال :دیدگاهی به نام PartSaleایجاد کنید که شامل کد محصوالت و میزان کل فروش آنها
باشد
(create view PartSale (p#,sum1
As
)select p#,sum(qty
From SPJ
group by p#
خروجی این پرس وجو به شکل زیر خواهد بود :
sum1
P#
51000
P1
29000
P2
11000
P3
8000
p4
تذکر :نام ستون های دیدگاه به ترتیب با نام ستون های انتخاب شده در دستور select
نظیر مشوند.
مثال :نام محصوالتی را بیابید که میزان کل فروش آنها بیشتر از 20000کیلوگرم
است.
با فرض وجود دیدگاه ،PartSaleتهیه این گزارش بسیار ساده خواهد بود :
Select pname
From PartSale, P
where sum 1>20000 and ParstSale.p#=P.p#
Pname
تیرآهن
آرماتور
تذکر :می توان دیدگاهی را روی یک دیدگاه دیگر ساخت .
مثال :دیدگاهی به نام PartSale2ایجاد کنید که شامل نام محصوالتی باشد که میزان
کل فروش آنها بیشتر از 20000کیلوگرم است.
)Create view PartSale2 (Pname1
As
Select pname
From PartSale, P
where partsale.sum 1>20000 and PartSale.p #=P.p#
Pname1
تیرآهن
آرماتور
حذف یک دیدگاه :
قالب کلی :
|نام دیدگاه drop view
مثال :دیدگاه PartSaleرا حذف کنید.
Drop view PartSale
تذکر :با حذف دیدگاه ,PartSaleدیدگاه PartSale2نیز که روی آن
ساخته شده است به طور خودکار نابود می شود.
درج یک تاپل :
قالب کلی :
(مقادیر ویژگی ها)( valuesنام ویزگی ها) نام جدول insert into
مثال :در جدول مربوط به تولید کنندگان ،تولید کننده ای با کد " "S5و نام
‘بهین مصالح’ اضافه کنید :
(‘بهین مصالح’insert into S (s#,sname) values)’S5’,
اصالح یک تاپل (رکورد) :
قالب کلی :
,مقدار=1نام ویژگی set 1نام جدول update
[ شرط ,… ]whereمقدار =2نام ویژگی,2
مثال :شهر کلیه تولید کنندگان را به شیراز تغییر دهید.
'شیراز'= Update S set city
مثال :نام تولید کننده S1را به 'بهین مصالح' وشهر را به 'شیراز' تغییر دهید.
' where s#=1شیراز'=' ,cityبهین مصالح'= update Sset sname
حذف تاپلها (رکوردها) :
قالب کلی :
[ شرط ]whereنام جدول delete from
مثال :کلیه تولید کنندگان را حذف کنید.
Delete from S
مثال :کلیه تولید کنندگان تهرانی را حذف کنید .
'تهران '= delete from S where city
دستورات کنترل داده ها :
از دستورات DCLبرای کنترل دسترس ی کاربران مختلف به داده
های پایگاه داده استفاده می شود DBA .وظیفه دارد برای هر
کاربر یا گروه کاربران ،نام کاربری و کلمه عبوری تعیین کرده،
مجوزهای آنها را برای DBMSتعریف کند.
DBMSهر کاربر را با توجه به نام کاربری وی شناسایی کرده و
عملیات وی را کنترل می کند .چنانچه عملی با مجوزهای کاربر
همخوانی نداشته باشد DBMS ،از انجام آن سرباز می زند.
دستورات DCLعبارتند از :
-1دستور واگذاری مجوز
-2دستور بازپس گیری مجوز
دستور واگذاری مجوز :
DBAوظیفه دارد پس از ایجاد پایگاه داده با توجه به حوزه اختیارات هر
کاربر ،مجوزهای دسترس ی وی را برای DBMSتعریف کند.برخی از کاربران
این امکان را دارند که کلیه و یا قسمتی از مجوزهای خود را با سایر کاربران
سهیم شوند .قالب کلی دستور واگذاری مجوز به شکل زیر است :
چنانچه عبارت with grant optionذکر شود ،کاربر یا کاربرانی که مجوزهایی
را دریافت می کنند به نوبه خود می توانند این مجوزها را با دیگران سهیم شوند.
مثال :فرض کنید کاربری با نام کاربر aliبخواهد مجوز خواندن کلیه
ستون ها و تغییر ستون snameو درج تاپل روی جدول Sرا با کاربری
بانام کاربری arashسهیم شود و به وی اجازه دهد این مجوزها را در
اختیارکاربران دیگر نیز قرار دهد .در این صورت aliبا نام کاربری و کلمه
عبور خود وارد سیستم شده ،دستور زیر را صادر می کند :
Grant select, update (sname),
insert on S to arash with grant option
دستور بازپس گیری مجوز :
کاربرانی که مجوزهایی را در اختیار کاربران دیگر قرار داده اند،
می توانند همه یا تعدادی از مجوزها را از آنها باز پس گیرند.
فرض کنید کاربر Aمجوزهایی را در اختیار کاربر Bو کاربر Bنیز
این مجوز ها را در اختیار کاربران Cو Dقرار داده باشد .در این
صورت چنانچه کاربر Aمجوزها را از کاربر Bپس بگیرد،
کاربران Cو Dنیز این مجوزها را از دست خواهند داد.
قالب کلی دستور بازپس گیری مجوز به شکل زیر است :
مثال :فرض کنید کاربری با نام کاربری aliبخواهد مجوز تغییر
ستون snameاز جدول Sرا از کاربری به نام کاربری arash
پس بگیرد .در این صورت aliبا نام کاربری و کلمه عبور خود
وارد سیستم شده ،دستور زیر را صادر می کند:
Revoke update (sname) on S from arash