آموزش زبان SQL | آشنایی با SQL Server

SQL چیست ؟

در مدل رابطه‌ای داده‌ها، زبان ساختارمند پرسش‌ها یا اس کیو ال یا سی کوال (Structured Query Language – SQL) زبانی است سطح بالا مبتنی بر زبان سطح پایین و ریاضی جبر رابطه‌ای که برای ایجاد، تغییر، و بازیابی داده‌ها و نیز عملیات بر روی آنها به‌کار می‌رود. زبان SQL به سمت مدل شی‌گرا – رابطه‌ای نیز پیشرفت کرده است.

سی‌کوال استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از اس‌کیوال تاکنون عرضه شده که در جدول زیر بیان می‌کنیم:

  • اس‌کیوال-۸۷
  • اس‌کیوال-۸۹
  • اس‌کیوال-۹۲
  • اس‌کیوال:۱۹۹۹
  • اس‌کیوال:۲۰۰۳
  • اس‌کیوال:۲۰۰۵
  • اس‌کیوال:۲۰۰۸
  • اس‌کیوال:٢٠١١
  • اس‌کیوال:۲۰۱۲

بسیاری از اصطلاحات زبان اس‌کیوال تحت استاندارد بین‌المللی بوده، و در نتیجه، از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL [۲] یا Sybase و SQL PL (مدل رویه‌ای) از شرکت آی‌بی‌ام می‌باشد.

اس‌کیوال برای کارهای ویژه و محدودی (گزارش گیری از داده‌ها در پایگاه داده‌های رابطه‌ای) طراحی شده‌است. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافته‌ای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیت‌های SQL می‌باشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه می‌دهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته می‌شود که SQL نه ساخت یافته‌است، نه محدود به گزارش گیری‌ها و اصلاً یک زبان نیست!

مزایای SQL 

  • SQL بر پایه زبان پرس و جو ساخت یافته میباشد
  • SQL به شما اجازه دستیابی و کنترل داده ها را می دهد
  • SQL یک استاندارد ANSI( انجمن استاندارد ملی آمریکا) میباشد.
  • SQL میتواند درخواستهای پیوسته یک پایگاه داده را اجرا کند
  • SQL متواند دوباره اطلاعات را از پایگاه داده پس بگیرد
  • SQL میتواند یک رکورد شامل اطلاعات را در پایگاه داده ذخیره کند
  • SQL متواند اطلاعات پایگاه داده را به روز رسانی کند
  • SQL میتواند هر قسمت از اطلاعات را از پایگاه داده اصلاح یا حذف کند
  • SQL میتواند یک پایگاه داده تازه بسازد
  • SQL میتواند جداول حاوی اطلاعات جدید را به پایگاه داده اضافه کند
  • SQL اجازه تنظیم جداول و شیوه دستیابی به اطلاعات و نحوه نمایش اطلاعات را میدهد.

در مقالات آموزش sql ما تمامی مفاهیم موجود در بالا را توضیح خواهیم داد .

تاریخچه اس کیو ال (SQL)

منشا اصلی سی‌کوال به مقالهٔ سال ۱۹۷۰ ادگار کاد تحت عنوان «مدل رابطه‌ای داده‌ها برای بانک‌های بزرگ داده‌های اشتراکی»[۱] باز می‌گردد. در دههٔ ۷۰ گروهی از شرکت آی‌بی‌ام در شهر سان خوزه بر روی سیستم پایگاه داده‌های سیستم آر بدون توجه به این مقاله کار می‌کردند و زبان SEQUEL را به منظور عملیات و بازیابی اطلاعات ذخیره شده در سیستم آر ایجاد کردند. اگر چه اس‌کیوال ناشی از تلاشهای کاد بود اما دونالد چامبرلین و ریموند بویس به عنوان طراحان زبان SEQUEL شناخته می‌شوند.

سمینارهایی در زمینه فناوری بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطه‌ای جدید برگزار گردید. تا ۱۹۷۶ مشخص بود که آی‌بی‌ام که طرفدار جدی فناوری بانک اطلاعاتی رابطه‌ای بوده، توجه زیادی نسبت به زبان سی‌کوال دارد. تبلیغات در زمینه سیستم آر باعث جذب گروهی از مهندسین در منلو پارک در کالیفرنیا گردید. این گروه به این نتیجه رسیدند که تحقیقات آی‌بی‌ام منجر به یک بازار تجاری برای بانک‌های اطلاعاتی رابطه‌ای خواهد گردید.

