عنوان SQL Server
مقدمه
SQL به خودی خود، یک سیستم مدیریت بانک اطلاعاتی با یک محصول مجزا نیست، بلکه جزء لاینفک یک سیستم مدیریت بانک اطلاعاتی است، به طوری که با قرار دادن دستورات SQL در برنامه های کاربردی می توان قابلیت برنامه ها را افزایش داد.
SQL و مزایای آن
SQL وسیله ای است برای سازماندهی، مدیریت و بازیابی داده هایی که توسط بانک اطلاعاتی در کامپیوتر ذخیره شدهٍ اند. SQL یک زبان کامپیوتری است که برای کار با یک بانک اطلاعات از آن استفاده می شود. SQL در حقیقت با یک بانک اطلاعاتی موسوم به بانک اطلاعاتی رابطه ای کار می کند. شکل زیر کارهای مربوط به SQL را نشان می دهد. در این شکل، سیستم کامپیوتری دارای یک بانک اطلاعاتی است که اطلاعات مهمی را ذخیره می کند. اگر سیستم کامپیوتر مربوط به یک کار تجاری باشد، بانک اطلاعاتی داده های مربوط به انبارداری، تولید، فروش و یا حقوق و دستمزد را نگهداری می کند.
در یک کامپیوتر شخصی، بانک اطلاعاتی معمولاً داده های مربوط به چک های صادره، لیست پرسنلی و شماره تلفن آنها و یا داده های استخراج شده از یک سیستم کامپیوتری بزرگتر را نگهداری می کند. برنامه کامپیوتری که بانک اطلاعاتی را کنترل می کند، سیستم مدیریت بانک اطلاعاتی یا DBMS نامیده می شود.
وقتی می خواهید داده هایی را از بانک اطلاعاتی واکشی کنید، برای اجرای کار نیاز به SQL داریم. DBMS پرس و جوهای SQL را مورد پردازش قرار داده، داده های موردنظر را بازیابی نموده و نتیجه را به شما برمی گرداند. از SQL برای کنترل تمام عملیاتی استفاده می شود که یک DBMS برای کاربران خود فراهم می آورد از قبیل:
بازشناسی داده ها: کاربر توسط SQL می تواند ساختار و سازمان داده های ذخیره شده را تعریف نموده و روابط بین آنها را تعیین کند.
واکشی داده ها: به وسیله SQL، کاربرد با برنامه کاربردی می تواند داده های ذخیره شده در یک بانک اطلاعاتی را بازیابی نموده و از آنها استفاده کند.
تغییر داده ها: کاربر یا برنامه کاربردی می تواند با استفاده از SQL با افزودن داده های جدید، حذف داده های قبلی و اصلاح داده های ذخیره شده، یک بانک اطلاعاتی را تغییر دهد.
کنترل دستیابی به داده ها: با استفاده از SQL می توان توانایی کاربر را برای بازیابی و تغییر داده ها محدود نمود و مانع از دستیابی افراد غیرمجاز به داده های ذخیره شده گردید.
به اشتراک گذاشتن داده ها: با استفاده از SQL می توان داده ها را به طور همزمان برای استفاده کاربران مختلف در اختیار آنها قرار داد. با اطمینان از اینکه کار آنها با یکدیگر تداخلی نداشته باشد
جامعیت داده ها: SQL باعث می شود که در صورت قطع برق یا حوادث غیرمترقبه، داده های بانک اطلاعاتی آسیبی نبیند. لذا SQL زبانی است برای کنترل و تاثیرگذاری متقابل با یک سیستم مدیریت بانک اطلاعاتی.
SQL به عنوان زبانی استاندارد برای بانکهای اطلاعاتی رابطه ای شناخته شده است. هم دارای قدرت زیادی است و هم یادگیری آن نسبتاً آسان می باشد. در قسمت ها بعدی قابلیت های این زبان برنامه نویسی بررسی خواهد شد.
شکل زیر، اجزای تشکیل دهنده یک DBMS را نشان می دهد که SQL این اجزاء را به یکدیگر وصل می کند. موتور بانک اطلاعاتی قلب DBMS بوده و مسئولیت اجرایی برای سازماندهی، ذخیره سازی و بازیابی داده ها را بر روی دیسک قرار دارد. این موتور، درخواست های SQL را از اجزا دیگر DBMS مانند برنامه تهیه گزارش یا ابزارهای سازنده پرس و جو دریافت می کند. همانطور که در شکل مشاهده می شود، SQL نقش های متعددی دارد:
SQL یک زبان پرس و جو محاوره ای است. بدین ترتیب، کاربران دستورات SQL را در یک برنامه محاوره ای می نویسد تا داده ها را بازیابی نموده و آنها را روی صفحه نمایش دهد. در واقع، SQL زبان ساده ای برای اجرای پرس و جوهای بانک اطلاعاتی می باشد.
SQL یک زبان برنامه نوبسی بانک اطلاعاتی است. برنامه نویسان با قرار دادن دستورات SQL، در برنامه های کاربردی می توانند به داده های یک بانک اطلاعاتی دسترسی داشته باشند.
SQL یک زبان مدیریت بانک اطلاعاتی است.
SQL یک زبان سرویس دهنده/سرویس گیرنده می باشد. بسیاری از برنامه های کاربردی جدید از این ویژگی استفاده می کنند تا ترافیک شبکه را کاهش داده و باعث شوند که کامپیوترهای شخصی و سروس دهنده ها وظایف خود را به خوبی انجام دهند.
SQL یک زبان بانک اطلاعاتی شبکه ای می باشد. سیستم های مدیریت بانک اطلاعاتی شبکه ای برای کمک به امر توزیع داده ها در سیستم های کامپیوتری متعدد از SQL استفاده می کنند. نرم افزار DBMS موجود در سیستم ها برای ارتباط با سیستم های دیگر جهت دستیابی به داده ها از SQL استفاده می کنند.
SQL یک زبانی برای هماهنگی بین محصولات مختلف می باشد.
به این ترتیب، SQL به عنوان یک ابزار قوی و مفید برای مرتبط نموده افراد، برنامه های کامپیوتری و سیستم های کامپیوتری به داده های ذخیره شده در یک بانک اطلاعاتی رابطه ای شناخته شده است.
SQL زبانی است که هم فهم آن آسان است و هم وسیله ای برای مدیریت داده ها. برخی قابلیت های اصلی و نیز شرایط بازار که موجب موفقیت SQL شده است، در زیر بیان شده است:
استقلال فروشنده
قابلیت استفاده از انواع سیستم های کامپیوتری
استانداردهای SQL
تایید IBM
پایه و اساسی رابطه ای SQL
ساختار سطح بالا
درخواست های محاوره ای و موردی
داشتن چند دید مختلف از داده ها
زبان کامل بانک اطلاعاتی
تعریف داده ها در هر زمان.
موارد فوق باعث شده است که SQL به عنوان ابزاری استاندارد برای مدیریت داده ها در کامپیوترهای شخصی، مینی کامپیوترها و کامپیوترهای بزرگ شناخته شود.
قابلیت نقل و انتقال
وجود یک استاندارد ثبت شده برای SQL موجب شده تا ادعاهای اغراق آمیزی در مورد SQL و قابلیت نقل و انتقال برنامه های کاربردی بوجود آید. شکل زیر نشان می دهد یک برنامه کاربردی که از SQL استفاده می کند، می تواند با هر سیستم مدیریت بانک اطلاعاتی که بر مبنای SQL است، به صورت جابجایی کار نماید.
در حقیقت، نقاط ضعف استاندارد SQL و تفاوت های که بین نسخه های گوناگون SQL وجود دارد، ایجاب می کند که وقتی یک برنامه کاربردی از یک بانک اطلاعاتی SQL به بانک اطلاعاتی دیگری می رود، اصلاحات لازم صورت گیرد. تفاوت ها عبارتند از:
کدهای خطا
نوع های داده ای
جدول های سیستمی
SQL محاوره ای
رابط برنامه ای
SQL پویا
تفاوت در مفهوم یا مقدار کلمات و توابع
مجموعه کاراکترها
ساختار بانک اطلاعاتی
علیرغم تفاوت های موجود، ادعاهایی در مورد قابلیت نقل و انتقال بین انواع مختلف بانک اطلاعاتی SQL وجود دارد. اما به هرحال امکانات مورد بحث برای هر DBMS پشتیبانی شده نیاز به یک مبدل دارند تا نسخه SQL را تولید نموده، تبدیل نوع های داده ای را انجام دهد و کدهای خطا را ترجمه نماید.
قواعد دوازده گانه کاد
مدل رابطه ای (و در نتیجه سیستم پایگاه داده های رابطه ای مبتنی بر آن) بوسیله کاد طراحی شد. وی که نحوه طراحی پایگاه های داده پیشین را مورد سوال قرار داده بود، مدلی با عنوان مدل رابطه ای طراحی کرد که به شکلی بسیار اجمالی آن را بررسی کردیم. به هرحال، کاد برای حصول اطمینان از درک ایده هایش بوسیله همگان، قواعدی مشخص برای تعریف دقیق مدل رابطه ای ارائه کرد که با توجه به اهمیت این قواعد به شرح آنها می پردازیم. ذکر این نکته نیز ضروری است که پیش فرض این قواعد این است که مدیریت پایگاه داده باید با استفاده از مفاهیم رابطه ای صورت گیرد.
قاعدعه 1: تمام اطلاعات در یک پایگاه داده رابطه ای در سطح منطقی به طور صریح به صورت مقادیری در داخل جدول ها نمایش داده می شوند.
قاعده 2: هر عنصر باید به طور منطقی از طریق ترکیب نام جدول، مقدار کلید اصلی و نام ستون قابل دسترسی باشد.
قاعده 3: مقادیر تهی برای نمایش مقادیر نامشخص، آن هم به شکلی مستقل از دامنه استفاده می شوند.
قاعده 4: توصیف پایگاه داده ها در سطح منطقی، همان جدول ها هستند.
قاعده 5: باید از یک زبان جامع پردازش داده ها که بتواند تعریف داده ها، تعریف دید، تغییر داده ها، قواعد جامعیت، محدوده تراکنش ها و اختیارات را برآورده سازد، برخوردار باشد.
قاعده 6: اگر دیدی به طور نظری قابل به هنگام سازی باشد، بای امکان به هنگام سازی آن دید در سیستم وجود داشته باشد.
قاعده 7: باید قابلیت بازیابی، درج، به هنگام سازی و حذف در سطح مجموعه ها موجود باشد.
قاعده 8: برنامه های کاربردی به طور منطقی از تغییرات صورت گرفته در نحوه ذخیره سازی یا روش دستیابی مستقل هستند.
قاعده 9: برنامه های کاربردی به طور منطقی از تغییرات صورت گرفته در حفاظت اطلاعات اعمال شده در جدول پایه مستقل هستند.
قاعده 10: قواعد جامعیت باید قابل تعریف در زبان رابطه ای (پردازش) داده ها و قابل ذخیره سازی در کاتالوگ باشند.
قاعده 11: برنامه های کاربردی از توزیع داده ها با توزیع مجدد داده ها مستقل هستند.
قاعده 12: قواعد جامعیت که در زبان رابطه ای و در سطح مجموعه ها تعریف می شوند، نمی توانند بوسیله زبان های سطح پایین تر خدشه دار شوند.
توابع ستونی
در SQL می توانید با استفاده از یک سری از توابع ستونی، داده ها را به یک شکل خلاصه شده از بانک اطلاعاتی استخراج نمایید. به عنوان مثال، پرس و جوی زیر میانگین دو ستون از جدول SALESREPS را با استفاده از تابع ستونی AVG( ) محاسبه می کند.
محاسبه جمع یک ستون
تابع ستونی SUM ( ) جمع مقادیر داده های یک ستون را محاسبه می کند. داده های این ستون باید از نوع عددی باشند.
محاسبه حداقل و حداکثر مقادیر
توابع ستونی MIN ( ) و MAX ( ) به ترتیب، کوچکترین و بزرگترین مقادیر یک ستون را بدست می آورند. داده های ستون می توانند عددی، رشته ای یا اطلاعات مربوط به تاریخ و زمان باشند.
دستورات DELETE همراه با پرس و جوی فرعی
دستورات فوق با شرایط جستجوی ساده، سطرهایی که قرار است حذف شوند را صرفاً بر اساس محتوای خود سطرها انتخاب می کند. گاهی انتخاب سطرها باید بر اساس داده هایی از جدول های دیگر باشد. به عنوان مثال، فرض کنید می خواهید تمام سفارشات اخذ شده توسط Sue Smith را حذف نمایید. بدون دانستن شماره استخدامی این فرد و با مراجعه تنها به جدول ORDERS نمی توانید سفارشات را پیدا کنید. برای یافتن سفارشات باید از یک پرس و جوی دو جدولی استفاده کنید، اما در دستور DELETE نمی توانید از پیوند جدول ها استفاده کنید. روش اجرای درخواست، استفاده از پرس و جوی فرعی است.
دیدها
جدول های یک بانک اطلاعاتی ساختار و سازمان داده های آن را نشان می دهند، اما SQL این امکان را نیز به شما می دهد که به طرق دیگر از جمله بوسیله دیدها، داده های ذخیره شده را نمایش دهید. دید یک پرس و جوی SQL می باشد که به طور دائم در بانک اطلاعاتی ذخیره می شود و دارای یک نام می باشد. نتایج پرس و جوی ذخیره شده از طریق دید قابل رویت بوده و SQLامکان دستیابی به این نتایج را به شما می دهد. گویی که امکان دستیابی به یک جدول واقعی در بانک اطلاعاتی را دارید. کارکردهای مختلف دیدها عبارتند از:
دیدها این امکان را به شما می دهند که ظاهر یک بانک اطلاعاتی را به شکلی طراحی کنید که کاربران مختلف، بانک اطلاعاتی را از جوانب گوناگون ببینند.
دیدها امکان محدود کردن دستیابی به داده ها را می دهند، یعنی به کاربران اجازه می دهند که تنها سطرها یا ستون های معینی از جدول ها را ببینند.
دیدهای دستیابی به بانک اطلاعاتی را ساده می سازند، بدین ترتیب که ساختار داده های ذخیره شده را به شکلی که برای هر کاربر کاملاً عادی می باشد، نشان می دهد.
همانطور که شکل نشان می دهد، دید یک چشم انداز یا جدول مجازی در بانک اطلاعاتی است که محتویات آن توسط یک پرس و جو تعییم می شوند. برای کاربر بانک اطلاعاتی، دید، درست مانند یک جدول واقعی ظاهر می شود، یعنی با سطرها و ستون هایی که دارای نام بوده و حاوی داده می باشند، اما برخلاف جدول واقعی، دید مجموعه ای از داده های بانک اطلاعاتی نیست، بلکه سطرها و ستون هایی از داده های قابل رویت است که به عنوان نتایج پرس و جوی مشخص شده در دید ایجاد می شوند. SQL توسط نامی که به دید اختصاص می یابد و تعریفی که از آن در بانک اطلاعاتی ذخیره می کند، تصویری از دید ایجاد می کند.
دستورات SQL
زبان SQL دارای دستورات متنوع و نسبتاً زیادی می باشد. به این دستورات Clause نیز گفته می شود. در این مقاله و قسمتهای بعدی آن تعدادی از مهمترین Clauseهای زبان SQL مورد بررسی قرار می گیرند.
دستورهای SELECT و FROM
هدف نهایی از دادن انبوه اطلاعات به کامپیوتر، جستجو و یافتن اطلاعات مفید می باشد. به این عمل یعنی جستجوی اطلاعات در بانک اطلاعاتی Query نیز گفته می شود. اکثر دستورات زبان SQL نیز در همین راستا مورد استفاده قرار می گیرند. در این بین مهمترین و پرکاربردترین دستور را می توان دستور SELECT قلمداد کرد.
این دستور جهت انتخاب یک یا چند فیلد از یک یا چند جدول مختلف مورد استفاده قرار می گیرد، فیلدهای انتخاب شده پس از اجرای query روی صفحه نمایش داده خواهند شد.
بعنوان مثال اگر در بانک اطلاعاتی فرضی خودمان بخواهیم اسم و فامیل تمام دانشجویان را مشاهده کنیم باید برنامه ای به شکل زیر بنویسیم:
SELECT name, family
FROM students
در این برنامه که به زبان SQL استاندارد نوشته شده است از دو دستور SELECT و FROM استفاده شده است. دستور SELECT مشخص می کند که چه فیلدهایی از جدول باید نمایش داده شوند و دستور FROM نیز مشخص کننده جدولی است که قرار است اطلاعات از داخل آن استخراج شوند. حال اگر بخواهیم نام و فامیل تمام اساتید را ببینیم برنامه بالا را باید بصورت زیر تغییر دهیم:
SELECT name, family
FROM teachers
همان طوری که از مثال های بالا نیز مشخص است جلوی دستور SELECT نام فیلدهایی نوشته می شوند که قرار است نمایش داده شوند و بعنوان جداکننده نیز باید از کاراکتر کاما استفاده کرد. در صورتی که بخواهیم تمام فیلدهای یک جدول را ببینیم می توانیم بجای نوشتن اسم تمام فیلدها فقط از یک کاراکتر ستاره استفاده کنیم. کاراکتر ستاره بمعنی تمام فیلدهای یک جدول می باشد. مثلاً دو دستور زیر با هم معادلند:
SELECT *
SELECT name, family, age, gpa
دستور WHERE
دستور SELECT همان طوری که گفته شد جهت انتخاب و نمایش تعدادی از فیلدهای جداول مورد استفاده قرار می گیرد. در این حالت تمام رکوردها نمایش داده خواهند شد، ولی در بیشتر موارد هدف از نوشتن Query نمایش رکوردهایی است که دارای شرایط ویژه ای می باشند مثلاً نمایش مشخصات اساتیدی که بیش از پنجاه سال سن دارند. دستور WHERE برای گذاشتن یک یا چند شرط به دستور SELECT مورد استفاده قرار می گیرد. با اضافه کردن شرط به دستور SELECT تعداد رکوردهای خروجی (پاسخ) معمولاً محدودتر می شود. بعنوان مثال اگر بخواهیم مشخصات اساتیدی که بیش از چهل سال سن دارند را ببینیم باید برنامه ای بصورت زیر بنویسیم:
SELECT *
FROM teachers
WHERE age > 40
در این برنامه شرط age > 40 با استفاده از دستور WHERE به Query اضافه شده و باعث شده است تا فقط مشخصات اساتیدی نمایش داده شوند که در این شرط صدق می کنند یعنی بیش از چهل سال سن دارند. حال اگر بخواهیم مشخصات دانشجویانی را که نام آنها علی می باشد و سن آنها نیز کمتر از پانزده سال است را ببینیم باید Query زیر را اجرا کنیم:
SELECT *
FROM students
WHERE age < 15 AND name = 'ali‘
در مثال بالا دو مطلب جدید وجود دارد نخست آنکه در زبان SQL رشته متنی را باید داخل کوتیشن (‘) قرارداد. بنابراین برای معرفی کلمه ای بنام علی باید آنرا بصورت ‘ali’ نوشت، زیرا در این حالت این کلمه یک ثابت رشته ای (متنی) بحساب می آید. نکته دیگر آنکه می توان شرطهای مختلف را توسط AND، OR و NOT با همدیگر ادغام کرده و شرطهای پیچیده تری را بدست آورد. AND، OR و NOT هر سه از کلمات کلیدی زبان SQL می باشند. بعنوان یک مثال دیگر فرض کنید می خواهیم مشخصات تمام دانشجویانی را که نام آنها، علی یا رضا نباشند را پیدا کنیم، برنامه ای که این Query را انجام می دهد بصورت زیر می باشد:
SELECT *
FROM students
WHERE name NOT IN ('ali', 'reza')
در صورتی که NOT را از برنامه بالا حذف کنیم مشخصات تمام دانشجویانی که نام آنها علی یا رضا می باشند نمایش داده خواهد شد.
در این برنامه نیز یک کلمه کلیدی جدید وجود دارد: IN که برای تست عضویت در یک مجموعه بکار می رود. مجموعه ای که بادستور IN بکار می رود می تواند دهها عضو داشته باشد و نوع اعضا نیز می تواند رشته ای، عددی یا … باشد. البته واضح است که تمام اعضا باید هم نوع باشند.
حال بعنوان یک مثال پیشرفته تر می خواهیم مشخصات دانشجویانی را ببینیم که اسم فامیل آنها به ‘ زاده’ ختم می شود مانند علیزاده، محمد زاده و … برای این منظور باید Query زیر را نوشته و اجرا کنیم:
SELECT *
ROM family LIKE '% zadeh'
کاربرانی که با Access کار می کنند باید سطر آخر را به صورت زیر تغییر دهند:
WHERE family LIKE '*zadeh‘
در این مثال از Wildcardها استفاده شده است که قبلاً با مفهوم آن در DOS و Windows یا حتی Unix آشنا شده ایم. (ls a*) درWildcard ،SQL هایی به شرح زیر وجود دارند:
(از * در Access استفاده کنید): این Wild card نشانگر هر تعدادی از کاراکترها (هر کاراکتری) می باشد.
(از ? در Access استفاده کنید): این Wildcard نشانگر یک کاراکتر می باشد که این کاراکتر می تواند هر کدام از کاراکترهای مجاز کامپیوتر باشد.
جهت جستجو کردن فیلدهایی که دارای یک الگوی (Pattern) خاصی هستند باید از دستور LIKE و Wildcardها استفاده کرد. در مثال زیر نام و سن تمام اساتیدی که اسم آنها با Pe شروع می شود، نمایش داده خواهد شد.
SELECT name, age
FROM teachers
WHERE name LIKE 'Pe%‘
بنابراین مشخصات افرادی که نام آنها مثلاً پدرام یا پیمان باشد در خروجی لیست خواهد شد.
دستور ORDERBY
دستور ORDERBY جهت Sort کردن رکوردهای نمایش داده شده مورد استفاده قرار می گیرد. با این دستور می توان مشخص کرد که رکوردهایی که قرار است نمایش داده شوند برحسب کدام فیلد باید مرتب شوند. بعنوان مثال برای مشاهده کردن مشخصات اساتیدی که سن آنها بیشتر از 29 سال می باشد و در ضمن لیست خروجی بترتیب اسم فامیل نیز مرتب شده باشد باید Query زیر را اجرا کرد.
SELECT *
FROM teachers
ORDERBY family
در این حالت افراد بترتیب اسم فامیل خود لیست خواهند شد. (از A تا Z) در صورتی که بخواهیم ترتیب Sort شدن برعکس شود (از Z تا A) می توان پس از دستور ORDERBY از کلمه کلیدی DESC استفاده کرد، مانند مثال زیر
SELECT *
FROM teachers
ORDERBY DESC name
در این مثال Sort شدن بترتیب اسم و نه بترتیب فامیل انجام می گیرد.
برای دستور ORDERBY می توان چند فیلد تعریف کرد، در این صورت این دستور عمل Sort کردن را با در نظرگرفتن اولین فیلد انجام خواهد داد در صورتی که چند رکورد دارای مقدار مشابهی در این فیلد باشند ملاک مرتب سازی آنها فیلد دومی خواهد بود که در دستور ORDERBY ذکر شده است، در صورتی که این فیلد نیز دارای مقادیر مشابهی باشد ملاک تصمیم گیری فیلد سوم خواهد بود والی آخر.
بعنوان مثال در Query زیر نام اساتیدی که بیش از 30 سال دارند برحسب فامیل آنها مرتب می شود در صورتی که چند استاد دارای اسم فامیل یکسانی باشند ملاک مرتب شدن، اسم کوچک آنها خواهد بود.
SELECT *
FROM teachers
WHERE age > 30
ORDERBY family, name
استفاده از توابع
در دستور SELECT علاوه بر تعریف فیلدها می توان از عبارتهای ریاضی و یا توابع استاندارد SQL نیز استفاده کرد.
بعنوان مثال اگر مالیات بردرآمد پنج درصد باشد Query زیر نام اساتید و مالیاتی را که هر کدام می پردازند را مشخص می کند.
SELECT family, name, salary*5/100
FROM teachers
علاوه بر عبارتهای ریاضی می توان از توابع استاندارد SQL نیز استفاده کرد، تعدادی از این توابع عبارتند از:
تابع COUNT : تعداد فیلدها را برمی گرداند.
تابع SUM : مجموع یک فیلد عددی را برمی گرداند.
تابع AVG : میانگین یک فیلد عددی را برمی گرداند.
تابع MIN : مینیمم یک فیلد عددی را برمی گرداند.
تابع MAX : ماکزیمم یک فیلد عددی را برمی گرداند.
بعنوان مثال اگر بخواهیم تعداد اساتید و مجموع حقوقهایی را که به آنها پرداخت شده است را ببینیم می توانیم از Query زیر استفاده بکنیم.
SELECT COUNT (name), SUM (Salary)
FROM teachers
چند جدولی های Query
تمام Queryهایی که تاکنون مشاهده کردید، Queryهای تک جدولی بودند بدین معنی که در هر Query فقط اطلاعات یک جدول مورد جستجو قرار می گرفت. در SQL امکان نوشتن Queryهای چند جدولی نیز وجود دارد. در این حالت اطلاعات چند جدول بطور همزمان مورد جستجو قرار می گیرد و حتی امکان مقایسه فیلدهایی از یک جدول با فیلدهایی از جدول دیگر نیز وجود دارد. اگر در بین جداولی که در Query شرکت داده می شوند فیلدهای هم نام وجود داشته باشد باید نام آن فیلدها را Fully qualified کرد بدین معنی که ابتدا اسم جدول و سپس اسم فیلد را ذکر کرد. بین اسم جدول و اسم فیلد نیز باید از یک کاراکتر نقطه (‘.’) استفاده کرد.
بعنوان مثال اگر بخواهیم لیست اساتید و دانشجویانی که دارای ارتباط فامیلی هستند را ببینیم می توانیم از Query زیر استفاده بکنیم:
SELECT *
FROM students, teachers
WHERE students.family = teachers. Family
و یا اگر بخواهیم لیست اساتیدی را مشاهده کنیم که سن آنها از سن برخی از دانشجویان کمتر است، می توانیم Query زیر را اجرا کنیم:
SELECT teachers.family, teachers.name
FROM students, teachers
WHERE teachers.age < students.age
کلام آخر
کلام آخر اینکه زبان SQL برخلاف زبانهایی مانند C یا C++ یک زبان Case Sensitive نیست بدین معنی که به بزرگ یا کوچک بودن حروف حساس نمی باشد. بنابراین به راحتی می توان دستورات و کلمات کلیدی آنرا در هر برنامه ای با حروف کوچک یا بزرگ تایپ کرد.
پایان