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

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

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

 

 

 

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

 

نسخه 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.      گزارش کاملی از تمرینات انجام شده در کلاس بنویسید. گزارش باید دارای کد و توضیحات کامل در مورد کد هر تمرین باشد.