+ ارسال موضوع جدید
نمایش نتایج: از شماره 1 تا 8 , از مجموع 8

موضوع: آموزش SQL Server 2005 قدم به قدم

  1. #1
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض آموزش SQL Server 2005 قدم به قدم

    !

    آموزش SQL Server 2005 قدم به قدم! دوستان مي‌خوام در اين تاپيك در مورد SQL Server 2005 صحبت بكنم. هرچند خودم تجربه‌‌ي آنچناني ندارم. ولي ميخوام هر چي هست رو به قول معروف Share كنم! و البته به كمك شما دوستان نيز نياز مبرم دارم.

    در ضمن اين تاپيك، پرسش و پاسخ در مورد SQL Server نيست. پس لطفاً در اين تاپيك سئوالي ارسال نكنيد. چون توالي پست‌هاي آموزشي رو به هم خواهد ريخت و باعث سردرگمي كاربران خواهد شد.

    سرفصل‌هايي كه مورد نظرم هست به صورت زير هستش:

    - مقدمه‌اي بر SQL Server 2005
    - ديتابيس (Database)
    - جدول (Tables)
    - فهرست (Index)
    - دستور SELECT
    - توابع تجميعي (Aggregate Functions)
    - دستورات دستكاري جداول (Tables Manipulate Commands)
    - توابع از پيش ساخته شده (Built In Functions)
    - متغير‌ها و دستورات شرطي T-SQL
    - توابع (Functions)
    - ماژول‌ها (Procedures)
    - دستور Trigger
    - دستور Transaction
    - قفل كردن ركوردها (Locking)
    - كنترل خطا (Error Handling)
    - دستور Cursor

  2. #2
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    خب! اميدوارم بدونيدSQL Server چيه! كلاً دو جور ديتابيس داريم. ديتابيس‌هاي Desktop و ديتابيس‌هاي Client/Server.

    ديتابيس‌هاي معروف Desktop عبارتند از:
    Access – dBase
    ديتابيس‌هاي Client/Server معروف هم عبارتند از:
    DB2 – Oracle - MS SQLServerMySQL

    مهمترين ويژگي ديتابيس‌هاي Client/Server اين هستش كه كاربر بطور مستقيم به ديتابيس دسترسي نداره. يعني بايد از طريق يك سرويس واسط دستور خودش رو براي اجرا به سيستم بده. در حالي كه در ديتابيس‌هاي Desktop اينگونه نيست و همين خصوصيت باعث ميشه كه ديتابيس‌هاي Client/Server نسبت به ديتابيس‌هاي Desktop امنيت بالاتري داشته باشند.

    براي اينكه بفهميم SQL Server 2005 روي يك كامپيوتر نصب شده يا نه، اكثراً دنبال برنامه Management Studio مي‌گرديد. در حالي كه وجود برنامه Management Studio نه شرط لازم و نه شرط كافي براي وجود سرويس SQL Server 2005 روي يك سيستم مي‌باشد. روش درست براي اطمينان از وجود SQL Server 2005 در يك سيستم، چك كردن مسير زير است:

    Control Panel>Administrative Tools>Services>SQL Server (MSSQLServer)



    يعني سرويسي به نام (SQL Server (MSSQLServer بايد در ليست سرويس‌هاي ويندوز موجود باشد.

    مواردي در خصوص نصب SQL Server 2005

    اگر بخواهيد SQL Server 2005 را روي كامپيوتر شخصي خودتون نصب كنيد، توجه داشته باشيد كه اگر ويندوزتون XP هست نمي‌تونيد نسخه Enterprise رو روي سيستمتون نصب كنيد و بايد از نسخه‌هاي Standard و يا Developer استفاده كنيد. ضمناً ويندوز XP شما حتماً بايد SP2 به بالا باشد.
    ولي اگر بخواهيد SQL Server 2005 رو براي شركت و يا سازماني نصب كنيد، بايد نسخه Enterprise رو روي Windows Server 2003 با SP1 به بالا نصب شود.
    فراموش نكنيد كه قبل از نصب SQL Server 2005 حتماً DotNet Framework 2.0 (و بالاتر) روي سيستمون نصب شده باشه. براي ديدن Minimum Requirement‌ها و Windows Compatibility ورژن‌هاي مختلف SQL Server 2005 ميتونيد [برای دیدن لینک ها ابتدا باید عضو انجمن شوید. برای ثبت نام اینجا کلیک کنید...]رو ببيند.

    كلاً در يك كامپيوتر مي‌توان تعدد 64 سرويس SQL Server 2005 نصب كرد. ولي حداكثر 4 عدد instance را ميتوان نامگذاري و تعريف نمود.

    در هنگام نصب SQL Server 2005 به يكسري اصطلاحات برميخوريد كه شايد بعضي از اونها رو ندونيد. من به اختصار اونها رو توضيح ميدم:

    Reporting Service
    اگر در زمان نصب SQL Server 2005 اين گزينه فعال شود، بخش گزارشگيري خودكار روي سيستم شما نصب خواهد شد. اين سرويس امكاناتي را براي ايجاد گزارش از بانك هاي اطلاعاتي مختلف در اختيارتان قرار مي دهد. گزارشهاي ايجاد شده توسط اين سرويس Web-enabled هستند و قابليت پخش روي انواع دستگاهها را دارند . شما مي توانيد اين گزارشات را با فرمتهاي مختلف Excel و Word و PDF و Html و ... ايجاد كنيد .

    Analysis Service
    قابليت پردازش هاي تجزيه و تحليلي آنلاين (OLAP) با سرعت بالا، تجزيه وتحليل پيشرفته براي مجموعه ديتابيس هاي پيچيده و بزرگ با استفاده از راههای متعدد ذخيره سازي اطلاعات. در حقيقت اگر بخواهيم روي ديتابيس‌هاي خيلي بزرگ گزارشگيري كنيم، پروسه ساخت گزارش خيلي كند است. براي اين منظور يك مخزن اطلاعات جنبي در نظر گرفته مي‌شود و گزارشات از روي آن تهيه مي‌شود. نتيجه گزارش بر روي يك فضاي جداگانه قرار مي‌گيرد و چنانچه اطلاعات تغيير كند، تغييرات ايجاد شده بصورت اتوماتيك بر روي گزارشات اعمال مي‌شود.
    فرض كنيم كه پليس 110 يك نرم افزار در اختيار دارد كه توسط آن آمار جرائم را نگهداري مي كند. در اين آمار، پليس اطلاعات مربوط به مكان و زمان وقوع جرم و نوع جرم مثلا دزدي را نگهداري مي كند. پس از مدتي پليس مي تواند اطلاعات مربوط به دزدي در يك مكان خاص را بررسي كند. مثلا پليس در بررسي و تحليل اطلاعات خود پي مي برد كه در فلان محله خاص بين ساعت 8 الي 10 صبح هيچ مورد دزدي گزارش نشده است بنابراين مي تواند نيروهاي خود را در آن زمان خاص در آن محله خاص كاهش داده و در جاي ديگري كه امكان وقوع دزدي بيشتر است استفاده كند.

    Notification Service
    اين سرويس محيطي براي ايجاد برنامه هايي است كه پيامهايي را ايجاد و ارسال ميكنند. از اين سرويس مي توانيد براي ايجاد و ارسال پيامهاي شخصي و زمانبندي شده به هزاران يا ميليونها شخص يا دستگاههاي گوناگون استفاده نماييد.
    مثلاً تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن‌جایی که ممکن است قیمت سهام هر شرکت یا مؤسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار باشد، می‌توان این سیستم را طوری تنظیم کرد تا هرگاه ارزش سهام خاصی که مورد نظر هر کاربر است تغییر کرد، به صورت اتوماتیک به وی اعلام شود. کاربر هم می‌تواند این تغییرات را برروی برنامه کاربردی خود، تلفن همراه (در قالب Windows Messenger ،(SMS و یا ایمیل به‌صورت مرتب دریافت و مشاهده کند.

    Integration Services
    اين سرويسها يك پلت فرم هستند كه راه حل هايي براي ايجاد يكپارچگي اطلاعات با سرعت بالا ارائه مي كنند و شامل بسته هاي نرم افزاري پردازش extract, transform, and load براي data warehousing است.

    SQL Server Agent
    به بيان ساده، اين سرويس مسئول دفتر SQL SERVER است. مثلاً در صورت تعريف توسط ادمين، هر شب ساعت 10 از اطلاعات كپي پشتيبان مي‌گيرد.

    Authentication Mode
    چنانچه گزينه‌ي Windows Authentication Mode انتخاب گردد، دسترسي كاربران و كلمه عبور آنان به
    SQL Server بر اساس وجود و درستي آن‌ها در ويندوز انجام مي‌گيرد. ولي اگر Mixed Mode انتخاب شود بايد براي دسترسي به SQL Server مجدداً نام كاربري و سطح دسترسي تعريف كرد.

    Collation
    شمايي در SQL Server كه نحوه Sort حروف الفباي يك زبان خاص و همچنين نحوه Compare كردن حروف الفباي آن زبان را در بر مي‌گيرد.
    تنظیمات collation به صورت پیش فرض از تنظیمات سیستم عامل گرفته می شود. ودر صورتی که سیستم عامل شما در بخش Regional settings دارای تنظیمات لازم فارسی باشد، نیاز به تغییر در این بخش ندارید.

  3. #3
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    قبل از ادامه مبحث، به يه نكته كوچيك كه يادم رفت در پست قبليم بگم، اشاره كنم. تلفظ صحيح SQL ، بصورت سيكوئل است. اين تلفظ چيزي است كه من در فيلم‌هاي آموزشي به لهجه آمريكايي شنيدم. حالا مطلب قبلي رو ادامه ميدم.

    پس از نصب SQL Server 2005 حالا ميخواهيم به سرور وصل بشيم و تغييراتي را اعمال كنيم. براي اين كار از نرم‌افزاري به نام SQL Server Management Studio (كه در صورت انتخاب، همراه با سرويس SQL Server 2005 نصب مي‌شود) استفاده مي‌كنيم. همونطور كه قبلاً هم گفتم، وجود اين برنامه در كامپيوتر دليلي بر وجود سرويس SQL Server روي آن كامپيوتر نيست. چون مي‌توان اين برنامه را بدون نصب سرويس SQL Server 2005 نصب نمود و همچنين مي‌توان سرويس SQL Server 2005 را بدون نصب اين برنامه، نصب نمود.
    دسترسي به اين برنامه، از مسير زير امكان‌پذير است:
    Start>All Programs>Microsoft SQL Server 2005>SQL Server Management Studio

    و يا اينكه در Command Prompt تايپ كنيد sqlwb

    كه پس از اجرا، پنجره‌اي شبيه عكس زير را خواهيد ديد.


    براي وصل شدن به يك سرور بايد نام آن سرور را بدانيد. نام سرور مي‌تواند به اشكال مختلف به شرح زير باشد:

    OrionComputer : كه در حقيقت نام كامپيوتر مي‌باشد.

    OrionComputer\InstanceName: همانطور كه قبلاً گفتم، مي‌توان در يك كامپيوتر، چند Instance از SQL Server داشت. InstanceName نام آن Instance در كامپيوتر OrionComputer ميباشد.

    172.150.12.54 : كه همان IP سرور مي‌باشد.

    172.150.12.54\InstanceName : دقيقاً همانند مورد دوم است. فقط در اينجا به جاي نام كامپيوتر، IP آن را ذكر مي‌كنيم.

    (Local) : براي دسترسي به كامپيوتر Local به كار مي‌رود كه البته مي‌توان به جاي (Local) از نقطه نيز استفاده كرد (مانند شكل فوق)

    (Local)\InstanceName : دقيقاً مانند مواردي كه در بالا ذكر شد.

    AAA : ميشه براي هر سرويس SQL Server به اصطلاح يك Alias تعريف كرد. و من در اين مثال فرض كردم Alias سرور من، AAA هست!


    پس از وارد كردن نام سرور، بايد تكليف قسمت Authentication را روشن كرد. اگر در هنگام نصب SQL Server نحوه Authentication Mode رو روي Windows Authentication گذاشته باشيد و به خودتون هم دسترسي داده باشيد، در اينجا هم Windows Authentication رو وارد كنيد و چون شناسايي شما توسط ويندوز انجام ميشه، در اينجا لازم به وارد كردن يوزرنيم و پسورد نيست. اما اگر حالت Mixed Mode رو انتخاب كرده باشيد، بايد نام كاربري و كلمه عبور را وارد كنيد. توجه داشته باشيد كه Authentication Mode رو بعد از نصب سرويس SQL Server هم ميشه بصورت دستي تغيير داد.

    حالا اگر همه چيز درست باشد، شما با كليك بر روي دكمه Connect به سرور وصل ميشيد و بسته به نوع دسترسي، مي‌توانيد اطلاعات را مشاهده كرده و يا تغييراتي اعمال كنيد.

    پس از ورود به سرور از قسمت Object Browser مي‌توانيد به ديتابيس‌هاي موجود دسترسي پيدا كنيد. (شكل زير). البته موارد ديگري مانند Security,Server Objects,Replication و ... وجود دارند كه ما در اينجا به آن‌ها اشاره نمي‌كنيم.


    در شكل بالا، چهار Database وجود دارد: AdventureWorks و AdventureWorksDW و Northwind و Pubs. كه دو مورد اول از نمونه ديتابيس‌هاي ورژن 2005 هستند و دو مورد دوم يعني Northwind و Pubs از نمونه ديتابيس‌هاي ورژن 2000 هستند. ما در آينده و براي يادگيري، احتياج زيادي به ديتابيس Pubs داريم.

    براي ساخت يك Database جديد، روي عبارت Databases كليك راست كنيد و بر روي New Database… كليك كنيد. (شكل زير)




    سپس صفحه‌اي مانند شكل زير باز مي‌شود كه بايد خصوصيات ديتابيس را در آن ذكر كنيد. براي ساخت يك ديتابيس ساده تنها نياز به ذكر نام آن ديتابيس است.



    سپس بايد نوع فهرست‌گذاري براي كلمات متن تعيين گردد. اگر عنوان Use Full Text Indexing فعال گردد، براي تمام كلمات ايندكس ساخته خواهد شد و در زمان جستجوي كلمات، به سرعت متني كه داراي آن كلمه باشد، پيدا شده و ارائه مي‌گردد. بديهي است بايد در اين حالت برخي دستورات، متناسب با اين حالت تغيير يابد. مثلاً اگر در حالت عادي دستور جستجوي كلمه "Test" بدين شرح باشد:

    SELECT * FROM authors WHERE address LIKE '%Test%'

    در حالت فعال بودن Full Text Indexing، بايد دستور فوق بصورت زير نوشته شود:

    SELECT * FROM authors WHERE CONTAINS(address,'*Test*')

    هر ديتابيس حداقل داراي دو نوع فايل به نام‌هاي زير مي‌باشد:
    - Master Data File يا همان فايل mdf كه در حقيقت فايل اطلاعات اصلي ديتابيس است.
    - Log Data File يا همان فايل ldf كه در حقيقت فايل History دستورات است.

    در زمان تعريف هر يك از فايل‌ها مي‌توان از طريق Initial Size مقدار اوليه حجم فايل را تخمين زد. معمولاً مي‌گويند سايز اوليه Logfile برابر 35 درصد فايل mdf باشد كه البته با توجه به نوع ديتابيس ميتواند متفاوت باشد.
    در قسمت AutoGrowth مي‌توان مقدار افزايش حجم فايل را پس از رسيدن به حداكثر حجم تعريف شده، تعيين كرد. ضمناً در همين قسمت مي‌توان حداكثر حجم مجاز فايل را تعيين كرده و يا اينكه حداكثر حجم مجاز را نامحدود تعريف نمود.

    پس از آن مي‌توان محل ذخيره كردن فايل را در قسمت Path تعيين كرد.

    براي انجام هر كاري در SQL Server يك دستور به نام T-SQL صادر و اجرا مي‌شود. مثلاً در زمان ايجاد ديتابيس جديد كه از طريق منوي New Database انجام مي‌شود، يك سري دستور TSQL اتوماتيك ايجاد شده و براي سرور ارسال مي‌گردد. براي ديدن و يا احتمالاً اصلاح اين دستورات، ميتوانيد روي دكمه Script كه در بالاي اكثر پنجره‌هاي SQL Server 2005 وجود دارد كليك كنيد. (شكل زير)



    SQL Server در هر لحظه فقط قادر به اجراي يك دستور است. پس از اجراي دستور، History آن دستور در LogFile ذخيره مي‌شود. اين فايل داراي كاربردهاي زيادي است كه مختصراً به چند مورد اشاره مي‌شود:
    فرض كنيد در پايان هر روز از اطلاعات Backupگيري مي‌شود. ولي در وسط روز هارد ديسك با مشكل مواجه مي‌شود. اگر فايلهاي Master و Log روي دو هاردديسك جداگانه نگهداري شده باشند، ميتوان ابتدا فايل اصلي را از Backup شب گذشته بازخواني كرد و سپس با كمك دستورات موجود در LogFile از زمان Backup تا كنون، نسبت به بازسازي فايل اصلي اقدام كرد.
    يكي ديگر از كاربردهاي LogFile در Replication است. مثلاً فرض كنيد بنا به دليلي لازم است دو نسخه از فايل اصلي بر روي دو سرور جداگانه در شهرهاي مختلف نگهداري شود. به روز رساني همزمان و Online فايلهاي اصلي دو سرور نياز به پهناي باند وسيعي دارد. در حالي كه ميتوان در پايان روز، تنها دستورات اجرا شده روزانه، از روي LogFile براي سرور مقابل ارسال شده و در آنجا دستورات اجرا شده و فايل اصلي بروزرساني شود. از اين روش مي‌توان براي ساخت فايل Mirror در دو مكان مختلف استفاده كرد.
    بنابراين توصيه ميشه محل نگهداري فايلهاي mdf و ldf جداگانه و بر روي دو هارد ديسك جدا باشد، مگر اينكه از تكنيك Raid براي نگهداري اطلاعات استفاده شود كه توضيح آنها در سواد بنده نمي‌گنجد!

    در قسمت صفحه New Database منويي به نام Option وجود دارد (شكل زير) كه بعضي از آنها را به اختصار توضيح ميدم.



    Recovery Model
    اگر حالت Simple انتخاب شود فايل Log بصورت مينيموم ثبت خواهد شد و اكثر دستورات Log نخواهند شد. در اين حالت سرعت عمليات افزايش يافته ولي در صورت خرابي اطلاعات، امكان بازيابي وجود ندارد. اگر Buck-Logged انتخاب گردد، در اين حالت از تمامي دستورات Log گرفته خواهد شد. اما در دستورات Bulk بصورت مينيموم Log گرفته مي‌شود. در صورت انتخاب Full، از تمام دستورات حتي Bulkها بصورت كامل Log مي‌گيرد.

    Compatibility Level
    خود SQL Server 2005 بصورت اتوماتيك فايلهاي SQL Server 2000 را به 2005 تبديل مي‌كند. ولي تمام امكانات SQL Server 2005 بر روي فايلهاي تبديل شده قابل استفاده نمي‌باشد. مگر اينكه در اين قسمت، حالت SQL Server 2005(90) انتخاب گردد.

    بقيه‌ي موارد را مي‌توانيد با زدن دكمه HELP در MSDN مطالعه كنيد.

  4. #4
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    Tableها و DataTypeها جدول (Table)

    براي ساخت يك جدول بايد ابتدا Database مربوطه انتخاب شده و سپس بر روي قسمت Table كليك راست كرده و گزينه New Table انتخاب شود. (شكل زير)




    سپس در سمت راست صفحه پنجره ساخت Table ظاهر مي‌شود. (شكل زير) كه من در آن سه فيلد با Datatypeهاي مختلف ساختم.





    براي ساخت جدول بايد ابتدا فيلدها يا همان ستون‌هاي جدول تعريف شود. فيلد‌هاي داراي DataTypeهاي مختلفي هستند كه به اختصار اونها رو توضيح ميدم:

    Binary Data
    اين نوع فيلد‌ها براي نگهداري اطلاعات بصورت بايناري مانند تصاوير مناسب هستند و شامل چهار نوع به شرح زير مي‌باشد:

    Binary
    اين نوع فيلد‌ها، از 1 تا 8000 بايت را در خود جاي مي‌دهند.

    Var Binary
    اين نوع فيلد‌ها هم از 1 تا 8000 بايت را در خود جاي مي‌دهند. (متغير)

    Image
    اين نوع فيلد‌ها از 1 تا حداكثر 2 گيگابايت را مي‌توانند ذخيره كنند. فرق اين نوع داده‌ها با دو نوع قبلي اين است كه در دو نوع قبلي، اطلاعات در خود ركورد ثبت مي‌شوند ولي در اين نوع داده‌ها، اطلاعات در يك Page ذخيره مي‌شود و به جايش در ركورد، يك پوينتر 16 بايتي ذخيره مي‌شود. اين نوع فيلد‌ها در SQL 10 حذف شده و به جايش بايد از VarBinary استفاده كرد.

    VarBinary(Max)
    اين نوع Datatype در SQL 2005 معرفي شده و تقريباً همانند داده‌هاي Image هستند.

    Character Data
    اين نوع فيلد براي نگهداري عبارات و يا حروف ASCII مي‌باشد. در اين نوع فيلد‌ها، براي نگهداري هر حرف، يك بايت اشغال مي‌شود و لذا نياز به Collation براي تعيين زبان اطلاعات مي‌باشد. اين نوع فيلد‌ها هم چهار نوع هستند:

    Char
    اين نوع فيلد‌ها، اطلاعات متني با طول ثابت از 1 تا حداكثر 8000 حرف را در خود ذخيره مي‌كنند.

    VarChar
    اين نوع فيلد‌ها اطلاعات متني با طول متغير از 1 تا حداكثر 8000 حرف را در خود ذخيره مي‌كنند. فرق بين Char و VarChar در اين است كه در Char، طول رشته ثابت است. يعني اگر يك فيلد را از نوعChar(20) معرفي كرده و در آن كلمه Orion را قرار دهيم، عين 20 حرف استفاده خواهد شد. يعني 5 كاراكتر اول را كلمه مربوطه اشغال كرده و 15 كاراكتر باقي‌مانده، Blank خواهند بود. اما در VarChar اينگونه نيست.

    Text
    در اين نوع داده‌ها، اطلاعات از 1 تا 2 مگا حرف ذخيره مي‌شود. اين نوع داده همانند Image و VarBinary(MAX)در خود ركورد ذخيره نمي‌شوند. بلكه توسط يك پوينتر به جاي ديگري اشاره مي‌كنند. اين نوع داده در SQL 10 حذف شده و بجاي آن‌ها ازVarChar(MAX) استفاده مي‌شود.

    VarChar(Max)
    در اين نوع داده‌ها، اطلاعات از 1 تا 2 مگا حرف ذخيره مي‌شود و مكانيزم آن هم بصورت پوينتري مي‌باشد.

    Unicode Data

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

    nChar
    در اين نوع داده، اطلاعات از 1 تا حداكثر 4000 حرف با طول ثابت ذخيره مي‌شود.

    nVarChar
    در اين نوع داده، اطلاعات از 1 تا حداكثر 4000 بايت با طول متغير ذخيره مي‌شود.

    nText
    در اين نوع داده، از 1 تا 1 مگا حرف ذخيره مي‌شود. مكانيزم آن هم بصورت Pointer مي‌باشد.

    nVarChar(MAX)
    در اين نوع داده از 1 تا 1 مگا حرف ذخيره مي‌شود. مكانيزم آن هم بصورت Pointer مي‌باشد.

    Integer Data
    اين نوع فيلد براي نگهداري اعداد صحيح و بدون اعشار استفاده مي‌گردد و داراي 4 نوع به شرح زير است. در ضمن اين نوع فيلد‌ها رتبه يك سرعت در نوع فيلد‌هاي عددي را دارد.

    TinyInt
    يك بايت را اشغال مي‌كند و مي‌تواند از 0 تا 255 را در خود ذخيره كند.

    SmallInt
    يك عدد دو بايتي است و مي‌تواند از 32767 منفي تا 32767 مثبت را در خود ذخيره كند.

    Int
    يك عدد چهار بايتي است كه مي‌تواند اعداد بين مثبت و منفي 2 ميليارد را در خود ذخيره كند.

    BigInt
    يك عدد 8 بايتي است كه مي‌تواند اعداد بين مثبت و منفي 4 ميليارد را در خود ذخيره كند.

    Money Data
    اين نوع فيلد براي نگهداري اعداد غير صحيح با تعداد ارقام اعشار ثابت 4 رقمي استفاده مي‌شود. اين نوع فيلد‌ها، داراي رتبه دوم سرعت در بين انواع داده‌ي عددي است.

    SmallMoney
    يك عدد 4 بايتي است كه مي‌تواند 6 رقم صحيح و 4 رقم اعشار را در خود ذخيره كند.

    Money
    يك عدد 8 بايتي است كه مي‌تواند 15 رقم صحيح و 4 رقم اعشار را در خود ذخيره كند.

    Approximate Data
    اين نوع فيلد‌ها براي نگهداري اعداد غير صحيح با تعداد ارقام اعشار متغير و يا تخمـينـي استفاده مي‌شود. اين نوع داده‌ها رتبه سوم سرعت در بين انواع داده‌هاي عددي دارند و استفاده از آنها به دليل كندي، توصيه نمي‌گردد. مگر در مواقع لزوم.

    Real
    يك عدد 4 بايتي است كه اعداد بصورت تواني از 10 نگهداري مي‌شوند. (تعداد اعشار مشخص نيست)

    Float
    يك عدد 8 بايتي كه اعداد بصورت تواني از 10 نگهداري مي‌شوند. (تعداد اعشار مشخص نيست)

    Decimal
    اين نوع فيلد براي نگهداري اعداد اعشاري با تعداد اعشار مشخص استفاده مي‌گردد. اين نوع فيلد‌ها بسيار كند بوده و استفاده از آنها توصيه نمي‌گردد. فرمت اينگونه داده‌ها به شكل زير است:


    Decimal (Precision,Scale)

    كه در آن Precision به معناي تعداد كل رقم‌هاي عدد و Scale تعداد ارقام اعشار را مشخص مي‌كند. مثلاً اگر فيلدري بصورتDeciaml(6,2) تعريف شود، حداكثر آن برابر 9999.99 مي‌باشد.

    Date/Time
    اين نوع فيلد‌ها براي نگهداري تاريخ ميلادي و ساعت استفاده مي‌شود و براي تاريخ شمسي كاربرد ندارد.

    SmallDateTime
    اين نوع فيلد، 4 بايتي است و از سال 1900 تا 2079 را با دقت هزارم ثانيه ذخيره مي‌كند.

    DateTime
    اين نوع فيلد، 8 بايتي است و از سال 1700 تا 9999 را با دقت هزارم ثانيه ذخيره مي‌كند.


    Other DataTypes

    برخي از انواع فيلد‌هاي خاص را در اين قسمت به اختصار توضيح ميدم:

    Bit
    يك فيلد دو بيتي است و مي‌تواند 0 و 1 و Null را ذخيره كند.كاربرد آن در زمان‌هايي است كه دو حالت وجود داشته باشد. مانند جنسيت زن و مرد.

    TimeStamp
    در اين فيلد 8 بايتي، تايم لحظه‌اي اجراي دستور نگهداري مي‌شود و كاربرد آن كنترل بروزرساني همزمان (Concurrency) اطلاعات توسط چند كاربر است. البته در تعداد ركوردهاي پايين به كار نمي‌آيد و بيشتر زماني مورد نياز است كه تعداد ركوردها خيلي زياد باشد مثلاً 100 ميليون ركورد!

    UniqueIdentifier
    اين فيلد 16 بايتي، به ما كدي Unique يا تك مي‌دهد كه به اصطلاح GUID مي‌گويند. يكي از كاربردهاي آن در Replication است.

    SQL_Variant
    اين نوع فيلد براي نگهداري انواع داده استفاده مي‌شود و نوع آن با توجه به اولين مقداري كه در آن قرار مي‌گيرد تعيين خواهد شد. چون نوع و حجم فيلد مشخص نيست، لذا تنها يك اشاره‌گر 16 بايتي در آن قرار گرفته و داده اصلي در فايل جداگانه نگهداري مي‌شود. استفاده از اين نوع فيلد، توصيه نمي‌گردد.

    Cursor
    اين فيلد مربوط به كنترل Cursor است كه در آينده توضيح ميدم.

    Table
    اين نوع فيلد را هم در زمان آموزش Functionها خواهيد آموخت

    XML
    اين فيلد بيشتر براي انتقال اطلاعات و دستورات تحت web استفاده مي‌شود و شامل انواع MetaDataهاي مختلف است. اين فيلد در SQL 2005 معرفي گرديد.


    خسته شدم! ادامه مبحث Tableها رو در جلسه بعد ياد مي‌گيريد!

  5. کاربر مقابل از این پست secret تشکر کرده است.


  6. #5
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    Tableها و DataTypeها جدول (Table)

    براي ساخت يك جدول بايد ابتدا Database مربوطه انتخاب شده و سپس بر روي قسمت Table كليك راست كرده و گزينه New Table انتخاب شود. (شكل زير)




    سپس در سمت راست صفحه پنجره ساخت Table ظاهر مي‌شود. (شكل زير) كه من در آن سه فيلد با Datatypeهاي مختلف ساختم.





    براي ساخت جدول بايد ابتدا فيلدها يا همان ستون‌هاي جدول تعريف شود. فيلد‌هاي داراي DataTypeهاي مختلفي هستند كه به اختصار اونها رو توضيح ميدم:

    Binary Data
    اين نوع فيلد‌ها براي نگهداري اطلاعات بصورت بايناري مانند تصاوير مناسب هستند و شامل چهار نوع به شرح زير مي‌باشد:

    Binary
    اين نوع فيلد‌ها، از 1 تا 8000 بايت را در خود جاي مي‌دهند.

    Var Binary
    اين نوع فيلد‌ها هم از 1 تا 8000 بايت را در خود جاي مي‌دهند. (متغير)

    Image
    اين نوع فيلد‌ها از 1 تا حداكثر 2 گيگابايت را مي‌توانند ذخيره كنند. فرق اين نوع داده‌ها با دو نوع قبلي اين است كه در دو نوع قبلي، اطلاعات در خود ركورد ثبت مي‌شوند ولي در اين نوع داده‌ها، اطلاعات در يك Page ذخيره مي‌شود و به جايش در ركورد، يك پوينتر 16 بايتي ذخيره مي‌شود. اين نوع فيلد‌ها در SQL 10 حذف شده و به جايش بايد از VarBinary استفاده كرد.

    VarBinary(Max)
    اين نوع Datatype در SQL 2005 معرفي شده و تقريباً همانند داده‌هاي Image هستند.

    Character Data
    اين نوع فيلد براي نگهداري عبارات و يا حروف ASCII مي‌باشد. در اين نوع فيلد‌ها، براي نگهداري هر حرف، يك بايت اشغال مي‌شود و لذا نياز به Collation براي تعيين زبان اطلاعات مي‌باشد. اين نوع فيلد‌ها هم چهار نوع هستند:

    Char
    اين نوع فيلد‌ها، اطلاعات متني با طول ثابت از 1 تا حداكثر 8000 حرف را در خود ذخيره مي‌كنند.

    VarChar
    اين نوع فيلد‌ها اطلاعات متني با طول متغير از 1 تا حداكثر 8000 حرف را در خود ذخيره مي‌كنند. فرق بين Char و VarChar در اين است كه در Char، طول رشته ثابت است. يعني اگر يك فيلد را از نوعChar(20) معرفي كرده و در آن كلمه Orion را قرار دهيم، عين 20 حرف استفاده خواهد شد. يعني 5 كاراكتر اول را كلمه مربوطه اشغال كرده و 15 كاراكتر باقي‌مانده، Blank خواهند بود. اما در VarChar اينگونه نيست.

    Text
    در اين نوع داده‌ها، اطلاعات از 1 تا 2 مگا حرف ذخيره مي‌شود. اين نوع داده همانند Image و VarBinary(MAX)در خود ركورد ذخيره نمي‌شوند. بلكه توسط يك پوينتر به جاي ديگري اشاره مي‌كنند. اين نوع داده در SQL 10 حذف شده و بجاي آن‌ها ازVarChar(MAX) استفاده مي‌شود.

    VarChar(Max)
    در اين نوع داده‌ها، اطلاعات از 1 تا 2 مگا حرف ذخيره مي‌شود و مكانيزم آن هم بصورت پوينتري مي‌باشد.

    Unicode Data

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

    nChar
    در اين نوع داده، اطلاعات از 1 تا حداكثر 4000 حرف با طول ثابت ذخيره مي‌شود.

    nVarChar
    در اين نوع داده، اطلاعات از 1 تا حداكثر 4000 بايت با طول متغير ذخيره مي‌شود.

    nText
    در اين نوع داده، از 1 تا 1 مگا حرف ذخيره مي‌شود. مكانيزم آن هم بصورت Pointer مي‌باشد.

    nVarChar(MAX)
    در اين نوع داده از 1 تا 1 مگا حرف ذخيره مي‌شود. مكانيزم آن هم بصورت Pointer مي‌باشد.

    Integer Data
    اين نوع فيلد براي نگهداري اعداد صحيح و بدون اعشار استفاده مي‌گردد و داراي 4 نوع به شرح زير است. در ضمن اين نوع فيلد‌ها رتبه يك سرعت در نوع فيلد‌هاي عددي را دارد.

    TinyInt
    يك بايت را اشغال مي‌كند و مي‌تواند از 0 تا 255 را در خود ذخيره كند.

    SmallInt
    يك عدد دو بايتي است و مي‌تواند از 32767 منفي تا 32767 مثبت را در خود ذخيره كند.

    Int
    يك عدد چهار بايتي است كه مي‌تواند اعداد بين مثبت و منفي 2 ميليارد را در خود ذخيره كند.

    BigInt
    يك عدد 8 بايتي است كه مي‌تواند اعداد بين مثبت و منفي 4 ميليارد را در خود ذخيره كند.

    Money Data
    اين نوع فيلد براي نگهداري اعداد غير صحيح با تعداد ارقام اعشار ثابت 4 رقمي استفاده مي‌شود. اين نوع فيلد‌ها، داراي رتبه دوم سرعت در بين انواع داده‌ي عددي است.

    SmallMoney
    يك عدد 4 بايتي است كه مي‌تواند 6 رقم صحيح و 4 رقم اعشار را در خود ذخيره كند.

    Money
    يك عدد 8 بايتي است كه مي‌تواند 15 رقم صحيح و 4 رقم اعشار را در خود ذخيره كند.

    Approximate Data
    اين نوع فيلد‌ها براي نگهداري اعداد غير صحيح با تعداد ارقام اعشار متغير و يا تخمـينـي استفاده مي‌شود. اين نوع داده‌ها رتبه سوم سرعت در بين انواع داده‌هاي عددي دارند و استفاده از آنها به دليل كندي، توصيه نمي‌گردد. مگر در مواقع لزوم.

    Real
    يك عدد 4 بايتي است كه اعداد بصورت تواني از 10 نگهداري مي‌شوند. (تعداد اعشار مشخص نيست)

    Float
    يك عدد 8 بايتي كه اعداد بصورت تواني از 10 نگهداري مي‌شوند. (تعداد اعشار مشخص نيست)

    Decimal
    اين نوع فيلد براي نگهداري اعداد اعشاري با تعداد اعشار مشخص استفاده مي‌گردد. اين نوع فيلد‌ها بسيار كند بوده و استفاده از آنها توصيه نمي‌گردد. فرمت اينگونه داده‌ها به شكل زير است:


    Decimal (Precision,Scale)

    كه در آن Precision به معناي تعداد كل رقم‌هاي عدد و Scale تعداد ارقام اعشار را مشخص مي‌كند. مثلاً اگر فيلدري بصورتDeciaml(6,2) تعريف شود، حداكثر آن برابر 9999.99 مي‌باشد.

    Date/Time
    اين نوع فيلد‌ها براي نگهداري تاريخ ميلادي و ساعت استفاده مي‌شود و براي تاريخ شمسي كاربرد ندارد.

    SmallDateTime
    اين نوع فيلد، 4 بايتي است و از سال 1900 تا 2079 را با دقت هزارم ثانيه ذخيره مي‌كند.

    DateTime
    اين نوع فيلد، 8 بايتي است و از سال 1700 تا 9999 را با دقت هزارم ثانيه ذخيره مي‌كند.


    Other DataTypes

    برخي از انواع فيلد‌هاي خاص را در اين قسمت به اختصار توضيح ميدم:

    Bit
    يك فيلد دو بيتي است و مي‌تواند 0 و 1 و Null را ذخيره كند.كاربرد آن در زمان‌هايي است كه دو حالت وجود داشته باشد. مانند جنسيت زن و مرد.

    TimeStamp
    در اين فيلد 8 بايتي، تايم لحظه‌اي اجراي دستور نگهداري مي‌شود و كاربرد آن كنترل بروزرساني همزمان (Concurrency) اطلاعات توسط چند كاربر است. البته در تعداد ركوردهاي پايين به كار نمي‌آيد و بيشتر زماني مورد نياز است كه تعداد ركوردها خيلي زياد باشد مثلاً 100 ميليون ركورد!

    UniqueIdentifier
    اين فيلد 16 بايتي، به ما كدي Unique يا تك مي‌دهد كه به اصطلاح GUID مي‌گويند. يكي از كاربردهاي آن در Replication است.

    SQL_Variant
    اين نوع فيلد براي نگهداري انواع داده استفاده مي‌شود و نوع آن با توجه به اولين مقداري كه در آن قرار مي‌گيرد تعيين خواهد شد. چون نوع و حجم فيلد مشخص نيست، لذا تنها يك اشاره‌گر 16 بايتي در آن قرار گرفته و داده اصلي در فايل جداگانه نگهداري مي‌شود. استفاده از اين نوع فيلد، توصيه نمي‌گردد.

    Cursor
    اين فيلد مربوط به كنترل Cursor است كه در آينده توضيح ميدم.

    Table
    اين نوع فيلد را هم در زمان آموزش Functionها خواهيد آموخت

    XML
    اين فيلد بيشتر براي انتقال اطلاعات و دستورات تحت web استفاده مي‌شود و شامل انواع MetaDataهاي مختلف است. اين فيلد در SQL 2005 معرفي گرديد.


    خسته شدم! ادامه مبحث Tableها رو در جلسه بعد ياد مي‌گيريد!

  7. #6
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    Join يا پيوند چيست؟!

    در بسياري از مواقع مجبور هستيم که اطلاعات خود را از بيش از يک جدول استخراج کنيم . در اين
    حالت ما ابتدا بايد جدول هايی که می خواهيم اطلاعات را از آنها استخراج کنيم ، با هم پيوند دهيم . هدف از ايجاد اين ارتباط، تلفيق اطلاعات در جدول‌ها است .
    برای پيوند دادن جدول ها ابتدا بايد چند مفهوم زير را بشناسيم كه البته قبلاً بصورت ضمني به اونها اشاره شده :

    1. کليد اصلی : فيلد کليد اصلی در يک جدول ، فيلدی است که شرايط زير را داشته باشد :
      1. مقدار آن برای هر نمونه رکورد ( سطر ) منحصر به فرد و غير تکراری باشد . به عبارت ديگرهيچ 2 رکوردی در يک جدول در اين فيلد مقدار يکسان نداشته باشد . کليد اصلی وجه تمايز دو نمونه رکورد مختلف در يک جدول است .
      2. طول مقادير آن حدامکان کوتاه باشد .


    مثال : فيلد Title_ID در جدول Titles کليد اصلیست . هيچ دو كتابي نمی توانند دارای Title_IDيکسان باشند .

    1. کليد خارجی : کليد خارجی ، فيلدی است که در يک جدول، کليد اصلی و در جدول ديگر، به تنهايی کليد اصلی نباشد . از کليد خارجی برای ارتباط يک به چند دو جدول با هم استفاده می‌شود.


    برای ارتباط بين جدول ها بايد شرط های زير برقرار باشد . بايد قبل از طراحی پايگاه داده و جدول های آن، موارد زير را جهت ارتباط جدول های مورد نظر رعايت کرد .

    1. وجود فيلد مشترک دقيقا از يک نوع و يک سايز .
    2. فيلد مشترک، در يکی از جدول‌ها کليد اصلی و در جدول ديگر کليد خارجی باشد .


    براي مثال ، دو جدول زير رو در نظر بگيريد.


    INNER JOIN:
    یک INNER JOIN رکوردهای مختلفی را از جداول متفاوت با یکدیگر ادغام میکند و این عمل را از طریق تست کردن مقادیر فیلدهایی انجام میدهد که در جداول مورد نظر عمومیت دارند. ساده ترین فرم INNER JOIN بشکل زیر است :

    SELECT fieldName1, fieldName2,
    FROM table1 INNER JOIN table2
    ON table1.fieldName = table2.fieldName

    که در آن قسمت بعد از عبارت ON، فیلدهایی را نشان میدهد از دو جدول با یکدیگر مقایسه میشوند تا معین شود چه رکوردهایی با یکدیگر ادغام میشوند. برای مثال، دستور زير، را در نظر بگيريد:

    SELECT * FROM
    tbl_user INNER JOIN tbl_info
    ON tbl_user.userid = tbl_info.userid

    اين دستور دو جدول tbl_user و tbl_info را در يكديگر ادغام كرده و نتيجه به شكل زير خواهد شد. در اين مثال ركوردهايي در خروجي مي‌آيند كه مقدار فيلد userid در هر دو جدول سابقه داشته باشد. خروجي دستور فوق به شكل زير است:



    Left Join:

    اين دستور نيز مشابه قبلي عمل مي‌كند. با اين تفاوت كه اگر ركوردي در جدول tbl_user وجود داشته باشد ولي در جدول tbl_info سابقه نداشته باشد، اين ركورد نيز نشان داده مي‌شود ولي فيلد‌هاي مشابه از جدول tbl_info آن برابر Null خواهد بود.

    SELECT * FROM
    tbl_user LEFT JOIN tbl_info
    ON tbl_user.userid = tbl_info.userid

    كه نتيجه‌ي اجراي آن به شكل زير خواهد بود:



    Right Join:

    مانند Left Join است منتها بر عكس آن. يعني اگر ركوردي در جدول tbl_info وجود داشته باشد ولي در جدول tbl_user سابقه نداشته باشد، اين ركورد نيز نشان داده مي‌شود ولي فيلد‌هاي مشابه از جدول tbl_user آن برابر Null خواهد بود.
    SELECT * FROM
    tbl_user RIGHT JOIN tbl_info
    ON tbl_user.userid = tbl_info.userid

    كه نتيجه‌ي آن به شكل زير است:


    Full Join:

    اين دستور تمام ركوردهاي دو جدول tbl_user و tbl_info را در هم ادغام كرده و در صورتي كه هر كدام از جدول‌ها در جدول ديگر سابقه نداشته باشد، فيلدهاي آن را Null نشان مي‌دهد.
    SELECT * FROM
    tbl_user FULL JOIN tbl_info
    ON tbl_user.userid = tbl_info.userid

    نتيجه اجراي آن به شكل زير است:



    Cross Join:

    نتیجه این Join تمام ترکیباتی است که از قرار گرفتن هر سطر از جدول اولیدر کنار تمام سطرهای جدول دومی بدست می آید(همانند حاصلضرب دکارتی).
    SELECT * FROM
    tbl_user CROSS JOIN tbl_info

    نتيجه‌ي اجراي آن به شكل زير خواهد بود:



    حالا چند تا تمرين خودتون حل كنيد!

    تمرين- دستوري بنويسيد كه ليست نام ناشران و عنوان كتاب‌هاي منتشر شده توسط آن ناشر را نشان دهد.

  8. #7
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    توابع تجميعي (Aggregate Functions)

    توابع تجميعي يكسري عمليات رو بر روي تعدادي ركورد از يك يا چند جدول مي‌دهند و نتيجه رو بصورت عدد بر مي‌گردانند.

    Sum :جمع فيلد مورد نظر را محاسبه مي‌كند.
    Min: مينيموم مقدار فيلد مورد نظر را در ركوردها به دست مي‌‌آورد
    Max : ماكزيموم مقدار فيلد مورد نظر را در ركوردها به دست مي‌آورد
    AVG: ميانگين مقدار فيلد را محاسبه مي‌كند.
    Count : تعداد ركوردهايي كه فيلد مورد نظر در آن Null نباشد را محاسبه مي‌كند.


    مثال: دستور زير، جمع قيمت را در جدول كتاب‌ها محاسبه مي‌كند:
    SELECT SUM(price) FROM titles

    مثال: دستور زير تعداد ركورد‌هايي از جدول كتاب‌ها را كه فيلد Price آن‌ها Null نباشد را محاسبه مي‌كند:
    SELECT COUNT(price) FROM titles

    نكته: چون توابع تجميعي با فيلد Null كاري ندارند، لذا چنانچه بخواهيد تعداد ركوردهاي جدول را به دست آوريد بهتر است از فيلد كليد اصلي (Primary Key) استفاده شود. البته براي به دست آوردن تعداد ركورد‌هاي يك جدول مي‌توان از دستور زير نيز استفاده كرد.
    SELECT COUNT(*) FROM authors


    عبارت Distinct :
    فرض كنيد جدول T1 را به شكل زير داشته باشيم. با استفاده از عبارت Distinct تنها ركوردهايي كه فيلد مورد نظر غير تكراري باشد را در نظر خواهد گرفت:
    1. SELECT f1 FROM T1
    2. SELECT DISTINCT f1 FROM T1
    3. SELECT f1,f2 FROM T1
    4.SELECT DISTINCT f1,f2 FROM T1

    This image has been resized. Click this bar to view the full image. The original image is sized 661x240.برای دیدن عکس در اندازه اصلی اینجا کلیک کنید . اندازه اصلی 661x240 پیکسل میباشد




    مثال: چند تا از نويسندگان كتاب دارند؟
    SELECT COUNT(DISTINCT au_id) FROM titleauthor

    مثال: با توجه به جدول T1 زير، جدول را بر اساس فيلد f1 گروه‌بندي كرده و جمع هر گروه را نمايش دهيد.

    SELECT f1,SUM(f2) AS tp FROM t1 GROUP BY f1





    نكته: در هنگام استفاده از توابع تجميعي، اگر در دستور Select، غير از خود تابع، نام هر فيلد ديگري آورده شود (همانند مثال بالا كه نام فيلد f1 در دستور Select آورده شده است)، حتماً مي‌بايست در انتهاي دستور، عبارت Group By به همراه فيلد‌هاي نام برده شده در دستور Select را بياوريم. در غير اينصورت با خطا مواجه مي‌شويم.

    نكته: در دستور Select قبل شايد قسمت AS tp رو متوجه نشديد كه كارش چيه. در حقيقت با استفاده از اين روش، براي فيلدي كه توسط تابع تجميعي ما ساخته ميشه، اسم tp رو انتخاب كرديم.

    تمرين: برنامه‌اي بنويسيد كه نام كتاب و تعداد فروش كتاب را ليست كند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    تمرين: برنامه‌اي بنويسيد كه نام كتاب و كل مبلغ فروش كتاب را ليست كند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    تمرين: برنامه‌اي بنويسيد كه نام ناشر و مبلغ فروش ناشر را ليست كند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    تمرين: برنامه‌اي بنويسيد كه نام خانوادگي نويسنده و تعداد كتاب‌هايي كه نوشته است را ليست كند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    تمرين: برنامه‌اي بنويسيد كه كل مبلغ فروش كتاب‌ها را نمايش دهد.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.



    ادامه دارد .... !

  9. #8
    کاربر سایت

    http://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gifhttp://www.iranjoman.com/images/iranjoman/neshan2.gif

    [ ]
    تاریخ عضویت
    Dec 2009
    سن
    34
    نوشته ها
    4,043
    تشکر
    0
    تشکر شده 1,784 بار در 957 پست

    پیش فرض

    درس امروز نسبتاً كوتاهه و سه تا SELECT نسبتاً پيچيده‌تر (نسبت به SELECTهاي قبل) هست.


    برنامه‌اي بنويسيد كه نام كتاب‌هاي از نوع تجاري و مبلغ فروش آن‌ها را نمايش دهد به شرطي كه اين كتاب‌ها بيش از 200 دلار فروش كرده باشند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    برنامه‌اي بنويسيد تا نام و نام خانوادگي و تعداد كتاب‌هاي نويسندگاني را پيدا كند كه بيش از يك كتاب نوشته‌اند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    برنامه‌اي بنويسيد كه نام گران‌ترين كتاب را مشخص كند.
    برای ديدن اين نوشته شما بايد مبلغ 0.01 شاهي پیهالز بپردازيد:
    Sorry, you cannot spend your شاهي پیهالز to view this content.

    در درس بعدي در مورد عبارات Top و Row_Number و Rank صبحت ميكنم.

+ ارسال موضوع جدید

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. 10 نکته درباره SQL Server 2005
    توسط ╬m0hMD╬ در انجمن آموزش شبکه و امنيت شبکه
    پاسخ ها: 0
    آخرين نوشته: 04-09-2012, 15:24
  2. ژورنال های شیمی سال 2005
    توسط Hadi-sh در انجمن رشته های علوم تجربی
    پاسخ ها: 0
    آخرين نوشته: 10-11-2011, 23:35
  3. این شعر کاندیدای شعر برگزیده سال 2005 شده بود
    توسط ♥ParAStoO♥ در انجمن سرگرمی ، گپ و گفتگو
    پاسخ ها: 0
    آخرين نوشته: 06-19-2011, 12:58
  4. [نام کتاب] دانلود رایگان کتاب خودآموز SQL Server 2005
    توسط sanatoramir در انجمن کتابها و مقالات وب
    پاسخ ها: 0
    آخرين نوشته: 08-31-2010, 01:09
  5. آموزش ویژوال سی شارپ 2005
    توسط iman151 در انجمن کتابها و مقالات برنامه نویسی
    پاسخ ها: 0
    آخرين نوشته: 04-04-2010, 20:44

تعداد اعضای بازدید کننده از این تایپیک : 0

بازدید کنندگان :  (نمایش کلی)

نامی برای نمایش وجود ندارد.

کلمات کلیدی این موضوع

Bookmarks

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •