دستورکار آزمایشگاه پایگاه داده

دانشگاه اصفهان

دانشکده مهندسی کامپیوتر

 

 

 

دستورکار آزمایشگاه پایگاه داده

 

نسخه 1.0

مهندس میترا عیسایی

مهندس حمیدرضا خیرمند

 

 

مهر 96

 

 


تاریخچه بازبینی‌ها

شماره نسخه

تاریخ

شرح تغییرات

1.0

1/07/1396

نسخه اولیه


فهرست مطالب

1 آزمایش اول: آشنایی با نرم افزار Microsoft SQL Server. 7

1-1 مقدمه. 7

1-2 دستور کار 7

1-3 گزارش کار 8

2 آزمایش دوم: آشنایی با دستورات DDL(1) 9

2-1 مقدمه. 9

2-2 دستور کار 9

2-2-1 ایجاد پایگاه داده 9

2-2-2 ایجاد جدول. 10

2-2-3 محدودیت Not Null 10

2-2-4 محدودیت Primary key. 11

2-2-5 محدودیت Unique. 12

2-3 گزارش کار 12

3 آزمایش سوم: آشنایی با دستورات DDL(2) 13

3-1 مقدمه. 13

3-2 دستور کار 13

3-2-1 محدودیت Foreign Key. 13

3-2-2 محدودیت Check. 15

3-2-3 محدودیت Default 16

3-2-4 محدودیت Identity. 17

3-3 گزارش کار 17

4 آزمایش چهارم: SELECT.. 18

4-1 مقدمه. 18

4-2 دستور کار 18

4-2-1 Where. 19

4-2-2 As. 20

4-2-3 IN.. 20

4-2-4 Between. 20

4-2-5 Like. 20

4-2-6 Order By. 21

4-2-7 Distinct 21

4-2-8 Aggregation Functions. 21

4-2-9 Group By. 21

4-2-10 Having. 21

4-2-11 Top. 22

4-3 گزارش کار 22

5 آزمایش پنجم: JOIN (CROSS، INNER، SELF) 23

5-1 مقدمه. 23

5-2 دستور کار 23

5-2-1 Cross Join. 23

5-2-2 Inner Join Error! Bookmark not defined.

5-2-3 Self Join. 25

5-3 گزارش کار 26

6 آزمایش ششم: OUTER JOIN، INSERT، UPDATE، DELETE.. 27

6-1 مقدمه. 27

6-2 دستور کار 27

6-2-1 OUTER JOIN.. 27

6-2-2 INSERT.. 27

6-2-3 Update. 28

6-2-4 Delete. 28

6-3 گزارش کار 28

7 آزمایش هفتم: STORED PROCEDURE.. 29

7-1 مقدمه. 29

7-2 دستور کار 29

7-2-1 SP های سیستمی. 29

7-2-2 SP های استاندارد 29

7-2-3 ساختار شرطی IF…ELSE.. 30

7-2-4 حلقه­ی تکرار WHILE.. 30

7-3 گزارش کار 31

8 آزمایش هشتم: FUNCTION، TRANSACTION.. 32

8-1 مقدمه. 32

8-2 دستور کار 32

8-2-1 توابع داخلی. 32

8-2-2 توابع تعریفشده توسط کاربر 32

8-2-3 TRANSACTION.. 33

8-3 گزارش کار 34

9 آزمایش نهم: اتصال C# به SQL.. 35

9-1 مقدمه. 35

9-2 دستور کار 35

9-3 گزارش کار 36

 

 


1 آزمایش اول: آشنایی با نرم افزار Microsoft SQL Server

1-1      مقدمه

در این آزمایش با زبان SQL، تاریخچه­ی آن، با محیط نرم افزار Microsoft SQL Server و قسمت­های مختلف آن آشنا می­شویم.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      SQL چیست؟

2.      در نرم افزار MSS برای تغییر تنظیمات سرویس­ها چه مسیری باید طی شود؟

3.      اگر دو یا چند پایگاه داده­ی مختلف داشته باشیم برای انتقال داده بین آن­ها کدام سرویس باید فعال باشد؟

4.      راه­های ایجاد یک بانک اطلاعاتی را توضیح دهید.

5.      بانک­های اطلاعاتی سیستمی مهم در MSS را نام برده و توضیح دهید.

1-2 دستور کار

1-    پایگاه داده­ایی(database) به نام UI961 ایجاد نمایید. (به دو روش توضیح داده شده در آزمایشگاه)

2-    در پایگاه داده­ی ساخته­شده جدولی به نام Student با ستون­های زیر ایجاد نمایید.(به صورت دستی)

Student(id: int , name: string, family: string, birthdate: datetime)

3-    در جدول ساخته­شده داده­های زیر را وارد نمایید:

birthdate

family

name

id

1995-01-02

ahmadi

ali

10

1995-02-03

sadeghi

mohammad

11

1995-03-04

salehi

sara

12

1995-04-05

abasi

zahra

13

1995-05-06

nouri

Reza

14

 

4-    نام دانشجو با شماره دانشجویی 10 را به Ahmad ویرایش کنید. (به صورت دستی)

5-    تمام داده­های موجود در جدول را نمایش دهید. (به صورت دستی)

6-    دانشجویی با شماره دانشجویی 11 را از جدول حذف نمایید. (به صورت دستی)

7-    دانشجویان شماره 12 و 13 را همزمان از جدول حذف کنید. (به صورت دستی)

8-    دانشجویی با مشخصات دانشجوی شماره 11 به جدول اضافه کنید. (به صورت دستی)

9-    ستون id را از جدول Student حذف کنید. (به صورت دستی)

10-                        دو ستون name و family را به صورت همزمان از جدول Student حذف کنید. (به صورت دستی)

11-                        جدول Student را حذف نمایید. (به صورت دستی)

12-                        پایگاه داده­ی UI961 را حذف نمایید. (به صورت دستی)

1-3      گزارش کار

1.      به سوالات مطرح­شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام­شده در کلاس بر روی پایگاه داده­ایی به طراحی خودتان (متفاوت از پایگاه داده و جدول ایجادشده در کلاس) بنویسید. گزارش باید دارای توضیحات کامل به همراه تصاویر اسکرین­شات از پایگاه داده و مراحل انجام تمرینات باشد.

 

 

 


2 آزمایش دوم: آشنایی با دستورات DDL(1)

2-1 مقدمه

