بررسی تاریخچه SQL Server

این تاپیک 7 پاسخ و 2 مشارکت کننده دارد . آخرین آپدیت توسط :  sajjadsa ،‏ 7 ماه و 4 هفته پیش .

این تاپیک تاکنون 378 بازدید داشته است .

نویسنده پست
سه شنبه ، 12 آوریل 2016     12:14 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

تاریخچه SQL
زبان SQL در سالهای پایانی دهه 1970 در آزمایشگاه IBM متولد شد. (SQL) مخفف Structured Query Language است. این زبان در آغاز برای محصول DB2 که یک سیستم مدیریت پایگاههاداده های رابطه است ، ابداع شده بود . در واقع SQL ایجاد سیستم های مدیریت پایگاه داده های رابطه ای RDBMS را امکان پذیر کرد. این زبان برخلاف زبان های نسل سوم مانند c و کوبول ، یک زبان غیر روالی است – یعنی د راین زبان عمل مورد نظر مشخص می شود و نحوی انجام آن بر عهده زیر ساختار های زبان است مثلا شما می گوید اطلاعات نفری با شما 100 را پیدا کن و کاری به نحوی عمل کرد سیستم که چگونه این کار را انجام می دهد ندارید.
سیستم های مدیریت پایگاه داده های رابطه ای دارای زبانی مبتنی بر مجموعه های هستند. این زبان وجه اصلی اختلاف بین پایگاه های رابطه ای و غیر رابطه ای هست. و در حال حاضر در اکثر سیستم های مدیریت پایگاه های اطلاعات رابطه ای این زبان مبتنی بر مجموعه ها زبان SQL است. البته هر شرکت و تولید کننده نرم افزار های دیتابیسی برداشت و نسخه ویژه خاصی از این زبان را برای خود ایجاد کرده اند که البته با کنترل های که از طرف سازمان های استاندارد کننده کد های ANSI انجام شده این اختلاف های چندان زیاد و قابل توجه نیست و عملا بیش از 95 در صد کد نویسی های SQL و منطق کار در تمام سیستم های مدیریت اطلاعاتی رابطه ای قابل استفاده است . لذا اگر شما بر این زبان تسلط داشته با شید با کمی صرف انرژی امکان پیاده سازی مفاهیم د رانواع دیتا بیس های موجود را دارا خواهید بود.
* کلیه دستوراتی که شما در این صفحات می بینید در انواع رایج پیاده سازی SQL مانند اکسس و SQLServer و Oracle قابل استفاده است.
دستورات: SQL
Select:
دستور select پر کاربرد ترین و یکی از مفید ترین دستورات SQL است لذا قبل از این که زیاد وارد سایر مفاهیم این زبان بشوید شاید بهتر باشد ابتدا در مورد این دستور کمی ببشتر بدانیدکه هم با این دستور آشنا شویم و هم در طی مراحل یادگیری این دستور ساختار های موجود در دیتابیس را بشناسیم.( البته شناخت ساختار یک سیستم مدیریت اطلاعات رابطه ای خود یک مقوله مفصل است که در این جا زیاد مورد بررسی قرار نمی گیرد و فرض می کنیم که همه ما این مقوله را کم وبیش بلد هستیم.)
بیاید ببینم که دستور select اصولا قرار هست که چه کاری را انجام بدهد. فرض کنیم در ارگانی یا اداره ای مشغول کار هستیم و کارمند قسمت کار گزینی هستیم و مثلا رییس از ما می خواهد که لیست کلیه کارمندانی را که متاهل هستند و از دوسال پیش در شرکت مشغول کار هستند، را تهیه کنیم. حال ما به هرروشی که دوست داریم باید در سریع ترین حالت ممکن جواب رییس را آماده کنیم این دقیقا مشابه حالتی است که در زبان SQL برای اجرا دستور Select استفاده شده است که ما به عنوان مدیر یک سیستم اطلاعات رابطه ای بدون داشتن دقدقه نحوی اجرا فقط باید خواست خود را به سیستم وارد کنیم .

