آموزش SQL

تنظیم conectionstring

منبع : http://connectionstrings.com

   + دانشجویان کامپیوتر ; ۸:۱٧ ‎ق.ظ ; ۱۳۸٦/٢/٢٦
comment نظرات ()

تلفیق دستورات SELECT(بخش دوم)

تا اینجا با ایجاد query آشنا شدید ، همانطور که قبلا گفته شد بیش از 90%  امور گزارش گیری با استفاده از دستورات SELECT  انجام میشود ، لذا آشنایی با این دستور و توانایی الحاق Query های حاصله از این دستور مقوله ای بسیار مهم و کاربردی است .

در این بخش قصد داریم Query های مختلف را با استفاده از دستورات Union , Union All , Intersect,Minus با هم تلفیق کنیم . پیش از ادامه بحث در صورتی که مطالب قبلی را مطالعه نکرده اید اینجا را بخوانید .

Union :

با استفاده از این دستور میتوانید بین دو Query مختلف اجتماع ایجاد کنید . طرز استفاده از این دستور بصورت زیر است :

Query 1

UNION

Query2

Union All :

این دستور نیز مشابه Union عمل میکند با این تفاوت که دستور Union رکوردهای تکراری را در اجتماع لحاظ نمیکند در صورتی که Union All تمامی رکوردهای تکراری و غیر تکراری را نمایش میدهد . طریقه استفاده از این دستور نیز مشابه Union است و در ذیل مشخص شده :

Query 1

UNION ALL

Query2

Intersect :

این دستور مانند عملگر منطقی AND عمل میکند ، به این شکل که تنها رکوردهایی را انتخاب مبکند که هم در Query1 باشد و هم در Query2 . در ذیل نحوه استفاده از این دستور ذکر شده :

Query 1

INTERSECT

Query2

Minus :

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

Query 1

MINUS

Query2

بحث در مورد تلفیق پرسشها (Query ها) را در همین جا با چند مثال پایان میدهیم .

مثال 1) فرض کنید میخواهیم لیست کلیه دانشجویانی را بدست آوریم که درس کد 2 یا 3 را ورداشته اند .

برای این منظور میتوان از دو Query استفاده کرد ، Query اول لیست تمام دانشجویان را مشخص میکند که درس کد 1 را ورداشته اند و Query دوم لیست تمام دانشجویانی را مشخص میکند که درس کد 2 را ورداشته اند ، با اجتماع این دو Query جواب بدست خواهد آمد . در اینجا بجای Union All از Union استفاده میکنیم چون ممکن است یک دانشجو بیش از یک بار درس کد 1 یا 2 را ودارد که در این صورت در صورت استفاده از Union All ، دو بار کد دانشجو نمایش داده خواهد شد.

SELECT st_no FROM nomreh WHERE crs_code=1

UNION

SELECT st_no FROM nomreh WHERE crs_code=2

مثال 2) با استفاده از دستورات الحاق Query میخواهیم لیست کلیه دانشجویانی را بدست آوریم که درس 1 و درس 2 را داشته اند .

SELECT st_no FROM nomreh WHERE crs_code=1

RESTRICT

SELECT st_no FROM nomreh WHERE crs_code=2

همانطور که از خروجی های این دو مثال مشخص است تمامی دانشجویانی که درس 1 را انتخاب کرده اند ، درس 2 را نیز انتخاب کرده اند.

   + دانشجویان کامپیوتر ; ۱۱:٤۸ ‎ب.ظ ; ۱۳۸٦/٢/٢٠
comment نظرات ()

تلفیق دستورات SELECT(بخش اول)

در این بحث میخوایم به ارتباط SELECT و دستور IN بپردازیم ، در مباحث بعدی توضیحاتی بیشتر در مورد اجتماع ، اشتراک ، حالضرب و . . .  دستورات SELECT ارائه میدم . از این جهت که تقریبا 90% امور مربوط به گزراش گیری و اعمال پردازشی با دستور SELECT انجام میشه ، تبحر در این دستور و نحوه استفاده از اون  اهمیت زیادی داره ، لذا سعی میکنم نکات کاربردی در مورد این دستور ارائه بدم .

تا اینجا با بانک نمونه آشنا شدین ، خب اجازه بدین بحث رو با یک سوال شروع کنم :

سوال : فرض کنین میخواین لیست تمام نمرات دانشجویانی رو بدست بیارین که در ترم اول 86 درس 2 واحدی داشتن .

خب تو یه تحلیل ساده پیش خودتون میگین اول باید کد تمام دروس 2 واحدی رو پیداکنم ، بعد بگم تمام نمراتی رو بهم نشون بده که کدش یکی از این کدهاست . تو این پست میخوام طریقه انجام این کار رو با دستور SELECT  و IN توضیح بدم .

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

جهت استفاده از دستور SELECT  برای تعیین موارد انتخابی ای که دستور IN میتواند یکی از آن موارد باشد ، باید چند شرط را رعایت کنیم :

  1. در دستور SELECT فقط و فقط یک فیلد را که کد شناسه ارتباطی بین جدول اصلی و ثانوی است را به عنوان خروجی ارسال کنیم (در اینجا فیلد مربوط به کد درس)

  2. شرطی که باید فیلد داشته باشد را در بخش WHERE دستور SELECT داخلی قید میکنیم . (در اینجا شرط 2واحدی بودن)

خب بیاین و کد مربوط به سوالی رو که ابتدای بحث مطرح کردیم رو ایجاد کنیم ، با توجه به موارد قید شده دستور SELECT  داخلی باید یک مجموعه از کدهای دروسی را در اختیار ما قرار دهد که درس مربوطه 2 واحدی باشد پس داریم :

 

SELECT Course.Crs_Code

FROM Course

WHERE Vahed=2

خب ، همینطوری که میبینین این دستور لیست یک سری درس رو بهمون نشون داد که میخوایم بدونیم کدوم دانشجوها این درس (یا دروس) رو در نیمسال اول 86 انتخاب کردن :

SELECT * 

FROM nomreh

WHERE nomreh.term=1 AND nomreh.year=86

AND nomreh.crs_code IN

      ( SELECT Course.Crs_Code

       FROM Course

       WHERE Vahed=2)

   + دانشجویان کامپیوتر ; ٦:۳٩ ‎ب.ظ ; ۱۳۸٦/٢/۸
comment نظرات ()

آموزش نصب SQL server 2000

این مطلب عینا از این سایت برگرفته شده و جهت آموزش نصب SQL2000 ارائه شده :

نصب SqlServer 2000 نسبتا ساده و بی دردسر است. Setup را اجرا کنید (اگر Autorun بصورت خودکار اجرا نشد). (توجه کنید که با یکی از Account های Administrator باید Login شده باشید).

SQL Server 2000: Ready to Installation

با انتخاب گزینه اول که SQL Server Components است این پنجره نمایش داده خواهد شد :

Sql Server 2000 : Instalation, Step 1!

در مرحله بعد باید نوع نصب را انتخاب نمایید :

Sql Server 2000: Instalation, Step 2

گزینه Remote Computer برای نصب بر روی یک سیستم که در دسترس نیست (مثلاً سرور سایت شما در جایی خارج از کشور که تنها IP آن و یک Login در اختیار شما قرار دارد) مورد استفاده قرار می گیرد. گزینه ای که احتمالاً شما همیشه از آن استفاده خواهید کرد، همان گزینه اول یا Local Computer خواهد بود.

در این کادر هم گزینه اول را انتخاب می کنید تا Sql Server بر روی سیستم نصب شود.

وارد کردن نام و نام شرکت و خواندن مقررات استفاده از Sql Server یا همان software License Agreement که بخصوص در ایران به شدت و با دقت خواندهمی شود، کارهای بعدی هستند که انجام می دهید. بنا به فرض محال اگر Sql Server را خریده باشید (نه CD آن را به قیمت یک تا سه هزار تومان، بلکه اصل نرم افزار به قیمت 400-500 هزار تومان) یک شماره سریال 25 کاراکتری دارید که می توانید آن را وارد نمایید (فرم خاصی برای آن نمایش داده می شود).

در کادر فوق نیز گزینه وسط را انتخاب کنید. در صورتیکه یک نرم افزار نوشته اید، بر روی کامپیوتر Server نصب را با گزینه وسط ادامه دهید و برای دیگر کامپیوترها با گزینه اوئل یا Client Tools Only.