در این آزمایش با دسته فرمان­های SQL آشنا می­شویم و سپس به صورت خاص بر روی دستورات DDL تمرکز کرده و ساخت دیتابیس و جدول را از طریق کدنویسی خواهیم آموخت. بر روی ستون­های یک جدول محدودیت­های (constraint) مختلف می­توان قرار داد که با این محدودیت­ها و کدنویسی آن­ها طی دو جلسه آشنا خواهیم شد.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      سه دسته فرمان کلی موجود در SQL را نام برده و هر یک را توضیح دهید.

2.      سه دستور مهم DDL را نام ببرید.

3.      دستور ایجاد یک پایگاه داده چیست؟

4.      دو مفهوم درجه و کاردینالیتی در یک جدول را توضیح دهید.

5.      شمای متنی یک جدول چگونه نوشته می­شود؟

6.      سه نکته­ی اصلی در هنگام نام­گذاری جدول و ستون­های یک جدول چیست؟

7.      انواع محدودیت­هایی (constraint) که می­توان بر روی یک جدول یا ستون قرار داد را توضیح دهید.

8.      مزیت دادن نام به یک محدودیت چیست؟

9.      چگونه می­توان بر روی دو ستون به صورت ترکیبی یک محدودیت قرار داد؟

10.  دو نتیجه­ی اعمال کلید اصلی بر روی یک ستون چیست؟

11.  دلیل استفاده از محدودیت unique چیست و تفاوت unique و primary key را بیان کنید.

2-2دستور کار

2-2-1 ایجاد پایگاه داده

ü از دستور Create DataBase برای ایجاد یک پایگاه داده استفاده می­شود.

CREATE DATABASE < database_name >

1-    پایگاه داده­ایی به نام UI962 ایجاد کنید.(با کد نویسی)

2-2-2 ایجاد جدول

ü از دستور Create Table برای ایجاد یک جدول استفاده می­شود.

CREATE TABLE <table_name>

(

<column_name1> data_type(size) <constraint_name>,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

....

);

2-2-3 محدودیت Not Null

2-    کد ایجاد جدولی به نام Student با مشخصات زیر را به صورتی بنویسید که ستون id آن دارای محدودیت Not Null باشد.

Student(id: string, name: string, family: string, birthdate: datetime)

3-    به صورت دستی سطر زیر را وارد جدول Student نمایید و خطای رخ داده را خوانده و توضیح دهید:

birthdate

family

name

id

1995-01-02

ahmadi

ali

NULL

 

4-    به صورت دستی محدودیت Not Null را بر روی ستون family از جدول Student قرار داده و از روی ستون id آن را حذف کنید.

ü اگر بعد از ایجاد جدول تصمیم به اضافه کردن محدودیت به ستونی از جدول گرفتید به دو ساختار کلی زیر می­توانید عمل کنید.(این دو ساختار مخصوص محدودیت­های Primary key، Unique، Check هستند)

ساختار 1:

ALTER TABLE <table_name>
ADD
<constraint_name> <column_name>

ساختار 2:

ALTER TABLE <table_name>
ADD CONSTRAINT <identity_name>
<constraint_name> (<column_name1>, <column_name2>,…)

استثناء: دستور Not Null، Default، Foreign Key در این مورد دارای ساختارهای خاص خود هستند.

ساختار افزودن محدودیت Not Null به ستونی از جدول از پیش ساخته­شده:

ALTER TABLE <table_name>

ALTER COLUMN <column_name> INTEGER Not NULL ;

 

5-    بر روی ستون name از جدول ساخته­شده­ی Student محدودیت Not Null قرار دهید.

ü اگر پس از ایجاد جدول، تصمیم به حذف کردن محدودیت قرار داده­شده بر روی ستونی از جدول گرفتید از ساختار کلی زیر می­توانید استفاده کنید. .(این فرم مخصوص محدودیت­های Primary key، Unique، Check،، Foreign Key است)

ALTER TABLE <table_name>
DROP CONSTRAINT <identity_name>

استثناء: دستور Not Null، Default در این مورد دارای ساختارهای خاص خود هستند.

قالب حذف محدودیت Not Null از روی ستونی از جدول از پیش ساخته­شده:

ALTER TABLE <table_name>

ALTER COLUMN <column_name> INTEGER NULL ;

 

6-    کد حذف محدودیت Not Null بر روی ستون id از جدول Student را بنویسید.

2-2-4 محدودیت Primary key

7-    بر روی ستون id از جدول ساخته­شده­ی Student محدودیت Primary Key قرار دهید.

8-    به صورت wizard دو سطر زیر را وارد جدول Student نمایید و خطای پیش آمده را خوانده و توضیح دهید.

birthdate

family

name

id

1995-01-02

ahmadi

ali

1

1995-02-03

salehi

sara

1

 

در صورتی که بخواهیم جدولی ایجاد و بر روی دو ستون آن به صورت ترکیبی محدودیتی اعمال کنیم از ساختار کلی زیر استفاده می­کنیم:

CREATE TABLE <table_name>

(

<column_name1> data_type(size) <constraint_name>,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...

CONSTRAINT <identity_name> <constraint_name> (<column_name1>, <column_name2>,…)

);

9-    جدولی به نام Teacher ایجاد کرده و دو ستون نام و نام خانوادگی را به صورت ترکیبی کلید اصلی آن قرار دهید:

Teacher (name: string, family: string, birthdate: datetime)

10-                        به صورت دستی سه سطر زیر را وارد جدول Teacher نمایید. آیا خطایی رخ می­دهد؟ توضیح دهید.

birthdate

family

name

1995-01-02

ahmadi

ali

1995-02-03

salehi

ali

1995-03-04

ahmadi

ali

 

11-                        کد حذف محدودیت Primary key از جدول Teacher را بنویسید.

12-                        به صورت دستی محدودیت Primary key را بر روی ستون id از جدول Student قرار دهید.

2-2-5 محدودیت Unique

13-                        بر روی جدول ساخته­شده­ی Sudent کدی بنویسید که بتواند محدودیت Unique را به صورت ترکیبی بر روی دو ستون name و family قرار دهد.

14-                        آزمایش 10 را مجددا این بار بر روی جدول Student انجام دهید و نتیجه را توضیح دهید.

15-                        کد حذف محدودیت Unique از جدول Student را بنویسید.

16-                        به صورت دستی محدودیت Unique را بر روی ستون name از جدول Student قرار دهید.

2-3 گزارش کار

3.      به سوالات مطرح­شده در مقدمه پاسخ دهید.