شکل کلی این دستور در زبان sql به شکل زیر است :
Select <fields> From < Tables> Where < Condition>;
که در مورد مثال ما می توان آن را به شکل زیر تعبیر کرد:
Select <اطلاعات کارمندان> From < لیست کلیه کارمندان > Where < متاهل هستند> andدارای دو سال سابقه هستند>>
البته این شکل کلی این دستور است وحالت های پیچیده تر و البته ساده تر از این هم دارد مثلا اگر شما فقط Select , From را استفاده کنید باز این دستور عمل خواهد کرد و طبیعتا بدون هیچ اعمال محدودیتی کلیه اطلاعات موجود در لیست کارمندان را استخراج خواهد کرد.

حال فرض کنید شما در دیتا بیس خود جدولی دارید که اطلاعات و مشخصات فردی تمام کارکنان شرکت و ارگان شما در آن وجود دارد برای استخراج مثلا نام و نام خانوادگی کلیه افراد کافی است که دستور زیر را استفاده کنید
( فرض کنید نام جدول شماEmployee است)
Select Name, Family from Employee;
حال اگر بخواهید علاوه بر نام و نام خانوادگی افراد اطلاعات دیگری از آنها داشته باشید می توانید بعد از کلمه select و قبل از کلمه From نام سایرفیلد های مورد نظر خود را نیز وارد کنید.

2  تشکر
سه شنبه ، 12 آوریل 2016     12:15 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

------------------

2  تشکر
سه شنبه ، 12 آوریل 2016     12:30 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

فرض کنید می خواهید کلیه اطلاعات موجود در جدول Employee را استخراج کنید. در این حالت باید شما نام همه فیلد های موجود در جدول را باید در دستور Select خود وارد کنید و یا این که با استفاده از علاوه * به دستور بفهمانید که منظور شما استخراج کلیه اطلاعات موجود در جدول است.
Select * from Employee;
حال فرض کنید می خواهید که این اطلاعات محدود به افرادی باشند که نام آنها علی است برای این کار کافی از یک شرط به جمله فوق اضافه کنید :
Select * from Employee Where Name=’Ali’;
خوب حالا شما با استفاده از همین یک دستور ساده امکان استخراج انواع اطلاعات از جداول موجود در دیتا بیس خود را دارید. ولی برای داشتن توانایی بیشتر از استخراج اطلاعات باید کمی بیشتر در مورد نحوی شرط گذاری در این دستور اطلاعات داشته باشید.

انواع اپراتور های قابل استفاده در Where Condition را می توان به صورت زیر دسته بندی کرد:

1 - اپراتور های ریاضی : +، -، *، /

2 - اپراتور های شرطی : > ، < ، = ، <> ، =! ، => ، =<

3 - اپراتورهای منطقی : NOT ، AND ، OR

4 - اپراتور های نویسه ای : Like ، ||

5- اپراتورهای مجموعه ای : UNION ، UNION ALL، INTERSECT، MINUS ،IN، BETWEEN

 

اگر شما با حداقل یک زبان برنامه نویسی آشنایی داشته باشید مطمئنا با نحویه استفاده از اپراتور های قسمت 1 و2 و 3 آشنا هستید لذا در این جا کمی در مورد استفاده ازاپراتور های نویسه ای و اپراتور های مجموعه ای توضیح می دهم.

شاید بهترین روش برای نشان دادن توانایی این اپراتور ها استفاده از آنها در قالب یک مثال باشد.

*مثلا در مورد اپراتور Like :

فرض کنید مانند مثال قبل رییس شما از شما خواسته است که لیست تمام کارمندانی که اول اسم آنها A را برای او تهیه کنید بهتر راه برای استخراج این لیست استفاده از دستور Like است به شکل زیر:
Select * from Employee Where Name ‘A%’;
حال اگر شما قصد داشته باشید لیست تمام افرادی که نام آنها دارای حداقل یک حرف A باشد را استخراج کنید کافی است دستور فوق را به صورت زیر اصلاح کنید:
Select * from Employee Where Name ‘%A%’;
*در مورد استفاده از دستور || که عمل ترکیب دو رشته را انجام می دهد داریم :

فرض کنید شما می خواهید اطلاعات فردی به نام علی کریمی را از لیست کارمندان استخراج کنید و همچنین نمی خواهید از اپراتور های منطقی استفاده کنید ( البته محدودیتی در استفاده از این اپراتور ها نیست ولی برای انجام مثال فرض کنید که محدودیت داریم ) برای این کار کافی است دستور خود را به صورت زیر اصلاح کنید:
Select * from Employee Where Name||’ ‘||Family=’Ali Karimi’;
 

* در مورد اپراتور UNION :

فرض کنید در اداره شما در تیم فوتبال و والیبال وجود دارد و رییس شما از شما می خواهد که لیست کلیه افرادی را که حداقل در یکی از این تیم ها عضو هستند را استخراج کنید کافی است دستور زیر را استفاده کنید:
Select * from football ;
union
select * fromvaliball ;
در این حالت لیست کلیه افراد عضو دو تیم استخراج می شود ولی امکان دارد مثال در تیم فوتبال 20 نفر عضو داشته باشید و در تیم والیبال 20 نفر عضو باشند ولی نتیجه خروجی 36 نفر باشد – یعنی 4 نفر کم آورده باشید – دلیل به وجود آمدن این حالت این است که امکان دارد برخی از افراد در هر دو تیم عضو باشند و اگر به جای استفاده از دستور UNION از دستور UNION ALL استفاده کنید لیست شما دقیقا حاوی اطلاعات 40 نفر خواهد بود و خوب البته 4 اسم تکراری خواهد بود.

2  تشکر
سه شنبه ، 12 آوریل 2016     12:35 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