در این مرحله نام سرور (نام نمونه سرور را که Sql Server با آن شناخته می شود) را باید وارد کنید. می توانید همان گزینه Default را بگذارید باشد و یا اینکه یک نام دلخواه اختصاص دهید.

در این مرحله هم که کاملاً مشخص است : انتخاب چگونگی نصب ار نظر نوع و تعداد Component ها که توصیه من Typical است و در صورت آشنایی شما با Sql Server می توانید Custom را نیز انتخاب کنید.

این مرحله کاملا مهم است. شما باید تصمیم بگیرید که سطح امنیتی دسترسی به سیستم چگونه باشد. در حالت Windows Authentication Mode تمام User های تعریف شده در Windows NT امکان دسترسی به بانک ها را خواهد (با توجه به Permission های داده شده) اما در حالت Mixed Mode علاوه بر اینکه باید جزو کاربران NT باشند باید User Name و Password خاص SQL Server را نیز داشته باشند. روش دوم به نظر ایمن تر است اما دردسرهای آن هم بیشتر است. بسته به امنیت محیطی که شبکه در آن پیاده سازی شده است می توانید یکی از دو نوع فوق را برگزینید.

آخرین قسمت نصب نزدیک است! پس از نصب یک کادر دیگر نیز نمایش داده می شود که کافی است Finish کنید.

پس از نصب Sql Server باید سرویسهای مربوطه را اجرا کنید. دو راه برای این کار وجود دارد. یکی اجرای سرویس بصورت دستی و دیگری تنظیم آن برای شروع خودکار سرویس هنگام شروع کار ویندوز. شروع دستی Sql Server به این صورت امکان پذیر است :

در صورت لزوم مدیر خدمات SQL Server را Start کنید :

با اجرای SQL Server Service Manager آیکون آن کنار ساعت روی TaskBar به این صورت نمایش داده می شود :

برای متوقف کردن Service Manager کافی است روی کلید Stop کلیک کنید :

یک پیام اخطار نمایش داده خواهد شد که با کلیک بر روی YES مدیر سرویس SQL SERVER متوقف خواهد شد.

چگونه مدیر خدمات SQL SERVER را بصورتی تنظیم کنیم که بشکل خودکار شروع به سرویس دادن کند؟

برای انجام این کار به Control Panel ----> Administrative Tools بروید و پنجره Services را باز کنید :

و بعد از سرویسهای درحال اجرا، سرویس MSSQLSERVER را پیدا کنید :

اگر در ستون Sturtup Type عبارت Automatic وجود نداشت با کلیک راست بر روی آن منو نمایش داده می شود. در این منو، با انتخاب Properties پنجره جدیدی به این صورت نمایش داده می شود :

با انتخاب Automatic و بعد Apply یا OK کردن، SQL Server Service Manager از این به بعد با Start شدن (روشن یا Restart شدن سیستم) شروع به کار می کند.

این مطلب عینا از این سایت برگرفته شده

   + دانشجویان کامپیوتر ; ۸:٠۱ ‎ب.ظ ; ۱۳۸٦/٢/٥
comment نظرات ()

آشنایی با دستور ORDER BY :

تا الان یاد گرفتین که چطور یه سری فیلد رو محدود کنین ، تعداد رکوردها رو محدود کنین و جداول رو با هم ادغام کنین در این بخش هم میخوایم طریقه مرتب سازی جداولی را که از این فیلترینگ ایجاد کردین را توضیح بدیم . جهت مرتب سازی جداول ایجاد شده از دستور ORDER BY در SELECT استفاده میشه . بحث رو با یک مثال ساده که نحوه عملکرد دستور را شرح میدهد شروع میکنیم .


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

SELECT name, family

FROM student

ORDER BY family

* بهتر است خروجی علاوه بر اینکه براساس نام خانوادگی دانشجو مرتب میشود ، بر اساس نام دانشجو نیز مرتب شود ، البته در این مثال به علت عدم وجود نام خانوادگی تکراری در بانک اطلاعات دانشجو نتیجه خروجی فرقی نخواهد کرد لذا یک دانشجو جدید به این اضافه خواهیم کرد که تمایز آن با مثال فوق مشخص شود .

SELECT *

FROM student

ORDER BY family,name


