SQL (زبان پرس و جوی ساخت یافته)، یک زبان استاندارد برای کار با بانک اطلاعاتی است و توسط بیش تر DBMS ها شناسایی شده و قابل استفاده است. این زبان نسخه ها و لهجه های متفاوت دارد و هر DBMS ممکن است لهجه خاصی از SQL را استفاده کند. در این بخش و چند بخش بعدی این زبان را آموزش می دهیم.
برای تعریف بانک اطلاعاتی،اجزای آن و دستکاری داده ها هر DBMS دستورات را به زبان خاصی دریافت می کند. به این زبان DSL یا Data Sub-Language می گویند. دستورات DSL شامل دو بخش است:
1) زبان تعریف داده ها (DDL) :شامل دستوراتی برای ساخت بانک اطلاعاتی ،جدول،دیدگاه ها و اصطلاح بانک اطلاعاتی و جداول و…به عبارتی این دستورات بخشی از بانک اطلاعاتی به نام شبه داده ها یا همان کاتالوگ را تعیین می کند.
2) زبان دستکاری داده ها (DML) : شامل دستوراتی که داده ها را در باتک اطلاعاتی ذخیره کرده و آنها را دستکاری می کند.
معرفی SQL
نام این زبان سرنام عبارت Structured Query Language یعنی زبان پرس و جوی ساختیافته است که یک زبان استاندارد برای کار با بانک اطلاعاتی است و توسط بیش تر DBMS ها شناسایی شده و قابل استفاده است. این زبان نسخه ها و لهجه های متفاوت دارد و هر DBMS ممکن است لهجه خاصی از SQL را استفاده کند.
برای اجرای دستورات SQL می توان از نرم افزاری جانبی DBMS مثلQuery Analyzer در Sql Server استفاده کرد و یا در محیط های برنامه نویسی با استفاده از امکانات زبان برنامه نویسی فرامینی به شکل SQL به DBMS فرستاد. زبان های برنامه نویسی بانک اطلاعاتی مثل VBو C#میتوانند مستقیما از برنامه نویس دستورات SQL گرفته و یا اینکه با فراهم کردن کامپوننت هایی دستورات را به شکل فراخوانی متدهای خاص گرفته و آن ها را به SQL تبدیل کند و نهایتا دستور SQL را برای اجرا به سیستم مدیریت بانک اطلاعاتی بفرستند.
دستورات DML
در SQL مهمترین این دستورات عبارتند از:
- Select بازیابی اطلاعات
- Insert درج سطر جدید
- Update ویرایش رکوردهای دلخواه
- Delete حذف رکوردهای دلخواه
دستور select
نام جداول From لیست ستون ها select
محدودیت Where
لیست ستون ها می تواند ستاره (*) یعنی همه ی ستون ها باشد.
محدودیت می تواند هر شرط ساده یا شرط ترکیبی با استفاده از عملگر های and,or,not و… باشد.
عملگرهای مقایسه ای :
= مساوی < > نامساوی > بزرگتر
=< بزرگتر یا مساوی < کوچکتر => کوچکتر یا مساوی
در ذیل مفاهیم و تکنیک هایی برای بازیابی اطلاعات مورد نیاز را در قالب مثال هایی ارائه می کنیم:
Studsجدول
Fid | Avg | Name | Id |
1
1 2 1 |
17
18 15 16 |
Ali
Reza Ahmad Hadi |
100
101 102 103 |
مثال 1: بازیابی کل سطرهای وستون های جدول studs
select * from studs
وقتی نمی خواهیم محدودیت ایجاد کنیم نیازی به نوشتن where نمی باشد.
مثال 1: بازیابی شماره دانشجویی و نام همه دانشجویان (عملکرد تصویر)
select id ,name from studs
در عمل تصویر نیازی به نوشتن where نیست ومحدودیت روی سطرها ایجاد نمی شود.
مثال3: بازیابی دانشجویانی که کد رشته آنها 1 است. (عملکرد محدودیت)
select * from studs where fid=1
خروجی :
Fid | Avg | Name | Id |
1
1 1 |
17
18 16 |
Ali
Reza Hadi |
100
101 103 |
مثال 4: بازیابی نام ومعدل دانشجویان رشته 1. (ترکیب عملکرد تصویر و محدودیت)
select Name,Avg from studs where fid= 1
خروجی:
Avg | Name |
17
18 16 |
Ali
Reza Hadi |
مثال5: بازیابی نام ومعدل دانشجویان رشته 1 با معدل بالاتر از 17.
select Name,Avg from studs
Where fid=1 and avg>17;
در آخر دستورات بالا از(;) استفاده شود . در صورتی که یک دستور باشد نوشتن ;الزامی نیست.
مرتب سازی خروجی
برای مرتب کردن نتایج پرس و جو از بخش Order By به صورت زیر استفاده می شود:
شرط where جدول from ستون ها select
Asc|Desc ….,ستون 2 ,ستون 1 order by
Asc : صعودی (پیش فرض) Desc: نزولی
مثال6: لیست دانشجویان به صورت مرتب شده براساس نام نمایش دهید.
select * from studs order by name
عملگر Like
برای مقایسه یک عبارت با بخشی از فیلد متنی از Like استفاده می شود:
مثال 7: بازیابی لیست دانشجویانی که نام آنها شامل کلمه ali است.
select * from studs where name like ‘%ali% ‘
% مشخص کننده هیچ یا چند کاراکتر است.
عملگر Between
برای بررسی قرارداشتن مقدار یک ستون در بین دو مقدار معین
مثال 8: اسامی دانشجویانی را بازیابی کنید که معدل آنها بین 15 و 17 است.
select name from studs where avg>=15 and avg<=17
یا
select name from studs where avg between 15 and 17
عملگر In
بررسی می کند مقدار یک ستون در بین چند مقدار معین وجود دارد یا خیر
مثال 9: اسامی دانشجویان رشته های 1و2و3 را نمایش دهید.
select name from studs where fid=1 or fid=2 or fid=3
یا
select name from studs where fid in ( 1 , 2 , 3 );
جدول رشته ها بصورت زیر را درنظر بگیرید:
fields
title | fid |
Computer
Graphics Mechanics |
1
2 3 |
مثال 10: لیست رشته ها و دانشجویان هر رشته را نمایش دهید.(عملکرد الحاق)
select fids.*,studs.* from fids,studs
Where filds.fid=studs.fid
نتیجه این دستور بازیابی تمامی ستونها از دو جدول تعیین شده خواهد بود . و بازای هر سطر از جدول دانشجویان مشخصات رشته تحصیلی آن را نیز نمایش خواهد داد.
Fid | avg | name | id | title | fid |
1
1 1 2 |
17
18 16 15 |
Ali
Reza Hadi ahmad |
100
101 103 102 |
computer
computer computer graphics |
1
1 1 2 |
برای الحاق یک شرط لازم است که ستون مشترک در دو جدول را با هم مساوی قرار دهد.