خوب فرض کنید این حالت در اداره شما رخ داده است و رییس از شما می خواهد اسامی کارمندانی که در هر دو تیم عضو هستند را استخراج کنید برای این حالت کافی است از دستور Intersect استفاده کنید- به شکل زیر:
Select * from Football;
Intersect
Select * from Valiball;
خوب دیگه حالا فرض کنید قرار است به کلیه افرادی تیم فوتبال پاداشی تعلق بگیرد ولی به دلیل آن که قبلا به کلیه افراد تیم والبیال پاداشی داده شده رییس از شما خواسته که لیست کلیه افراد تیم فوتبال را که عضو تیم والیبال نیستند را استخراج کنید برای این کار از دستور Minus استفاده می کنیم:
Select * from football ;
Minus
Select * from Valiball;
حالا یک فرض دیگر :
فرض کنید در شرکت شما قرار است به افرادی که ساکن کرج ، شهریار و وارمین هستند کمک هزینه ایاب و ذهاب پرداخت شود و شما نیاز به لیستی دارید که افراد ساکن این شهرها در آن باشد برای این کار می توانید از دستور IN درWhere condition خود استفاده کنید به صورت زیر:
Select * from Employee where City in (‘karaj’,’shahriar’,’varamin’);
فرض کنید در اداره شما قرار شده است به کلیه افرادی که حقوق آنها بین 100000 تا 150000 تومان است وامی تعلق بگیرد برای این کار شما می توانید از دستور Between در قسمت Where Condition خود استفاده کنید به شکل زیر :
Select * from Employee where salary between 100000 and 150000;
در زمینه تکنولوژی بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطه‌ای جدید برگزار گردید. تا 1976 مشخص بود که IBM طرفدار جدی تکنولوژی بانک اطلاعاتی رابطه‌ای بوده، توجه زیادی نسبت به زبانSQL دارد. تبلیغات در زمینه System/R باعث جذب گروهی از مهندسین در Menlo Park در کالیفرنیا گردید، و این گروه به این نتیجه رسیدند که تحقیقات IBM منجر به یک بازار تجاری برای بانک‌های اطلاعاتی رابطه‌ای خواهد گردید.
در 1977 این گروه شرکتی بنام Inc وRelational Software تاسیس نمودند تا یک DBMS رابطه‌ای بر اساس SQL بسازند. محصولی بنام Oracle در1979 عرضه گردید، و اولین DBMS رابطه‌ای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت 2 سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital’s اجرا می‌شد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.
امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستم‌های مدیریت بانک اطلاعاتی رابطه‌ای است . استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه 1970 مشغول تحقیق در زمینه بانک‌های اطلاعاتی رابطه‌ای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطه‌ای ایجاد نمودند و سیستم خود را Ingres نام نهادند.
پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.
در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بوده است که یک محصو ل تجاری با نام SQL/Data system (یاSQL/DS) عرضه نماید. IBM موجودیت SQL/DS را در 1981 اعلام، و در 1982 شروع به عرضه محصول خود نمود . در سال 1983 IBM یک نسخه SQL/DS را برای VM/CMS سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود، اعلام نمود.
همچنین در سال 1983 شرکتIBM، محصول Database2 یا DB2 را معرفی نمود که یک DBMS رابطه‌ای بود برای سیستم‌های بزرگ آن شرکت. DB2 تحت سیستم عامل IBM’s VMSسیستم عامل مراکز کامپیوتری بزرگ اجرا می‌شد . اولین نسخه DB2در 1985 عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM می‌باش DB2 .از آن تاریخ تاکنون DBMS رابطه‌ای شاخص بوده و IBM از آن حمایت نموده و زبان DB2’s SQL استاندارد عملی زبان بانک اطلاعاتی بوده است.
SQL استاندارد ANSI (American National Standards Institute) را در سال 1986 و ISO (International Organization for Standardization) را در سال 1987 اتخاذ نمود . استانداردهای مختلفی از SQL تاكنون عرضه شده كه در جدول زیر بیان می‌كنیم:
SQL-87
SQL-89
SQL-92
SQL:1999
SQL:2003
SQL:2005
SQL:2008
SQL:2008 R2
SQL:2010
SQL:2012
SQL:2016
البته نسخه های دیگری مابین این نسخه ها بوجود آمده که دارای تغییرات ساختاری آنچنانی نمی باشند.

0  تشکر
سه شنبه ، 12 آوریل 2016     12:41 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

DMLچیست ؟
DML یا Data Manipulation Language بخشی از دستورات زبان SQL است که برای پردازش داده ها به کار میروند

این دستورات عبارتند از :
SELECT-UPDATE-DELETE-INSERTINTO
DDLچیست؟
DDLیا Data Definition Language ، بخشی از دستورات SQL است که به تعریف ، ویرایش و حذف جدول ( TABLE ) یا ایندکس ها میپردازد .

این دستورات عبارتند از :
CREATE TABLE - ALTER TABLE - DROP TABLE - CREATE INDEX-DROP INDEX
DCL چیست ؟
DCL یا Data Control Language بخشی از دستورات SQL است که به کاربر دسترسی کنترل داده ها (ایجاد ، ویرایش ، حذف و ...) را میدهد .
این دستورات عبارتند از : GRANT و REVOKE که برای دادن اجازه یا لغو آن به کار میروند.

دو دستور فوق را میتوان بر روی دستورات زیر انجام داد:
CONNECT - SELECT - INSERT - UPDATE - DELETE - USAGE
یعنی یک کاربر بتواند از دستورات مذکور استفاده کند یا نتواند .
واژه هاي كليديSQL:
واژه‌های كلیدی SQL به گروه‌های مختلفی تقسیم می‌گردد، در زیر به برخی از آنها اشاره می‌كنیم آنهایی كه آشنا تر هستند را تنها با یك مثال شرح می‌دهیم:

