Top Banner
راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮراتSQL ﺑﻪ اﻧﻀﻤﺎم ﻣﺜﺎل ﻫﺎيSQL Server اﯾﻦ ﮐﺘﺎب در ﻣﻮرد ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده راﺑﻄﻪ اي ﻣﻌﺮوف ﻣﺜﻞMS Access ، MS SQL Server ، MySQL ﺗﻮﺿﯿﺢ داده اﺳﺖ و ﺑﺮاي ﻫﺮ ﮐﺪام دﺳﺘﻮرات و ﻣﺜﺎﻟﻬﺎي ﻣﺮﺑﻮﻃﻪ را آورده اﺳﺖ. ﻣﺜﺎﻟﻬﺎي ﺿﻤﯿﻤﻪ ﺷﺪه ﻣﺮﺑﻮط ﺑﻪSQL Server 2008 ﻫﺴﺘﻨﺪ ﮐﻪ در ﻣﺤﯿﻂManagement Studio و ﺑﺎ ﭘﺎﯾﮕﺎه داده آﻣﻮزﺷﯽNorthWind ﺗﺴﺖ ﺷﺪ ه اﻧﺪ. ﻧﮕﺎرش اول ﭼﺎپ ﻋﻤﻮﻣﯽ ﻏﯿﺮ راﯾﮕﺎن اﯾﻦ ﮐﺘﺎب ﺑﻪ ﻫﺮ ﻧﺤﻮي ﻏﯿﺮ ﻣﺠﺎز اﺳﺖ اﺳﺘﻔﺎده از ﻣﻄﺎﻟﺐ ﮐﺘﺎب ﺑﺎ ذﮐﺮ ﻣﻨﺒﻊ ﺑﻼﻣﺎﻧﻊ اﺳﺖ
102

SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

Sep 19, 2018

Download

Documents

dokhue
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

SQLراهنماي جامع دستورات SQL Serverبه انضمام مثال هاي

، MS Access ،MS SQL Serverهاي پایگاه داده رابطه اي معروف مثل این کتاب در مورد بیشتر سیستمMySQLمثالهاي ضمیمه شده . توضیح داده است و براي هر کدام دستورات و مثالهاي مربوطه را آورده استو با پایگاه داده آموزشی Management Studio هستند که در محیط SQL Server 2008مربوط به

NorthWindه اندتست شد.

نگارش

اول

به هر نحوي غیر مجاز استاین کتاب چاپ عمومی غیر رایگان استفاده از مطالب کتاب با ذکر منبع بالمانع است

Page 2: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

مطالبفهرست

فصل اول

SQL….…………………………………………………………......................................………...............1مقدمه اي بر

٢......................………….................................………………………………………………..…………...…SQLگرامر

SQL……...…………………………………………………………………........................................ .4در SELECTعبارت

SELECT DISTINC…………….......……………………………………………….. ...........................................6عبارت

SQL……………………………………………………………………... ...........................................7در WHEREعبارت

OR……………………………………………………………………... ..............................................9 وAND ملگرهايع

SQL……………………………………………………………...................................... ....11در ORDER BYکلمه کلیدي

SQL…………………………………………………………….............................................13در INSERT INTO عبارت

UPDATE…………………………………………………………………...………............................................ ..14عبارت

DELETE……………………………………………………………………………................................................16 عبارت

فصل دوم

SQL..............…….....................................................................................................18در TOPعبارت

SQL..............……. .....................................................................................................20در LIKEعملگر

SQL..............……........................................................................................22کترهاي جایگزین شونده کارا

SQL..............…….........................................................................................................24در INعملگر

SQL............................................................……. ..............................................25در BETWEENعملگر

Alias درSQL...........................................................................……................................................27

JOIN ها درSQL........................................................................……................................................28

SQL.................................................……................................................29در INNER JOIN کلمه کلیدي

SQL....................................................……................................................31در LEFT JOIN کلمه کلیدي

SQL.................................................……................................................32درRIGHT JOIN کلمه کلیدي

SQL...................................................……................................................33در FULL JOIN کلمه کلیدي

Page 3: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

SQL...............................................................……................................................35درUNIONعملگر

SQL......................................................……................................................37در SELECT INTOعبارت

SQL..........................................……................................................39در CREATE DATABASE عبارت

SQL...................................................……................................................39در CREATE TABLE عبارت

40................................................……..............................................................................محدودیت ها

NOTمحدودیت NULL................................................................……................................................40

UNIQUE...................................................................……................................................41محدودیت

SQL..................................................……...............................................43در PRIMARY KEY محدودیت

FOREIGN KEY............................................................……...............................................45تیمحدود

CHECK..............……........................................................................................................47تیمحدود

SQL..............…….........................................................................................49در DEFAULTتیمحدود

SQL..............……................................................................................50در CREATE INDEXدستورات

DROP INEX ،DROP TABLE وDROP DATABASE درSQL......….........................................................51

ALTER TABLE................................................................……................................................52دستور

SQL..............…….................................................................................54در AUTO INCREMENTلدیف

View ها درSQL........................................................................……...............................................58

SQL.......................................................................……...............................................60در خیتارتوابع

NULL..............................................................................……...............................................63مقدار

SQL......................................................................……............................................ ..65در NULLتوابع

SQL.......................................................................……...............................................66درهادادهنوع

سومفصل

SQL............................................................................... .......................................................74توابع

AVG().......................................................................... ..........................................................74تابع

SQL........................................................................................... ..........................76در ()COUNTتابع

Page 4: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

FIRST()......................................................................................................... ..........................78تابع

LAST()........................................................................................................... .........................79تابع

MAX().............................................................................. ......................................................80تابع

MIN()................................................................................................................... .................81تابع

SUM()........................................................................................................................ ............82تابع

SQL...................................................................................................... ...........83در Group Byدستور

Having...................................................................................................................... ..........85عبارت

UCASE()......................................................................... ........................................................86تابع

LCASE()................................................................................................ ..................................87تابع

MID()................................................................................... ..................................................88تابع

LEN()................................................................................... ...................................................89تابع

ROUDN().............................................................................. ..................................................90تابع

NOW()................................................................................ ..................................................90تابع

FORMAT()......................................................................... ...................................................91تابع

ضمیمه

SQL................................................................................ ..................................93مرجع سریع دستورات

SQL............................................................................................. ................................96هاستینگ در

97................... .................................................................را آموختید، حاال چکاري باید انجام دهید؟SQLشما

Page 5: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

پیشگفتار

وعملیاتمنظوربهراSQLزبانوکردندمیکارآرسیستمهايدادهپایگاهسیستمرويبرامبیآيشرکتازگروهی70دههدر

.کردندایجادآرسیستمدرشدهذخیرهاطالعاتبازیابی

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

-گراشیمدلسمتبهSQL زبان. رودمیکاربهآنهارويبرعملیاتنیزوهادادهبازیابیوتغییرایجاد،برايکهايرابطه

طراحی) ايهرابطهايدادهپایگاهدرهادادهازگیريگزارش(محدوديوویژهکارهايبرايSQL. استکردهپیشرفتنیزايرابطه

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

MS Access ،MS SQL Server ،MySQLپایگاه داده رابطه اي معروف مثل مدیریت این کتاب در مورد بیشتر سیستم هاي

SQL Serverمثالهاي ضمیمه شده مربوط به . رات و مثالهاي مربوطه را آورده استست و براي هر کدام دستواتوضیح داده

پایگاه داده .تست شده اندNorthWindو با پایگاه داده آموزشی Management Studio هستند که در محیط 2008

NorthWind دریافت کنیداز اینجامی توانید نیز را.

ساده و مطلب را تا حد امکانتالش کردیم چندهر. می باشدW3Schoolsسایت از SQLدوره آموزشی مطالب این کتاب، ترجمه

از خوانندگان محترم تقاضا می کنیم با ارسال نظرات این کتاب وجود دارد که اما بی شک اشکاالتی در امر ترجمه بیان کنیمروان

.خود ما را در بهبود بخشیدن این کتاب یاري کنند

:مترجمان

[email protected]برات جوادي

[email protected]انلوصفورا ایز

[email protected]فاطمه زارعی

[email protected]آسیه قدیمی

91بهار

Page 6: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

1

SQLمقدمه اي بر

SQL داده استهاي یک زبان استاندارد براي دسترسی و دستکاري پایگاه.

SQLچیست؟

·SQL مخففStructured Query Language ساخت یافته استان پرس و جوي بزیا·SQL دهدداده را میهايدستکاري به پایگاهبه شما اجازه دسترسی و·SQLاستانداردیکANSI)است) ملی آمریکاسه استانداردموس

؟می تواند انجام دهدSQLچه کارهایی

·SQLکندسریع اجرا می تواند پایگاه داده پرس و جو را در برابر یکیک·SQLواکشی کندپایگاه داده را از یکاده تواند دمی·SQLکنددرجایی را در پایگاه داده تواند رکوردهمی·SQLر پایگاه داده به روز کندیی را دتواند رکوردهامی·SQLردهاي یک پایگاه داده را حذف کندتواند رکومی·SQLبوجود آورديجدیدهاي پایگاه داده تواندمی·SQLپایگاه داده بوجود آوردا در راي جدیديتواند جدولهمی·SQLبسازددر پایگاه داده رویه هاي ذخیره شده تواند می·SQLایگاه داده بوجود آوردیی را در پتواند نماهامی·SQLیم کندمجوز تنظرویه هاي ذخیره شده و نماها براي جداول،تواند می

SQLاستاندارد هست ولی...

.وجود دارندSQLزبان اما نسخه هاي مختلفی از استاندارد است ANSIیکSQLاگرچه

، SELECT ،UPDATE ،DELETE ،INSERTمثل(ي اصلیفرمانهادست کم ازهمه آنها،ANSIبا این حال، براي موافقت با

WHERE (به روش مشابهی پشتیبانی می کنند.

پایهدستورات -اولفصل

Page 7: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

2

!دارندSQLهاي استانداردعالو ه بر راخودشانیاختصاصضمیمه هاي نیز SQLبیشتر برنامه هاي پایگاه داده :نکته

وب سایت تاندر SQLاز استفاده

:داشتنیاز خواهیدزیرموارد به دهد،نمایش ک پایگاه داده یرا از براي ساختن یک وب سایت که بعضی داده

)MS Access ،SQL Server ،MySQLمثل (RDBMSبرنامه پایگاه داده یک ·ASP یاphp اسکریپتی سمت سرور، مثلیک زبان ·

·SQL·HTML / CSS

RDBMS

RDBMSمخففRelational Database Management System استرابطه اي داده سیستم مدیریت پایگاه یا.

RDBMSبرايپایه ايSQLیستمهاي پایگاه داده جدید از قبیل و براي همه سMS SQL Server ،IBM DB2 ،Oracle ،MySQL وMicrosoft Accessاست.

.شود، ذخیره می شوندمینامیده اشیاء پایگاه داده که جداول در RDBMS داده در

.شودسطرها میها وو شامل ستوناست یکپارچه مرتبطدادهمجموعیک جدول

SQLگرامر

پایگاه دادهجداول

) "Customers"یا "Orders"مثل (جدول بوسیله یک نامهر.استول چند جدیک یا اغلب شامل دادهپایگاه یک .هستنددادههمراه) سطرها(جداول شامل رکوردها .شودشناسایی می

:آمده است”Persons“به نام جدول مثالی از یک زیردر

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Page 8: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

3

.است) Cityو P_Id ،LastName ،FirstName ، Address(و پنج ستون) براي هر شخص(جدول باال شامل سه رکورد

SQLعبارات

.انجام می شوندSQL عباراتانجام دهید، با نیاز دارید در یک پایگاه داده ی کهعملیاتبیشتر

:کندهمه رکوردها را از جدول اشخاص انتخاب میزیرSQL جمله

SELECT * FROM Persons

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

...داشته باشیدبه خاطر

· SQLحساس به حروف کوچک و بزرگ نیست.

؟SQLسمیکالون بعداز عبارات

.داندالزم میرا SQLمیکالون در انتهاي هر جملههاي پایگاه داده یک سبیشتر سیستم

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

قرار دهیم اما SQLسمیکالون بعد از هر عبارت مجبور نیستم یک استفاده می کنیم و SQL Server 2000و MS Accessما از .بعضی برنامه هاي پایگاه داده شما را مجبور به استفاده آن می کنند

DML وDDL درSQL

SQLزبان دستکاري داده : دو بخش تقسیم شودند بهمی توا)DML (و زبان تعریف داده)DDL.(

:SQLزبان دستکاري داده کردن از بخش بروزدستورات پرس و جو و

·SELECT-استخراج داده از یک پایگاه داده·UPDATE-بروز کردن داده در یک پایگاه داده·DELETE -حذف داده از یک پایگاه داده·INSERT INTO-درج یک داده جدید در یک پایگاه داده

Page 9: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

4

همچنین کلیدهاي فهرست را تعریف می کند، ارتباط .پایگاه داده اجازه ساخت یا حذف را می دهدجداولبه SQLاز DDLبخش :ازعبارتندSLQدر DDLمهمترین عبارات .بین جداول را تعیین می کند و محدودیت ها بین جداول را اعمال می کند

·CREATE DATABASE-یک پایگاه داده جدیدساخت·ALTER DATABASE- پایگاه دادهاصالح یک·CREATE TABLE-یک جدول جدیدساخت·ALTER TABLE - جدولاصالح یک·DROP TABLE- جدولیک حذف·CREATE INDEX -کلید جستجو(کلید جستجویک ساخت(·DROP INDEX-حذف یک فهرست

SQLدر SELECTعبارت

.توضیح خواهد داد* SELECTوSELECT این فصل در مورد

SQLدر SELECTعبارت

.شودبراي انتخاب داده از یک پایگاه داده استفاده میSELECT عبارت

.می شودنامیدهجه نتی-جدولکه در یک جدول ذخیره می شود نتیجه

SELECT درSQLگرامر

SELECT column_name(s)FROM table_name

و

SELECT * FROM table_name

.استselectمثلSELECT. نیستکوچک حساس به حروف بزرگ وSQL :تذکر

SQL درSELECTیک مثال

Page 10: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

5

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.جدول انتخاب کنیمازرا "FirstName"و"LastName"با نامهایی خواهیم محتواي ستوناکنون می

:بریمرا بکار میزیرSELECT عبارت

SELECT LastName, FirstName FROM Persons

:خواهد شدنتیجه اینگونه

LastName FirstName

Hansen Ola

Svendson Tove

Pettersen Kari

* SELECT مثال

.را انتخاب کنیم"Persons"خواهیم همه ستونهاي جدول اکنون می

:بریممی را بکار زیرSELECT عبارت

SELECT * FROM Persons

!باشدمیهاسریع براي انتخاب کل ستونروشی)*(ستاره کاراکتر : توجه

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Page 11: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

6

نتیجه- پیمایش در جدول

-Move-Toمثل ؛دندهمیجدول نتیجهدر را اجازه پیمایش با توابع برنامه نویسی هاي نرم افزاري پایگاه داده بیشتر سیستم

First-Record ،Get-Record-Content ،Move-To-Next-Recordغیرهو

فراخوانی تابع، با داده به دسترسی در مورد براي یادگیري . به عنوان قسمتی از این آموزش نیستنداز این قبیل توابع برنامه نویسی.بازدید کنیدماPHPدوره آموزشی یاADOیآموزشدروه از لطفا

SQL SELECT DISTINCTعبارت

. توضیح خواهد دادSELECT DISTINCT این فصل در مورد جمله

SQLدر SELECT DISTINCT عبارت

خواهید گاهی اوقات میامااین یک مشکل نیست . محتواي تکراري داشته باشدمقدار کن است هاي یک جدول ممبرخی از ستون.را لیست کنیدهستندکه در یک جدول )متمایز(مختلفیمقادیرفقط

.استفاده شود)متفاوت(متمایزمقادیربراي برگرداندن فقطتواندمیDISTINCTکلمه کلیدي

SQLدر SELECT DISTINCT گرامر

SELECT DISTINCT column_name(s)FROM table_name

SELECT DISTINCT مثال

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Page 12: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

7

.را انتخاب کنیم"City"ی بنامستوناز متفاوت مقادیراال تنهاخواهیم در جدول بحال می

: کنیماستفاده میزیرSELECT از جمله

SELECT DISTINCT City FROM Persons

:نتیجه اینگونه خواهد شد

City

Sandnes

Stavanger

SQLدر WHEREعبارت

. شوداستفاده میبراي فیلتر کردن رکوردها WHERE عبارت

.شودده میااستف،دندهانجام میرا استخراج آن رکوردهایی که یک معیار خاصی براي فقط WHERE عبارت

SQLدر WHERE گرامر

SELECT column_name(s)FROM table_nameWHERE column_name operator value

WHEREعبارتمثال

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.انتخاب کنیمرا از جدول باالکنندزندگی می”Sandnes“خواهیم فقط اشخاصی که در شهراکنون می

:کنیماستفاده میزیرSELECT از جمله

SELECT * FROM PersonsWHERE City='Sandnes'

Page 13: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

8

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

نقل قولها در اطراف فیلدهاي متنی

SQLهاي دوتایی می پذیرندپایگاه داده نقل قولبیشتر سیستمهاي (بردمتنی بکار میمقادیرهاي تکی در موردنقل قول(.

. ها ضمیمه شوندنقل قولاخلعددي دمقادیرنباید اما

:متنیبراي مقادیر

This is correct:

SELECT * FROM Persons WHERE FirstName='Tove'

This is wrong:

SELECT * FROM Persons WHERE FirstName=Tove

:راي مقادیر عدديب

is is correct:Th

SELECT * FROM Persons WHERE Year=1965

This is wrong:

SELECT * FROM Persons WHERE Year='1965'

WHERE در عبارت ي مجازعملگرها

:استفاده شوندWHERE با عبارتند توانمیزیرعملگرهاي

توضیحات عملگر

مساوي =

نابرابر <>

ازبزرگتر >

Page 14: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

9

ازکمتر <

مساويبزرگتر >=

مساويکوچکتر <=

بین یک دامنه مشمول BETWEEN

الگویک جستجوي LIKE

براي یک ستون،براي تعیین کردن مقادیر چندگانه ممکن IN

.نوشته شود=!ممکن است به عنوان<>عملگر SQLنسخه هاي در بیشتر :نکته

OR وAND عملگرهاي

.استفاده می شوندیک شرطازمبنی بر بیشرکوردهاي فیلتر براي OR و AND عملگرهاي

OR وAND عملگرهاي

.دناگر هر دو شرط اولی و دومی درست باشرا نمایش می دهد؛ یک رکورد ANDعملگر

.اگر یکی از دو شرط اولی یا دومی درست باشدرا نمایش می دهد؛ یک رکورد OR عملگر

AND مثال عملگر

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.انتخاب کنیماست را ”Svendson“نام خانوادگی شانو ”Tove“نامشانخواهیم فقط اشخاصی کهاکنون می

: کنیماستفاده میزیرSELECT جملهاز

Page 15: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

10

SELECT * FROM PersonsWHERE FirstName='Tove'AND LastName='Svendson'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

OR مثالی از عملگر

.است را انتخاب کنیم”Ola“یا ”Tove“نامشانخواهیم فقط اشخاصی که اکنون می

: کنیماستفاده میزیرSELECT جملهاز

SELECT * FROM PersonsWHERE FirstName='Tove'OR FirstName='Ola'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

ORو ANDترکیب

).کنیدپرانتزها براي عبارات پیچیده استفاده از (را ترکیب کنیدORوANDتوانید میهمچنین

.انتخاب کنیماست را”Ola“یا ”Tove“نامشانو ”Svendson“نام خانوادگی شانخواهیم فقط اشخاصی که اکنون می

:یمکناستفاده میزیرSELECT جملهاز

SELECT * FROM Persons WHERELastName='Svendson'AND (FirstName='Tove' OR FirstName='Ola')

:نتیجه اینگونه خواهد شد

Page 16: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

11

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

SQLدر ORDER BYکلمه کلیدي

.می شوداستفاده ن جدول نتیجه براي مرتب کردORDER BYکلمه کلیدي

ORDER BYکلمه کلیدي

.می شوداستفاده براي مرتب کردن جدول نتیجه توسط یک ستون مشخص، ORDER BYکلمه کلیدي

.صعودي مرتب می کندبه صورت پیش فرض رکوردها را ORDER BYکلمه کلیدي

.استفاده کنیدDESCکلیدي اگر می خواهید رکوردها را نزولی مرتب کنید، می توانید از کلمه

SQLدر ORDER BY گرامر

SELECT column_name(s)FROM table_nameORDER BY column_name(s) ASC|DESC

ORDER BY مثال

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Tom Vingvn 23 Stavanger

.کنیممرتب بوسیله نام خوانوادگی شان آنها را خواهیم میاما ؛خواهیم همه اشخاص را در جدول باال انتخاب کنیمحال می

Page 17: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

12

:کنیماستفاده میزیرSELECT جمله از

SELECT * FROM PersonsstNameORDER BY La

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

4 Nilsen Tom Vingvn 23 Stavanger

3 Pettersen Kari Storgt 20 Stavanger

2 Svendson Tove Borgvn 23 Sandnes

ORDER BY DESC مثال

به صورت نزولیرا بوسیله نام خوانوادگی شانانهاخواهیم میص را در جدول باال انتخاب کنیم؛ اما خاخواهیم همه اشحال می.مرتب کنیم

: کنیماستفاده میزیرSELECT از جمله

SELECT * FROM PersonsORDER BY LastName DESC

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Tom Vingvn 23 Stavanger

1 Hansen Ola Timoteivn 10 Sandnes

Page 18: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

13

SQLدر INSERT INTO عبارت

.شودجدول استفاده میدرسطر جدیدي درجبراي INSERT INTOعبارت

SQLدر INSERT INT عبارت

.شودجدول استفاده میدرسطر جدیدي درجبراي INSERT INTOعبارت

SQLدر INSERT INTO گرامر

. ممکن استبه دو شکلINSERT INTO عبارتنوشتن

:کند، فقط مقادیرشان را مشخص می کندمشخص نمیرا هد شدادر آنجا درج خوکه داده شکل اول اسامی ستونهایی

INSERT INTO table_name)…,alue2, value3VALUES (value1, v

.کندمشخص میخواهند شد را درج که مقادیري هم اسامی ستون و همشکل دوم

INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...)

SQLدر INSERT INTO مثال

: را داریمزیر”Persons“ جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

. کنیممیدرجPersons اکنون سطر جدیدي از جدول

: کنیماستفاده میزیرSQL جمله از

INSERT INTO Personskken 2', 'Stavanger')VALUES (4,'Nilsen', 'Johan', 'Ba

Page 19: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

14

:اکنون شبیه این است”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

معینهاي ستوندر درج داده فقط

.دیاضافه کنمشخص ستون هاي مچنین ممکن است فقط داده ها را دره

"FirstName"و"P_Id" ،"LastName"هاي اما فقط داده را به ستوناضافه خواهد کرد؛زیر سطرجدیدي راSQL عبارت

.کنداضافه می

INSERT INTO Persons (P_Id, LastName, FirstName)em', 'Jakob')VALUES (5, 'Tjess

:اکنون شبیه این است”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

5 Tjessem Jakob

UPDATEعبارت

.شودجدول استفاده میرکوردهاي یک براي آپدیت کردن UPDATE جمله

UPDATE عبارت

.شودیک جدول استفاده میموجود براي آپدیت کردن رکوردهاي UPDATE جمله

Page 20: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

15

SQL UPDATE گرامر

UPDATE table_nameSET column1=value, column2=value2,...WHERE some_column=some_value

کند که رکورد یا رکوردهایی باید به روز تعیین میWHERE عبارت. توجه کنیدUPDATEدر گرامر WHEREبه عبارت :کتهن!کنید همه کوردها بروز خواهند شدرا حذف WHERE اگر عبارت . شوند

SQL UPDATE مثال

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

5 Tjessem Jakob

.کنیمآپدیت را ”Persons“جدولرا در"Tjessem, Jakob" می خواهیم شخصاکنون

: کنیماستفاده میزیرSQL از جمله

E PersonsUPDATSET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' AND FirstName='Jakob'

:اکنون شبیه این است”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

5 Tjessem Jakob Nissestien 67 Sandnes

Page 21: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

16

SQLدر UPDATE اخطار

:مثل این،را در مثال باال حذف کرده باشیمWHEREاگر ما عبارت.دقت کنیدمی کنید، بروز را زمانیکه رکوردها

UPDATE Personssestien 67', City='Sandnes'SET Address='Nis

:شبیه این می شود”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Nissestien 67 Sandnes

2 Svendson Tove Nissestien 67 Sandnes

3 Pettersen Kari Nissestien 67 Sandnes

4 Nilsen Johan Nissestien 67 Sandnes

5 Tjessem Jakob Nissestien 67 Sandnes

DELETE عبارت

. شودبراي حذف رکوردهاي یک جدول استفاده میDELETE جمله

DELETE عبارت

.شود جدول استفاده مییک براي حذف سطرهاي DELETE جمله

SQL DELETE گرامر

DELETE FROM table_nameWHERE some_column=some_value

رکوردها یا رکوردهایی باید حذف کند کهتعیین میWHEREعبارت . توجه کنیدDELETE در گرامرWHEREتبه عبار:نکته.را حذف کنید همه رکوردها حذف خواهند شدWHEREاگر شما عبارت . شوند

SQLدر DELETE مثال

:"Persons"جدول

Page 22: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

17

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

5 Tjessem Jakob Nissestien 67 Sandnes

.کنیمحذف "Persons" جدول را از"Tjessem, Jakob" می خواهیم شخصاکنون

: یمکناستفاده میزیرSQL از جمله

DELETE FROM PersonsWHERE LastName='Tjessem' AND FirstName='Jakob'

:اکنون شبیه این است”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger

حذف همه سطرها

جدول، ویژگی ها و فهرست هاي به این معنی که ساختار. جدول ممکن استحذف بدون ها در یک جدول حذف کردن همه سطر.خواهند ماندباقی دست نخورده

DELETE FROM table_name

or

DELETE * FROM table_name

!خنثی کنیدتوانید را نمیعبارتاین .کنید خیلی مراقب باشیدحذف میوقتی رکوردها را:نکته

Page 23: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

18

SQL در TOP عبارت

.استفاده می شود براي برگرداندن، براي تعیین تعدادي از رکوردهاSQL در TOPعبارت

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

.عملکرد را تحت فشار قرار دهد

.پشتیبانی نمی کنندTOPعبارتازهاي پایگاه داده ستم سیهمه ي:نکته

SQL Server گرامر

SELECT TOP number|percent column_name(s)FROM table_name

MySQL وOracle درSELECT TOPمعادل

MySQL گرامر

SELECT column_name(s)FROM table_nameLIMIT number

:ل مثا

SELECT *onsFROM Pers

LIMIT 5

Oracle گرامر

SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number

:ل مثا

دستورات پیشرفته-فصل دوم

Page 24: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

19

SELECT *FROM PersonsWHERE ROWNUM <=5

SQLدر TOPمثال

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Tom Vingvn 23 Stavanger

.اکنون می خواهیم فقط دو رکورد اول از جدول باال را انتخاب کنیم

:می کنیمزیر استفادهSELECTاز دستور

SELECT TOP 2 * FROM Persons

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

SQLدر TOP PERCENTمثال

:”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Tom Vingvn 23 Stavanger

.دول باال را انتخاب کنیماز ج%50اکنون می خواهیم فقط

:یم زیر استفاده می کنSELECTاز دستور

SELECT TOP 50 PERCENT * FROM Persons

Page 25: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

20

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

SQLدر LIKE عملگر

شده در یک ستون استفاده می ست که براي جستجوي یک الگوي تعییناعبارتی، WHEREدر یک عبارت LIKE عملگر.شود

LIKE عملگر

.استفاده می شود براي جستجوي یک الگوي تعیین شده در یک ستون LIKEعملگر

SQL در LIKE گرامر

SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern

LIKE مثال عملگر

:”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.روع می شود را انتخاب کنیمش"s"اکنون می خواهیم از جدول باال اشخاصی را که شهر زندگی آن ها با

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE City LIKE 's%'

.شود قبل و بعد از الگو استفاده ) ناپیدا در الگوحروف ( شوندهکاراکترهاي جایگزینبراي تعریف می تواند "%"عالمت

:نتیجه اینگونه خواهد شد

Page 26: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

21

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.پایان می یابد"s"اشخاصی را انتخاب کنیم که شهر زندگی آنها با"persons"می خواهیم از جدول سپس

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE City LIKE '%s'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

.باشد"tav"اشخاصی را انتخاب کنیم که شهر زندگی آنها شامل الگوي "persons"جدول سپس می خواهیم از

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE City LIKE '%tav%'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

3 Pettersen Kari Storgt 20 Stavanger

اشخاصی که شهر زندگی آنها شامل الگوي ”Persons“می توانیم از جدول NOTهمچنین با استفاده از کلمه کلیدي “tav”نیست را انتخاب کنیم.

:زیر استفاده می کنیم SELECTاز دستور

SELECT * FROM PersonsKE '%tav%'WHERE City NOT LI

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

Page 27: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

22

SQLکاراکترهاي جایگزین شونده

.ه شوندر یک پایگاه داده می توانند استفادجستجوي داده دهنگام،SQLکاراکترهاي جایگزین شونده

SQLکاراکترهاي جایگزین شونده

.را جایگزین کندیک یا چند کاراکتر می تواند ر یک پایگاه دادهجستجوي داده دهنگام،SQLکاراکترهاي جایگزین شونده

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

:استفاده کردSQLر زیر می توان دکاراکترهاي جایگزین شوندهاز

تعریف کاراکترهاي جایگزین شونده

یا کاراکترهاي بیشتریک جانشین براي صفر %

یک جانشین براي دقیقا یک کاراکتر _

)لیست کاراکترها( Charlist درکاراکتر تنهاهر [charlist]

نباشد Charlist تنها که درهرکاراکتر [^charlist]

یا

[!charlist]

SQLثال کاراکترهاي جایگزین شونده م

:زیر را داریم”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

%استفاده از کاراکتر جایگزین شونده

.شروع می شود"sa"اشخاصی را انتخاب کنیم که شهر زندگی آنها با "persons"هیم از جدولاکنون می خوا

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE City LIKE 'sa%'

Page 28: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

23

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

.باشد "nes"اشخاصی را انتخاب کنیم که شهر زندگی آنها شامل الگوي "persons"جدول سپس می خواهیم از

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE City LIKE '%nes%'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

_استفاده از کاراکتر جایگزین شونده

را می یابد ادامه"la"با اشخاصی که نام آنها با هر کاراکتري شروع می شود و""Personsاز جدولاکنون می خواهیم .انتخاب کنیم

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE FirstName LIKE '_la'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

با هرشروع می شود و"s"ن ها با اشخاصی را انتخاب کنیم که نام خانوادگی آ"persons"س می خواهیم از جدول سپ.ادامه می یابد را انتخاب کنیم"on"و ، هر کاراکتر"end"، کاراکتر

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE LastName LIKE 'S_end_on'

Page 29: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

24

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

[charlist]استفاده از کاراکتر جایگزین شونده

شروع می"p"یا "b" یا "s"اشخاصی را انتخاب کنیم که نام خانوادگی آن ها با"persons"می خواهیم از جدول اکنون .شود

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonstName LIKE '[bsp]%'WHERE Las

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

وع شر"p"یا "b" یا "s"اشخاصی را انتخاب کنیم که نام خانوادگی آن ها با"persons"می خواهیم از جدول سپس .نمی شود

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE LastName LIKE '[!bsp]%'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

SQLدر INعملگر

.تعیین کنید WHEREندگانه در عبارت به شما اجازه می دهد مقادیر چINعملگر

SQL در IN گرامر

Page 30: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

25

SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)

INمثالی از عملگر

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

است را انتخاب "pettersen"یا "Hansen"که نام خانوادگی آن ها برابر با اکنون می خواهیم از جدول باال اشخاصی را.کنیم

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM Personsn','Pettersen')WHERE LastName IN ('Hanse

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

SQLدر BETWEENعملگر

.ی شود، براي انتخاب یک دامنه از داده بین مقدار استفاده مWHEREدر یک عبارت BETWEENعملگر

BETWEEN عملگر

.دباشمتن یا داده مقادیر می توانند اعداد،. دامنه اي از داده ها را از بین دو مقدار انتخاب می کندBETWEEN عملگر

SQL در BETWEEN گرامر

Page 31: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

26

SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2

BETWEENمثال عملگر

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

"pettersen"و "Hansen"بینحروف الفباصورت که نام خانوادگی آن ها به اکنون می خواهیم از جدول باال اشخاصی را

.است را انتخاب کنیم

:زیر استفاده می کنیم SELECT از دستور

SELECT * FROM PersonsWHERE LastNameBETWEEN 'Hansen' AND 'Pettersen'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

.در پایگاه داده هاي مختلف به طور متفاوت عمل می کندBETWEENعملگر :تذکر

زیرا نمی شوند؛لیست "Pettersen"یا "Hansen"، اشخاصی با نام خانوادگیدر بعضی از پایگاه داده ها.را انتخاب می کند) ثناي مقادیر تستباست(فقط فیلدهایی که بین آن ها هستند BETWEENعملگر

BETWEEN، زیرا عملگر لیست می شوند"pettersen"یا "Hansen"ه ها، اشخاصی با نام خانوادگیدر دیگر پایگاه داد

.آن ها هستند را انتخاب می کندو شامل فیلدهایی که بین

شبیه مثال (در لیست نیست "pattersen"در لیست هستند اما "Hansen"اشخاصی با نام خانوادگی،دیگربرخی در و ).ثناي مقدار آخر تستباست(را انتخاب می کند اولین مقدار تست و دیر تست ابین مقفیلدهايBETWEENعملگر ، زیرا ) باال

. چک کنیدBETWEENعملگر یگاه داده خود را با پارفتار : بنابراین

2مثال

Page 32: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

27

:استفاده کنیدNOT BETWEEN ، از ه بیرون از دامنه مثال قبل هستندبراي نمایش اشخاصی ک

FROM PersonsSELECT *WHERE LastNameNOT BETWEEN 'Hansen' AND 'Pettersen'

:نتیجه اینگونه خواهد شد

P_Id LastName FirstName Address City

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Alias درSQL

. داده شودیا یک ستون می تواند یک جدول مستعار، یک نام SQL با

Alias درSQL

خوب چیزاین می تواند یک . معین کنید ) نام مستعار(Aliasمی توانید یک جدول یا یک ستون را با نام دیگر، با استفاده از

.پیچیده یا نام ستون طوالنی باشدبراي نام جدول

.تواند باشد اما معموال کوتاه استهر چیزي می Aliasیک نام

اي جدول هابر SQL در Alias گرامر

SELECT column_name(s)FROM table_nameAS alias_name

براي ستون ها SQL در Alias گرامر

SELECT column_name AS alias_nameFROM table_name

Aliasل مثا

"p"ترتیب ه جدول را بAlias. داریم"Product_Orders"بنام دیگر یو جدول"persons"بنامفرض کنید یک جدول

.معین می کنیم"po"و

.کنیملیستآن هست را مسئول"Ola Hansen"که سفارشاتی خواهیم همهاکنون می

Page 33: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

28

از دستور SELECT :زیر استفاده می کنیم

SELECT po.OrderID, p.LastName, p.FirstNameFROM Persons AS p,Product_Orders AS po

Hansen' AND p.FirstName='Ola'WHERE p.LastName='

:مشابه بدون نام هاي مستعارSELECTعبارت

SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstNameFROM Persons,Product_OrdersWHERE Persons.LastName='Hansen' AND Persons.FirstName='Ola'

می بینید، نام مستعار می تواند پرس و جو را هم براي نوشتن و هم براي خواندن باالSELECTعبارتهمانطور که از دو

.آسانتر کند

JOIN ها درSQL

JOIN ها درSQL ها رابطه بین برخی ستون ها در این جدولیک مبنی بر، چند جدولیا دوداده از پرس و جويبراي

.استفاده می شود

JOIN درSQL

رابطه بین برخی ستون ها مبنی بر یک ، SQLعبارتول در یک چند جدداده از دو یا پرس و جويبراي JOINکلمه کلیدي

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

.اغلب با کلیدها با یکدیگر مرتبط هستندجدول ها در یک پایگاه داده

هر مقدار. استمنحصر براي هر سطرمقداربا یک مقدار) ترکیبی از ستون هایا(یک ستون ) Primary Key(کلید اصلی

، جلوگیري از هال جدوسراسر در ،اندن داده ها به یکدیگرهدف چسب. منحصر به فرد باشد،باید در داخل جدولکلید اصلی

.در هر جدول استهمه داده هاتکرار

:را ببینید"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Page 34: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

29

یکسان "P_Id"مقدار ،به این معنا که دو سطر.است"persons"در جدول یک کلید اصلی"P_Id"ستون توجه کنید که .ر آن ها نام یکسانی داشته باشندگحتی امتمایز می نماید؛دو شخص راP_Id. نمی توانند داشته باشند

:را داریم"Order"پس جدول

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

بدون "Persons"به جدول را "p-Id"است و ستون "Orders"جدولکلید اصلی دریک "O-Id"ستون توجه کنید که .دهداستفاده از نام آنها ارجاع می

.است"P-Id"ستون،رابطه بین دو جدول باالکه توجه کنید

JOINدر هاي مختلفSQL

.لیست می کنیمرا هایی که می توانید استفاده کنید و تفاوت بین آن هاJOIN، انواعادامه دهیممثال ها با قبل از اینکه

.دشته باشتطابق در هر دو جدول داکه حداقل یکوقتیسطرها را برمی گرداند، :JOIN

.حتی اگر نظیر آن در جدول راست نباشد؛تمام سطرهاي جدول چپ را برمی گرداند :LEFT JOIN

.حتی اگر نظیر آن در جدول چپ نباشد؛تمام سطرهاي جدول راست را برمی گرداند :RIGHT JOIN

.برمی گرداندسطرها را زمانی که نظیرش در یکی از جدول ها باشد، :FULL JOIN

SQLدر INNER JOIN لمه کلیديک

SQLدر INNER JOIN کلمه کلیدي

.در دو جدول وجود داشته باشد، بر می گرداندتطابق که حداقل یک سطر ها را زمانیINNER JOINکلمه کلیدي

SQL در INNER JOIN گرامر

SELECT column_name(s)FROM table_name1INNER JOIN table_name2

column_name=table_name2.column_nameON table_name1.

Page 35: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

30

.یکسان است JOIN با INNER JOIN پانوشته:

SQL در INNER JOIN مثال

:"Persons" جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

:"Orders" جدول

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

.را با هر سفارشی لیست کنیمهمه اشخاصیمی خواهیم اکنون

:زیر استفاده می کنیم SELECT از دستور

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNorsonsFROM Pe

INNER JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

:نتیجه اینگونه خواهد شد

LastName FirstName OrderNo

Hansen Ola 22456

Hansen Ola 24562

Pettersen Kari 77895

Pettersen Kari 44678

اگر سطرهایی در . ل در دو جدول نظیر هستند، بر می گرداندکه حداقسطر ها را زمانیINNER JOINکلمه کلیدي"Persons" هستند که نظیرشان در"Orders"نیست، آن سطرها لیست نمی شوند.

Page 36: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

31

SQLدر LEFT JOIN کلمه کلیدي

SQLدر LEFT JOIN کلمه کلیدي

جدول راستگر نظیرش درحتی ا؛ )table_name1(تمام سطرهاي جدول چپ را برمی گرداندLEFT JOINکلمه کلیدي )table_name2 (وجود نداشته باشد.

SQL در LEFT JOIN گرامر

SELECT column_name(s)FROM table_name1LEFT JOIN table_name2ON table_name1.column_name=table_name2.column_name

.ده می شودنامیLEFT JOIN،LEFT OUTER JOINبعضی از پایگاه داده ها در: پانوشته

SQL LEFT JOINمثال

:"Persons" جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

:"Orders" جدول

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

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

:زیر استفاده می کنیم SELECT از دستور

Page 37: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

32

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN Orders

rs.P_IdON Persons.P_Id=OrdeORDER BY Persons.LastName

:نتیجه اینگونه خواهد شد

LastName FirstName OrderNo

Hansen Ola 22456

Hansen Ola 24562

Pettersen Kari 77895

Pettersen Kari 44678

Svendson Tove

گر نظیرش درجدول راستحتی ا؛ )persons(تمام سطرهاي جدول چپ را برمی گرداندLEFT JOINکلمه کلیدي )orders (وجود نداشته باشد.

SQLدر RIGHT JOIN کلمه کلیدي

SQLدر RIGHT JOIN کلمه کلیدي

حتی اگر نظیرش درجدول ؛ )table_name2(را برمی گرداندراستتمام سطرهاي جدول RIGHT JOINکلمه کلیدي .وجود نداشته باشد) table_name1(چپ

SQL RIGHT JOIN در گرامر

SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2ON table_name1.column_name=table_name2.column_name

.نامیده می شودRIGHT JOIN، RIGHT OUTER JOIN بعضی از پایگاه داده ها در: پانوشته

SQL RIGHT JOIN در مثال

:"Persons" جدول

Page 38: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

33

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

: "Orders" جدول

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

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

:زیر استفاده می کنیم SELECT از دستور

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

:شدنتیجه اینگونه خواهد

LastName FirstName OrderNo

Hansen Ola 22456

Hansen Ola 24562

Pettersen Kari 77895

Pettersen Kari 44678

34764

چپ جدول حتی اگر نظیرش در؛ )Orders(را برمی گرداندراستتمام سطرهاي جدول RIGHT JOINکلمه کلیدي )Persons (وجود نداشته باشد.

SQLدر FULL JOIN کلمه کلیدي

SQLدر FULL JOIN کلمه کلیدي

.، برمی گرداند ها باشدسطرها را زمانی که نظیرشان در یکی از جدول FULL JOIN کلمه کلیدي

Page 39: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

34

SQL FULL JOIN در گرامر

SELECT column_name(s)FROM table_name1FULL JOIN table_name2

.column_nameON table_name1.column_name=table_name2

SQL FULL JOIN در مثال

:"Persons" جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

:"Orders" جدول

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

.همه سفارشات با اشخاص را لیست کنیموبا سفارشاتشان همه اشخاص می خواهیم اکنون

:زیر استفاده می کنیم SELECT از دستور

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN Orders

rders.P_IdON Persons.P_Id=OORDER BY Persons.LastName

:نتیجه اینگونه خواهد شد

LastName FirstName OrderNo

Hansen Ola 22456

Hansen Ola 24562

Pettersen Kari 77895

Page 40: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

35

Pettersen Kari 44678

Svendson Tove

34764

.بر می گرداند (orders) همه سطرها از جدول راستو (persons) سطرها را از جدول چپمه ه FULL JOIN کلیديکلمه

وجود دارد که "Orders"اگر سطرهایی در نیست، یا ""Ordersوجود دارد که نظیرش در"Persons"اگر سطرهایی در

.نیز لیست می شوندنیست، آن سطرها "Persons"نظیرش در

SQLدر UNIONعملگر

.را ترکیب می کندSELECTدو یا چند دستور SQLدر UNIONعملگر

SQL UNION در عملگر

.استفاده می شود SELECT عبارتچند از دو یا ،نتیجهجدول براي ترکیب UNION عملگر

همچنین ستون ها باید . یکسانی از ستون ها را داشته باشدباید تعداد UNIONدر داخلSELECTعبارت هرتوجه کنید که.به باید ترتیب یکسان داشته باشندهمچنین ستون ها در هر عبارت مشا. باشندانند انواع داده هاي مشابه داشتههم

SQL UNION در گرامر

SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

براي اجازه دادن به UNION ALLاز . به صورت پیش فرض فقط مقادیر متمایز را انتخاب می کندUNIONعملگر :توجه.مقادیر تکراري استفاده کنید

SQL UNION ALL در گرامر

SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2

.است UNION در SELECT در اولین عبارتهاستوننام همیشه برابر با UNION نتیجهجدول در هاستوننام :انوشتهپ

SQL UNION در مثال:به جداول زیر نگاه کنید

"Employees_Norway":

Page 41: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

36

E_ID E_Name

01 Hansen, Ola

02 Svendson, Tove

03 Svendson, Stephen

04 Pettersen, Kari

"Employees_USA":

E_ID E_Name

01 Turner, Sally

02 Kent, Clark

03 Svendson, Stephen

04 Scott, Stephen

.کنیمرا لیستUSAوNorway درهمه کارمندهاي مختلفمی خواهیم اکنون

:زیر استفاده می کنیمSELECTاز دستور

SELECT E_Name FROM Employees_NorwayUNIONSELECT E_Name FROM Employees_USA

:جدول نتیجه اینگونه خواهد شد

E_Name

Hansen, Ola

Svendson, Tove

Svendson, Stephen

Pettersen, Kari

Turner, Sally

Kent, Clark

Scott, Stephen

با نام در مثال باال کارمند . شود استفاده USAو Norwayکارمندهايهمه لیست کردن تواند براي نمیاین دستور:توجه.قط مقادیر متمایز را انتخاب می کندفUNIONدستور . هاي یکسان قرار دارند و فقط یکی از آنها در لیست است

SQL UNION ALL در مثال

.کنیمرا لیستUSAوNorway کارمندهاي همه می خواهیم اکنون

Page 42: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

37

SELECT E_Name FROM Employees_NorwayUNION ALLSELECT E_Name FROM Employees_USA

:نتیجه

E_Name

Hansen, Ola

Svendson, Tove

Svendson, Stephen

Pettersen, Kari

Turner, Sally

Kent, Clark

Svendson, Stephen

Scott, Stephen

SQLدر SELECT INTOعبارت

.می تواند براي ساخت کپی هاي پشتیبان از جدول، استفاده شودSQLدر SELECT INTOعبارت

SQLدر SELECT INTOعبارت

.درون یک جدول متفاوت درج می کندآن رای کند وداده ها را از یکی از جدول ها انتخاب م SELECT INTO عبارت

.هاي پشتیبان از جدول استفاده می شودبیشتر اوقات براي کپی SELECT INTO عبارت

SQL SELECT INTO در گرامر

:می توانیم همه ستون ها را درون جدول جدید انتخاب کنیمما

SELECT *ernaldatabase]INTO new_table_name [IN ext

FROM old_tablename

:د نانتخاب کنیم که می خواهیم درون جدول جدید باشیا می توانیم فقط ستون هایی را

SELECT column_name(s)INTO new_table_name [IN externaldatabase]FROM old_tablename

Page 43: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

38

SQL SELECT INTO در مثال

.بسازیم "persons" اکنون می خواهیم یک کپی دقیق از داده ها در جدول -یبان ساختن یک کپی پشت

: استفاده می کنیمزیرSQLاز عبارت

SELECT *INTO Persons_BackupFROM Persons

. براي کپی جدول درون پایگاه داده هاي دیگر، استفاده کنیمINهمچنین می توانیم از عبارت

SELECT *up.mdb'INTO Persons_Backup IN 'Back

FROM Persons

:ند فیلد درون جدول جدید کپی کنیمچ همچنین می توانیم فقط

SELECT LastName,FirstNameINTO Persons_BackupFROM Persons

WHERE SQL با یک عبارت SELECT INTO در

.اضافه کنیم WHERE همچنین می توانیم یک عبارت

ندگی ز"sandnes"شامل اشخاصی است که در شهرفقط وسازدمی"persons-backup"زیر یک جدول SQL عبارت.می کنند

SELECT LastName,FirstnameINTO Persons_BackupFROM PersonsWHERE City='Sandnes'

SELECT INTO درSQL–ل جداوJOINشده

.یک جدول ممکن استازهمچنین انتخاب داده ها از بیشتر

.سازدرا می"orders"و"persons" شامل داده ها از دو جدول "Persons_Order_Backup" ک جدول مثال زیر ی

SELECT Persons.LastName,Orders.OrderNoINTO Persons_Order_BackupFROM PersonsINNER JOIN OrdersON Persons.P_Id=Orders.P_Id

Page 44: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

39

SQLدر CREATE DATABASE عبارت

CREATE DATABASE عبارت

.د یک پایگاه داده استفاده می شودبراي ایجا CREATE DATABASE عبارت

SQL CREATE DATABASE در گرامر

CREATE DATABASE database_name

CREATE DATABASE مثال

.ایجاد کنیم"MY-db"می خواهیم پایگاه داده اي با ناماکنون

: کنیمزیر استفاده می CREAT DATABASEاز عبارت

CREATE DATABASE my_db

.نداضافه شو CREATE TABLE جداول پایگاه داده می تواند با عبارت

SQLدر CREATE TABLE عبارت

CREATE TABLE عبارت

.براي ایجاد یک جدول در پایگاه داده استفاده می شود CREATE TABLE عبارت

SQL CREATE TABLE گرامر

CREATE TABLE table_name(column_name1 data_type,column_name2 data_type,column_name3 data_type,....)

براي یک مرجع کامل از انواع داده موجود در . در ستون می تواند نگه داشته شودنوع داده مشخص می کند چه نوع داده ايMS Access ،SQL Server وMySQL برویدمادادهانواعمرجعبه.

CREATE TABLE مثال

و FirstName و LastName وP_Id : ایجاد کنیم که شامل پنج ستون"persons"اکنون می خواهیم یک جدول با نام Addressو Cityاست.

Page 45: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

40

:یر استفاده می کنیمز CREATE TABLE از عبارت

CREATE TABLE Persons(P_Id int,

varchar(255),LastNameFirstName varchar(255),Address varchar(255),City varchar(255))

.است و یک عدد را نگه می داردintاز نوع P_I dستون

.ستندکاراکتر ه255و باطول بیشتر از varchar نوعاز City Address و ،FirstName ،lastName ستون هاي

:ه استاینگونکه ببینید را "Persons" اکنون جدول خالی

P_Id LastName FirstName Address City

محدودیت ها

.شودیماستفادهConstraintدستوراز،جدولکیدرهادادهازیبرخکردنمحدوديبرا

ALTERدستور(میکنفیتعرجدولجادیاازبعدای)ALTER TABLEدستور(جدولجادیاموقعتوانیمراتهایمحدود

TABLE(.

:در محدودیت هاي زیر تمرکز خواهیم کرد

·NOT NULL·UNIQUE·PRIMARY KEY·FOREIGN KEY·CHECK·DEFAULT

.میدهمیحیتوضاتیجزئباراهاتیمحدودازکیهربعديهابخشدر

:NOT NULLمحدودیت

.ردیبگنظردریتهمقدارتونسکیگذاردینمجدولکیدرعبارتنیا،فرضشیپطوربه

Page 46: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

41

:NOT NULLمحدودیت

دیتوانینمشماکهاستیمعنبداننیا. باشدمقداريداراشهیهمنظرموردلدیفتاشودیمباعثNOT NULLتیمحدود

.دینکیرسانروزب،لدیفنیابهمقدارکیکردناضافهبدونرارکوردکیاید،یکنواردمقداربدونرادیجدرکوردکی

:باشندمقدارازیخالتوانندینم"LastName"ستونو"P_Id"ستونریزSQLبرنامهتکهدر

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

:UNIQUEمحدودیت

.می دهددادهگاهیپاجدولدررکوردهربهي را فردبهمنحصرییشناساUNIQUEتیمحدود

راهاستونازيامجموعهایستونکیيبرافردبهمنحصرینیتضمدوهرPRIMARY KEYوUNIQUEيهاتیمحدود

. فراهم می کنند

. استشدهفیتعرآنيروربکهباشدیمUNIQUEتیمحدوديداراخودکارطوربهPRIMARY KEYتیمحدود

تیمحدودکیتنهااماباشند،داشتهجدولدرUNIQUEازياریبسيهاتیمحدوددیتوانیمکهدیباشداشتهتوجه

PRIMARY KEYدیباشداشتهدیتوانیمجدولهردر.

:SQLدر جدولساختندرUNIQUEتیمحدود

:دهدیمنسبت"P_Id"ستونبهشودیمساخته"Persons"جدولکهیزمانUNIQUEتیمحدودکیزیر SQLکد

MySQL:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),UNIQUE (P_Id))

Page 47: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

42

SQL Server / Oracle / MS Access:

ersonsCREATE TABLE P(P_Id int NOT NULL UNIQUE,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

کیدرمتعدديهاستونيروبرموجوديهاUNIQUEکردننیمعيبراایوUNIQUEتیدودحمکیيگذارناميبرا

: استزیجاریزدستورازاستفاده،جدول

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName))

:جدولرییتغدرUNIQUEتیمحدود

:میکنیماستفادهریزکداز،"P_Id"ستونيروبرتیمحدودنیاجادیايبرا

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD UNIQUE (P_Id)

ریزدستورازستفادهامتعدد،يهاستونيروبرتیمحدودنیافیتعريبرانیهمچنوUNIQUEتیمحدودينامگذاريبرا

:استجایزSQLدر

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

UNIQUEتیمحدودیک حذفبراي

:استSQLدرUNIQUEتیمحدودکردنحذفيبرايانمونهریزکد

Page 48: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

43

MySQL:

ersonsALTER TABLE PDROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE PersonsDROP CONSTRAINT uc_PersonID

:SQLدر PRIMARY KEY محدودیت

:SQLدر PRIMARY KEY محدودیت

.استدادهگاهیپاجدولدررکوردهريفردبهمنحصرییشناسامسئولاصلیدیکلتیمحدود

.باشدبرخورداريفردبهمنحصرمقادیر ازدیبالیاصدیکل

.باشدداشتهNULLمقدارتواندینماصلیدیکلستون

.باشندداشتهاصلیدیکلکیفقطتواندیمجدولهروباشدداشتهاصلیدیکلکیدیباجدولهر

:SQLدر CREATE TABLEدرPRIMARY KEYمحدودیت

:شودیمجادیا"Persons"جدولکهیزماند؛ می ساز"P_Id"ستونيروبرPRIMARY KEYتیمحدودکد زیر یک

MySQL:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id))

SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL PRIMARY KEY,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

Page 49: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

44

دستورازمتعدد،ياهستونيروبراصلیدیکلتیمحدودفیتعريبراواصلیدیکلمحدودیتينامگذاربهدادناجازهيبرا

:استفاده کنیدریز

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),

d,LastName)CONSTRAINT pk_PersonID PRIMARY KEY (P_I)

ستوندوازpk_PersonIDمقدارحال،نیابا. داردوجود) pk_PersonID(یاصلدیکلکیتنهاباالمثالدر:توجه

)P_IdوLastName (استشدهساخته.

ALTER TABLEدرPRIMARY KEYتیمحدود

استفادهریزSQLدستوراز،می شودادجیاجدولکهیزمان"P_Id"ستونيروبراصلیدیکلتیمحدودکیجادیايبرا

:کنید

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD PRIMARY KEY (P_Id)

:میکناستفادهریزدستورازدیبامتعدد،يهاستونيروبرفیتعرنیهمچنوينامگذاريبرا

MySQL / SQL Server / Oracle / MS Access:

ER TABLE PersonsALTADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

حتمادیباهاستوناصلیدیکلد،یدهرییتغراجدولدستوراتازاستفادهبایاصلدیکلکیکردناضافهيبرااگر:توجه

).استشدهجادیابارنیاوليبراجدولکهیهنگام(باشدNOT NULLمقدارشامل

PRIMARY KEYیک محدودیتحذفراي ب

:میکنیماستفادهریزبرنامهتکهازیاصلدیکلکردنحذفيبرا

Page 50: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

45

MySQL:

ALTER TABLE PersonsDROP PRIMARY KEY

SQL Server / Oracle / MS Access:

ALTER TABLE PersonsDROP CONSTRAINT pk_PersonID

:FOREIGN KEYتیمحدود

. اشاره می کندگریدجدولکیدریاصلدیکلبه جدولکیدریخارجدیکل

: نگاه کنیدریزجدولبه دو . توضیح دهیممثالکیذکر بارایخارجدیکلاجازه دهید

:"Persons "جدول

P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

:"Orders "جدول

O_Id OrderNo P_Id1 77895 32 44678 33 22456 24 24562 1

. اشاره می کند"افراد"جدولدر"P_Id"ستونبه"سفارشات"جدولدر"P_Id"ستونکهدیباشداشتهتوجه

دریخارجدیکل"سفارشات"جدولدر"P_Id"ستون. است"افراد"جدولیاصلدیکل"افراد"جدولدر"P_Id"ستون

. است"سفارشات"جدول

ارتباطکهزیچهرنیهمچنوجدولدرمعتبرنااطالعاتشدنواردازواقعدر)FOREIGN KEY(یخارجدیکلتیمحدود

.دارداشارهیاصللجدودرییکتایمقداربهکهرایز؛کندیميریجلوگببردنیبازراجدولدونیب

:CREATE TABLEدریخارجدیکلتیمحدود

:شودیمجادیا"سفارشات"جدولکهیزمانمی سازد؛ یخارجدیکلعنوانبهرا "P_Id"ستونکد زیر

Page 51: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

46

MySQL:

CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id),

EY (P_Id) REFERENCES Persons(P_Id)FOREIGN K)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders(O_Id int NOT NULL PRIMARY KEY,OrderNo int NOT NULL,P_Id int FOREIGN KEY REFERENCES Persons(P_Id))

:دیکناستفادهریزدستورازمتعدد،يهاستونيروبریخارجيهادیکلفیتعرنیهمچنوينامگذاريبرا

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id),CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)REFERENCES Persons(P_Id))

:ALTER TABLEدرFOREIGN KEYتیمحدود

:استفاده کنیدریزSQLدستورازشده،جادیاجدولکهیزمان"P_Id"ستونيروبریخارجدیکلتیمحدودکیجادیايبرا

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE OrdersADD FOREIGN KEY (P_Id)REFERENCES Persons(P_Id)

:دیکناستفادهریزدستوراتازمتعدد،يهاستونيروبرفیتعرنیهمچنوينامگذاريبرا

MySQL / SQL Server / Oracle / MS Access:

Page 52: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

47

ALTER TABLE OrdersADD CONSTRAINT fk_PerOrdersFOREIGN KEY (P_Id)REFERENCES Persons(P_Id)

FOREIGN KEYیک محدودیتحذفبراي

:میکنیماستفادهریزبرنامهتکهازیخارجدیکلکردنحذفيبرا

MySQL:

ALTER TABLE OrdersDROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE OrdersDROP CONSTRAINT fk_PerOrders

CHECKتیمحدود

CHECKتیمحدود

.شودیماستفادهردیگقرارستونکیدرتواندیمکهمقداردامنهکردنمحدودمنظوربهCHECKتیمحدود

.دیدارستونآنيبراراهامقدارازیبرخکردنوارداجازهدیکنیمفیتعرستونکیيروبرتنهاراCHECKتیمحدوداگر

ستونمبنی بر مقادیریخاصيهاستوندرراریمقاددیتوانیمد،یکنیمفیتعرجدولکیبرايراCHECKتیمحدوداگر

.دیکنمحدودفیرددرگریديها

CREATE TABLEدرCHECKتیمحدود

ستونيبراشدهمشخصتیمحدود.می سازد"Persons"جدولدر"P_Id"ستونيرورا CHECKتیمحدودریزبرنامه

"P_Id" استصفرازبزرگترحیصحاعدادشاملفقط.

MySQL:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CHECK (P_Id>0))

Page 53: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

48

SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL CHECK (P_Id>0),LastName varchar(255) NOT NULL,

(255),FirstName varcharAddress varchar(255),City varchar(255))

:دیکناستفادهریزدستورازهمزمان،طوربهستونچندکردنمحدوديبرا

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),

T chk_Person CHECK (P_Id>0 AND City='Sandnes')CONSTRAIN)

ALTER TABLEدرCHECKتیمحدود

:دیکناستفادهریزدستورازاست،شدهجادیااز قبلجدولکهیزمان"P_Id"ستوندرCHECKتیمحدودجادیايبرا

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons_Id>0)ADD CHECK (P

:دیکناستفادهریزدستورازهمزمان،طوربهستونچندکردنمحدوديبرا

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

CHECKتیمحدودکردنحذف

:میکناستفادهریزردستوازدیباتیمحدودنیاحذفيبرا

SQL Server / Oracle / MS Access:

ALTER TABLE PersonsDROP CONSTRAINT chk_Person

Page 54: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

49

MySQL:

ALTER TABLE PersonsDROP CHECK chk_Person

SQLدر DEFAULTتیمحدود

SQLدر DEFAULTتیمحدود

.شودیماستفاده،ستونکیدرفرضشیپطوربهمقدارکیدادنقراريبراDEFAULTتیمحدود

. نشودوارديگریدمقدارچیهاگر؛شودیماضافهدیجديرکوردهاهمهبهDEFAULTمقدار

CREATE TABLEدرDEFAULT تیمحدود

:کندیمجادیا"Persons"جدولدر"City"ستونيروبرراDEFAULTتیمحدودریزبرنامهتکه

My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255) DEFAULT 'Sandnes')

موردGETDATE()انندمیتوابعازاستفادهباستم،یسریمقادکردنوارديبراتواندیمهمچنین DEFAULTتیمحدود