همانطور که مشاهده کردید برای مرتب سازی فیلدها در خروجی از ORDER BY استفاده شد و ترتیب مرتب سازی بترتیب جلوی این دستور نوشته شد . اگر دقت کرده باشید فیلدها بترتیب صعودی مرتب شدند (حالت پیش فرض T-SQL) حال اگر بخواهیم فیلدها بر اساس ترتیب نزولی مرتب شوند میتوان از دستور DESC (مخفف واژه Descending) استفاده کرد ، میتوان در مرتب سازی صعودی از دستور ASC (مخفف واژه Ascending) نیز استفاده نمائید ، لیکن همانطور که گفته شد ترتیب پیش فرض SQL صعودی (Ascending) میباشد و این دستور را بطور اتوماتیک حذف خواهد کرد .

مثال2 : میخواهیم در جدول دروس ، لیست کلیه دروس را بصورت نزولی نمایش دهیم :

SELECT *

FROM course

ORDER BY name DESC

 

   + دانشجویان کامپیوتر ; ۱۱:۳٧ ‎ب.ظ ; ۱۳۸٦/٢/۳
comment نظرات ()

آشنايی با WHERE (بخش چهارم)

الحاق جداول با استفاده از WHERE :

یکی از عملکردهای بسیار مهم دستور WHERE الحاق جداول است ، بدین معنی که شما میتوانید جداولی که با یک کلید با هم ارتباط دارند را الحاق کنید و یک جدول مجازی جدید ایجاد کنید . بهتر است با یک مثال طریقه الحاق جداول را نمایش دهیم .

مثالمیخواهیم سه بانک نمرات دانشجویان ، اطلاعات دانشجو و اطلاعات دروس را تلفیق کرده و بانکی از فیلدهای نام و نام خانوادگی دانشجو ، نمره ،نام درس ، سال و ترم بدست بیاریم .1 :

SELECT student.name, student.family, nomreh.nomreh,nomreh.year,nomreh.term,course.name
FROM student ,nomreh,course
WHERE nomreh.st_no=student.st_no AND nomreh.crs_code=course.crs_code

نکته : همانطور که ملاحضه کردید در دستور فوق برای دسترسی به ستون name از جدول student بجای لفظ name از student.name استفاده کردیم ، همینطور برای تمام فیلدهای دیگر این به این خاطر است که فیلد name در دو جدول student و course وجود دارد و باید به طریقی بین این دو فیلد تمایز ایجاد کرد لذا به این شکل استفاده شد .

توجه : برای باقی فیلدها غیر از name لزومی به ذکر کردن جدول اصلی نیست ولی برای خوانایی بیشتر بهتر است اسم جدول هم ذکر شود .

نکته : همانطور که ملاحضه کردید فیلد name درس ، در خروجی با نام Expr1 آورده شده این به این علت است که این فیلد با فیلد name دانشجو ، همنام است برای رفع این مشکل میتوان از دستور AS استفاده کرد ، لذا دستور فوق را به صورت اصلاح شده زیر تغییر میدهیم :

SELECT student.name, student.family, nomreh.nomreh,nomreh.year,nomreh.term,course.name AS crs_name
FROM student ,nomreh,course
WHERE nomreh.st_no=student.st_no AND nomreh.crs_code=course.crs_code


مثال2 : میخواهیم کارنامه دانشجویی با شماره دانشجویی 111111 را در ترم اول سال 86 چاپ کنیم

SELECT nomreh.nomreh,course.name,course.vahed

FROM nomreh,course,student
WHERE nomreh.st_no=student.st_no AND nomreh.crs_code=course.crs_code AND nomreh.st_no='111111'  AND  nomreh.term='1' AND  nomreh.year='86'

در مطالب بعدی در مورد دستور ORDER BY مطالبی ارائه خواهد شد.

   + دانشجویان کامپیوتر ; ٤:٢۳ ‎ب.ظ ; ۱۳۸٦/٢/۳
comment نظرات ()

آشنايی با WHERE (بخش سوم)

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


مثال انتخاب رکوردها با شرایط بخصوص :

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

مثال 1 : میخواهیم در بانک اطلاعات نمرات نمرات دانشجویی با شماره دانشجویی 111111 را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

SELECT *
FROM nomreh
WHERE (st_no = '111111')


مثال 2 : میخواهیم در بانک اطلاعات نمرات ، نمرات دانشجویی با شماره دانشجویی 111111 بصورتی که نمره های دانشجو بالاتریا برابر10 باشد را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