در ۱۹۷۷ این گروه شرکتی بنام اینک (Inc) و رلیشنال سافتویر (Relational Software) تأسیس نمودند تا یک سامانه‌ مدیریت پایگاه‌های داده‌ رابطه‌ای بر اساس سی‌کوال بسازند. محصولی بنام اوراکل در ۱۹۷۹ عرضه گردید، و اولین سامانه مدیریت پایگاه داده رابطه‌ای بوجود آمد. به این ترتیب محصول اوراکل باعث گردید اولین محصول آی‌بی‌ام برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای وکس دیجیتال (VAx Digital) اجرا می‌شد که خیلی از کامپیوترهای بزرگ آی‌بی‌ام ارزان‌تر بودند.

امروزه این شرکت با نام اوراکل اولین فروشنده سیستم‌های مدیریت بانک اطلاعاتی رابطه‌ای است. استادان آزمایشگاه‌های کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانک‌های اطلاعاتی رابطه‌ای بودن (مانند تیم تحقیق آی‌بی‌ام)، گروه فوق نیز یک نمونه از سامانه مدیریت پایگاه داده رابطه‌ای ایجاد نمودند و سیستم خود را اینگرس (Ingres) نام نهادند.

پروژه اینگرس شامل یک زبان پرس‌وجو بنام QUEL بود، اگر چه از سی‌کوال خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.

در حالیکه اوراکل و اینگرسبرای ارائه محصولات تجاری در رقابت بودند، پروژه سیستم آر شرکت آی‌بی‌ام در تلاش بوده‌است که یک محصو ل تجاری با نام SQL/Data system (یا SQL/DS) عرضه نماید. آی‌بی‌ام موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ آی‌بی‌ام یک نسخه SQL/DS را برای VM/CMS (سیستم‌عاملی که در کامپیوتر بزرگ آی‌بی‌ام غالبا استفاده شده بود)، اعلام نمود.

همچنین در سال ۱۹۸۳ شرکت آی‌بی‌ام، محصول دی‌بی‌تو را معرفی نمود که یک سامانه مدیریت پایگاه داده رابطه‌ای برای سیستم‌های بزرگ آن شرکت بود. دی‌بی‌تو تحت سیستم‌عامل وی‌ام‌اس (سیستم‌عامل مراکز کامپیوتری بزرگ) اجرا می‌شد. اولین نسخه دی‌بی‌تو در ۱۹۸۵ عرضه گردید، و مسئولین آی‌بی‌ام اعلام نمودند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم‌افزاری آی‌بی‌ام می‌باشد. از آن تاریخ تاکنون دی‌بی‌تو سامانه مدیریت پایگاه داده رابطه‌ای شاخصی بوده و آی‌بی‌ام از آن حمایت نموده و زبان «سی‌کوال دی‌بی‌تو» استاندارد عملی زبان بانک اطلاعاتی بوده‌است.

آموزش sql

با آموزش Sql ، و به دلیل گستردگی کاربرد این زبان و نرم افزار Sql Server، نه تنها می توانید در طراحی سایت کارتان گسترش یابد بلکه در زمینه های دیگر نیز می توانید از این زبان و نرم افزار استفاده نمایید. کاربرد اس کیوال در زمینه هایی است که با داده سر و کار دارید. ذخیره ی داده ها و اطلاعات ، تحلیل داده ها ، گزارش گیری بسیار قدرتمند از اطلاعات و داده ها و … از جمله مهمترین کاربرد های زبان اس کیوال و نرم افزار اسکیوال سرور می باشد.

برای طراحی وب سایت داینامیک دو مبحث آموزش asp.net و آموزش SQL  نیاز است. با آموزش SQL میتوانید غیر از طراحی وب سایت در زمینه های دیگر که با داده سر و کار دارید نیز از آن استفاده نمایید.

آموزش اسکیوال در صورتی که پیش زمینه ی نرم افزار هایی مانند اکسس را داشته باشید ، بسیار ساده است. دستورات زبان SQL محدود و ساده ولی در عین حال جامع و گسترده هستند و یادگیری کامل آن نیاز به دقت زیاد در مقالات اموزش اس کیوال ما می باشد.