:گیردقراراستفاده

CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,OrderDate date DEFAULT GETDATE())

Page 55: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

50

ALTER TABLEدرDEFAULT تیمحدود

:دیکناستفادهریزدستورازشده،جادیاجدولکهیهنگام"City"ستوندرDEFAULTتیمحدودجادیايبرا

MySQL:

ALTER TABLE PersonsALTER City SET DEFAULT 'SANDNES'

SQL Server / Oracle / MS Access:

ALTER TABLE PersonsALTER COLUMN City SET DEFAULT 'SANDNES'

DEFAULTتیمحدودیک حذفبراي

:میکناستفادهریزدستورازدیباتیمحدودنیاحذفيبرامثالعنوانبه

MySQL:

ALTER TABLE PersonsALTER City DROP DEFAULT

SQL Server / Oracle / MS Access:

ALTER TABLE PersonsALTER COLUMN City DROP DEFAULT

SQLدر CREATE INDEXدستورات

.شودیماستفادهجداولدرشاخصجادیايبراCREATE INDEXدستور

راجدولکلآنکهبدون؛دهدیمرا اطالعاتعیسرکردندایپيبرارادادهگاهیپادرجستجواجازهرنامهببههاشاخص

. بگردد

INDEXها

.استفاده شودجدولکیدرو موثرتر داده ترعیسرافتنیيبرادتوانیمشاخص

. شوندیماستفادهوجستجبهدنیبخشسرعتيبرافقطآنهانند،یببتوانندینمراهاشاخصکاربران

Page 56: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

51

چون(کندیمتلفشاخصبدونجدولکییرسانروزببهنسبترايشتریبزمانشاخصباجدولکییرسانروزب:توجه

.دیکنجادیا) جدولو(ستوندرراشاخصدیباتنهاشمانیبنابرا. )داردیرسانروزبیک بهازینزینشاخص

SQLدر CREATE INDEXگرامر

:هستندمجازيتکرارریمقاد.جدولیک دراخصشیک جاد یا

CREATE INDEX index_nameON table_name (column_name)

SQLدر CREATE UNIQUE INDEXگرامر

:ستندنیمجازيتکرارریمقاد.جدولیک درشاخصیک جاد یا

CREATE UNIQUE INDEX index_nameON table_name (column_name)

بنابراین گرامر ساخت شاخص ها را در پایگاه داده . اخت شاخص ها در پایگاه داده هاي مختلف متفاوت استگرامر س:توجه

.خود چک کنید

CREATE INDEXمثال

:کندیمجادیا"Persons"جدولدر"LastName"ستونيروبر"PIndex"نامبهشاخصکیریزدستور

CREATE INDEX PIndex)ON Persons (LastName

همازکاماباونوشتهپرانتزداخلراهاستوننامدیبادیکنجادیاهاستونازیبیترکيروبرراشاخصکیدیخواهیماگر

:دیکنجدا

CREATE INDEX PIndexON Persons (LastName, FirstName)

DROP INEX ،DROP TABLE وDROP DATABASE درSQL

.شوندحذفDROPدستورباندتوانیمیراحتها بادهدگاهیپاوجداول،ها،شاخص

DROP INEXدستور

Page 57: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

52

.شودیماستفادهجدولیک درشاخصیک حذفيبراDROP INDEXدستور

MS Access:

DROP INDEX index_name ON table_name

MS SQL Server:

DROP INDEX table_name.index_name

DB2/Oracle:

DROP INDEX index_name

MySQL:

ALTER TABLE table_name DROP INDEX index_name

DROP TABLEر دستو

.شودیماستفادهجدولحذفيبراDROP TABLEدستور

DROP TABLE table_name

DROP DATABASEر دستو

.شودیماستفادهیاطالعاتبانکحذفيبراDROP DATABASEدستور

DROP DATABASE database_name

TRUNCATE TABLEتوردس

را باید چکار کرد؟جدولخود؛ نه میکنپاكراجدولداخل اطالعاتفقطمیبخواهاگرو ام

:دیکناستفادهTRUNCATE TABLEدستوراز خب،

TRUNCATE TABLE table_name

ALTER TABLEدستور

ALTER TABLEدستور

Page 58: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

53

.شودیماستفادهموجودجدولدرستونرییتغایحذف،کردن،اضافهيبراALTER TABLEدستور

SQLدر ALTER TABLEگرامر

:کنیداستفادهریزدستورازجدول،کیدرستونکیکردناضافهيبرا

ALTER TABLE table_nameADD column_name datatype

دادهگاهیپايهاستمیسازیبرخکهدیباشداشتهتوجه(کنیداستفادهریزدستورازجدول،کیدرستونکیحذف يبرا

):دهندینمرا ستونکیحذفاجازه

ALTER TABLE table_nameDROP COLUMN column_name

:کنیداستفادهریزگرامرازجدول،کیدرستونکیدادهنوعرییتغيبرا

ALTER TABLE table_nameALTER COLUMN column_name datatype

SQLدر ALTER TABLEدستورمثال

:کنیدنگاه"Persons"جدولبه

P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

.مینکاضافه"Persons"جدولدررا"DateOfBirth"نامبهستونکیمیخواهیمحاال

:زیر استفاده می کنیمSQLدستور از

ALTER TABLE PersonsADD DateOfBirth date

یماستفادهخیتارنوعازيادادهداشتننگهيبراواستخیتارازینوع"DateOfBirth"دیجدستوندرکهدیکنتوجه

. شونددوارتوانندیمستوندريهاداده،نوعچهکه کندیممشخصدادهنوع. شود

Page 59: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

54

:اینگونه خواهد شدPersons" "جدول

P_Id LastName FirstName Address City DateOfBirth1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

هادادهنوعرییتغمثال

.میدهرییتغرا"Persons "جدولدر"DateOfBirth"ستونياهدادهنوعمیخواهیمحاال

:زیر استفاده می کنیمSQLاز دستور

ALTER TABLE PersonsALTER COLUMN DateOfBirth year

.داردیمنگهخوددررارقمچهارایرقمدوقالبدرسالکیمقدارحاضرحالدر"DateOfBirth"ستونکهدیکنتوجه

DROP COLUMNمثال

.میکنحذفرا"Persons "جدولدر"DateOfBirth"ستونمیخواهیميبعدگامدر

:زیر استفاده می کنیمSQLاز دستور

ALTER TABLE PersonsDROP COLUMN DateOfBirth

:اینگونه خواهد شدPersons" "جدول

P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

SQLدر AUTO INCREMENTلدیف

تولید شود؛ زمانی که یک رکورد جدید در جدول وارد فردبهمنحصرمقدارکیدهدیماجازهAuto-increment لدیف

.شود

SQLدر AUTO INCREMENTلدیف

Page 60: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

55

طوربهرادیجدمقدارکیرکوردهريبرابتواندکهمیکنفیتعرprimary keyيبرارايمقدارمیخواهیمقاتاویلیخ

.کنددیتولخودکار

.میکنجادیاجدولکیدرراAuto-incrementلدیفیک میخواهیم

MySQLگرامر

یمفیتعرAuto-incrementتیخاصباویاصلدیکلعنوانبه"Persons"جدولدررا "P_Id"ستونریزدستورات

:کنند

CREATE TABLE Persons(P_Id int NOT NULL AUTO_INCREMENT,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id))

MySQL از کلمه کلیديAUTO_INCREMENTراي ویژگی یک براي اجauto-incrementاستفاده می کند.

رکوردهريبراگامکیباراآنواست،کیمقدارAUTO_INCREMENTتیخاصيبراشروعمقدارفرض،شیپطوربه

. دهدیمشیافزادیجد

:کنیداستفادهریزدستوراز،AUTO_INCREMENTترتیبشروعهیاولمقدارفیتعريبرا

ersons AUTO_INCREMENT=100ALTER TABLE P

کی(میکنمشخص"P_Id"ستونيبرايمقدارکهمجبور نخواهیم شد ،"Persons"جدولبهدیجدرکوردکیدرجيبرا

) :شدخواهداضافهخودکارطوربهفردبهمنحصرمقدار

INSERT INTO Persons (FirstName,LastName)VALUES ('Lars','Monsen')

فردبهمنحصرمقدارکی"P_Id"ستونبه. کندیماضافه"Persons"جدولبهدیجدرکوردکیفوقSQLدستور

خودبهرا"Monsen"مقدار"LastName"ستونو"Lars"مقدار"FirstName"ستون. استشدهدادهاختصاص

.دهندیماختصاص

SQL Serverگرامر

Page 61: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

56

AUTO_INCREMENT تیخاصباویاصلدیکلعنوانبهرا"Persons"جدولدر"P_Id" ستونریزSQLدستورات

:کندیمفیتعر

