در مدل رابطهای دادهها، زبان ساختارمند پرسشها یا اس کیو ال یا سی کوال (Structured Query Language – SQL) زبانی است سطح بالا مبتنی بر زبان سطح پایین و ریاضی جبر رابطهای که برای ایجاد، تغییر، و بازیابی دادهها و نیز عملیات بر روی آنها بهکار میرود. زبان SQL به سمت مدل شیگرا – رابطهای نیز پیشرفت کرده است.
سیکوال استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از اسکیوال تاکنون عرضه شده که در جدول زیر بیان میکنیم:
- اسکیوال-۸۷
- اسکیوال-۸۹
- اسکیوال-۹۲
- اسکیوال:۱۹۹۹
- اسکیوال:۲۰۰۳
- اسکیوال:۲۰۰۵
- اسکیوال:۲۰۰۸
- اسکیوال:٢٠١١
- اسکیوال:2012
بسیاری از اصطلاحات زبان اسکیوال تحت استاندارد بینالمللی بوده، و در نتیجه، از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL [۲] یا Sybase و SQL PL (مدل رویهای) از شرکت آیبیام میباشد.
حتما بخوانید: دستور UNION
اسکیوال برای کارهای ویژه و محدودی (گزارش گیری از دادهها در پایگاه دادههای رابطهای) طراحی شدهاست. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، 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 Server، نه تنها می توانید در طراحی سایت کارتان گسترش یابد بلکه در زمینه های دیگر نیز می توانید از این زبان و نرم افزار استفاده نمایید. کاربرد اس کیوال در زمینه هایی است که با داده سر و کار دارید. ذخیره ی داده ها و اطلاعات ، تحلیل داده ها ، گزارش گیری بسیار قدرتمند از اطلاعات و داده ها و … از جمله مهمترین کاربرد های زبان اس کیوال و نرم افزار اسکیوال سرور می باشد.
برای طراحی وب سایت داینامیک دو مبحث آموزش asp.net و آموزش SQL نیاز است. با آموزش SQL میتوانید غیر از طراحی وب سایت در زمینه های دیگر که با داده سر و کار دارید نیز از آن استفاده نمایید.
حتما بخوانید: دستور Create Table
آموزش اسکیوال در صورتی که پیش زمینه ی نرم افزار هایی مانند اکسس را داشته باشید ، بسیار ساده است. دستورات زبان 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 در اس کیو ال
- زبان دستکاری داده ها ((DML (Data Manipulation Language)
- زبان تعریف داده ها ((DDL (Data Definition Language)
دستورات DML شامل بخشهای زیر میشوند
- SELECT : واکشی اطلاعات از دیتابیس
- UPDATE : ویرایش اطلاعات دیتابیس
- DELETE : پاک کردن اطلاعات از دیتابیس
- INSERT INTO : اضافه کردن اطلاعات جدید به دیتابیس
دستورات DDL شامل بخشهای زیر میشوند
- CREATE DATABASE ایجاد یک دیتابیس جدید
- ALTER DATABASE ایجاد تغییرات در دیتابیس
- CREATE TABLE ایجاد یک table جدید
- ALTER TABLE اعمال تغییرات در table
- DROP TABLE پاک کردن یک table
- CREATE INDEX ایجاد یک شاخصه
- 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 یا تهی اینست که این مقدار با مقدار رشته ای space یا ‘ ‘ تفاوت کامل دارد. همچنین null را نباید با مقدار رشته ای آن یعنی ‘null’ اشتباه بگیریم.
با دریافت « مشاوره برنامهنویسی، وب و سئو » از کارشناسان جوان حرفهای و باتجربه ساکوراد؛ موفقیت کسب و کار، رونق فروش و افزایش درآمد خود را تضمین کنید!