جهت مطالعه آموزش با ادامه مطلب مراجعه فرمائید.
جدول ( table ) در پایگاه داده ها چیست ؟
داده ها در دیتابیس یا پایگاه داده داخل جدول یا table ها ذخیره میشوند. هر database میتواند شامل چندین table باشد.
هر جدول از تعدادی سطر و ستون تشکیل شده است.برای تمام ستون ها در دیتابیس بسته به نوع کارکرد آن میتوانید نوع مورد نظر خود را تعریف کنید ، مقدارهایی که درون هر فیلد ذخیره میشود بایستی با نوع انتخابی فیلد مطابقت داشته باشد.
جدول یک مجموعه ای است از اطلاعات ثبت شده مرتبط و وابسته به هم که از ستون ها و ردیف ها تشکیل شده است. جداول مهمترین عناصر سیستم های پایگاه داده هستند ، که برای ذخیره و نگهداری سازمان یافته اطلاعات مورد استفاده قرار می گیرند .
جدول بخشی از پایگاه داده است. یک پایگاه داده از جداول مختلف تشکیل شده است.
مثال : برای ذخیرهسازی انواع مختلف داده ها شما نیازمند ایجاد جداول جداگانهای هستید.
برای مثال، اگر شما یک نرم افزار مدیریت مدرسه دارید، ممکن است نیاز به ایجاد جداول زیر باشد:
دانش آموزان – برای ذخیره لیستی از تمام اعضای دانش آموزان
معلمان – ذخیره لیستی از تمام معلمان
حضور و غیاب – برای پیگیری حضور همه دانش آموزان
MarkList – برای ذخیره لیست علامت همه دانش آموزا
Field چیست؟
به هر یک از خانه های ستون یک جدول فیلد ( Field ) می گویند . هر فیلد یکی از خصوصیات آن موجودیت را به همراه مقدار آن مشخص می کند .
هر فیلد در بر گیرنده یک صفت و ویژگی برای موجودیت می باشد ، که دارای ۲ جزء اصلی است :۱٫اسم صفت خاصه : نام صفت مورد نظر را تعیین می کند . برای مثال فیلد نام ، نام خانوادگی ، و …در جدول اطلاعات مربوط به شخص.
۲٫مقدار صفت خاصه :در برگیرنده مقدار برای صفت مورد نظر است .
برای مثال مقدار ” سعید ” به عنوان مقدار برای فیلد نام .یک فیلد نشانه یک ستون در جدول است. یک رکورد مجموعه ای از فیلدها است. تمام رکوردها در همان جدول همان فیلدها راخواهند داشت.
مثال درباره فیلد ها :
اگر شما یک جدول با نام “Students” داشته باشید، ممکن است زمینه های زیر مورد نیاز باشند:
Name – برای ذخیره نام و نام خانوادگی دانش آموز
Address – برای ذخیره آدرس
DateofBirth – برای ذخیره تاریخ تولد دانش آموز
RegistrationDate – برای ذخیره تاریخ ثبت نام دانش آموز
و …
اگر شما فیلدی را به جدول اضافه کنید، این فیلد به تمام رکوردهای موجود آن جدول اضافه خواهد شد. در مثال فوق، تمامی رکوردهای جدول در “Students” همان ۴ فیلد را خواهند داشت.
رکورد در پایگاه داده چیست ؟
به سطرهای یک جدول رکورد ( Record ) گفته میشود. هر رکورد مجموعه ای از اطلاعات طبقه بندی شده درباره یک موجودیت خاص است .
موجودیتموجودیت پدیده ، شی یا فردی در محیط پایگاه داده است که می خواهیم اطلاعات مربوط به آن را نگهداری کنیم .
مثال : به طور مثال در محیط پایگاه داده یک محیط آموزشی،
انواع موجودیت ها عبارتند از : دانشجو ، کلاس ، واحدهای درسی ، استاد ، دانشکده و … .
یک رکورد نشان دهنده یک ورودی در جدول است. یک جدول می تواند هر تعداد رکورد داشته باشد.
مثال از رکورد در پایگاه داده : اگر شما جدول “Students” برای ذخیره اطلاعات دانش آموزان داشته باشید،
در این جدول یک رکورد نشان دهنده یک دانش آموز خواهد بود.
برای اضافه کردن دانش آموز به برنامه، باید یک رکورد به جدول “Students” اضافه کنید.
برای پاک کردن یا ویرایش اطلاعات دانش آموز هم باید شما یک رکورد را از این جدول حذف کنید.
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)
منشا اصلی سیکوال به مقالهٔ سال ۱۹۷۰ ادگار کاد تحت عنوان «مدل رابطهای دادهها برای بانکهای بزرگ دادههای اشتراکی»[۱] باز میگردد.
در دههٔ ۷۰ گروهی از شرکت آیبیام در شهر سان خوزه بر روی سیستم پایگاه دادههای سیستم آر بدون توجه به این مقاله کار میکردند و زبان SEQUEL را به منظور عملیات و بازیابی اطلاعات ذخیره شده در سیستم آر ایجاد کردند.
اگر چه اسکیوال ناشی از تلاشهای کاد بود اما دونالد چامبرلین و ریموند بویس به عنوان طراحان زبان SEQUEL شناخته میشوند.سمینارهایی در زمینه فناوری بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطهای جدید برگزار گردید.
تا ۱۹۷۶ مشخص بود که آیبیام که طرفدار جدی فناوری بانک اطلاعاتی رابطهای بوده، توجه زیادی نسبت به زبان سیکوال دارد. تبلیغات در زمینه سیستم آر باعث جذب گروهی از مهندسین در منلو پارک در کالیفرنیا گردید. این گروه به این نتیجه رسیدند که تحقیقات آیبیام منجر به یک بازار تجاری برای بانکهای اطلاعاتی رابطهای خواهد گردید.
در ۱۹۷۷ این گروه شرکتی بنام اینک (Inc) و رلیشنال سافتویر (Relational Software) تأسیس نمودند تا یک سامانه مدیریت پایگاههای داده رابطهای بر اساس سیکوال بسازند. محصولی بنام اوراکل در ۱۹۷۹ عرضه گردید، و اولین سامانه مدیریت پایگاه داده رابطهای بوجود آمد. به این ترتیب محصول اوراکل باعث گردید اولین محصول آیبیام برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای وکس دیجیتال (VAx Digital) اجرا میشد که خیلی از کامپیوترهای بزرگ آیبیام ارزانتر بودند.امروزه این شرکت با نام اوراکل اولین فروشنده سیستمهای مدیریت بانک اطلاعاتی رابطهای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانکهای اطلاعاتی رابطهای بودن (مانند تیم تحقیق آیبیام)، گروه فوق نیز یک نمونه از سامانه مدیریت پایگاه داده رابطهای ایجاد نمودند و سیستم خود را اینگرس (Ingres) نام نهادند.پروژه اینگرس شامل یک زبان پرسوجو بنام QUEL بود، اگر چه از سیکوال خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.در حالیکه اوراکل و اینگرسبرای ارائه محصولات تجاری در رقابت بودند، پروژه سیستم آر شرکت آیبیام در تلاش بودهاست که یک محصو ل تجاری با نام SQL/Data system (یا SQL/DS) عرضه نماید.
آیبیام موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ آیبیام یک نسخه SQL/DS را برای VM/CMS (سیستمعاملی که در کامپیوتر بزرگ آیبیام غالبا استفاده شده بود)، اعلام نمود.همچنین در سال ۱۹۸۳ شرکت آیبیام، محصول دیبیتو را معرفی نمود که یک سامانه مدیریت پایگاه داده رابطهای برای سیستمهای بزرگ آن شرکت بود. دیبیتو تحت سیستمعامل ویاماس (سیستمعامل مراکز کامپیوتری بزرگ) اجرا میشد.
اولین نسخه دیبیتو در ۱۹۸۵ عرضه گردید، و مسئولین آیبیام اعلام نمودند که این محصول یک برنامه استراتژیک برای تکنولوژی نرمافزاری آیبیام میباشد. از آن تاریخ تاکنون دیبیتو سامانه مدیریت پایگاه داده رابطهای شاخصی بوده و آیبیام از آن حمایت نموده و زبان «سیکوال دیبیتو» استاندارد عملی زبان بانک اطلاعاتی بودهاست.
با SQL چه کار هایی میتوان انجام داد ؟
- SQL این توانایی را دارد که یک کوئری (Query) را اجرا کند.
- SQL میتواند داده ها را از دیتابیس بازیابی کند.
- SQL میتواند رکوردهایی را به دیتابیس اضافه (Insert) کند.
- SQL میتواند رکوردها را از دیتابیس واکشی و ویرایش (Update) کند.
- SQL میتواندرکوردها را از دیتابیس واکشی و حذف (Delete) کند.
- SQL میتواند یک پایگاه داده جدید (New Database) ایجاد کند.
- SQL میتواند یک جدول به دیتابیس (New Table) اضافه کند.
- SQL میتواند stored procedure در دیتابیس ایجاد کند.
- SQL میتواند view در دیتابیس ایجاد کند.
- SQL میتواند به table ، procedure و view ها دسترسی تعریف کند.
استفاده از SQL در طراحی سایت
برای ایجاد یک وب سایت داینامیک که داده ها و اطلاعات را از یک پایگاه داده بخواند شما بایستی بایستی مراحل زیر را پیگیری کنید.
- استفاده از یک برنامه سیستم مدیریت پایگاه داده رابطه ای (RDBMS) مانند Access ، SQL Server ، My SQL
- یک زبان برنامه نویسی تحت سرور مانند PHP یا ASP
- استفاده از پایگاه داده SQL
- استفاده از HTML و CSS
داده ها در RDBMS در قسمت Table ذخیره میشوند.جدول ها مجموعه از اطلاعات مربوط به برنامه میباشند ، هر جدول شامل سطر ها و ستون ها میباشد.استفاده از SQL در طراحی سایت به شما کمک میکند تا یک وب سایت داینامیک و پویا ایجاد کنید.
دستورات DML و DDL در اس کیو ال
SQL به دو قسمت تقسیم میشود :
- زبان دستکاری داده ها 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 | . |
دستور SELECT در sql
دستور SELECT در اسکیوال برای انتخاب و استخراج اطلاعات مورد نظر از یک یا چند جدول و سپس مشاهده نتایج در یک جدول موقت استفاده می شود :
SELECT column_name(s) FROM table_name |
SELECT در اینجا به مفهوم فعل است و مشخص میکند که میخواهیم اطلاعاتی را بخوانیم .
- SELECT فهرست ستونها مشخص میکند که قصد خواندن کدام ستونها را از بانک داریم در صورتی که در این فهرست * قرار دهیم کلیه ستونهای جدول نمایش داده میشود .
- با استفاده از کلمه FROM مشخص میکنیم که از کدام جدول یا جداول این ستونها باید انتخاب شوند .
دستور SELECT *
دستور SELECT * همه اطلاعات موجود در جدول را انتخاب میکند.برای انتخاب کلیه ستون های جدول در قسمت نام ستون باید علامت * را گذاشت استفاده کرد .
SELECT * FROM table_name |
نکته مهم : برخی از برنامه نویسان بجای نوشتن تمام ستونهایی که در تهیه گزارش به آنها احتیاج دارند از * استفاده میکنند که این کار باعث بالا رفتن بار شبکه شده و کارایی سیستم را پایین می آورد لذا بهتر است بجای استفاده از * کمی بخود زحمت دهید و لیست تمامی ستونها را بطور کامل قید کنید .