CREATE TABLE Persons(P_Id int PRIMARY KEY IDENTITY,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

MS SQL Server يدیکلکلمهازIDENTITYتیخاصکارانجاميبراauto-incrementکندیماستفاده.

شیافزادیجدرکوردهريبراگامکیباراآنواستکیمقدارIDENTITYتیخاصيبراشروعمقدارفرض،شیپطوربه

. دهدیم

تغییر IDENTITY(10,5)به راidentityیابد، باید شیافزا5مقداربا وشروع10مقدارکه با "P_Id" ستونفیتعريبرا

.دهید

کی(میکنوارد"P_Id"ستونيبرايمقدارکهمجبور نخواهیم شد ،"Persons"جدولبهدیجدرکوردکیدرجيبرا

:)شدخواهداضافهخودکارطوربهفردبهمنحصرمقدار

INSERT INTO Persons (FirstName,LastName)VALUES ('Lars','Monsen')

فردبهمنحصرمقدارکی"P_Id"ستونبه. کندیماضافه"Persons"جدولبهدیجدرکوردکیفوقSQLدستور

خودبهرا"Monsen"مقدار"LastName"ستونو"Lars"مقدار"FirstName"ستون. استشدهدادهاختصاص

.دهندیماختصاص

Accessگرامر

AUTO_INCREMENT تیخاصباویاصلدیکلعنوانبهرا"Persons"جدولدر"P_Id" ستونریزSQLدستورات

:کندیمفیتعر

CREATE TABLE Persons(P_Id PRIMARY KEY AUTOINCREMENT,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

Page 62: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

57

AccessيدیکلکلمهازAUTOINCREMENTتیخاصکارانجاميابرauto-incrementکندیماستفاده.

رکوردهريبراگامکیباراآنواست،کیمقدارAUTO_INCREMENTتیخاصيبراشروعمقدارفرض،شیپطوربه

. دهدیمشیافزادیجد

را به AUTOINCREMENTیابد، باید شیافزا5مقداربا وشروع10مقدارکه با "P_Id" ستونفیتعريبرا

AUTOINCREMENT(10,5)تغییر دهید.

مقدارکی(میکنوارد"P_Id"ستونيبرايمقدارکهخواهدینم،"Persons"جدولبهدیجدرکوردکیدرجيبرا

:)شدخواهداضافهخودکارطوربهفردبهمنحصر

INSERT INTO Persons (FirstName,LastName)VALUES ('Lars','Monsen')

فردبهمنحصرمقدارکی"P_Id"ستونبه. کندیماضافه"Persons"جدولبهدیجدرکوردکیفوقSQLتوردس

خودبهرا"Monsen"مقدار"LastName"ستونو"Lars"مقدار"FirstName"ستون. استشدهدادهاختصاص

.دهندیماختصاص

Oracleگرامر

.است، کد کمی بیشتر فریبنده تراوراکلدر

.بسازید) این شی شماره ترتیبی تولید می کند(با شی ترتیبی auto-incrementشما مجبور خواهید شد یک فیلد

:استفاده کنیدCREATE SEQUENCEاز گرامر

CREATE SEQUENCE seq_personMINVALUE 1START WITH 1INCREMENT BY 1CACHE 10

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

يبرايادنبالهمقدار چندکهکندیممشخصCacheنهیگز. استکردهفیتعر) Cache(باال ذخیره گاه عملکرديبرا، 10

. شوندیمرهیذخحافظهدر،ترعیسریدسترس

دنبالهازيبعدمقدارتابعنیا(میکناستفادهnextvalتابعازدیبا،"Persons"جدولبهدیجدرکوردکیدرجيبرا

seq_person می کندیابیبازرا:(

INSERT INTO Persons (P_Id,FirstName,LastName)

Page 63: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

58

VALUES (seq_person.nextval,'Lars','Monsen')

فردبهمنحصرمقدارکی"P_Id"ونستبه. کندیماضافه"Persons"جدولبهدیجدرکوردکیفوقSQLدستور

خودبهرا"Monsen"مقدار"LastName"ستونو"Lars"مقدار"FirstName"ستون. استشدهدادهاختصاص

.دهندیماختصاص

View ها درSQL

Viewاستيمجازجدولکی .

. کنیدپاكویرسانروزبجاد،یارا Viewیک چگونهکهدهدیمنشانفصلنیا

SQLدر CREATE VIEW وردست

. دیآیموجودبهSQLدستوراتازيامجموعهجهینتاساسبرکهاستيمجازجدولکیviewکی،SQLدر

چندایکیازهالدیفهمان،viewکیدرهالدیف. استیواقعجدولکیمثلدرستستون،وسطرشاملviewکی

. هستنددادهگاهیپادریواقعجدول

کهیصورتدردهید؛ ارائهرا دادهواضافه کنید view را به یکJOINدستوراتوSQL،WHEREتوابعدیوانتیمشما

. باشندواحدجدولکیازاطالعات

SQLدر CREATE VIEWگرامر

CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition

دستورازاستفادهباوکندیميبازسازراهادادهدادهگاهیپاموتور! دهدیمنشانراروزباطالعاتهموارهviewکی:توجه

view's SQL،کیشددادهشینماکاربرکیکهبارهرviewاست .

SQLدر CREATE VIEW مثال

.داردفرضشیپطوربهده نصب شviewچندین که دینیببدیتوانیمرا دارید، Northwindدادهگاهیپاشمااگر

جدولاز) موقوف نشده اندکهیمحصوالت(فعالمحصوالتتمام،"Current Product List"با نام) view(نما

"Products"نیا.می کندستیلviewدستوراتباSQLشدهجادیاریز:

Page 64: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

59

CREATE VIEW [Current Product List] ASSELECT ProductID,ProductName

M ProductsFRO'No'WHERE Discontinued=

:صورت زیر پرس و جو کنیمبهباال viewمی توانیم از

SELECT * FROM [Current Product List]

واحدمتیقکیبا"Products"جدولدرمحصولهرانتخاببمنظورNorthwindدادهگاهیپادرهاviewازگریدیکی

:استاحدومتیقنیانگیمازباالتر،

CREATE VIEW [Products Above Average Price] ASSELECT ProductName,UnitPriceFROM ProductsWHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

:صورت زیر پرس و جو کنیمبهباال viewمی توانیم از

SELECT * FROM [Products Above Average Price]

توجه. است1997سالدريبنددستههريبرافروشکلمحاسبهNorthwindدادهگاهیپادرهاviewازگریدیکی

:کندیمانتخابProduct Sales for 1997""نامبهيگریدviewازراخوداطالعاتviewنیاکهدیباشداشته

CREATE VIEW [Category Sales For 1997] ASegoryName,Sum(ProductSales) AS CategorySalesSELECT DISTINCT Cat

FROM [Product Sales for 1997]GROUP BY CategoryName

:صورت زیر پرس و جو کنیمبهباال viewمی توانیم از

SELECT * FROM [Category Sales For 1997]

:میخواهیمراBeverages""دستهدرفقطفروشکلحاال. میکناضافهجووپرسبهیک شرطمیتوانیمنیهمچن

SELECT * FROM [Category Sales For 1997]WHERE CategoryName='Beverages'

VIEWیرسانروزب

:را بروز رسانی کنیدviewبا استفاده از گرامر زیر یک شما می توانید

Page 65: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

60

SQLدر CREATE OR REPLACE VIEWگرامر

e ASCREATE OR REPLACE VIEW view_namSELECT column_name(s)FROM table_nameWHERE condition

دستوراتازاستفادهبارانمانیا. میکناضافه"Current Product List"نمايبهرا "Category"ستونمیخواهیمحاال

SQL خواهیم کردیرسانروزبزیر:

CREATE VIEW [Current Product List] ASD,ProductName,CategorySELECT ProductI

FROM Products'No'WHERE Discontinued=

SQLدر View یککردنحذف

.دیکنحذفDROP VIEWدستورازاستفادهبارانماکیدیتوانیمشما

SQLدر DROP VIEWگرامر

DROP VIEW view_name

SQLدر خیتارتوابع

SQLدر خیتار

واردزمانشماخیتارفرمتکهدیکنحاصلنانیاطمکهاستنیاخیتارباکارهنگامدربخشنیترسختدیباشداشتهتوجه

. باشددادهگاهیپادرخیتارستونفرمتبامطابق،کردن

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

. کندیمدهیچیپراآنشود،

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

. دیندازیب

MySQLدر خیتارتوابع

:هستندMySQLدرخیتاربارابطهدرداخلیتوابعنیترمهمستیلریزجدول

Page 66: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

61

حاتیتوض تابع

. گرداندیبرمرایفعلزمانوخیتار NOW()

. گرداندیبرمرايجارخیتار CURDATE()

. گرداندیبرمرايجارزمان CURTIME()

. کندی ماستخراج رازمان/ خیتارایخیتاریک عبارت ازخیتاربخش DATE()

.گرداندی مبررازمان/ خیتارکیازیبخشتنها EXTRACT()

. کندی ماضافهخیتارکیبهراشدهمشخصیزمانبازهکی DATE_ADD()

. استخیتارازشدهمشخصیزمانبازهکی DATE_SUB()

. گرداندیبرمراخیتاردونیبيروزهاتعداد DATEDIFF()

.استمختلفيهافرمتدرهادادهزمان/ خیتارشینما DATE_FORMAT()

SQL Serverدرخیتارتوابع

:هستندSQL Serverدرداخلیخیتارتوابعنیترمهمازیستیلریزجدول

حاتیتوض تابع

. گرداندیبرمرایفعلزمانوخیتار GETDATE()

.گرداندی برمرازمان/ خیتارکیازیبخش DATEPART()

. می کندکمایاضافهرا خیتارازشدهمشخصیزمانبازهکی DATEADD()

. گرداندیبرمراخیتاردونیبزمان DATEDIFF()

.می دهدشینمامختلفيهافرمتدرزمان/ خیتارداده CONVERT()

SQLدرخیتاردادهعانوا

MySQLمی آیددادهگاهیپادرزمان/ خیتارکیایخیتارمقدارکیيسازرهیذخيبرا،ریزيهادادهانواعبا:

DATE :YYYY-MM-DDفرمت ·

DATETIME:YYYY-MM-DD HH:MM:SSفرمت ·

TIMESTAMP :YYYY-MM-DD HH:MM:SSفرمت ·

YYیا YEAR :YYYYفرمت ·

SQL Serverمی آیددادهگاهیپادرزمان/ خیتارکیایخیتارمقدارکیيسازرهیذخيبرا،ریزيهادادهانواعبا:

Page 67: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

62

DATE :YYYY-MM-DDفرمت ·

DATETIME :YYYY-MM-DD HH:MM:SSفرمت ·

SMALLDATETIME :YYYY-MM-DD HH:MM:SSفرمت ·

فرده عدد منحصر بیک: TIMESTAMPفرمت ·! شوندیمانتخابستونکیيبراخیتارعانو، ادیسازیمخوددادهگاهیپادردیجدجدولکیکهیزمان:توجه

. دیکنوعرجهادادهکاملمرجعبه،موجوديهادادهنوع همهمرور بر يبرا

SQL درخیتارباکار

! باشدنداشتهوجودیمبهمزمانعنصرچیهاگر؛دیکنسهیمقایراحتبهراخیتاردودیتوانیمدیباشداشتهتوجه

:استریزفرضبه"Orders" جدول

OrderId ProductName OrderDate

1 Geitost 2008-11-11

2 Camembert Pierrot 2008-11-09

3 Mozzarella di Giovanni 2008-11-11

4 Mascarpone Fabioli 2008-10-29

. میکنانتخابرا"11-11-2008"رکوردOrderDate ستوندرباالجدولازمیخواهیمحاال

:زیر استفاده می کنیمSELECTاز دستور

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

:خواهد شدجدول نتیجه اینگونه

OrderId ProductName OrderDate

1 Geitost 2008-11-11

3 Mozzarella di Giovanni 2008-11-11

):دیکنتوجه"OrderDate" ستوندرزمانعنصربه(باشدصورتنیابه"Orders"جدولکهمیکنفرضحال،

OrderId ProductName OrderDate

1 Geitost 2008-11-11 13:23:44

2 Camembert Pierrot 2008-11-09 15:45:21

3 Mozzarella di Giovanni 2008-11-11 11:12:01

4 Mascarpone Fabioli 2008-10-29 14:56:59

Page 68: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

63

:میکناستفادهSELECTدستورهمانازاگر

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

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

!، به عنصر زمان در تاریخ تان اجازه ورود ندهیدداري کنیدآسان نگهوسادهپرس و جو تان را دیخواهمی اگر:نکته

NULLمقدار

.ناشناخته هستنديهادادهدهندهنشانNULLمقدار

. داردنگهراNULLمقدارتواندیملجدوستونکیفرض،شیپطوربه

. داددخواهحیتوضرا NOT NULLوIS NULL عملگرهايقسمتنیا

SQLدر NULLمقادیر

ایساختهدیجدرکوردکیستوننیابهمقدارکیکردناضافهبدونمیتوانیم،باشدياریاختجدولکیدرستونکیاگر

. شدخواهدپرNULLمقدارکیبالدیفنیاکهاستیمعنبداننیا. میکنیرسانروزب

.متفاوت عمل می کننداز بقیه مقادیرNULLمقدار

NULLشودیماستفادهاجراقابلریغایوناشناختهبه عنوان مقادیر .

. ستندینبرابرهمباآنها . ممکن نیست0عددوNULLسهیمقا:نکته

NULL مقدارباکردنکار

:"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Stavanger

Page 69: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

64

يبرايمقدارچیهاگرکهاستیمعننیابهنیا. استياریاخت"Persons"جدولدر"Address"ستونکهدیکنفرض

. شودیمپرراNULLمقداربادینکنواردستوننیا

م؟یکنشیآزماراNULLمقدارتوانیمچگونه

. دیدهانجام><ایو،<،=مانندرابطهيهاعملگرباراکارنیاستینممکن

. میکناستفادهIS NOT NULL وIS NULL يهاعملگر ازمیخواهیم

IS NULLمقدار

م؟یکنانتخاب"Address" ستوندرراNULLریدمقاباییهارکوردتنهاتوانمیمچگونه

:میکناستفادهNULLعملگر ازمیخواهیم

SELECT LastName,FirstName,Address FROM PersonsWHERE Address IS NULL

:جدول نتیجه اینگونه خواهد شد

LastName FirstName Address

Hansen Ola

Pettersen Kari

. استفاده کنیدNULLبراي جستجوي مقادیر IS NULLازشهیهم:نکته

IS NOT NULLمقدار

کنم؟انتخاب"Address"ستوندرراNOT NULLریمقادبايرکوردهاتنهاتوانمیمچگونه

:میکناستفادهIS NOT NULLعملگرازمیخواهیم

SELECT LastName,FirstName,Address FROM Personss IS NOT NULLWHERE Addres

:جدول نتیجه اینگونه خواهد شد

Page 70: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

65

LastName FirstName Address

Svendson Tove Borgvn 23

.نگاه خواهیم کرد()ISNULL() ،NVL() ،IFNULL() ،COALESCEدر قسمت بعد به توابع

SQLدر NULLتوابع

()COALESCE و()ISNULL(), NVL(), IFNULL توابع

:زیر نگاه کنید"Products"جدولبه

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder

1 Jarlsberg 10.45 16 15

2 Mascarpone 32.56 23

3 Gorgonzola 15.67 9 20

. باشدNULLمقداريحاواستممکنواست،ياریاخت"UnitsOnOrder"ستونکهدیکنفرض

:دزیر استفاده کنیSELECTاز دستور

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)FROM Products

.استNULLجهینتد،باشNULLمقدار"UnitsOnOrder"ستونریمقادازکیهراگرباال،مثالدر

تفاده می رفتار کنند، اسNULLریمقادمیخواهیمه چگونکردن اینکهمشخصبراي AccessدرموجودISNULL()تابع

. شود

. ردیگقراراستفادهموردجهینتهمانبهدنیرسيبراتواندیمزین()COALESCE و()NVL() ,IFNULLتوابع

. باشدصفرNULLمقدارمیخواهیمحالتنیادر

ابعت،باشدNULLمقداراگررایز،زندینمياصدمهچیهمحاسبهدرباشدیخال"UnitsOnOrder"ستوناگرر،یزدر

ISNULL()دگردانیمبرراصفر:

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))FROM Products

Page 71: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

66

Oracle

:میکناستفادهNVL()تابعازمشابهجهینتبهدنیرسيبرامیتوانیمحال،نیابا. نداردISNULL()تابعاوراکل

ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))SELECTFROM Products

MySQL

MySQLتابعکی()ISNULLتابعازمتفاوتیکماما. دارد()ISNULLکندیمکارکروسافتیمادرموجود.

:میکناستفاده()IFNULLتابعازمیتوانیمMySQLدر

itsInStock+IFNULL(UnitsOnOrder,0))SELECT ProductName,UnitPrice*(UnFROM Products

:میکناستفادهاست،نیابههیشبکه()COALESCEتابعازمیتوانیمایو

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))FROM Products

SQLدرهادادهنوع

SQL Server وMicrosoft Access ,MySQLيبراهامحدودهوهادادهانواع

Microsoft Accessيبراهادادهانواع

الزميفضا حاتیتوض دادهنوع

1 byte .اعدادومتنازیبیترکایومتنازاستفاده Text

2 bytes. کندیمرهیذخکاراکتر65536تا. شودیماستفادهمتنازبزرگترریمقاديبرا

.هستندجستجوقابلچندهر. دیکنمرتبدیتوانینمراMemoکیشما: توجهMemo

4 bytes .دهدیماجازه255تا0ازحیصحاعدادتا Byte

4 bytes .دهدیماجازه32767و-32768نیبحیصحاعدادتا Integer

8 bytes .دهدیماجازه2147483647تا-2147483648نیبکلتعدادتا Long

8 bytes . کندیمتحملراشتریباعشاررقم. شناورزیممدقتکی Single

Page 72: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

67

4 bytes .تحملراشتریباعشاررقم. ياعشاردقتدو Double

8 bytes. داردیمنگهرااعشاررقم4عالوهبهدالر،کاملرقم15تا. شودیماستفادهپوليبرا

.دیکنانتخابراخودکشورارزدیتوانیمشما: نکتهCurrency

1 bitوکندیماضافهشمارهکیرکوردهربهخودکارطوربهAutoNumberيهانهیزم

.شودیمشروعکیباAutoNumber

up to 1GB .زمانوخیتارازاستفاده Date/Time

خاموش/ روشنایوغلط،/ درستر،یخ/ بلهعنوانبهتواندیمیمنطقيهانهیزمدر