SELECT *
FROM nomreh
WHERE (st_no = '111111' AND nomreh>='10')


مثال 3 : میخواهیم در بانک اطلاعات نمرات ، نمرات بین 12 و 18 را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

SELECT *
FROM nomreh
WHERE ( nomreh BETWEEN '12' AND '18')


مثال 4 : میخواهیم در بانک اطلاعات دانشجو ، اسامی دانشجویانی با الگوی %a% (یعنی در اسم دانشجو کاراکتر a وجود داشته باشد) را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

توجه : در برخی از مفسرهای SQL در ایجاد الگو بجای کاراکتر % از کاراکتر * استفاده میشود .

SELECT *
FROM student
WHERE (name LIKE '%a%')


مثال 5 : میخواهیم در بانک اطلاعات دانشجو ، اسامی دانشجویانی که یکی از اسامی ('ali', 'reza', 'mohammad') است را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

توجه : در برخی از مفسرهای SQL در ایجاد الگو بجای کاراکتر % از کاراکتر * استفاده میشود .

SELECT *
FROM student
WHERE (name IN ('ali', 'reza', 'mohammad'))


در مطالب بعدی به الحاق جداول با استفاده از دستور WHERE میپردازیم 

   + دانشجویان کامپیوتر ; ۳:۳٢ ‎ب.ظ ; ۱۳۸٦/٢/۳
comment نظرات ()

آشنايی با WHERE (بخش دوم)

بعد از این همه بحث تئوری نوبت به بخش عملی میرسه !

میخوایم چند تا مثال واسه دستور Select با توجه به نکات ذکر شده تا کنون و بانک نمونه ای که آپ کردیم ، ارائه بدیم . اگه بانک رو دانلود نکردین از اینجا دانلودش کنید .

 


مثال انتخاب فیلد (ها) :

از این کار زمانی استفاده میکنید که تعدادی فیلد در یک یا چند جدول (در صورت ادغام جداول) دارید ولی به تعداد معدودی از آنها نیاز دارید و جهت صرفه جویی در حافظه اصلی فیلدهایی را که نیاز ندارید نمایش نمیدهید .

SELECT st_no

FROM nomreh

دستور فوق فقط فیلد st_no را در نما (view) نمایش خواهد داد .


SELECT st_no, crs_code

FROM nomreh

 

دستور فوق دو فیلد را در خروجی نمایش خواهد داد و همین طور برای افزودن فیلدهای بیشتر به خروجی میتوان با علامت کولن “,” فیلدها را از هم جدا کنید .


* SELECT 

FROM nomreh

در دستور فوق بجای نام فیلدها ، از عمگر * استفاده شده این دستور باعث میشود که تمامی فیلدها در خروجی نمایش داده شوند . البته همانطور که قبلا گفته شد بهتر است بجای * اسم تمامی فیلدها قید شود . لذا دستور فوق را بشکل زیر که همان نتیجه را ایجاد میکند اصلاح میکنیم :

SELECT st_no, crs_code, nomreh, term,year, id

FROM nomreh

نکته : در ادامه بحث برای راحتی کار از دستور * استفاده خواهیم کرد ولی در پیاده سازی این کار توصیه نمیشود .


نکته : ممکن است بخواهیم در نما نام فیلدها را با نامهای جدبد جایگزین کنیم ، بنا به دلایلی از جمله اینکه جداول را با هم تلفیق کرده ایم و 2 فیلد همنام در جدول حاصل به وجود آورده ایم که این منجر به خطا میشود . برای این کار از دستور As مطابق مثال زیر استفاده میکنیم :

SELECT  st_no  AS shomare, crs_code AS code_dars, nomreh, term,year AS sale_tahsili, id

FROM         nomreh

 

در مباحث بعدی به مثالهای مربوط به محدود کردن رکودها با دستور WHERE خواهیم پرداخت .

   + دانشجویان کامپیوتر ; ۱٠:٥٢ ‎ب.ظ ; ۱۳۸٦/٢/٢
comment نظرات ()

بانک نمونه برای مثالها

این هم بانک نمونه واسه مثالهای این وبلاگ

   + دانشجویان کامپیوتر ; ۱٠:۳٩ ‎ب.ظ ; ۱۳۸٦/٢/۱
comment نظرات ()