مفاهیم پایگاه داده

Database چیست ؟ ( دیتابیس چیست ؟ )

Table چیست ؟

Field چیست ؟

Record چیست ؟

مقدمات SQL

SQL چیست ؟ (اس کیو ال چیست)

تاریخچه اس کیو ال SQL

با SQL چه کار هایی میتوان انجام داد ؟

استفاده از SQL در طراحی سایت

دستورات DML و DDL در اس کیو ال

انواع داده و متغیر در SQL

دستورات SQL

دستور SELECT در sql

دستور SELECT DISTINCT در sql

دستور شرطی WHERE در sql

عملگر های And و Or در SQL

دستور مرتب سازی Order By در sql

دستور Group By در sql

دستور شرطی Having در sql

دستور Insert در sql

دستور Update در sql

دستور Delete در sql

دستورات پیشرفته SQL

دستور شرطی Top در SQL

عملگر Like در SQL

علامت های شرطی در Like

عملگر In در شرط های sql

عملگر BETWEEN در شرطهای sql

Alias در اس کیو ال

دستورات پیوند و Join در SQL

دستور INNER JOIN در sql

دستور LEFT JOIN در sql

دستور RIGHT JOIN در sql

دستور FULL JOIN در sql

عملگر UNION در اسکیوال

دستور SELECT INTO در sql

مقدار Null در اس کیو ال

دستور ISNULL در اس کیو ال

دستورات تعریف داده ها (DDL)

دستور CREATE DATABASE در sql

دستور Create Table در sql

دستور Drop در sql

دستور Create Index در sql

دستور alter table در sql

تغییر نام فیلد در یک جدول با استفاده از دستور sql

ایجاد محدودیت برای فیلد ها (Constraints)

محدودیت Primary Key در sql

محدودیت Foreign Key در sql

محدودیت Check در sql

محدودیت Default در اسکیوال

محدودیت NOT NULL در sql

محدودیت Unique در sql

فیلد identity در Sql

آموزش View در sql

توابع اس کیو ال

تابع Avg در sql

تابع Count در sql

تابع First در sql

تابع Last در sql

تابع Max در sql

تابع Min در sql

تابع Sum در sql

تابع UCase در sql

تابع LCase در sql

تابع Mid در sql

تابع Len در sql

تابع Round در sql

تابع Now در sql

تابع Format در اسکیوال

تابع ISNUL در sql

 

دستورات DML و DDL در اس کیو ال