مقدار: توجه). 0و-1معادل(Yes/Noيهاثابتازاستفاده،کددر.شوددادهشینما

NULLدرYes/Noستینمجاز.Yes/No

4 byte .کندرهیذختواندیمرا)بزرگينریبااءیاش(BLOBsایدئو،یوصدا،ر،یتصاو Ole Object

.وبصفحاتجملهازگر،یديهالیفابهییوندهایپشامل Hyperlink

.دیکنواردانتخابییکشوستیلازدیتوانیمکهاستهانهیگزازستیلکی Lookup Wizard

MySQLيبراهادادهانواع

. زمان/ خیتاروشمارهمتن،: داردوجودیاصلدادهنوعسهMySQLدر

:انواع متن

حاتیتوض دادهنوع

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

.داردراکاراکتر255تايسازرهیذخییتوانا. شودیممشخصCHAR(size)

پرانتزدراندازهحداکثر). باشدخاصيکاراکترهاواعدادحروف،شاملتواندیم(استریمتغطولبارشتهکیيدارا

. داردراکاراکتر255تايسازرهیذخییتوانا. شودیممشخص

.کندیممتننوعبهلیتبدراآندیدهقرار255ازبزرگترمقدارکیشمااگر: توجهVARCHAR(size)

.استکاراکتر255حداکثرطولبارشتهکیيدارا TINYTEXT

.استکاراکتر65535حداکثرطولبارشتهکیيدارا TEXT

. داردیمنگهراهادادهازتیبا65535تا). بزرگينریبااءیاش(BLOBsيبرا BLOB

. استکاراکتر16777215حداکثرطولبارشتهکیيدارا MEDIUMTEXT

Page 73: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

68

. داردیمنگهراهادادهازتیبا16777215تا). بزرگينریبااءیاش(BLOBsيبرا MEDIUMBLOB

.داردیمنگههادادهازتیبا16777215تا LONGTEXT

.داردیمنگهراهادادهازتیبا4294967295تا). بزرگينریبااءیاش(BLOBsيبرا LONGBLOB

. دیکنرهیذخمقدار65،535تاستیلنیادردیتوانیمشما. دیکنواردراممکنریمقادازستیلکیدهدیماجازه

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

.اندشدهمرتبآندرشدهواردریمقاد: دیباشداشتهتوجه

ENUM('X','Y','Z') : دیکنواردفرمتنیابادیباراممکنریمقاد

ENUM(x, y, z, etc.)

کیازشیبتواندیموستیلاقالم64ازشیبشاملاستممکنمجموعهآنجزبهالبتهاستENUMبههیشب

.دباشداشتهانتخابSET

:اعدادایهاشمارهانواع

حاتیتوضدادهنوع

. شودمشخصپرانتزداخلدراستممکنارقامتعدادحداکثر*.عالمتبدون255تا0از. نرمال127تا- 128TINYINT(size)

شودمشخصپرانتزداخلدراستممکنارقامتعدادحداکثر*.عالمتبدون65535تا0. نرمال32767تا-32768

. SMALLINT(size)

پرانتزداخلدراستممکنارقامتعدادحداکثر*.عالمتبدون16777215تا0. يعاد8388607تا-8388608

.شودمشخص MEDIUMINT(size)

دراستممکنارقامتعدادحداکثر*.عالمتبدون4294967295تا0. يعاد2147483647تا-2147483648

.شودشخصمپرانتزداخل INT(size)

بدون18446744073709551615تا0. يعاد9223372036854775807تا-9223372036854775808

.شودمشخصپرانتزداخلدراستممکنارقامتعدادحداکثر*.عالمت BIGINT(size)

Page 74: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

69

شدهمشخصsizeپارامتردراستممکنارقامتعدادحداکثر. ندیآیمشناوراعشارنقطهباازاعدادیکمتعداد

.میکنیممشخصdپارامتربااعشارنقطهراستسمتدرراارقامتعدادحداکثر.باشد FLOAT(size,d)

شدهمشخصsizeپارامتردراستممکنارقامتعدادحداکثر. ندیآیمشناوراعشارنقطهباازاعداديادیزتعداد

.میکنیممشخصdپارامتربااعشارقطهنراستسمتدرراارقامتعدادحداکثر.باشد DOUBLE(size,d)

DOUBLEارقامتعدادحداکثر.دهدیماجازهياعشارثابتنقطهکیيبراوشودیمرهیذخرشتهکیعنوانبه

dپارامتربااعشارنقطهراستسمتدرراارقامتعدادحداکثر. باشدشدهمشخصsizeپارامتردراستممکن

.میکنیممشخص DECIMAL(size,d)

لیتبدمثبتبهیمنفازراحیصحعددمعمول،طوربه. دارند)عالمتبدون(UNSIGNEDنامبهیاضافنهیگزحیصحيهادادهانواع*

یمشروع)یمنفعددکیيجابه(صفرازحرکتبارامحدودهوکردخواهدعالمتبدونرامحدودهیژگیونیاکردناضافه.کندیم

. کند

:نوع تاریخ

حاتیتوضدادهنوع

YYYY-MM-DD : فرمتبا. استخیتاريورود

.کندیمیبانیپشت'31-12-9999'تا'01-01-1000'دامنهازدادهنوعنیا: توجهDATE()

YYYY-MM-DD HH:MM:SS :فرمتبا. استزمانوخیتارازیبیترکيورود*

.کندیمیبانیپشت'23:59:59 31-12-9999'تا'00:00:00 01-01-1000'دامنهازدادهنوعنیا: توجهDATETIME()

رهیذخرا) UTC '00:00:00 01-01-1970'(کسیونیخیتارمبداازبعديهاهیثانازيتعداد. استزمانيورود*

YYYY-MM-DD HH:MM:SS : فرمتبا. کندیم

یبانیپشتUTC '03:14:07 09-01-2038'تاUTC '00:00:01 01-01-1970'دامنهازدادهنوعنیا: توجه

.کندیم TIMESTAMP()

Page 75: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

70

HH:MM:SS : فرمتبا. استزمانيورود

.کندیمیبانیپشت'838:59:59'تا'838:59:59-'دامنهازدادهنوعنیا: توجهTIME()

. استیرقمچهاراییرقمدوقالبدرسالکیيورود

ازگرفتهبر69تا70سال: یرقمدوفرمتدرمجازریمقاد. 2155تا1901: یرقمچهارفرمتدرمجازریمقاد: توجه

.2069تا1970سال YEAR()

يجووپرسدر. هستندمتفاوتهمبااریبسکارکردنظرازیولاستهمبههیشب()TIMESTAMPو()DATETIMEتابعدوفرمت*

INSERTایوUPDATEداده،TIMESTAMPيهافرمتزمانبرچسب.چسباندیمیفعلزمانوخیتاربهراخودخودکارطوربه

.YYMMDDای،YYYYMMDDHHMMSS،YYMMDDHHMMSS،YYYYMMDDمانندردیپذیمیمختلف

SQL Server يبراهادادهانواع

:يکاراکتريهارشته

الزمفضاي توضیحات دادهنوع

n . استکاراکتر8000حداکثر. استثابتطولبايکاراکتررشته char(n)

. استکاراکتر8000حداکثر. ریمتغطولبايکاراکتررشته varchar(n)

. کاراکتر1073741824حداکثر. ریمتغطولبايکاراکتررشته varchar(max)

.یمتنيهاداده2GBحداکثر. ریمتغطولبايکاراکتررشته text

:ته هاي یونیکد رش

الزمفضاي توضیحات دادهنوع

.استکاراکتر4000حداکثر. استثابتطولباکدیونیيهاداده nchar(n)

.استکاراکتر4000حداکثر. راستیمتغطولباکدیونیيهاداده nvarchar(n)

Page 76: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

71

.استکاراکتر536،870،912حداکثر. راستیمتغطولباکدیونیيهاداده nvarchar(max)

.ی متنيهاداده2GBحداکثر. راستیمتغطولباکدیونیيهاداده ntext

:یینوع دودو

الزمفضاي توضیحات دادهنوع

Nullو1و0اعداد bit

.استتیبا8000حداکثر. استثابتطولبایی دودويهاداده binary(n)

.استتیبا8000حداکثر. استریمتغطولباییدودويهاداده varbinary(n)

2GBحداکثر. استریمتغطولباییدودويهاداده varbinary(max)

2GBحداکثر. استریمتغطولباییدودويهاداده image

:انواع شماره ها یا اعداد

الزمفضاي توضیحات دادهنوع

1 byte 255تا0ازحیصحاعداد tinyint

2 bytes 32767و-32768نیبحیصحاعداد smallint

4 bytes 2147483647تا-2147483648نیباعدادکلتعداد int

8 bytesو-9.223.372.036.854.775.808نیباعدادکلتعداد

9.223.372.036.854.775.807 bigint

5-17 bytes

.اسیمقاعدادوثابتدقتبااعداد

.1-38^10به-1+38^10ازاعداد

دردوهر(شودیمرهیذختواندیمکهيعددحداکثرکلتعداددهدیمنشانPامترپار

طوربه. باشدداشته38تا1مقداردیباP). اعشارنقطهراستسمتدروچپسمت

درشدهرهیذخيهارقمتعدادحداکثردهد،یمنشانSپارامتر. است18فرضشیپ

شیپمقدار. باشدداشتهPبه0ازرامقدارکیدیباS. استاعشارنقطهراستسمت

.است0فرض

decimal(p,s)

Page 77: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

72

5-17 bytes

.1-38^10به-1+38^10ازاعداد.اسیمقاعدادوثابتدقتبااعداد

دردوهر(شودیمرهیذختواندیمکهيعددحداکثرکلتعداددهدیمنشانPپارامتر

طوربه. باشدداشته38تا1مقداردیباP). راعشانقطهراستسمتدروچپسمت

درشدهرهیذخيهارقمتعدادحداکثردهد،یمنشانSپارامتر. است18فرضشیپ

شیپمقدار. باشدداشتهPبه0ازرامقدارکیدیباS. استاعشارنقطهراستسمت

.است0فرض

numeric(p,s)

4 bytes 214748.3647تا- 214748.3648ازپوليهاداده smallmoney

8 bytes922337203685477.5807به-922337203685477.5808ازپوليهاداده

money

4 or 8 bytes

E + 3081.79تا-E + 3081.79ازاعشاردقتبايعدديهاداده

float(24). کندتحملراتیبا8ای4دیبارشتهنیاایآکهدهدیمنشانNپارامتر

شیپمقدار. استیتیبا8دانیمکیيداراfloat(53)ویتیبا4دانیمکیيدارا

.است53عددnيبرافرض

float(n)

4 bytes 3.40E + 38تا3.40E + 38-شمارهازاعدادقیدقاطالعات real

:نوع تاریخ

الزمفضاي توضیحات دادهنوع

8 bytes .استهیثانیلیم3.33دقتبا9999سامبر،د31تا1753هیژانو1خیتاراز datetime

6-8 bytes .استهیثاننانو100دقتبا9999دسامبر،31تا0001،هیژانو1خیتاراز datetime2

4 bytes .استقهیدق1دقتبا،2079،ژوئن6تا1900سالهیژانو1خیتاراز smalldatetime

3 bytes .9999دسامبر،31تا0001،هیژانو1زا. خیتاررهیذخفقط date

3-5 bytes .استهیثاننانو100دقتبازمانرهیذخفقط time

8-10 bytes dateهمان me2یزمانمنطقهافستکیازنیابرعالوهاست . datetimeoffset

باایوشودیمجادیافیردکیکهیزماندرشودیمرهیذخفردبهمنحصرشمارهکی

یداخلساعتکیاساسبررازمانtimestampمقدار. شودیمیرسانروزبرییتغ

زمانکیفقطاستممکنجدول،هر. نداردمطابقتیواقعزمانبهوکندیممیتنظ

.باشدداشتهریمتغ

timestamp

:گر داده ها یانواع د

Page 78: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

73

توضیحات دادهنوع

.زمانو،ntextمتن،جزبهمختلف،يهادادهانواعازراهادادهازتیبا8000ازشتریبرهیذخ sql_variant

).GUID(جهانسطحدرفردبهمنحصرشناسهکیرهیذخ uniqueidentifier

.2GBحداکثر. هادادهفرمتباXMLرهیذخ xml

. شودیماستفادهدادهگاهیپااتیعمليبراگراشارهکیبامرجعرهیذخ cursor

.ندهیآدرپردازشيبراجهینتکیرهیخذ table

Page 79: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

74

SQLتوابع

SQLتوابع داخلی زیادي براي انجام محاسبات بر روي داده دارد.

SQLتوابع جمعی

.یک مقدار تکی محاسبه شده از مقادیر یک ستون را برمی گردانندSQLتوابع جمعی

:توابع جمعی مفید

·AVG()-معدل را برمی گرداند·COUNT()-تعداد سطرها را برمی گرداند·FIRST() -ولین مقدار را برمی گرداندا·LAST()-آخرین مقدار را برمی گرداند·MAX()-بیشترین مقدار را برمی گرداند·MIN()-کمترین مقدار را برمی گرداند·SUM()-مجموع را برمی گرداند

SQLاسکالرتوابع

.یک مقدار تکی مبنی بر مقدار ورودي را برمی گردانندSQLاسکالرتوابع

:مفیداسکالرع تواب

·UCASE() -تبدیل رشته به حروف بزرگ·LCASE() -تبدیل رشته به حروف کوچک·MID() -استخراج کاراکترها از یک رشته متنی·LEN()-طول یک رشته متنی را برمی گرداند·ROUND()- گرد می کندرشته عددي را با تعداد اعشار مشخصیک·NOW()-گرداندستم را برمیتاریخ و ساعت فعلی سی·FORMAT()-چگونگی نمایش یک فیلد را مشخص می کند

()AVGتابع

SQLتوابع -فصل سوم

Page 80: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

75

.مقدار میانگین از یک ستون عددي را برمی گرداند()AVGتابع

SQLدر ()AVGگرامر

SELECT AVG(column_name) FROM table_name

SQLدر ()AVGمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.مرا پیدا کنی”OrderPrice“اکنون می خواهیم مقدار میانگین فیلد

:تفاده می کنیمزیر اسSQLاز دستور

SELECT AVG(OrderPrice) AS OrderAverage FROM Orders

:نتیجه اینگونه خواهد شد

OrderAverage

950

.میانگین دارند را پیدا کنیم”OrderPrice“باالتر از مقدار ”OrderPrice“یک مقدار ) حداقل(که اکنون می خواهیم مشتریانی

:مزیر استفاده می کنیSQLاز دستور

SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

:نتیجه اینگونه خواهد شد

Page 81: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

76

Customer

Hansen

Nilsen

Jensen

SQLدر ()COUNTتابع

.تعدادي سطر که با یک معیارهاي مشخص تطبیق داده شده اند را برمی گرداندSQLدر ()COUNTتابع

SQLدر COUNT(column_name)امرگر

:از ستون مشخصی را برمی گرداند) شمارش نخواهد شدNULLمقادیر (تعدادي مقادیر COUNT(column_name)تابع

SELECT COUNT(column_name) FROM table_name

SQLدر (*)COUNTگرامر

:رکورد از یک جدول را برمی گرداندSQLدر (*)COUNTتابع

SELECT COUNT(*) FROM table_name

SQLدر COUNT(DISTINCT column_name)گرامر

:تعدادي مقادیر متمایز از ستون مشخصی را برمی گرداندCOUNT(DISTINCT column_name)تابع

SELECT COUNT(DISTINCT column_name) FROM table_name

Microsoftو ORACLEدر COUNT(DISTINCT): توجه SQL Server کار می کند و درMicrosoft Access کار نمی.کند

SQLدر COUNT(DISTINCT column_name)مثال

:زیر را داریم”Orders“جدول

Page 82: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

77

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

:را بشماریم”Nilsen“اکنون می خواهیم تعداد سفارشات مشتري

:زیر استفاده می کنیمSQLاز دستور

SELECT COUNT(Customer) AS CustomerNilsen FROM OrdersWHERE Customer='Nilsen'

:سفارش دارد2مجموعا Nilsenن مشتري خواهد شد؛ چو2باال SQLنتیجه دستور

CustomerNilsen

2

SQLدر (*)COUNTمثال

:صرفنظر کنیم، مثل اینWHEREاگر از عبارت

SELECT COUNT(*) AS NumberOfOrders FROM Orders

:نتیجه این گونه خواهد شد

NumberOfOrders

6

.که مجموع تعداد سطرهاي جدول است

SQLدر COUNT(DISTINCT column_name)مثال

Page 83: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

78

.را بشماریم”Orders“اکنون می خواهیم تعداد مشتریان غیر تکراري در جدول

:زیر استفاده می کنیمSQLاز دستور

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

:نتیجه اینگونه خواهد شد

NumberOfCustomers

3

,Hansen(ان غیر تکراري که تعداد مشتری Nilsen وJansen (در جدول است.

()FIRSTتابع

.اولین مقدار از ستون انتخاب شده را برمی گرداند()FIRSTتابع

SQLدر ()FIRSTگرامر

SELECT FIRST(column_name) FROM table_name

SQLدر ()FIRSTمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.را پیدا کنیم”OrderPrice“اکنون می خواهیم اولین مقدار از ستون

Page 84: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

79

:فاده می کنیمزیر استSQLاز دستور

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders

.پشتیبانی نشود()FIRSTراه حلی وجود دارد؛ اگر تابع : نکته

SELECT OrderPrice FROM Orders ORDER BY O_Id LIMIT 1

:نتیجه اینگونه خواهد شد

FirstOrderPrice

1000

()LASTتابع

.رین مقدار از ستون انتخاب شده را برمی گرداندآخ()LASTتابع

SQLدر ()LASTگرامر

SELECT LAST(column_name) FROM table_name

SQLدر ()LASTمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Page 85: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

80

.را پیدا کنیم”OrderPrice“اکنون می خواهیم آخرین مقدار از ستون

:زیر استفاده می کنیمSQLاز دستور

SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders

.پشتیبانی نشود()LASTوجود دارد؛ اگر تابع راه حلی : نکته

SELECT OrderPrice FROM Orders ORDER BY O_Id DESC LIMIT 1

:نتیجه اینگونه خواهد شد

LastOrderPrice

100

()MAXتابع

.بزرگترین مقدار از ستون انتخاب شده برمی گرداند()MAXتابع

SQLدر ()MAXگرامر

SELECT MAX(column_name) FROM table_name

SQLدر ()MAXمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Page 86: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

81

.را پیدا کنیم”OrderPrice“نون می خواهیم بزرگترین مقدار از ستون اک

:زیر استفاده می کنیمSQLاز دستور

SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

:نتیجه اینگونه خواهد شد

LargestOrderPrice

2000

()MINتابع

.شده را برمی گرداندکوچکترین مقدار از ستون انتخاب ()MINتابع

SQLدر ()MINگرامر

SELECT MIN(column_name) FROM table_name

SQLدر ()MINمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.را پیدا کنیم”OrderPrice“اکنون می خواهیم کوچکترین مقدار از ستون

:زیر استفاده می کنیمSQLاز دستور

SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders

Page 87: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

82

:نتیجه اینگونه خواهد شد

SmallestOrderPrice

100

()SUMتابع

.مجموع یک ستون عددي را برمی گرداند()SUMتابع

SQLدر ()SUMگرامر

SELECT SUM(column_name) FROM table_name

SQLدر ()SUMمثال

:زیر را داریم”Orders“جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.را پیدا کنیم”OrderPrice“اکنون می خواهیم مجموع همه فیلدهاي

:زیر استفاده می کنیمSQLاز دستور

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

:نتیجه اینگونه خواهد شد

Page 88: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

83

OrderTotal

5700

SQLدر Group Byدستور

.اضافه شده نیاز دارندGroup Byتوابع جمعی اغلب به یک دستور

Group Byدستور

.چند ستون استفاده می شوده توسط یک یابراي دسته بندي کردن نتیج،بع جمعیبا تواGroup Byدستور

SQLدر Group Byگرامر

SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name

SQLدر Group Byمثال

:زیر را داریم"Orders"جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

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

.براي دسته بندي کردن مشتریان استفاده کنیمGroup Byما مجبور خواهیم شد از دستور

Page 89: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

84

:زیر استفاده می کنیمSQLاز دستور

SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer

:نتیجه اینگونه خواهد شد

Customer SUM(OrderPrice)

Hansen 2000

Nilsen 1700

Jensen 2000

Jدلپسند است، مگه نه؟

:فاقی می افتادصرف نظر می کردیم چه اتGroup Byاگر از دستور ؛بگذارید ببینیم

SELECT Customer,SUM(OrderPrice) FROM Orders

:نتیجه اینگونه خواهد شد

Customer SUM(OrderPrice)

Hansen 5700

Nilsen 5700

Hansen 5700

Hansen 5700

Jensen 5700

Nilsen 5700

.نتیجه باال چیزي نیست که می خواستیم

باال دو ستون مشخص شده دارد SELECTدستور :نمی تواند استفاده شودباالSELECTتشریح اینکه چرا دستور )Customer وSUM(OrderPrice) .(هنگامیکه""Customer6 مقدار برمی گرداند) یک مقدار براي هر در سطر جدول""Orders( ،"SUM(OrderPrice)"گرداند یک مقدار واحد برمی) آن مجموع ستون"OrderPrice"نابراین این ب). است

.این مشکل را حل می کندGroup Byبا این حال، دیدید که دستور . نتیجه درست را به ما نخواهد داد

Group Byبا بیش از یک ستون

:براي بیش از یک ستون استفاده کنیم، مثل اینGroup Byما می توانیم از دستور

Page 90: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

85

SELECT Customer,OrderDate,SUM(OrderPrice) FROM OrdersGROUP BY Customer,OrderDate

Havingعبارت

.نمی تواند براي توابع جمعی استفاده شودWHEREاضافه شد؛ چون کلمه کلیدي SQLبه Havingعبارت

Havingگرامر عبارت

SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value

SQLدر Havingمثال

:زیر را داریم"Orders"جدول

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.دارد را پیدا کنیم2000اکنون می خواهیم هر مشتري را که جمع سفارش کمتر از

:زیر استفاده می کنیمSQLاز دستور

SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000

:نتیجه اینگونه خواهد شد

Customer SUM(OrderPrice)

Nilsen 1700

Page 91: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

86

.دارند را پیدا کنیم1500که جمع سفارش بیشتر از "Jensen"یا "Hansen"اکنون می خواهیم مشتریانی با نام

:اضافه می کنیمSQLمعمولی به دستور WHEREیک عبارت

SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Hansen' OR Customer='Jensen'GROUP BY CustomerHAVING SUM(OrderPrice)>1500

:نتیجه اینگونه خواهد شد

Customer SUM(OrderPrice)

Hansen 2000

Jensen 2000

()UCASEتابع

.مقدار یک رشته را به حروف بزرگ تبدیل می کند()UCASEتابع

()UCASEگرامر

SELECT UCASE(column_name) FROM table_name

SQL Serverگرامر براي

SELECT UPPER(column_name) FROM table_name

SQLدر ()UCASEمثال

:زیر را داریم”Persons“جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

را به ”LastName“باال را انتخاب کنیم و ستون ”FirstName“و ”LastName“اکنون می خواهیم محتواي ستونهاي .حروف بزرگ تبدیل کنیم

Page 92: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

87

:زیر استفاده می کنیمSQLاز دستور

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

:نتیجه اینگونه خواهد شد

LastName FirstName

HANSEN Ola

SVENDSON Tove

PETTERSEN Kari

()LCASEتابع

.مقدار یک رشته را حروف کوچک تبدیل می کند()LCASEتابع

()LCASEگرامر

SELECT LCASE(column_name) FROM table_name

SQL Serverگرامر براي

SELECT LOWER(column_name) FROM table_name

SQLدر ()LCASEتابع مثال

:زیر را داریم"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

را به "LastName"ستون هاي باال را انتخاب کنیم و ستون "FirstName"و "LastName"اکنون می خواهیم محتواي .ف کوچک تبدیل کنیم.حرو

:زیر استفاده می کنیمSQLاز دستور

SELECT LCASE(LastName) as LastName,FirstName FROM Persons

Page 93: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

88

:نتیجه اینگونه خواهد شد

LastName FirstName

hansen Ola

svendson Tove

pettersen Kari

()MIDتابع

.براي استخراج کاراکترها از یک رشته متنی استفاده می شود()MIDتابع

()MIDتابع گرامر

SELECT MID(column_name,start[,length]) FROM table_name

توضیحات پارامتر

رشته مورد نظر براي استخراج کاراکترها. الزم column_name

)1شروع از (موقعیت شروع را مشخص کنید .الزم start

.بقیه متن را برمی گرداند()MIDاگر صرفنظر شود، تابع . تعداد کاراکترها براي بازگشت. اختیاري length

SQLدر()MIDمثال

:زیر را داریم"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.باال را استخراج کنیم"City"اکنون می خواهیم چهار کاراکتر اول از ستون

:زیر استفاده می کنیمSQLاز دستور

Page 94: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

89

SELECT MID(City,1,4) as SmallCity FROM Persons

:شدنتیجه اینگونه خواهد

SmallCity

Sand

Sand

Stav

()LENتابع

.طول مقدار یک فیلد متنی را برمی گرداند()LENتابع

()LENتابع گرامر

SELECT LEN(column_name) FROM table_name

SQLدر ()LENتابع مثال

:زیر را داریم"Persons"جدول

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.باال را انتخاب کنیم"Address"اکنون می خواهیم طول مقادیر در ستون

:زیر استفاده می کنیمSQLاز دستور

SELECT LEN(Address) as LengthOfAddress FROM Persons

:نگونه خواهد شدنتیجه ای

LengthOfAddress

12

9

9

Page 95: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

90

()ROUDNتابع

.براي گرد کردن یک فیلد عددي به تعداد عدد اعشاري مشخص()ROUDNتابع

SQLدر ()ROUDNگرامر

SELECT ROUND(column_name,decimals) FROM table_name

توضیحات پارامترها

.فیلدي که باید گرد شود. الزم column_name

.تعداد اعشار براي گرد شدن را تعیین می کند. الزم decimals

SQLدر ()ROUDNمثال

:زیر را داریم"Products"جدول

Prod_Id ProductName Unit UnitPrice

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

.والت و قیمت گرد شده به نزدیکترین عدد نمایش دهیماکنون می خواهیم نام محص

:زیر استفاده می کنیمSQLاز دستور

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

:نتیجه اینگونه خواهد شد

ProductName UnitPrice

Jarlsberg 10

Mascarpone 33

Gorgonzola 16

()NOWتابع

Page 96: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

91

.تاریخ و زمان فعلی سیستم را برمی گرداند()NOWابع ت

SQLدر ()NOWگرامر

SELECT NOW() FROM table_name

()NOWمثال

:زیر را داریم"Products"جدول

Prod_Id ProductName Unit UnitPrice

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

.اکنون می خواهیم محصوالت و قیمت ها در تاریخ امروز را نمایش دهیم

:زیر استفاده می کنیمSQLاز دستور

SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

:نتیجه اینگونه خواهد شد

ProductName UnitPrice PerDate

Jarlsberg 10.45 10/7/2008 11:25:02 AM

Mascarpone 32.56 10/7/2008 11:25:02 AM

Gorgonzola 15.67 10/7/2008 11:25:02 AM

()FORMATتابع

.براي چگونگی نمایش فرمت یک فیلد استفاده می شود()FORMATتابع

SQLدر ()FORMATگرامر

Page 97: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

92

SELECT FORMAT(column_name,format) FROM table_name

SQLدر ()FORMATمثال

:زیر را داریم"Products"جدول

Prod_Id ProductName Unit UnitPrice

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

.را نمایش دهیم) "YYYY-MM-DD"با فرمت (خواهیم محصوالت و قیمت در تاریخ امروز اکنون می

:زیر استفاده می کنیمSQLاز دستور

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate FROMProducts

:نتیجه اینگونه خواهد شد

ProductName UnitPrice PerDate

Jarlsberg 10.45 2008-10-07

Mascarpone 32.56 2008-10-07

Gorgonzola 15.67 2008-10-07

توضیحات پارامتر

.فیلدي که باید فرمت دهی شود. الزم column_name

.فرمت را تعیین می کند. الزم format

Page 98: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

٩٣

SQLمرجع سریع دستورات

SQL دستورات گرامر

AND / OR

SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition

ALTER TABLE

ALTER TABLE table_nameADD column_name datatype

یا

ALTER TABLE table_nameDROP COLUMN column_name

AS (alias)

SELECT column_name AS column_aliasFROM table_name

یا

SELECT column_nameFROM table_name AS table_alias

BETWEEN

SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2

CREATE DATABASE CREATE DATABASE database_name

CREATE TABLE

CREATE TABLE table_name(column_name1 data_type,column_name2 data_type,column_name2 data_type,...)

CREATE INDEX

CREATE INDEX index_nameON table_name (column_name)

یا

ضمیمه

Page 99: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

٩۴

CREATE UNIQUE INDEX index_nameON table_name (column_name)

CREATE VIEW

CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition

DELETE

DELETE FROM table_nameWHERE some_column=some_value

یا

DELETE FROM table_name

!)محتواي جدول را حذف می کند: توجه(

DELETE * FROM table_name

!)را حذف می کندمحتواي جدول : توجه(

DROP DATABASE DROP DATABASE database_name

DROP INDEX

DROP INDEX table_name.index_name (SQL Server)DROP INDEX index_name ON table_name (MS Access)DROP INDEX index_name (DB2/Oracle)ALTER TABLE table_nameDROP INDEX index_name (MySQL)

DROP TABLE DROP TABLE table_name

GROUP BY

SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name

HAVING

SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value

IN

SELECT column_name(s)FROM table_nameWHERE column_nameIN (value1,value2,..)

INSERT INTOINSERT INTO table_nameVALUES (value1, value2, value3,....)

Page 100: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

٩۵

یا

INSERT INTO table_name(column1, column2, column3,...)VALUES (value1, value2, value3,....)

INNER JOIN

SELECT column_name(s)FROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_name

LEFT JOIN

SELECT column_name(s)FROM table_name1LEFT JOIN table_name2ON table_name1.column_name=table_name2.column_name

RIGHT JOIN

SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2ON table_name1.column_name=table_name2.column_name

FULL JOIN

SELECT column_name(s)FROM table_name1FULL JOIN table_name2ON table_name1.column_name=table_name2.column_name

LIKESELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern

ORDER BYSELECT column_name(s)FROM table_nameORDER BY column_name [ASC|DESC]

SELECTSELECT column_name(s)FROM table_name

SELECT *SELECT *FROM table_name

SELECT DISTINCTSELECT DISTINCT column_name(s)FROM table_name

SELECT INTO

SELECT *INTO new_table_name [IN externaldatabase]FROM old_table_name

یا

Page 101: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

٩۶

SELECT column_name(s)INTO new_table_name [IN externaldatabase]FROM old_table_name

SELECT TOPSELECT TOP number|percent column_name(s)FROM table_name

TRUNCATE TABLE TRUNCATE TABLE table_name

UNIONSELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

UNION ALLSELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2

UPDATEUPDATE table_nameSET column1=value, column2=value,...WHERE some_column=some_value

WHERESELECT column_name(s)FROM table_nameWHERE column_name operator value

SQLهاستینگ در

سیستم تان باید به یکاگر می خواهید وب سایت تان قادر به دخیره کردن و نمایش داده ها از یک پایگاه داده باشد، وب سرور

.استفاده می کندSQLپایگاه داده دسترسی داشته باشد که از زبان

ه نگاSQLمیزبان خواهد شد؛ باید به طرح هاي هاستینگ ) ISP(اگر وب سرور شما توسط یک فراهم کننده سرویس اینترنت

.کنید

.هستندMS Accessو MySQL ،MS SQL Serverرایج ترین پایگاه داده هاي هاستینگ

.یونیکس داشته باشید/را در هر دو سیستم عامل ویندوز و لینوکسSQLشما می توانید پایگاه داده هاي

:ام سیستم پایگاه داده روي کدام سیستم عامل اجرا می شود، آمده استدر زیر یک نماي کلی از اینکه کد

My SQL Server

.فقط بر روي سیستم عامل ویندوز اجرا می شود

Page 102: SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫارbafghloco.rai.ir/dorsapax/userfiles/file/bafghloco/SQLServer.pdf · SQL تارﻮﺘﺳد ﻊﻣﺎﺟ يﺎﻤﻨﻫار SQL

91بهار SQLدستوراتجامعراهنماي

٩٧

MySQL

.یونیکس اجرا می شود/بر روي هر دو سیستم عامل ویندوز و لینوکس

MS Access

.فقط بر روي سیستم عامل ویندوز اجرا می شود

.بازدید کنیددوره آموزش هاستینگ مادرباره وب هاستینگ، لطفا از براي آموزش بیشتر

را آموختید، حاال چکاري باید انجام دهید؟SQLشما

SQLخالصه

.کاري سیستم هاي پایگاه داده استزبان استاندارد کامپیوتر براي دسترسی و دستSQLبه شما آموخت که SQLاین دوره

در یک پایگاه داده پرس و جو را اجرا کنید، داده را بازیابی کنید، رکوردهاي جدید درج کنید، SQLشما آموختید که چگونه با

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

.زید، و چگونه آنها را حذف کنیدبساSQLپایگاه هاي داده، جداول و فهرست ها را با شما همچنین آموختید که چگونه

.آموختیدSQLشما مهمترین توابع جمعی را در

، MS SQL Server ،IBM DB2زبان استانداردي است که با همه سیستم هاي پایگاه داده معروف مثل SQLاکنون می دانید که

Oracle ،MySQL وMS Accessبخوبی کار می کند.

بعدي چیست؟، آموزشرا آموختیدSQLحاال شما

.استPHP MySQLیا ADOپیشنهاد ما براي یادگیري درباره

.را بازدید کنیدماADOدوره آموزش بیشتر بیاموزید، لطفا ADOاگر می خواهید در مورد

.را بازدید کنیدماPHPدوره آموزش بیشتر بیاموزید، لطفا MySQLاگر می خواهید در مورد