دستورات باز یابی داده (SELECT)
دستورات عملیات دادهINSERT، UPDATE، MERGE،TRUNCAT و DELETE
دستورات تراكنش دادهCOMMIT) و (ROLLBACK
دستورات تعریف داده (DROP,CREATE)
دستورات كنترل دادهGRANT) و (REVOKE

دستورات بازیابی داده:
دستور SELECT جهت بازیابی برشی سطری از یك یا چند جدول به كار میرود. این دستور پركاربردترین دستور DML می‌باشد و برای گزارش گیری‌های موثر مورد استفاده قرار می‌گیرد. توجه داشته باشید که در پروژه های SQL Server که سطح پروژه بالاست و تعداد رکوردها زیاد است ، استفاده نادرست Select می تواند موجوب کندی دسترسی به اطلاعات توسط کاربران شود.

ساختمان این دستور می‌تواند از اجزای زیر تشكیل شده باشد:

: FROM مشخص كردن جداول و نحوه اتصال آنها به هم.
: WHERE انتخاب سطر هایی با شرایط خاص.
: GROUP BY تركیب سطر ها با مقادیر مربوط به مجموعه‌ای از سطرهای كوچكتر.
: HAVING مشخص كردن سطرهای تركیبی.
: ORDER BY مشخص كردن اینكه كدام ستونها برای مرتب كردن داده ها به كار میرود.
مثال 1) نشان دادن ركوردهای تمام كتاب‌های بیش 100.00 واحد قیمت. نتایج بر اساس نام كتاب مرتب می‌گردد. نماد ستاره(*) به معنای نشان دادن تمام ستون های جداول می‌باشد:

SELECT * FROM books WHERE price > 100.00
ORDER BY title
مثال 2) این مسئله نحوه استفاده از جداول چندگانه را نشان می‌دهد bk و ba نام مستعار جداول می‌باشد.
در این مثال تعداد مولفان مختلف هر كتاب را نشان داده می‌شود:

SELECT bk.title, count(*) AS Authors
FROM books AS bk, book_authors AS ba
WHERE bk.book_number = ba.book_number
GROUP BY bk.title

0  تشکر
سه شنبه ، 12 آوریل 2016     12:46 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

دستورات عملیات داده
این دستورات به اختصار DML( Data Manipulation Language) گفته می‌شود و شامل دستوراتی همچون زیر است:
: INSERT اضافه كردن سطر هایی (تاپل هایی) به جدول موجود.
: UPDATE جهت تغییر مقادیر سطرهای موجود جدول.
: MERGE تركیب كردن داده ها در جداول چندگانه این دستور جدید در SQL:2003 اضافه شده است، پیش از این پایگاه داده ها از دستور UPSERT استفاده می‌كردند.
: TRUNCAT تمام داده‌های جدول را حذف می‌كند(از دستورات غیر استاندارد اما پر كاربرد SQL می‌باشد).
:DELETE حذف سطر هایی از جدول موجود.

