6f/2 (34570)
مSQL
اسکیوال (SQL – Structured Query Language) یک زبان کامپیوتری پایگاه داده هاست که برای ایجاد، تغییر، و بازیابی دادهها و نیز عملیات بر روی آنها در مدل رابطهای میباشد. این زبان به سمت مدل شی گرا- رابطهای نیز پیشرفت کردهاست. SQL استانداردهای ANSI/ISO را نیز دریافت کردهاست.
تاریخچه SQL
واژه ی SQL به صورت سی کو ال باید تلفظ کنیم و اس کیو ال نا صحیح می باشد. منشا اصلی SQL به مقاله Edgar F. Codd تحت عنوان « مدل رابطهای دادهها برای بانکهای دادهای اشتراکی » که در سال ۱۹۷۰ منتشر شد،باز میگردد. در دهه ۷۰ گروهی از شرکت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله کار میکردند و زبان (SEQUEL(Structured English Query Language را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد کردند. اگر چه SQL ناشی از تلاشهای کاد بود اما Donald D. Chamberlin و Raymond F. Boyce را به عنوان طراحان زبان SEQUEL میدانند.سمینارهایی در زمینه فناوری بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطهای جدید برگزار گردید. تا ۱۹۷۶ مشخص بود که IBM طرفدار جدی فناوری بانک اطلاعاتی رابطهای بوده، توجه زیادی نسبت به زبانSQL دارد. تبلیغات در زمینه System/R باعث جذب گروهی از مهندسین در Menlo Park در کالیفرنیا گردید، و این گروه به این نتیجه رسیدند که تحقیقات IBM منجر به یک بازار تجاری برای بانکهای اطلاعاتی رابطهای خواهد گردید.در ۱۹۷۷ این گروه شرکتی بنام Inc وRelational Software تأسیس نمودند تا یک DBMS رابطهای بر اساس SQL بسازند. محصولی بنام Oracle در۱۹۷۹ عرضه گردید، و اولین DBMS رابطهای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital’s اجرا میشد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستمهای مدیریت بانک اطلاعاتی رابطهای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانکهای اطلاعاتی رابطهای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطهای ایجاد نمودند و سیستم خود را Ingres نام نهادند.پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بودهاست که یک محصو ل تجاری با نام SQL/Data system (یاSQL/DS) عرضه نماید. IBM موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ IBM یک نسخه SQL/DS را برای VM/CMS (سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود)، اعلام نمود.همچنین در سال ۱۹۸۳ شرکتIBM، محصول Database۲ یا DB۲ را معرفی نمود که یک DBMS رابطهای بود برای سیستمهای بزرگ آن شرکت. DB۲ تحت سیستم عامل IBM’s VMS(سیستم عامل مراکز کامپیوتری بزرگ) اجرا میشد. اولین نسخه DB۲در ۱۹۸۵ عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM میباش DB۲ .از آن تاریخ تاکنون DBMS رابطهای شاخص بوده و IBM از آن حمایت نموده و زبان DB۲’s SQL استاندارد عملی زبان بانک اطلاعاتی بودهاست.SQL استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از SQL تاکنون عرضه شده که در جدول زیر بیان میکنیم:
SQL-۸۷SQL-۸۹SQL-۹۲SQL:۱۹۹۹SQL:۲۰۰۳
حوزه و وسعت
بسیاری از اصطلاحات توسعه یافته SQL تحت استاندارد بین المللی بوده و در نتیجه از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL یا Sybase و SQL PL (مدل رویهای) از شرکت IBM میباشد.
SQL برای کارهای ویژه و محدودی (گزارش گیری از دادهها در پایگاه داده رابطهای) طراحی شدهاست. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافتهای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیتهای SQL میباشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه میدهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته میشود که SQL نه ساخت یافتهاست،نه محدود به گزارش گیریها و اصلاً یک زبان نیست!
معرفی نرم افزار SQL Server 2000
SQL Server یک پایگاه داده ارائه شده توسط شرکت مایکروسافت است بدون اقراق میتوان گفت این محصول پر کاربرد ترین Package پایگاه داده محسوب میشود. البته مایکروسافت ادعا کرده است که بیش از 60 % بازار Database جهان را به خود اختصاص داده و این روز به روز در حال افزایش است. شرکت IBM در اواخر دهه 70 زبانSEQUEL که برای Query ها (پرس و جو ها ) استفادهمیشد را ابداع کرد. با تغییر زمان این زبان نیز تغییراتی کرد و تا آنجا که فقط برای Query ها استفاده نمیشد و از آن میتوانستیم برایمدیریت بامگها و امنیت در Database نیز استفاده کنیم و بعد از مدتها این زبان بهSQL تغییر نام داد.
امروزه ورژنهای متعددی از این نرم افزار استفاده میشود که نرم افزار Microsoft SQL Server 2000 از Transact SQL که به آن TSQL هم میگویند استفادهمیکند.
SQLserver هم اکنون دارای 2 نسخه است : یکی SQL Server 2000 Personal Edition که بر روی Client نصب میشود (Windows 98 – Windows ME – Windows 2000 Proffessional – Windows XP Home Edition – Windows XP Proffessional Edition) . البته اگر بر روی Windows 98 و Windows ME نصب کنیم ، بسیاری از قابلیتهای این Package از بین میرود. بهترین حالت نصب این نسخه بر روی سیستم عاملهای Windows 2000 Proffessional و Windows XP Proffessional است. یک نسخه دیگر این نرم افزار : SQL Server 2000 Enterprise Edition است که مختص Server ها است یعنی فقط بر روی تمامینگارش های Window 2K Server و Windows Server 2003 نصب میشود.
نرم افزار SQL Server 2000 یک پایگاه داده از نوع رابطه ای است که نسخه جدید آن SQL Server 2005 است. آموزش SQL Server 2005 نیز در این سایت موجود است. در نرم افزار آموزشی SQL Server 2000 با مفاهیم زیر آشنا میشوید:
فصل اول : آشنایی با SQL Server مقدمهمعرفی SQL Serverنحوه کار با Books Onlineآشنایی با محیط Enterprise Managerتنظیم خصوصیات Serverنحوه ثبت Server در SQL Server 2000SQL Server Groupنحوه کار با Enterprise Managerفصل دوم : کاربرد Job در SQL Server 2000 نحوه ایجاد Job در SQL Server 2000نحوه تعریف StepJob زمانبندی شدهنحوه تعریف یک اپراتورآشنایی با تاریخچه Jobایجاد Job با استفاده از Wizardایجاد Alert با استفاده از Wizard ایجاد Alert با استفاده از Enterprise Managerفصل سوم : مدیریت پایگاه داده و اشیاء آن در SQL Server 2000 مقدمهساخت پایگاه داده با استفاده از Wizard در SQL Server 2000ساخت پایگاه داده با استفاده از Enterprise Managerحذف پایگاه داده در SQL Server 2000خصوصیات پایگاه دادهایجاد جدول با استفاده از Enterprise Managerایجاد کلید اصلی (PK)خصوصیات جدولساخت پایگاه داده با استفاده از زبان Transct-SQLآشنایی با SQL Query Analyzerفصل چهارم : روش استفاده از DDL در SQL Server 2000 مقدمهایجاد پایگاه داده در SQL Server 2000ایجاد پایگاه داده با تنظیم خصوصیاتایجاد جدول با دستورات Transact-SQLایجاد کلید اصلی با دستورات Transact-SQLتعریف کلید خارجی (FK)کار با Indexاستفاده از Ruleتعریف و ایجاد Defaultنحوه استفاده از AlterDrop و نحوه استفاده آنفصل پنجم : پرس و جوها در SQL Server 2000 مقدمهآشنایی با دستور SELECT در SQL Server 2000جستجو بین داده ها با شرط WHEREعملگرهای IS NULL ، OR ، AND و Likeروش استفاده از Distinetعملگرهای ANY و Group BYتابع Count در SQL Server 2000کار با Having و Order Byخاصیت Identityدستورات اجتماع، اشتراک، تفاضل و Caseتابع Computeانواع جدولهای موقتیپرس و جوهای پیشرفتهعملگرهای Joinفصل ششم : آشنایی با DML مقدمهدستور Delete، Update، Insert و Truncateتفاوت Delete و Dropتوسعه SQLدستور IF در SQL Server 2000متغیرهای محلیروالهای ذخیره شدهنحوه اجرای روالهای ذخیره شده ایجاد روالهای ذخیره شده با استفاده از Wizardنحوه حذف و تغییر یک روال ذخیره شدهفصل هفتم : توابع تعریف شده توسط کاربر در SQL Server 2000 مقدمهانواع زیر برنامهایجاد یک تابع جدیدحذف تابع در SQL Server 2000Index و نحوه ایجاد آنIndex چندگانهایجاد Index با استفاده از Wizardحذف Indexجدول سیستمی Sysindexکلیدها در SQL Server 2000بهینه سازی پرس و جوها فصل هشتم : آشنایی با Viewها در SQL Server 2000 مقدمهروش ایجاد Viewهاایجاد View با استفاده از Wizardتغییر خصوصیات Viewحذف View در SQL Server 2000نحوه ورود تغییر و حذف اطلاعات در Viewجداول سیستمیروالهای سیستمیفصل نهم : امنیت در SQL Server 2000 مقدمهتعریف یک کاربر جدیدحذف کاربر در SQL Server 2000تغییر رمز عبورمجوزهای دتسترسی به پایگاه دادهتعیین سطح دسترسیتغییر مالک پایگاه دادهتعریف نقش و انواع آنانواع نقش ثابت سرویس دهندهمالک پایگاه دادهنقش پایگاه داده ای ثابتنقش عمومینقش کاربردینقش پایگاه داده ای تعریف شده توسط کاربر
فصل دهم : امنیت با استفاده از دستورات T-SQL مقدمهدسترسی به دستوراتدستور Grant در SQL Server 2000دسترسی به اشیاءدستور Denyدستور Revokeمدیریت امنیت با استفاده از Enterprise Managerاضافه کردن کاربر با استفاده از Enterprise Managerتعیین سطح دسترسی کاربرمتصل سازی کاربر به یک نقش سرویس دهنده ثابتمتصل سازی کاربر به یک نقش پایگاه داده ای ثابتمدیریت دسترسی اشیاءفصل یازدهم : Trigger در SQL Server 2000 مقدمهعملکرد Trigger در SQL Server 2000تغییر ساختار Triggerتنظیم ترتیب Triggerهاحذف Triggerایجاد و تغییر Triggerها در Enterprise Managerایجاد Alert در SQL Server 2000آشنایی با Error Logکار با Database Maintenance Plansو چندین نکته آموزشی دیگر در SQL Server 2000
واژههای کلیدی SQL
واژههای کلیدی SQL به گروههای مختلفی تقسیم میگردد، در زیر به برخی از آنها اشاره میکنیم آنهایی که آشنا تر هستند را تنها با یک مثال شرح میدهیم:دستورات باز یابی داده(SELECT)
دستورات عملیات داده(INSERT، UPDATE، MERGE،TRUNCAT و DELETE)دستورات تراکنش داده(COMMIT و ROLLBACK)
دستورات تعریف داده(CREATE وDROP)
دستورات کنترل داده(GRANT و REVOKE)
دستورات بازیابی داده
دستور SELECT جهت بازیابی برشی سطری از یک یا چند جدول به کار میرود. این دستور پرکاربردترین دستور DML میباشد و برای گزارش گیریهای موثر مورد استفاده قرار میگیرد. ساختمان این دستور میتواند از اجزای زیر تشکیل شده باشد:FROM : مشخص کردن جداول و نحوه اتصال آنها به هم.
WHERE : انتخاب سطرهایی با شرایط خاص.
GROUP BY : ترکیب سطرها با مقادیر مربوط به مجموعهای از سطرهای کوچکتر.HAVING : مشخص کردن سطرهای ترکیبی.
ORDER BY : مشخص کردن اینکه کدام ستونها برای مرتب کردن دادهها به کار میرود.
مثال ۱) نشان دادن رکوردهای تمام کتابهای بیش ۱۰۰٫۰۰ واحد قیمت. نتایج بر اساس نام کتاب مرتب میگردد. نماد ستاره(*) به معنای نشان دادن تمام ستون های(صفات) جداول(ها) میباشد:
SELECT * FROM books WHERE price > ۱۰۰٫۰۰ORDER BY title
مثال ۲) این مسئله نحوه استفاده از جداول چندگانه را نشان میدهد. bk و ba نام مستعار جداول میباشد. در این مثال تعداد مولفان مختلف هر کتاب را نشان داده میشود:
SELECT bk.title, count(*) AS AuthorsFROM books AS bk, book_authors AS baWHERE bk.book_number = ba.book_numberGROUP BY bk.title
دستورات عملیات داده
این دستورات به اختصار (DML( Data Manipulation Language گفته میشود و شامل دستوراتی همچون زیر است:
INSERT : اضافه کردن سطرهایی (تاپلهایی) به جدول موجود.
UPDATE : جهت تغییر مقادیر سطرهای موجود جدول.
MERGE : ترکیب کردن دادهها در جداول چندگانه این دستور جدید در
SQL:۲۰۰۳ اضافه شدهاست، پیش از این پایگاه دادهها از دستور UPSERT استفاده میکردند.
TRUNCAT : تمام دادههای جدول را حذف میکند(از دستورات غیر استاندارد اما پر کاربرد SQL میباشد)
DELETE : حذف سطرهایی از جدول موجود.
مثال ( 3 )
Example:INSERT INTO my_table (field۱, field۲, field۳) VALUES ('test', 'N', NULL);UPDATE my_table SET field۱ = 'updated value' WHERE field۲ = 'N';DELETE FROM my_table WHERE field۲ = 'N';
دستورات تراکنش داده
(START TRANSACTION (BEGIN WORK : جهت آغاز یک تراکنش پایگاه داده به کار میرود تا کنترل کند که تراکنش یا به پایان برسد یا اصلاً بی تأثیر باشد.
COMMIT : با عث میشود که تغییرات درون ترانش به طور دائمی ثبت گردد.ROLLBACK : باعث میشود که تغییرات ار آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت دادهها به قبل از درخواست دخییرات آنها بر میگردد.
این دو دستور در کنار هم برای کنترل و قفل گذاری به کار میرود و هنگام خروج از تراکنش این کنترل و قفل گذاری از بین میرود.
مثال ( 4 )
START TRANSACTION;UPDATE inventory SET quantity = quantity – ۳ WHERE item = 'pants';COMMIT;
دستورات تعریف داده
دومین دسته دستورات SQL دستورات تعرف داده یا (DDL (Data Definition Language میباشد. این دستورات به کاربر اجازه تعریف جداول جدید و اجزای آنها را میدهد. بیشتر SQLهای تجاری دستوراتی با این خصوصیات را دارند. مهمترین گزینههای پایهای DDL دستورات زیر است:
CREATE : ایجاد یک شی (مثلاً یک جدول.
DROP : حذف شی تعریف شدهای در پایگاه داده.
بیشتر پایگاههای داده دستور ALTER را نیز دارند که اجازه تغییر یک شی موجود را به شیوههای مختلف میدهد ( مثلاً اضافه کردن یک ستون به جدول(.
مثال ( 5 )
CREATE TABLE my_table (my_field۱ INT UNSIGNED,my_field۲ VARCHAR (۵۰),my_field۳ DATE NOT NULL,PRIMARY KEY (my_field۱, my_field۲)
معایب Sql
در کاربرد عملی از SQL معایب زیر بر آن وارد است:دستورات نحوی(syntax) آن تا حدی مشکل است به نحوی که گاهی آنرا با COBOL مقایسه میکنند.شیوه استانداردی را برای دستورات چند تکه بزرگ ندارد.
نمونههای مختلف آنها که توسط فروشندگان مختلف ارائه میشود گاهی با هم سازگاری ندارد.
وجود برخی دستورات بلنداشتباه گرفتن وظیفههای دستوراتی مثل UPDATE و INSERT.
محاسن Sql
ولی SQL دارای محاسنی هم هست:سازگاری با اکثر زبانهای دستوریسازگاری با اکثر پایگاههای داده مثل SQL Server,Oracle و حتی MS ACCESSپس از اینکه برنامه نویس این زبان را درک کرد استفاده از آن بسیار سادهاست
کاربرد در زبانهای جدید و پیشرفته
مدلهای مشابه SQLIBM BS۱۲ (Business System ۱۲)Tutorial D
TQL Proposal
HQL بر پایه ابزار JAVA
OSQLبرپایه ابزارهای شی گرای PHP برای عملیات و گزارش گیری
Quel در سال ۱۹۷۴ در دانشگاه برکلی ایجاد شد
ODMG (Object Data Management Group)
منابع
۱- ویکی پدیای انگلیسی
۲- وبلاگ ایفجام (
3- دانشنامه رشد
۰