4.      گزارش کاملی از تمرینات انجام شده در کلاس بر روی پایگاه داده­ایی به طراحی خودتان (متفاوت از پایگاه داده و جدول ایجاد شده در کلاس) بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین، تصاویر اسکرین­شات و توضیحات برای تمرینات بدون کد باشد.

 

 

 


3 آزمایش سوم: آشنایی با دستورات DDL(2)

3-1 مقدمه

این آزمایش در ادامه­ی آزمایش قبل است و در این آزمایش با محدودیت­های (constraint) دیگری که می­توان بر روی ستون­های یک جدول قرار داد، آشنا می­شویم.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      Foreign Key چیست؟

2.      هرگاه یک ستون Foreign Key تعریف شود، چه محدودیت­هایی بر روی داده­های آن ستون اعمال می­شود؟

3.      دو پارامتر اصلی در هنگام قرار دادن محدودیت identity بر روی ستونی، چیست؟

3-2 دستور کار

3-2-1 محدودیت Foreign Key

ü نمودار ER زیر را در نظر بگیرید: رابطه تدریس یک درس توسط استاد به صورت زیر است.

 

 
 
 

 

 

 


حال شمای متنی هر یک از موجودیت ها و رابطه Teach بصورت زیر است:

      Lesson (Lid: char(5), LName: char(25), vahed smallint)

      Teacher (Tid: char(10), TName: char(50), course char(50))

      Teach (Lid: char(5), Tid: char(10), semester: DateTime)

در جدول Teach دو ستون Lid و Tid به صورت FK تعریف می شوند که پدر آن­ها کلیدهای اصلی در جداول Lesson و Teacher هستند.

 

 

ü      برای پیاده سازی این محدودیت، از سه ساختار زیر می توان استفاده کرد:

ساختار1:

CREATE TABLE <table_name>

(

<column_name1> data_type (size) <constraint_name>,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...

Foreign Key (نام فیلد ارجاع) References < نام جدول مرجع>

[On Delete Cascade]

[On Update Cascade]

...);

ساختار2:

CREATE TABLE <table_name>

(

<column_name1> data_type (size) FOREIGN KEY REFERENCES < نام جدول مرجع> (نام فیلد مرجع)

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...);

ساختار3:

CREATE TABLE <table_name>

(

<column_name1> data_type(size) <constraint_name>,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...

CONSTRAINT <identity_name> FOREIGN KEY (نام فیلد ارجاع)

REFERENCES < نام جدول مرجع> (نام فیلد مرجع)

);

1-    برای نمودار ER زیر، جداول مرتبط را رسم نمایید.

 

 

 

 

 

 


ü فیلد‌های کلید خارجی ، سه نوع محدودیت را ایجاد می‌کنند :

1.اجازه حذف رکورد از جدول پدری که فرزندی داشته باشد، نداریم.

2.اجازه درج رکورد در جدول فرزند با کلیدی که در جدول پدر موجود نیست را نداریم.

3.مقدار کلید پدری را که دارای فرزند هست، نمی‌توانیم تغییر دهیم.

2- در جداول ایجاد شده داده­هایی وارد کنید و درستی محدودیت­های گفته شده را بررسی نمایید.

ü      در صورتی که بخواهیم بر روی ستونی از جدول از پیش ساخته­شده­ایی محدودیت Foreign Key اضافه کنیم از دو ساختار زیر می­توانیم استفاده کنیم:

ساختار 1:

ALTER TABLE <table_name>
ADD
FOREIGN KEY (نام فیلد ارجاع) REFERENCES < نام جدول مرجع>(نام فیلد مرجع)

 

ساختار 2:

ALTER TABLE <table_name>
ADD CONSTRAINT <identity_name>
FOREIGN KEY (نام فیلد ارجاع)

REFERENCES < نام جدول مرجع>(نام فیلد مرجع)

ü      در صورتی که بخواهیم از ستونی از جدول از پیش ساخته شده محدودیت Foreign Key ر حذف کنیم به همان ساختار کلی گفته­شده در آزمایش قبل عمل می­کنیم.

3- کد حذف همه­ی محدودیت­های Foreign key از جدول Select را بنویسید.

4- به صورت دستی محدودیت Foreign key را بر روی جدول Select قرار دهید.

3-2-2 محدودیت Check

ü نحوه قرار دادن محدودیت Check بر روی ستونی از جدول به یکی از دو فرم زیر امکان پذیر است:

ساختار 1:

CREATE TABLE <table_name>

(

<column_name1> data_type (size) CHECK (constraint),

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...);

ساختار 2:

CREATE TABLE <table_name>

(

<column_name1> data_type(size) <constraint_name>,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...

CONSTRAINT <identity_name> CHECK (<constraint_on_column_name1>, < constraint_on_column_name2>,…)

);

5- کد جدولی به نام Student با مشخصات زیر را بنویسید:

Student(id: string, name: string, family: string, average: float, city: string, country: string)

·       داده­های ستون id اعددی مثبت باشند.

·       کاربر نتواند در ستون grade اعدادی که در بازه­ی 0 تا 20 نیستند وارد کند.

6- به جدول Student محدودیت های زیر را اضافه کنید.

·       شهر دانشجو Isfahan نباشد یا کشور دانشجو Iran باشد.

7- به جدول Student به صورت دستی داده­های متضاد با محدودیت­های اعمال شده در آزمایش 5 و 6 وارد کنید و خطای رخ داده را بررسی کنید.

3-2-3 محدودیت Default

ü نحوه قرار دادن محدودیت Default بر روی ستونی از جدول به فرم زیر امکان پذیر است:

CREATE TABLE <table_name>

(

<column_name1> data_type (size) DEFAULT ‘<string>’,

<column_name2> data_type(size) <constraint_name>,

<column_name3> data_type(size) <constraint_name>,

...);

ü اگر بعد از ایجاد جدول تصمیم به اضافه­کردن محدودیت Default به ستونی از جدول گرفتید به دو فرم کلی زیر میتوانید عمل کنید.

ساختار 1:

ALTER TABLE <table_name>
ADD
DEFAULT ('< string >‘) For <column_name>

ساختار 2:

ALTER TABLE <table_name>
ADD CONSTRAINT <identity_name>
DEFAULT ('< string >‘) For <column_name>

9- محدودیت Default ‘Isfahan’ را به ستون city از جدول Student اضافه کنید.

10- به جدول Student به صورت دستی داده وارد کنید و وضعیت ستون city را بررسی نمایید.

ü اگر بعد از ایجاد جدول تصمیم به حذف کردن محدودیت Default قرار داده­شده بر روی ستونی از جدول گرفتید به همان فرم کلی گفته شده در آزمایش قبل میتوانید عمل کنید.

13-                        به صورت دستی محدودیت Default country=’Iran’ را بر روی جدول Student قرار دهید.

3-2-4 محدودیت Identity

14-کد جدولی به نام Course را بنویسید و بر روی ستون id آن محدودیت identity قرار دهید.

Course(id: int, title: string)

15-به صورت دستی به جدول Course، 5 سطر داده وارد کنید سپس سطر پنجم را حذف کنید و سطر ششم را وارد کنید. ستون id چگونه عمل کرد؟

16-به صورت دستی بر روی ستون id از جدول Course محدودیت identity را به گونه ایی قرار دهید که از 950 شروع شود و به ازای هر id ، 10 عدد افزایش یابد.

17-به صورت دستی به جدول Course چهار سطر داده اضافه کنید.

3-3 گزارش کار

1.      به سوالات مطرح شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام شده در کلاس بر روی پایگاه داده­ایی به طراحی خودتان (متفاوت از پایگاه داده و جدول ایجاد شده در کلاس) بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین، به همراه تصاویر اسکرین­شات و توضیحات برای تمرینات بدون کد باشد.

 

 

 

 

 

 

 

 


4-1 مقدمه

در این آزمایش با دستورات DML آشنا می­شویم. اولین دستور مهم در این دسته از دستورات، دستور Select می­باشد که در این جلسه با نحوه­ی بازیابی داده­ها از جدول و قالب­های مختلف این دستور آشنا خواهیم شد.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      بنیادی­ترین دستورات DML را نام ببرید.

2.      ساده­ترین قالب دستور Select چیست؟

3.      برای تغییر برچسب یک فیلد در هنگام نمایش نتایج از چه کلمه­ی کلیدی استفاده می­شود.

4.      تفاوت کلمات کلیدی In و Between در دستور Select چیست؟

5.      از کلمه­کلیدی Distinct در دستور Select به چه منظور استفاده می­شود؟

6.      توابع جمعی مهم را نام ببرید. ورودی و خروجی هر تابع را مشخص کنید.

7.      تفاوت Having و Where در دستور Select چیست؟

8.      کاربرد کلمه­ی کلیدی Top در دستور Select چیست؟

4-2 دستور کار

1.      پایگاه داده­ایی(database) به نام UI964 ایجاد نمایید.

2.      در پایگاه داده­ی ساخته شده جداول زیر را ایجاد نمایید.

Student(id: int, name: string, average: float)

Course(id: int, name: string, prof: string)

Selection(st_id: int, co_id: int, grade:float)

 

 

 

 

3.      در جداول ساخته شده داده­های زیر را وارد نمایید:

Selection

 

Course

 

Student

grade

co_id

st-id

prof

name

id

average

name

id

18

20

10

Barani

DB

20

19.5

Ali

10

14

21

11

Zamanifar

OS

21

14

Ahmad

11

15

22

12

zamani

SW

22

15.5

Reza

12

12

20

13

 

18

Sara

13

11

21

14

10

zahra

14

9

22

10

 

19

20

11

16

21

12

15

22

13

14

20

14

 

13

21

10

8

22

11

 

قالب کلی دستور Select به صورت زیر است:

SELECT [ALL|DISTINCT] [TOP (<expression>) [PERCENT]]

<column list>

[FROM <source table(s)/view(s)>]

[WHERE <restrictive condition>]

[GROUP BY <column name or expression using a column in the SELECT list>]

[HAVING <restrictive condition based on the GROUP BY results>]

[ORDER BY <column list>]

4-2-1 Where

ü    در دستور Select، بخش بعد از کلمه Where مشخص کننده­ی شرط دستور می­باشد که این شرط بررسی­شده و نتیجه­ی آن در رکوردهای بازگشتی دستور منعکس می­شود. بعد از کلمه Where یک عبارت شرطی بیان می­شود که می تواند ترکیبی از شروط منطقی و حسابی باشد.

4.      دانشجویی با شماره ی 10 چه نمراتی اخذ کرده است؟

5.      کدام دانشجویان درس 21 یا 22 را با نمراتی بین 14 تا 16 پاس کرده­اند؟

4-2-2 As

ü    اگر بخواهیم برچسب نام یک فیلد را (هنگام نمایش نتایج پرس و جو) عوض کنیم می­توان از قالب زیر استفاده کرد.

Select نام فیلد Asبرچسب جدید

From نام جدول;

6.      داده­های جدول Course را با برچسب­های زیر بازیابی نمایید:

Course(CID, Title, prof)

4-2-3 IN

ü    از این کلمه­ی کلیدی در شرط وقتی استفاده می کنیم که مقدار یکی از فیلد ها را دقیقا تعیین کنیم. شما می­توانید بیش از یک مقدار را برای فیلد ها تعیین کنید و بین هر مقدار یک کاما بگذارید. مقادیر می توانند کاراکتر و عددی باشند .

SELECT <column_name>
FROM <table_name>

WHERE <column_name> IN ('value1', 'value2', ...)

ü    اگر از عبارت Not IN بجای IN استفاده شود مقادیری که مخالف مجموعه­ی تعیین شده هستند انتخاب می­شوند.

7.      کدام دانشجویان درس 21 را با نمراتی به جز 14 ، 15 ، 16 پاس کرده­اند؟

4-2-4 Between

ü    کلمه Between در شرط کمک می­کند تا بتوانیم یک بازه تعریف کنیم. در این حال تمام مقادیری که بین value1 و value2 باشند انتخاب می­شوند.

SELECT <column_name>
FROM <table_name>

WHERE <column_name> BETWEEN 'value1' AND 'value2‘

ü    اگر از عبارت Not Between استفاده شود تمام مقادیری که بین Value1 و Value2 نیستند انتخاب میشوند.

8.      کدام دانشجویان درس 22 را با نمره­ی بین 15 تا 20 پاس نکرده­اند؟

4-2-5 Like

ü    این کلمه نیز با کلمه where بکار می­رود. اساساً Like به شما اجازه می­دهد که جستجویی را بر مبنای عبارت باقاعده (Regular Expression) انجام دهید.

SELECT <column_name>
FROM <table_name>
WHERE <column_name> LIKE {PATTERN}

ü    اگر از عبارت Not Like استفاده شود، عملی عکس عبارت Like اتفاق می افتد.

9.      کدام دانشجویان نام آنها به a ختم می شود؟

4-2-6 Order By

ü    برای مرتب­سازی اطلاعات بازیابی شده بر حسب حروف یا اعداد موجود در یک ستون از عبارت ORDER BY استفاده می­کنیم .

SELECT <column_name>

FROM <table_name>

[WHERE <condition>]

ORDER BY <column_name> [ASC, DESC]

ü    ASC به معنای صعودی بودن (a to z) و DESC به معنای نزولی بودن است (z to a).پیش فرضش ASC است.

10.  دانشجویان را به ترتیب نمراتی که در درس 22 کسب کرده­اند به صورت صعودی مرتب کنید، در صورتی که دو نمره یکسان باشند برحسب id دانشجو مرتب شوند.

4-2-7 Distinct

ü    اگر بخواهیم اطلاعات تکراری بازیابی شده­ی ستونی نمایش داده نشوند باید از عبارت Distinct استفاده کنیم.

SELECT DISTINCT <Column_name> FROM <Table_Name>

11.  دانشجویان چه نمراتی اخذ کرده اند؟ (با حذف مقادیر تکراری)

4-2-8 Aggregation Functions

ü    در SQL می توان از توابع آماده­ی جمعی (محاسباتی و ریاضی) در دستور Select استفاده کرد. به عنوان مثال اگر بخواهیم میانگین مقادیر یک فیلد عددی را محاسبه کنیم و یا مثلاً تعداد رکوردهای بازگشتی از یک پرس­وجو را بدست آوریم می­توانیم از توابع آماده­ای که به همین منظور ایجاد شده­اند استفاده کنیم.

ü    مهم­ترین توابع جمعی مورد استفاده در SQL عبارتند از Count، Max، Min، Avg، Sum.

12.  میانگین نمرات در جدول انتخاب واحد را نمایش دهید.

13.  تعداد نمرات غیر تکراری در جدول انتخاب واحد را نمایش دهید.

4-2-9 Group By

ü    دستور Group By باعث می­شود تا اطلاعات بازیابی­شده بر اساس یک یا چند ستون گروه­بندی شوند.

SELECT <column_name1>, Function(<column_name2>)

FROM <table_name>

GROUP BY <column_name1>

14.  میانگین هر درس را نمایش دهید.

4-2-10 Having

         اگر بخواهیم بر روی گروه­های ایجادشده توسط Group By شرطی قرار دهیم، از عبارت Having استفاده می­کنیم.

SELECT <column_name1>, Function(<column_name2>)

FROM <table_name>

GROUP BY <column_name1>


HAVING (arithmetic function condition)

15.  میانگین نمرات دانشجوی 21 و 22 را نمایش دهید.

16.  میانگین نمرات دانشجویی که ‌مجموع نمراتش کمتر از 40 است را نمایش دهید.

4-2-11 Top

با استفاده از Top در دستور Select می­توان تعداد یا درصد مشخصی از سطرها را بازیابی نمود.

SELECT TOP (<expression>) [PERCENT] <column list>

FROM <source table>

17.  بدون استفاده از دستور Max مشخص کنید کدام دانشجو بالاترین نمره را کسب کرده­است.

4-3 گزارش کار

1.      به سوالات مطرح شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.

 

 


5 آزمایش پنجم: JOIN (CROSS، INNER، SELF)

5-1 مقدمه

در این آزمایش با مفهوم پیوند جداول و انواع پیوند بین دو جدول آشنا خواهیم شد.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      انواع پیوندهایی که می­توان بین جداول تعریف نمود را نام ببرید.

2.      Cross Join چگونه جداول را Join می­کند؟

3.      یک Cross Join چگونه به Inner Join تبدیل می­شود؟

4.      Inner Join چگونه جداول را Join می­کند؟

5.      شرط اصلی یک Inner Join چیست؟

6.      انواع Outter Join را نام برده و هریک را توضیح دهید.

5-2 دستور کار

ü    از دستورJoin برای پیوند جدول­ها در پایگاه داده­ها استفاده می­شود.

ü    انواع دستورات join عبارت­اند از:

·       Cross Join

·       Inner Join

·       Self-join

·       Outer Join

5-2-1 Cross Join

1.      یک Cross Join دو جدول درگیر در پیوند را در یک­دیگر ضرب کارتزین می­کند. به این صورت که تمام سطرهای جدول اول را با تمام سطرهای جدول دوم ترکیب می­کند. برای Cross Join نمودن دو جدول از دو ساختار زیر می­توان استفاده نمود:

ساختار 1:

SELECT <column_names>

FROM <table_name1>

CROSS JOIN <table_name2>

 

ساختار 2:

SELECT <column_names>

FROM <table_name1, table_name2,…>

 

·       تمرینات مطرح شده در این آزمایش را بر روی پایگاه داده­ی UI964 که در آزمایش چهارم ساخته­اید اجرا کنید.

1.      دو جدول دانشجو و درس را ضرب کارتزین کنید.

2.      سه جدول دانشجو، درس و انتخاب را ضرب کارتزین کنید

5-2-2           Inner Join

2.      در این Join پیوند دو جدول بر اساس مقادیر یک ستون صورت میگیرد. Inner join سطرهایی را بر می گرداند که در شرط Join صدق کنند و سطرهایی که در شرط صدق نمیکنند را حذف می کند. برای Inner Join نمودن دو جدول از سه ساختار زیر می­توان استفاده نمود:

ساختار 1:

SELECT <column_names>
FROM
<table_name1>
INNER JOIN
<table_name2>
ON table_name1.column_name=table_name2.column_name

ساختار 2:

SELECT <column_names>
FROM
<table_name1>
JOIN
<table_name2>
ON table_name1.column_name=table_name2.column_name

ساختار 3:

SELECT <column_names>
FROM
<table_name1, table_name2,…>
WHERE table_name1.column_name=table_name2.column_name

3.      هر دانشجویی (نام دانشجو) چه نمراتی اخذ کرده است؟

4.      هر دانشجو (نام دانشجو)کدام نمراتش از معدلش بیشتر است؟

5.      میانگین نمرات دانشجویان هر استاد را محاسبه کنید.

6.      هر دانشجویی چه دروسی را اخذ کرده است؟

7.      دانشجویان هر استاد را نمایش دهید.

8.      هر دانشجو (نام دانشجو) در کدام درس نمره ایی که کسب کرده از معدلش بیشتر است؟

9.      هر دانشجو (نام دانشجو) چه دروسی را اخذ نکرده­است؟

10.  میانگین نمرات کسب شده توسط هر دانشجو (نام دانشجو) را نمایش دهید.

11.  کدام دانشجو (نام دانشجو) در ترم جاری معدل بهتری نسبت به معدل کلش به دست آورده­است؟

12.  در هر درس کدام دانشجو (نام دانشجو) بالاترین نمره را کسب کرده­است؟

5-2-3 Self Join

Self Join یک جدول را با خودشJoin می­کند. از همان قالب­های Inner Join برای Self Join نمودن دو جدول استفاده می­شود با این تفاوت که تنها یک جدول درگیر این نوع پیوند است:

ساختار 1:

SELECT <column_names>
FROM
<table_name> as <alias_name1>
INNER JOIN
<table_name> as <alias_name2>
ON table_name1.column_name=table_name2.column_name

ساختار 2:

SELECT <column_names>
FROM
<table_name> as <alias_name1>
JOIN
<table_name> as <alias_name2>
ON
alias_name1.column_name= alias_name2.column_name

ساختار 3:

SELECT <column_names>
FROM
<table_name> as <alias_name1>, <table_name> as <alias_name2>
WHERE
alias_name1.column_name= alias_name2.column_name

1.      جدول زیر را ایجاد کنید و به سوالات مطرح شده پاسخ دهید.

mg_id

name

emp_id

2

Ali

1

1

Ahmad

2

1

Reza

3

1

Sara

4

2

Zahra

5

3

Mina

6

3

Hamed

7

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

14.  نام هر مدیر را به همراه تعداد کارمندانش نمایش دهید.

·       برای حل ادامه­ی تمرینات از پایگاه داده­ی UI964 استفاده کنید:

15.  معدل هر دانشجو را با سایر دانشجویان دو به دو مقایسه کنید و در جدولی نمایش دهید. در جدول ابتدا نام دانشجو با معدل بیشتر و سپس نام دانشجو با معدل کم­تر سپس معدل دانشجوی اول و در نهایت معدل دانشجوی دوم.

16.  مجموع نمرات هر دانشجو را با سایر دانشجویان دو به دو مقایسه کنید و در جدولی نمایش دهید. در جدول ابتدا نام دانشجو با مجموع نمرات بیشتر و سپس نام دانشجو با مجموع نمرات کم­تر سپس مجموع نمرات دانشجوی اول و در نهایت مجموع نمرات دانشجوی دوم.

17.  نمره ی کدام دانشجویان از نمره­ایی که دانشجوی شماره 14 در درس با آی دی 20 اخذ کرده­است، بیشتر است؟

18.  هر دانشجویی چه تعداد درس اخذ کرده­است؟

5-3 گزارش کار

1.      به سوالات مطرح شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.

 

 


6 آزمایش ششم: OUTER JOIN، INSERT، UPDATE، DELETE

6-1 مقدمه

در این آزمایش با ادامه­ی دستورات DML آشنا می­شویم. در دو آزمایش قبل با دستور Select و سه نوع Join بین جداول که به کمک این دستور می­توان ایجاد کرد به طور کامل آشنا شدیم. در این آزمایش با آخرین نوع Join یعنی Outer Join آشنا می­شویم و در ادامه به سایر دستورات باقی مانده در گروه DML خواهیم پرداخت.

در پایان این آزمایش شما باید بتوانید به سوال زیر پاسخ دهید:

1.      انواع Outer Join را نام برده و هریک را توضیح دهید.

6-2 دستور کار

6-2-1 Outer Join

ü    این نوع Join به سه دسته تقسیم می شود:

·       Left Outer join

·       Right Outer join

·       Full Outer join

1.      بر روی دو جدول Student و Selection هر سه نوع Outer Join را به کار ببرید و نتایج حاصل را بررسی کنید.

6-2-2 Insert

ü    ­از دستور Insert برای درج یک سطر یا چند سطر به یک جدول استفاده می­شود. قالب کلی دستور Insert به صورت زیر است:

INSERT [TOP ( <expression> ) [PERCENT] ] [INTO] <tabular object>

[(<column list>)]

[ OUTPUT <output clause> ]

{ VALUES (<data values>) [,(<data values>)] [, …n]

| <table source>

| EXEC <prodecure>

| DEFAULT VALUES

 

2.      به جدول Student سه سطر با داده­های زیر اضافه کنید.

average

name

Id

16.4

Mohammad

15

13

Hamed

16

15

Hossein

17

 

 

 

 

6-2-3 Update

ü    از دستور Update برای ویرایش داده های یک یا چند رکورد استفاده می شود. قالب کلی دستور Update به صورت زیر است:

UPDATE [TOP ( <expression> ) [PERCENT] ] <tabular object>

SET <column> = <value>[WRITE(<expression>, <offset>, <length>)]

[,<column> = <value>[.WRITE(<expression>, <offset>, <length>)]]

[ OUTPUT <output clause> ]

[FROM <source table(s)>]

[WHERE <restrictive condition>]

3.      به معدل علی یک نمره اضافه شود.

4.      از نمره ی درس دیتابیس که توسط احمد اخذ شده یک نمره کم شود.

5.      دانشجویی که میانگین نمراتش از پانزده بیشتر است یک نمره به معدلش اضافه شود.

6.      به کسانی که دارای معدل کل بالای شانزده هستند نیم نمره به نمره­ی درسSWی آن­ها اضافه کنید و در نهایت همه­ی مشخصات دانشجویان مشمول این شرط را نمایش دهید.

6-2-4 Delete

ü    از دستور Delete برای پاک کردن یک یا چند رکورد از جدول استفاده می­شود و ساختار کلی آن به صورت زیر است:

DELETE [TOP ( <expression> ) [PERCENT] ]

[FROM] <tabular object>

[OUTPUT <output clause> ]

[FROM <table or join condition>]

[WHERE <search condition> | CURRENT OF [GLOBAL] <cursor name>]

 

1.      از جدول Selection دانشجویان با نمرات کم­تر از 11 را حذف کنید.

2.      از جدول Student دانشجویی را حذف کنید که مجموع نمراتش از شصت کم­تر است.

3.      پنج نمره­ی پایین در جدول Selection را حذف کنید.

6-3 گزارش کار

3.      به سوالات مطرح شده در مقدمه پاسخ دهید.

4.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.

 

 

 

7 آزمایش هفتم: STORED PROCEDURE

7-1 مقدمه

در این آزمایش به بررسی نحوه­ی ایجاد و استفاده از روال­های ذخیره شده یا Stored Procedures می­پردازیم SP ها زیر­برنامه­هایی هستند که در بانک اطلاعاتی به عنوان یک شیء ذخیره می­شوند و در زمان مورد نیاز به درخواست کاربر استفاده می­شوند.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      مزایای استفاده از SP چیست؟

2.      برای مشاهده­ی لیست همه­ی روال­های سیستمی از چه مسیری باید وارد شویم؟

3.      برای مشاهده­ی و یا تغییر کد یک روال سیستمی چه باید کرد؟

4.      مسیر wizard ایجاد یک SP استاندارد چگونه است؟

7-2 دستور کار

انواع SP ها عبارت­اند از:

ü    SP های سیستمی

ü    SP های استاندارد

7-2-1 SP های سیستمی

در SQL تعداد زیادی روال ذخیره­شده وجود دارد که به آن­ها روال­های سیستمی می­گوییم. این روال­ها با SP_ شروع می­شوند.

1.      پایگاه داده­ایی به نام UI967 ایجاد کنید.

2.      کدهای زیر را اجرا کنید و نتیجه­ی هریک را بیان کنید.

-         SP_renamedb UI967,Test

-         SP_dbremove test

-         SP_helpdb

7-2-2 SP های استاندارد

ü    ساده­ترین ساختار یک روال بدون پارامترهای ورودی و خروجی به صورت زیر است:

CREATE PROCEDURE | PROC <proc name>

AS

<sql-code>

1.      روال به نام ShowCourses بنویسید که همه­ی دروس ارائه­شده را نمایش دهد.

ü    حال برای اجرای یک روال کافیست کد زیر را اجرا کنید و یا تنها نام روال ذخیره­شده را نوشته و اجرا کنید.

EXECUTE | EXEC <stored_procedure_name>

2.      روال ShowCourses در تمرین 1 را اجرا کنید.

ü    برای حذف یک روال از دستور زیر استفاده کنید.

DROP PROCEDURE <stored_procedure_name>

ü    در تعریف روال­های ذخیره­شده می­توانید پارامترهای ورودی و خروجی نیز برای آن­ها تعیین نمایید که برای این منظور از ساختار زیر استفاده می­شود.

CREATE PROCEDURE | PROC <proc name>

[<parameter name> <data type> [=<default value>] [OUT [PUT]] ]

AS

<sql-code>

3.      روال به نام CalculateAvg بنویسید که نام دانشجویی را دریافت می­کند و معدلش را محاسبه می­کند.

ü    برای فراخوانی روال دارای پارامتر ابتدا نام روال و سپس پارامترها (ورودی و خروجی) را وارد می­کنیم.

4.      روال CalculateAvg را به نحوی فراخوانی کنید که معدل دانشجویی به نام علی را محاسبه کند.

7-2-3 ساختار شرطی IF…ELSE

ü    از ساختار شرطی IF…ELSE در Sql نیز می­توان استفاده کرد که ساختار کلی آن به صورت زیر است.

IF <condition>

Begin

<sql-code>

End

Else

Begin

<sql-code>

End

5.      روالی به نام CalAvgAli بنویسید که نام شخصی را ازورودی دریافت می­کند. اگر نام شخص علی بود معدل ترم او را محاسبه می­کند در غیر این صورت معدل کل دانشجویان را محاسبه می­کند، سپس روال را اجرا کنید.

6.      روالی به نام CalAvgCourse بنویسید که نام درسی را به عنوان ورودی دریافت می­کند و میانگین نمرات اخذ شده در آن درس را محاسبه و حاصل را به برنامه اصلی بر می­گرداند، سپس روال را اجرا کنید و در برنامه­ی اصلی خروجی روال چاپ شود.

7.      روالی به نام GradeAndSum بنویسید که نام شخص و نام درسی را به عنوان ورودی می­گیرد و نمره­ی آن شخص در آن درس و مجموع نمرات کل آن شخص را محاسبه می­کند و حاصل را به برنامه اصلی بر می­گرداند، در نهایت روال را اجرا کنید.

7-2-4 حلقه­ی تکرار WHILE

از حلقه­ی تکرار WHILE در Sql نیز می­توان استفاده کرد که ساختار کلی آن به صورت زیر است.

 

WHILE <condition>

Begin

<sql-code>

End

8.      روالی بنویسید که دو عدد را به عنوان دو پارامتر دریافت می­کند و عدد اول را به توان عدد دوم می­رساند و خروجی را به برنامه اصلی بر می­گرداند، در نهایت روال را اجرا کنید و در برنامه­ی اصلی خروجی روال چاپ شود.

 

7-3 گزارش کار

1.      به سوالات مطرح­شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.

 


 

8 آزمایش هشتم: FUNCTION، TRANSACTION

8-1 مقدمه

در این آزمایش به بررسی نحوه­ی ایجاد و استفاده از Functionها و تفاوت آن­ها با SPها خواهیم پرداخت. در ادامه با تراکنش و مزایای استفاده از آن­ آشنا خواهیم­شد.

در پایان این آزمایش شما باید بتوانید به سوالات زیر پاسخ دهید:

1.      تفاوت Function و SP در SQL چیست؟

2.      مقدار برگشتی یک Function چند نوع می­تواند باشد؟

3.      خواص یک تراکنش چیست؟

4.      در SQL چند نوع تراکنش وجود دارد آن­ها را نام برده و توضیح دهید.

8-2 دستور کار

انواع Function ها در SQL عبارت­اند از:

ü    توابع داخلی

ü    توابع تعریف­شده توسط کاربر

8-2-1 توابع داخلی

در SQL تعدادی تابع آماده وجود دارد که به آن­ها توابع داخلی می­گوییم و شما می­توانید از آن­ها استفاده کنید.

1.      توابع داخلی زیر را اجرا کنید و نتیجه­ی هریک را بیان کنید.

-         Select USER

-         Select GETDATE()

-         Select HOST_NAME()

-         Select SUSER_NAME()

8-2-2 توابع تعریف­شده توسط کاربر

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

CREATE FUNCTION <function_name> ([<parameter name> <data type>])

RETURNS <data type>

AS

BEGIN

<sql-code>

RETURN <value>

END

1.      تابعی به نام AddTwoNumbers بنویسید که دو عدد را از ورودی دریافت و خروجی تابع، حاصل جمع آن دو عدد باشد.

ü    حال برای صدا زدن تابع فوق می­توانید از ساختار زیر استفاده کنید.

SELECT DBO.function_name([<parameters>])

2.      تابع AddTwoNumbers را اجرا کنید.

ü    اگر مقدار برگشتی تابع از نوع جدول باشد باید از ساختار زیر برای نوشتن آن استفاده کنیم.

CREATE FUNCTION <function_name> ([<parameter name> <data type>])

RETURNS Table

AS

RETURN <table>

3.      تابعی به نام ShowProfInf بنویسید که دانشجویان هر استاد را نمایش دهد.

ü    حال برای صدا زدن تابع فوق می­توانید از ساختار زیر استفاده کنید.

SELECT * FROM DBO.function_name([<parameters>])

4.      تابع ShowProfInf را اجرا کنید به نحوی که نام اساتید دانشجویی به نام ‘Ali’ را نمایش دهد.

8-2-3 TRANSACTION

ü    تراکنش یک یا چند دستور SQL مانند به روزرسانی، درج و یا حذف یک یا چندین سطر از داده ها که با همدیگر یک واحد منظقی از کار را شکل می دهند، می­باشد. این دستورات SQL که شکل دهنده­ی تراکنش هستند، نوعا کاملا مرتبط به هم هستند و اعمال وابسته به هم را انجام می­دهند. هر دستور در تراکنش قسمتی از یک کار را انجام می­دهد، اما برای تکمیل کار، اجرای همه­ی دستورات مذکور ضروری هستند.

ساختار کلی یک تراکنش به صورت زیر تعریف می­شود:

BEGIN TRAN | TRANSACTION [<transaction name>]

<sql-code>

COMMIT TRAN[<transaction name>] | ROLLBACK TRAN[<transaction name]

5.      در قالب تراکنش دو نمره از همه­ی دانشجویان کم کرده و در نهایت تراکنش Commit شود. تغییرات جدول را بررسی کنید.

6.      در قالب تراکنش معدل دانشجویی به نام علی صفر شود و در نهایت تراکنش RollBack شود. تغییرات جدول را بررسی کنید.

7.      تراکنشی طراحی کنید که دو عمل آپدیت انجام دهد اما کد آپدیت دوم دارای باگ باشد. بررسی کنید آیا عمل آپدیت اول جدول مورد نظر را تغییر داده­است؟

8.      تراکنشی طراحی کنید که دارای دو عمل آپدیت باشد، اگر هرکدام از عملیات آپدیت نتوانست بر روی هیچ سطری اثر گذارد کل تراکنش باید لغو شود.

ü    دستور SAVE TRANSACTION یک نقطه­ی ذخیره­سازی تغییرات یا savepoint در یک تراکنش ایجاد می­کند و وضعیت بانک اطلاعاتی را در موقعیت فعلی ذخیره کرده و به موقعیت ذخیره­شده، یک نام اختصاص می دهد.

SAVE TRAN | TRANSACTION [<save point name>]

9.      تراکنشی طراحی کنید که دو عمل درج انجام دهد اما عمل درج دوم را لغوکند. نتیجه­­ی اجرای تراکنش بر روی جدول را بررسی کنید.

10.  تراکنشی بنویسید که دانشجویی به نام علی با شماره دانشجویی و معدل 13 و 18 را در صورتی به جدول Student اضافه کند که چنین نام دانشجویی در جدول وجود نداشته باشد.

8-3 گزارش کار

1.      به سوالات مطرح شده در مقدمه پاسخ دهید.

2.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.


 

9-1 مقدمه

در این آزمایش با نحوه­ی نوشتن برنامه­های کوچک و مبتنی بر ویندوز به زبان سی شارپ در محیط visual studio و نحوه­ی اتصال آن­ها به دیتابیس (data base) آشنا خواهیم­شد و دستورات مختلفی از جمله درج، به روز رسانی، حذف و بازیابی که در آزمایش­های قبلی با آنها آشنا شدیم را بر روی دیتابیس از طریق برنامه اعمال خواهیم نمود.

در پایان این آزمایش شما باید بتوانید به سوال زیر پاسخ دهید:

5.      مراحل اتصال C# به SQL را به صورت کامل توضیح دهید.

9-2 دستور کار

ü    مراحل اتصال یک برنامه­ی C# به SQL عبارت است از:

1.    Create A Connection

2.    Create A Command

3.    Create A DataReader

4.    Specify connection string

5.    Specify Connection for the Command

6.    Specify the CommandText for Command

7.    Add values to command parameters (if any).

8.    Open the Connection

9.    Execute DataReader

10.                       Read every row from the result set

11.                       Close the Reader

12.                       Close the Connection

که کد هر مرحله در C# عبارت است از:

1.    SqlConnection connection = new SqlConnection();

2.    SqlCommand command = new SqlCommand();

3.    SqlDataReader reader;

4.    connection.ConnectionString= "Data Source=(local); Initial Catalog=AdventureWorks2008; Integrated Security=SSPI";

5.    command.Connection = connection;

6.    6.command.CommandText = "SELECT JobTitle, BusinessEntityID FROM HumanResources.Employee";

7.    //…

8.    connection.Open();

9.    reader = command.ExecuteReader();

10.                       while (reader.Read()) {

string jobtitle = reader[" JobTitle "].ToString();

int id= Convert.ToInt32(reader[" BusinessEntityID "]);

List1.Items.Add(String.Format("{0},{1}", jobtitle,id));

}

11.                       reader.Close();

12.                       connection.Close();

1.     برنامه­ایی بنویسید که دارای یک لیست باکس و یک دکمه به نام نمایش باشد. با کلیک بر روی دکمه، کلیه­ی داده­های موجود در جدول Student در لیست باکس نمایش داده شود.

2.     برنامه­ایی بنویسید که دارای یک لیست باکس، دو تکست باکس به نام­های name و id، یک دکمه به نام درج باشد. به محض اجرای برنامه تمام اطلاعات جدول Student در لیست باکس نمایش داده شود و با نوشتن نام و شماره دانشجویی یک دانشجوی جدید در تکست باکس­ها و کلیک بر روی دکمه­ی درج، دانشجوی جدید به جدول دانشجو اضافه و لیست باکس تازه­سازی شده و اطلاعات را مجددا نمایش دهد.

9-3 گزارش کار

3.      به سوالات مطرح شده در مقدمه پاسخ دهید.

4.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.

 

تاریخ به روز رسانی:
1401/11/16
تعداد بازدید:
480
Powered by DorsaPortal