SQL به دو قسمت تقسیم میشود :

  • زبان دستکاری داده ها ((DML (Data Manipulation Language)
  • زبان تعریف داده ها ((DDL (Data Definition Language)

دستورات DML  شامل بخشهای زیر میشوند 

  1. SELECT : واکشی اطلاعات از دیتابیس
  2. UPDATE : ویرایش اطلاعات دیتابیس
  3. DELETE : پاک کردن اطلاعات از دیتابیس
  4. INSERT INTO : اضافه کردن اطلاعات جدید به دیتابیس

دستورات DDL شامل بخشهای زیر میشوند

  1. CREATE DATABASE ایجاد یک دیتابیس جدید
  2. ALTER DATABASE ایجاد تغییرات در دیتابیس
  3. CREATE TABLE ایجاد یک table  جدید
  4. ALTER TABLE اعمال تغییرات در table
  5. DROP TABLE پاک کردن یک table
  6. CREATE INDEX  ایجاد یک شاخصه
  7. DROP INDEX حذف یک شاخص

شاخصه (Index)

شاخص عبارتست از یک شماره که به هر یک از فیلدها در سطرهای یک جدول اختصاص داده می شود . شاخص ها در پشت پرده جداول ایجاد شده و از دید کاربر کاملا مخفی هستند . استفاده از شاخص ها باعث می شود تا برنامه بتواند مقادیر سطرهای مختلف را بر حسب مقدار یک فیلد و بر حسب شماره شاخص آنها از کم به زیاد یا بر عکس مرتب کند و در عملیات جستجو باعث بالا رفتن سرعت جستجو می شود.

انواع داده و متغیر در SQL

در این قسمت از آموزش sql ، انواع داده در اسکیوال را شرح میدهیم.

انواع داده رشته ای  در اسکیوال : Character strings 

این نوع فیلد برای نگهداری عبارات و یا حروف ASCII می‌باشد. در این نوع فیلد‌ها، برای نگهداری هر حرف، یک بایت اشغال می‌شود و لذا نیاز به Collation برای تعیین زبان اطلاعات می‌باشد.

 

نوع دادهشرح
char(n)اطلاعات متنی با طول ثابت از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره می‌کنند.
varchar(n)اطلاعات متنی با طول متغیر از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره می‌کنند. فرق بین Char و VarChar در این است که در Char، طول رشته ثابت است. یعنی اگر یک فیلد را از نوع Char(20) معرفی کرده و در آن کلمه Orion را قرار دهیم، عین ۲۰ حرف استفاده خواهد شد. یعنی ۵ کاراکتر اول را کلمه مربوطه اشغال کرده و ۱۵ کاراکتر باقی‌مانده، Blank خواهند بود. اما در VarChar اینگونه نیست.
varchar(max)اطلاعات از ۱ تا ۲ مگا حرف ذخیره می‌شود و مکانیزم آن هم بصورت پوینتری می‌باشد.
textاطلاعات از ۱ تا ۲ مگا حرف ذخیره می‌شود. این نوع داده همانند Image و VarBinary(MAX) در خود رکورد ذخیره نمی‌شوند. بلکه توسط یک پوینتر به جای دیگری اشاره می‌کنند. این نوع داده در SQL 10 حذف شده و بجای آن‌ها از VarChar(MAX) استفاده می‌شود.

انواع داده یونیکد  در اسکیوال : Unicode types

این نوع فیلد‌ها برای نگهداری متون Unicode بوده و برای نگهداری هر حرف، از دو بایت استفاده می‌شود. پس مسلماً نسبت به نوع داده‌های کاراکتری، حافظه بیشتری را به خود اختصاص می‌دهد و در ضمن کمی هم کندتر است. این نوع فیلد‌ها، احتیاج به Collation ندارند.

 

نوع دادهشرح
nchar(n)در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ حرف با طول ثابت ذخیره می‌شود.
nvarchar(n)در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ بایت با طول متغیر ذخیره می‌شود.
nvarchar(max)در این نوع داده از ۱ تا ۱ مگا حرف ذخیره می‌شود. مکانیزم آن هم بصورت Pointer می‌باشد.
ntextدر این نوع داده، از ۱ تا ۱ مگا حرف ذخیره می‌شود. مکانیزم آن هم بصورت Pointer .

انواع داده باینری  در اسکیوال : Binary types

این نوع فیلد‌ها برای نگهداری اطلاعات بصورت بایناری مانند تصاویر مناسب هستند

 

نوع دادهشرح
bitیک فیلد دو بیتی است و می‌تواند ۰ و ۱ و Null را ذخیره کند.کاربرد آن در زمان‌هایی است که دو حالت وجود داشته باشد. مانند جنسیت زن و مرد.
binary(n)این نوع فیلد‌ها، از ۱ تا ۸۰۰۰ بایت را در خود جای می‌دهند.
varbinary(n)این نوع فیلد‌ها هم از ۱ تا ۸۰۰۰ بایت را در خود جای می‌دهند. (متغیر).
varbinary(max)این نوع Datatype در SQL 2005 معرفی شده و تقریباً همانند داده‌های Image هستند.
imageاین نوع فیلد‌ها از ۱ تا حداکثر ۲ گیگابایت را می‌توانند ذخیره کنند. فرق این نوع داده‌ها با دو نوع قبلی این است که در دو نوع قبلی، اطلاعات در خود رکورد ثبت می‌شوند ولی در این نوع داده‌ها، اطلاعات در یک Page ذخیره می‌شود و به جایش در رکورد، یک پوینتر ۱۶ بایتی ذخیره می‌شود. این نوع فیلد‌ها در SQL 10 حذف شده و به جایش باید از VarBinary استفاده کرد.

انواع داده عددی  در اس کیو ال : Number types

این نوع فیلد برای نگهداری اعداد صحیح و بدون اعشار استفاده می‌گردد و دارای ۴ نوع به شرح زیر است. در ضمن این نوع فیلد‌ها رتبه یک سرعت در نوع فیلد‌های عددی را دارد.

 

نوع دادهشرح
tinyint یک بایت را اشغال می‌کند و می‌تواند از ۰ تا ۲۵۵ را در خود ذخیره کند.
smallintیک عدد دو بایتی است و می‌تواند از ۳۲۷۶۷ منفی تا ۳۲۷۶۷ مثبت را در خود ذخیره کند.
intیک عدد چهار بایتی است که می‌تواند اعداد بین مثبت و منفی ۲ میلیارد را در خود ذخیره کند.
bigintیک عدد ۸ بایتی است که می‌تواند اعداد بین مثبت و منفی ۴ میلیارد را در خود ذخیره کند.
decimal(p,s)این نوع فیلد برای نگهداری اعداد اعشاری با تعداد اعشار مشخص استفاده می‌گردد. این نوع فیلد‌ها بسیار کند بوده و استفاده از آنها توصیه نمی‌گردد. که در آن Precision به معنای تعداد کل رقم‌های عدد و Scale تعداد ارقام اعشار را مشخص می‌کند. مثلاً اگر فیلدری بصورت Deciaml(6,2) تعریف شود، حداکثر آن برابر ۹۹۹۹٫۹۹ می‌باشد.
numeric(p,s) 
smallmoneyیک عدد ۴ بایتی است که می‌تواند ۶ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند.
moneyیک عدد ۸ بایتی است که می‌تواند ۱۵ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند.
float(n)یک عدد ۸ بایتی که اعداد بصورت توانی از ۱۰ نگهداری می‌شوند.
realیک عدد ۴ بایتی است که اعداد بصورت توانی از ۱۰ نگهداری می‌شوند.

انواع داده تاریخ  در اس کیوال  :Date types

این نوع فیلد‌ها برای نگهداری تاریخ میلادی و ساعت استفاده می‌شود و برای تاریخ شمسی کاربرد ندارد.

 

نوع دادهشرح
datetimeاین نوع فیلد، ۸ بایتی است و از سال ۱۷۰۰ تا ۹۹۹۹ را با دقت هزارم ثانیه ذخیره می‌کند.
datetime2.
smalldatetimeاین نوع فیلد، ۴ بایتی است و از سال ۱۹۰۰ تا ۲۰۷۹ را با دقت هزارم ثانیه ذخیره می‌کند.
dateاین نوع فیلد‌ها برای نگهداری تاریخ میلادی استفاده می‌شود.
timeاین نوع فیلد‌ها برای نگهداری ساعت استفاده می‌شود.
datetimeoffset 
timestamp 

انواع دیگر داده ها  در sql: Other data types

 

نوع دادهشرح
sql_variantاین نوع فیلد برای نگهداری انواع داده استفاده می‌شود و نوع آن با توجه به اولین مقداری که در آن قرار می‌گیرد تعیین خواهد شد. چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشاره‌گر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری می‌شود. استفاده از این نوع فیلد، توصیه نمی‌گردد..
uniqueidentifier.این فیلد ۱۶ بایتی، به ما کدی Unique یا تک می‌دهد که به اصطلاح GUID می‌گویند. یکی از کاربردهای آن در Replication است.
xmlاین فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده می‌شود و شامل انواع MetaData های مختلف است.
cursorاین فیلد مربوط به کنترل Cursor است .
table.

 

مقدار Nullدر حالت کلی مقادیر ستون ها میتوانند مقدار null داشته باشند. زمانی که  یک ستون اختیاری باشد ، شما میتوانید مقدار Null در آن ذخیره کنید. اختیاری به این معنی که میتوانید خالی رهایش کنید.

مقدار پیش فرض در صورت مقدار ندادن به فیلدی در یک رکورد , مقدار Null است.

با استفاده از دستور is null در sql میتوانیم فیلدهایی که مقادیر تهی دارند را با در دستور Select انتخاب کنیم.

مقدار null از جمله مقادیری است که زیاد باهاش در آموزش sql سر و کار خواهیم داشت.

نکته ی بسیاری مهم در مورد null یا تهی اینست که این مقدار با مقدار رشته ای space یا ‘ ‘ تفاوت کامل دارد. همچنین null را نباید با مقدار رشته ای آن یعنی ‘null’ اشتباه بگیریم.

ارسال دیدگاه