Example3:
INSERT INTO my_table (field1, field2, field3) VALUES ('test', 'N', NULL);
UPDATE my_table SET field1 = 'updated value' WHERE field2 = 'N';
DELETE FROM my_table WHERE field2 = 'N';
دستورات تراكنش داده
:(START TRANSACTION BEGIN WORK) جهت آغاز یك تراكنش پایگاه داده به كار می‌رود تا كنترل كند كه تراكنش یا به پایان برسد یا اصلا بی تاثیر باشد.
COMMIT : با عث می‌شود كه تغییرات درون ترانش به طور دائمی ثبت گردد.
:ROLLBACK باعث می‌شود كه تغییرات ار آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت داده ها به قبل از درخواست دخییرات آنها بر می‌گردد.
این دو دستور در كنار هم برای كنترل و قفل گذاری به كار می‌رود و هنگام خروج از تراكنش این كنترل و قفل گذاری از بین می‌رود.
EXAMPLE 4:
START TRANSACTION;
UPDATE inventory SET quantity = quantity - 3 WHERE item = 'pants';
COMMIT;
دستورات تعریف داده:
دومین دسته دستورات SQL دستورات تعرف داده یا DDL (Data Definition Language) می‌باشد. این دستورات به كاربر اجازه تعریف جداول جدید و اجزای آنها را می‌دهد. بیشتر SQLهای تجاری دستوراتی با این خصوصیات را دارند. مهمترین گزینه‌های پایه‌ای DDL دستورات زیر است:
:CREATE ایجاد یك شی،مثلا یك جدول.
:DROP حذف شی تعریف شده‌ای در پایگاه داده.
بیشتر پایگاه‌های داده دستور ALTER را نیز دارند كه اجازه تغییر یك شی موجود را به شیوه‌های مختلف می‌دهد ( مثلا اضافه كردن یك ستون به جدول.

EXAMPLE 5:
CREATE TABLE my_table (
my_field1 INT UNSIGNED,
my_field2 VARCHAR (50),
my_field3 DATE NOT NULL,
PRIMARY KEY (my_field1, my_field2)
)

دستورات كنترل داده
سومین دسته از دستورات SQL دستورات كنترل داده یا DCL (Data Control) Languageمی باشد . این دستورات جنبه‌های اجازه دسترسی به داده ها را مشخص می‌كند و تعیین می‌كند كدام كاربر می‌تواند روی پایگاه داده عملیات انجام دهد یا كدام كاربر تنها می‌تواند قابلیت خواندن آنها را داشته باشد. دو دستور اصلی به قرار زیر است:
:GRANT اجازه دادن به یك یاچند كاربر برای اجرا كردن یك یا مجموعه‌ای ازدستورات بر روی یك شی.
:REVOKE حذف یا محدود كردن قدرت اجرای كاربران.

Example5:
SELECT * FROM inventory -- Retrieve everything from inventory table

نظریات کاد (Codd) غوغایی در زمینه تحقیق در باب بانک اطلاعاتی رابطه ای ایجاد نمود، که از آن جمله پروژه تحقیقاتی درIBM بود. هدف پروژه که به نامSystem/R نامیده می شد، این بود که ثابت کند مفهوم رابطه ای قابل اجرا بوده و نیز ارائه تجربیاتی عملی در زمینه ایجاد یک DBMS رابطه ای. کار بر رویSystem/R در نیمه دهه 1970 در لابراتوارهای S’Santa Tersa IBM در San Jose کالیفرنیا آغاز گرديد.

در 1974 و 1975 فاز اول پروژه System/R نمونه کوچکی از یک DBMS رابطه ای راتولید نمود. علاوه بر خود DBMS پروژه System/R شامل کار بر روی زبان های پرسشی بانک اطلاعاتی نیز بود. یکی از این زبانها بنام SEQUEL یا Structured English Query Language بود. در1976و1977 پروژه تحقیقاتیSystem/R بازنویسی گردید. در ساختار جدید پرسشهای چند جدولی نیز پیشتیبانی می شد و چندین کاربر می توانستند به طور اشتراکی از داده ها استفاده نمایند.

1  تشکر
سه شنبه ، 12 آوریل 2016     12:47 ب.ظ #


a00b ali

Subscriber
7 پست1 تاپیک

امیدوارم از این آموزش استفاده کنین.

من از سال 1382 پایگاه داده کار می کنم. سوالی داشتین تا جایی که سوادم برسه در خدمتم.

 

3  تشکر
پنجشنبه ، 14 آوریل 2016     10:45 ق.ظ #


sajjadsa

Subscriber
1 پست0 تاپیک

سلام بچه ها من اینجا اموزشای خیلی خوبی رو دیدم در رابطه با my sql و ...
سایت فوق العادست شمام میتونید ازش استفاده کنید
http://www.deltarayane.ir

0  تشکر
پست 1 تا 8 (از مجموع 8 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .