0% found this document useful (0 votes)
31 views69 pages

Database

Uploaded by

trad9901
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views69 pages

Database

Uploaded by

trad9901
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

‫ﭘﺎﻳﮕﺎه داده‬

‫‪SQL‬‬
‫ﻓﻬﺮﺳﺖ‬ ‫أ‬

‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده ‪١ .............................................................................................................................................‬‬

‫‪Database‬ﻳﺎ دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﻳﺎ ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﭼﻴﺴﺖ ؟ ‪٢ ....................................................................................‬‬

‫‪Table‬ﭼﻴﺴﺖ ؟ ‪٣ ............................................................................................................................................‬‬

‫‪Field‬ﭼﻴﺴﺖ ؟ ‪٤ ..............................................................................................................................................‬‬

‫‪Record‬ﭼﻴﺴﺖ ؟ ‪٥ ..........................................................................................................................................‬‬

‫‪SQL‬ﭼﻴﺴﺖ ؟ )اس ﻛﻴﻮ ال ﭼﻴﺴﺖ( ‪٧ .....................................................................................................................‬‬

‫ﻣﺰاﻳﺎي‪٨ .................................................................................................................................................. SQL‬‬

‫ﺗﺎرﻳﺨﭽﻪ اس ﻛﻴﻮ ال)‪٨ ................................................................................................................................. (SQL‬‬

‫ﺑﺎ ‪ SQL‬ﭼﻪ ﻛﺎر ﻫﺎﻳﻲ ﻣﻴﺘﻮان اﻧﺠﺎم داد ؟‪٩ ..................................................................................................................‬‬

‫اﺳﺘﻔﺎده از ‪ SQL‬در ﻃﺮاﺣﻲ ﺳﺎﻳﺖ ‪١٠ .......................................................................................................................‬‬

‫دﺳﺘﻮرات ‪ DML‬و ‪ DDL‬در اس ﻛﻴﻮ ال ‪١٠ ...............................................................................................................‬‬

‫دﺳﺘﻮرات ‪ DML‬ﺷﺎﻣﻞ ﺑﺨﺸﻬﺎي زﻳﺮ ﻣﻴﺸﻮﻧﺪ ‪١١ ..........................................................................................................‬‬

‫دﺳﺘﻮرات‪ DDL‬ﺷﺎﻣﻞ ﺑﺨﺸﻬﺎي زﻳﺮ ﻣﻴﺸﻮﻧﺪ ‪١١ ............................................................................................................‬‬

‫اﻧﻮاع داده و ﻣﺘﻐﻴﺮ در‪١١ ................................................................................................................................ SQL‬‬

‫اﻧﻮاع داده رﺷﺘﻪ اي در اﺳﻜﻴﻮال‪١١ ....................................................................................... : Character strings‬‬

‫اﻧﻮاع داده ﻳﻮﻧﻴﻜﺪ در اﺳﻜﻴﻮال‪١٢ ............................................................................................... : Unicode types‬‬

‫اﻧﻮاع داده ﺑﺎﻳﻨﺮي در اﺳﻜﻴﻮال‪١٣ .................................................................................................. : Binary types‬‬

‫اﻧﻮاع داده ﻋﺪدي در اس ﻛﻴﻮ ال‪١٣ ............................................................................................. : Number types‬‬

‫اﻧﻮاع داده ﺗﺎرﻳﺦ در اس ﻛﻴﻮال‪١٤ .................................................................................................... :Date types‬‬

‫اﻧﻮاع دﻳﮕﺮ داده ﻫﺎ در‪١٥ ................................................................................................ sql: Other data types‬‬

‫دﺳﺘﻮرات‪١٧ ................................................................................................................................................. SQL‬‬

‫دﺳﺘﻮر ‪ SELECT‬در‪١٨ ................................................................................................................................ sql‬‬

‫دﺳﺘﻮر* ‪١٨ ....................................................................................................................................... SELECT‬‬

‫دﺳﺘﻮر ‪ SELECT DISTINCT‬در‪١٨ .................................................................................................................. sql‬‬


‫ﻓﻬﺮﺳﺖ‬ ‫ب‬

‫دﺳﺘﻮر ﺷﺮﻃﻲ ‪ WHERE‬در‪١٩ ....................................................................................................................... sql‬‬

‫ﻋﻤﻠﮕﺮ ﻫﺎي ‪ And‬و ‪ Or‬در‪٢٠ ....................................................................................................................... SQL‬‬

‫دﺳﺘﻮر ‪ Order By‬در‪٢٠ ............................................................................................................................... sql‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر‪٢١ ............................................................................................................................. Order By‬‬

‫دﺳﺘﻮر ‪ Group By‬در‪٢١ .............................................................................................................................. sql‬‬

‫دﺳﺘﻮر ﺷﺮﻃﻲ ‪ Having‬در‪٢٣ ........................................................................................................................ sql‬‬

‫دﺳﺘﻮر ‪ Insert‬در اﺳﻜﻴﻮال ‪٢٣ .............................................................................................................................‬‬

‫دﺳﺘﻮر ‪ Update‬در‪٢٤ ................................................................................................................................. sql‬‬

‫دﺳﺘﻮر ‪ Delete‬در اﺳﻜﻴﻮال ‪٢٥ ...........................................................................................................................‬‬

‫دﺳﺘﻮر* ‪٢٥ ......................................................................................................................................... Delete‬‬

‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ‪٢٦ ..................................................................................................................................... SQL‬‬

‫دﺳﺘﻮر ‪ TOP‬در‪٢٧ ...................................................................................................................................... sql‬‬

‫ﻋﻤﻠﮕﺮ ‪ Like‬در‪٢٧ ..................................................................................................................................... SQL‬‬

‫ﻋﻼﻣﺖ ﻫﺎي ﺷﺮﻃﻲ در‪٢٨ ............................................................................................................................ Like‬‬

‫ﻋﻤﻠﮕﺮ ‪ In‬در‪٢٨ .......................................................................................................................................... sql‬‬

‫ﻋﻤﻠﮕﺮ ‪ BETWEEN‬در اﺳﻜﻴﻮال ‪٢٩ ......................................................................................................................‬‬

‫‪Alias‬در اس ﻛﻴﻮ ال ‪٣٠ .....................................................................................................................................‬‬

‫دﺳﺘﻮرﻫﺎي ﭘﻴﻮﻧﺪ ) ‪ ( Join‬در‪٣١ .................................................................................................................... SQL‬‬

‫ﺗﻔﺎوﺗﻬﺎي ﺑﻴﻦ دﺳﺘﻮرات ﭘﻴﻮﻧﺪ ) ‪ ( JOIN‬در‪٣١ .................................................................................................... SQL‬‬

‫ﺗﻔﺎوت ‪ Join‬و‪٣٢ .............................................................................................................................. InnerJoin‬‬

‫دﺳﺘﻮر ‪ INNER JOIN‬در‪٣٢ .......................................................................................................................... sql‬‬

‫دﺳﺘﻮر ‪ LEFT JOIN‬در‪٣٣ ........................................................................................................................... sql‬‬

‫دﺳﺘﻮر ‪ RIGHT JOIN‬در‪٣٤ .......................................................................................................................... sql‬‬

‫دﺳﺘﻮر ‪ FULL JOIN‬در‪٣٥ ............................................................................................................................. sql‬‬

‫دﺳﺘﻮر ‪ UNION‬در‪٣٥ .................................................................................................................................. sql‬‬


‫ﻓﻬﺮﺳﺖ‬ ‫ج‬

‫دﺳﺘﻮر ‪ SELECT INTO‬در‪٣٦ ...................................................................................................................... sql‬‬

‫ﻣﻘﺪار ‪ Null‬در اس ﻛﻴﻮ ال ‪٣٨ ..............................................................................................................................‬‬

‫دﺳﺘﻮر ‪ ISNULL‬در‪٣٨ .................................................................................................................................. sql‬‬

‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ)‪٤٠ ......................................................................................................................... (DDL‬‬

‫دﺳﺘﻮر ‪ CREATE DATABASE‬در‪٤١ .............................................................................................................. sql‬‬

‫دﺳﺘﻮر ‪ Create Table‬در‪٤١ ......................................................................................................................... sql‬‬

‫دﺳﺘﻮر ‪ Drop‬در اﺳﻜﻴﻮال ‪٤٢ .................................................................................................................................‬‬

‫دﺳﺘﻮر‪٤٢ ..................................................................................................................................... Drop Index‬‬

‫دﺳﺘﻮر‪٤٢ ..................................................................................................................................... Drop Table‬‬

‫دﺳﺘﻮر‪٤٢ .............................................................................................................................. Drop Database‬‬

‫دﺳﺘﻮر‪٤٢ ..................................................................................................................................... TRUNCATE‬‬

‫دﺳﺘﻮر ‪ Create Index‬در‪٤٣ .......................................................................................................................... sql‬‬

‫دﺳﺘﻮر ‪ Alter Table‬در‪٤٤ ............................................................................................................................ sql‬‬

‫اﺿﺎﻓﻪ ﻛﺮدن ﻓﻴﻠﺪ ﺑﻪ ﺟﺪول در اﺳﻜﻴﻮال ‪٤٤ ..............................................................................................................‬‬

‫ﺣﺬف ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول در‪٤٤ ......................................................................................................................... sql‬‬

‫ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول در‪٤٤ ........................................................................................................... sql‬‬

‫ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪ در ﻳﻚ ﺟﺪول ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر‪٤٥ ................................................................................................. sql‬‬

‫اﻳﺠﺎد ﻣﺤﺪودﻳﺖ ﺑﺮاي ﻓﻴﻠﺪ ﻫﺎ در اﺳﻜﻴﻮال)‪٤٥ ......................................................................................... (Constraints‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Primary Key , SQL PRIMARY KEY Constraint‬ﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ در اس ﻛﻴﻮ ال ‪٤٦ .......................................‬‬

‫اﻋﻤﺎل ﻣﺤﺪودﻳﺖ ‪ PRIMARY KEY‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول‪٤٦ ......................................................................................‬‬

‫ﻣﺤﺪودﻳﺖ ‪ PRIMARY KEY‬ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول ‪٤٧ ..........................................................................................‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻳﻚ‪٤٧ ............................................................................................................. PRIMARY KEY‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Foreign Key , SQL FOREIGN KEY Constraint‬ﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در اس ﻛﻴﻮال ‪٤٧ .....................................‬‬

‫ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول ‪٤٩ .........................................................................................‬‬

‫از ﺑﻴﻦ ﺑﺮدن‪٤٩ ........................................................................................................................ FOREIGN KEY‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Check , SQL CHECK Constraint‬ﻳﺎ ﻣﺤﺪودﻳﺖ ﻫﺎي ﺧﺎص در‪٤٩ ........................................................ sql‬‬
‫ﻓﻬﺮﺳﺖ‬ ‫د‬

‫ﻣﺤﺪودﻳﺖ ‪ CHECK‬ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺟﺪول ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮد ‪٥٠ .........................................................................................‬‬

‫ﻣﺤﺪودﻳﺖ ‪ CHECK‬ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول ‪٥٠ ...................................................................................................‬‬

‫از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ‪٥١ ....................................................................................................................... CHECK‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Default , SQL DEFAULT Constraint‬ﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در‪٥١ ........................................................... sql‬‬

‫ﻣﺤﺪودﻳﺖ ‪ DEFAULT‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول ‪٥١ ...................................................................................................‬‬

‫ﻣﺤﺪودﻳﺖ ‪ DEFAULT‬ﭘﺲ از ﺳﺎﺧﺖ ﺟﺪول ‪٥٢ .......................................................................................................‬‬

‫از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ‪٥٢ ................................................................................................................... DEFAULT‬‬

‫ﻣﺤﺪودﻳﺖ ‪ NOT NULL‬در‪٥٢ .......................................................................................................................... sql‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Unique , SQL UNIQUE Constraint‬در‪٥٣ .................................................................................. sql‬‬

‫ﻣﺤﺪودﻳﺖ ‪ UNIQUE‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ‪٥٣ ................................................................................................... TABLE‬‬

‫ﻣﺤﺪودﻳﺖ ‪ UNIQUE‬ﭘﺲ از ﺳﺎﺧﺖ ﺟﺪول ‪٥٤ ..........................................................................................................‬‬

‫از ﺑﻴﻦ ﺑﺮدن ﻳﻚ ﻣﺤﺪودﻳﺖ‪٥٤ ................................................................................................................ UNIQUE‬‬

‫ﻓﻴﻠﺪ ‪ identity‬در‪٥٤ ................................................................................................................................... sql‬‬

‫ﻓﻴﻠﺪ ‪ identity‬دو ﺧﺼﻮﺻﻴﺖ دارد‪٥٥ .................................................................................................................. :‬‬

‫آﻣﻮزش ‪ view‬در‪٥٥ ..................................................................................................................................... sql‬‬

‫ﻛﺎرﺑﺮد ‪ view‬در اﺳﻜﻴﻮال ‪٥٥ ...............................................................................................................................‬‬

‫ﺗﻮاﺑﻊ ‪٥٧ ...................................................................................................................................................... SQL‬‬

‫ﺗﺎﺑﻊ ‪ Avg‬در‪٥٨ .......................................................................................................................................... sql‬‬

‫ﺗﺎﺑﻊ ‪ COUNT‬در اﺳﻜﻴﻮال ‪٥٨ ..............................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ First‬در‪٥٨ ......................................................................................................................................... sql‬‬

‫ﺗﺎﺑﻊ ‪ Last‬در‪٥٨ .......................................................................................................................................... sql‬‬

‫ﺗﺎﺑﻊ ‪ Max‬در اﺳﻜﻴﻮال ‪٥٩ ..................................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ Min‬در اس ﻛﻴﻮ ال ‪٥٩ .................................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ Sum‬در اﺳﻜﻴﻮال ‪٥٩ ..................................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ UCase‬در‪٦٠ ...................................................................................................................................... sql‬‬


‫ﻓﻬﺮﺳﺖ‬ ‫ه‬

‫ﺗﺎﺑﻊ ‪ lcase‬در‪٦٠ ........................................................................................................................................ sql‬‬

‫ﺗﺎﺑﻊ ‪ Mid‬در اﺳﻜﻴﻮال ‪٦٠ ...................................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ Len‬در اﺳﻜﻴﻮال ‪٦٠ ....................................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ Round‬در اﺳﻜﻴﻮال ‪٦١ ...............................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ Now‬در‪٦١ ......................................................................................................................................... sql‬‬

‫ﺗﺎﺑﻊ ‪ Format‬در اﺳﻜﻴﻮال ‪٦١ ..............................................................................................................................‬‬

‫ﺗﺎﺑﻊ ‪ isNull‬در اﺳﻜﻴﻮال‪٦١ .................................................................................................................................‬‬


‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده‬
‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده ‪SQL‬‬ ‫‪2‬‬

‫‪Database‬ﻳﺎ دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﻳﺎ ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﭼﻴﺴﺖ ؟‬

‫دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﭼﻴﺴﺖ ؟ ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﻳﺎ دﻳﺘﺎﺑﻴﺲ )‪ (data base‬ﺑﻪ ﻣﺠﻤﻮﻋﻪ‬
‫اي از اﻃﻼﻋﺎت ﺑﺎ ﺳﺎﺧﺘﺎر ﻣﻨﻈﻢ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮد‪ .‬اﻳﻦ ﭘﺎﻳﮕﺎه ﻫﺎي اﻃﻼﻋﺎﺗﻲ ﻣﻌﻤﻮﻻً در ﻗﺎﻟﺒﻲ ﻛﻪ ﺑﺮاي دﺳﺘﮕﺎه ﻫﺎ و‬
‫راﻳﺎﻧﻪ ﻫﺎ ﻗﺎﺑﻞ ﺧﻮاﻧﺪن و ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﺑﺎﺷﻨﺪ ذﺧﻴﺮه ﻣﻲ ﺷﻮﻧﺪ‪.‬‬

‫ﭘﺎﻳﮕﺎه داده اس ﻛﻴﻮ ال ﭼﻴﺴﺖ ؟ ﺑﺎ ﮔﺴﺘﺮش ﻃﺮاﺣﻲ وب ﺳﺎﻳﺖ ﻫﺎي ﭘﻮﻳﺎ در ﺷﺒﻜﻪ ﺟﻬﺎﻧﻲ وب ﻧﻴﺎز ﺑﻪ‬
‫ﻳﻚ ﭘﺎﻳﮕﺎه داده و ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ )‪ (database‬ﺑﺰرگ ﺑﺮاي ﻣﺪﻳﺮﻳﺖ ﻣﺤﺘﻮا اﺣﺴﺎس ﻣﻴﺸﺪ‪ .‬ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده‬
‫ﻫﺎ ﻳﻚ ﻓﺮاﻳﻨﺪ ﭘﻴﭽﻴﺪه اﺳﺖ ‪ ،‬ﻛﻪ ﺑﻪ ﻃﻮر ﻗﺎﺑﻞ ﺗﻮﺟﻬﻲ ﺑﺎ ﺑﺮﻧﺎﻣﻪ و زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪ SQL‬اﻳﻦ ﻧﻴﺎز ﺑﺮﻃﺮف ﺷﺪه‬
‫اﺳﺖ‪.‬‬

‫ﭘﺎﻳﮕﺎه داده در اﺻﻞ ﻣﺠﻤﻮﻋﻪ اي ﺳﺎزﻣﺎن ﻳﺎﻓﺘﻪ از اﻃﻼﻋﺎت اﺳﺖ‪ .‬اﻳﻦ واژه از داﻧﺶ راﻳﺎﻧﻪ ﺳﺮﭼﺸﻤﻪ ﻣﻲ ﮔﻴﺮد ‪،‬اﻣﺎ‬
‫ﻛﺎرﺑﺮ وﺳﻴﻊ و ﻋﻤﻮﻣﻲ ﻧﻴﺰ دارد‪ ،‬اﻳﻦ وﺳﻌﺖ ﺑﻪ اﻧﺪازه اي اﺳﺖ ﻛﻪ ﻣﺮﻛﺰ اروﭘﺎﻳﻲ ﭘﺎﻳﮕﺎه داده )ﻛﻪ ﺗﻌﺎرﻳﻒ ﺧﺮدﻣﻨﺪاﻧﻪ‬
‫اي ﺑﺮاي ﭘﺎﻳﮕﺎه داده اﻳﺠﺎد ﻣﻲ ﻛﻨﺪ( ﺷﺎﻣﻞ ﺗﻌﺎرﻳﻒ ﻏﻴﺮ اﻟﻜﺘﺮوﻧﻴﻜﻲ ﺑﺮاي ﭘﺎﻳﮕﺎه داده ﻣﻲ ﺑﺎﺷﺪ‪ .‬در اﻳﻦ ﻧﻮﺷﺘﺎر ﺑﻪ‬
‫ﻛﺎرﺑﺮد ﻫﺎي ﺗﻜﻨﻴﻜﻲ ﺑﺮاي اﻳﻦ اﺻﻄﻼح ﻣﺤﺪود ﻣﻲ ﺷﻮد‪.‬‬

‫ﻳﻚ ﺗﻌﺮﻳﻒ ﻣﻤﻜﻦ اﻳﻦ اﺳﺖ ﻛﻪ‪ :‬ﭘﺎﻳﮕﺎه داده ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎي ذﺧﻴﺮه ﺷﺪه در راﻳﺎﻧﻪ ﺑﺎ ﻳﻚ روش‬
‫ﺳﻴﺴﺘﻤﺎﺗﻴﻚ )اﺻﻮﻟﻲ( ﻣﺜﻞ ﻳﻚ ﺑﺮﻧﺎﻣﻪ راﻳﺎﻧﻪ اي اﺳﺖ ﻛﻪ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﺳﻮاﻻت ﻛﺎرﺑﺮ ﭘﺎﺳﺦ دﻫﺪ‪ .‬ﺑﺮاي ذﺧﻴﺮه و‬
‫ﺑﺎزﻳﺎﺑﻲ ﺑﻬﺘﺮ‪ ،‬ﻫﺮ رﻛﻮرد ﻣﻌﻤﻮﻻ ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از اﺟﺰاي داده اي ﻳﺎ روﻳﺪاد ﻫﺎ ﺳﺎزﻣﺎﻧﺪﻫﻲ ﻣﻲ ﮔﺮدد‪.‬‬

‫ﺑﺨﺶ ﻫﺎي ﺑﺎزﻳﺎﺑﻲ ﺷﺪه در ﻫﺮ ﭘﺮﺳﺶ ﺑﻪ اﻃﻼﻋﺎﺗﻲ ﺗﺒﺪﻳﻞ ﻣﻲ ﺷﻮد ﻛﻪ ﺑﺮاي اﺗﺨﺎذ ﻳﻚ ﺗﺼﻤﻴﻢ ﻛﺎرﺑﺮد دارد‪ .‬ﺑﺮﻧﺎﻣﻪ‬
‫راﻳﺎﻧﻪ اي ﻛﻪ ﺑﺮاي ﻣﺪﻳﺮﻳﺖ و ﭘﺮﺳﺶ و ﭘﺎﺳﺦ ﺑﻴﻦ ﭘﺎﻳﮕﺎه ﻫﺎي داده اي اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد را ﻣﺪﻳﺮ ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎه‬
‫داده اي ﻳﺎ ﺑﻪ اﺧﺘﺼﺎر )‪ (DBMS‬ﻣﻲ ﻧﺎﻣﻴﻢ‪ .‬ﺧﺼﻮﺻﻴﺎت و ﻃﺮاﺣﻲ ﺳﻴﺴﺘﻢ ﻫﺎي ﭘﺎﻳﮕﺎه داده اي در ﻋﻠﻢ اﻃﻼﻋﺎت‬
‫ﻣﻄﺎﻟﻌﻪ ﻣﻲ ﺷﻮد‪.‬‬

‫ﻣﻔﻬﻮم اﺻﻠﻲ ﭘﺎﻳﮕﺎه داده اﻳﻦ اﺳﺖ ﻛﻪ ﭘﺎﻳﮕﺎه داده ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎ ﻳﺎ ﺗﻜﻪ ﻫﺎﻳﻲ از‬
‫ﻳﻚ ﺷﻨﺎﺧﺖ اﺳﺖ ‪.‬ﻧﻮﻋﺎ در ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺗﻮﺻﻴﻒ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ اي ﺑﺮاي ﻣﻮﺟﻮدﻳﺖ ﻫﺎي ﻧﮕﻪ داري ﺷﺪه در‬
‫ﭘﺎﻳﮕﺎه داده وﺟﻮد دارد‪ :‬اﻳﻦ ﺗﻮﺻﻴﻒ ﺑﺎ ﻳﻚ اﻟﮕﻮ ﻳﺎ ﻣﺪل ﺷﻨﺎﺧﺘﻪ ﻣﻲ ﺷﻮد‪ .‬ﻣﺪل ﺗﻮﺻﻴﻔﻲ‪ ،‬اﺷﻴﺎ ﭘﺎﻳﮕﺎه ﻫﺎي داده و‬
‫ارﺗﺒﺎط ﺑﻴﻦ آﻧﻬﺎ را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪ .‬روش ﻫﺎي ﻣﺘﻔﺎوﺗﻲ ﺑﺮاي ﺳﺎزﻣﺎﻧﺪﻫﻲ اﻳﻦ ﻣﺪل ﻫﺎ وﺟﻮد دارد ﻛﻪ ﺑﻪ آﻧﻬﺎ ﻣﺪل‬
‫ﻫﺎي ﭘﺎﻳﮕﺎه داده ﮔﻮﻳﻴﻢ‪.‬‬
‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده ‪SQL‬‬ ‫‪3‬‬

‫ﭘﺮﻛﺎرﺑﺮد ﺗﺮﻳﻦ ﻣﺪﻟﻲ ﻛﻪ اﻣﺮوزه ﺑﺴﻴﺎر اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪ ،‬ﻣﺪل راﺑﻄﻪ اي اﺳﺖ ﻛﻪ ﺑﻪ ﻃﻮر ﻋﺎم ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ‬
‫ﻣﻲ ﺷﻮد‪ :‬ﻧﻤﺎﻳﺶ ﺗﻤﺎم اﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺑﻪ ﻓﺮم ﺟﺪاول ﻣﺮﺗﺒﻂ ﻛﻪ ﻫﺮﻳﻚ از ﺳﻄﺮ ﻫﺎ و ﺳﺘﻮﻧﻬﺎ ﺗﺸﻜﻴﻞ ﺷﺪه‬
‫اﺳﺖ)ﺗﻌﺮﻳﻒ ﺣﻘﻴﻘﻲ آن در ﻋﻠﻢ رﻳﺎﺿﻴﺎت ﺑﺮﺳﻲ ﻣﻲ ﺷﻮد(‪ .‬در اﻳﻦ ﻣﺪل واﺑﺴﺘﮕﻲ ﻫﺎ ﺑﻪ ﻛﻤﻚ ﻣﻘﺎدﻳﺮ ﻣﺸﺘﺮك در‬
‫ﺑﻴﺶ از ﻳﻚ ﺟﺪول ﻧﺸﺎن داده ﻣﻲ ﺷﻮد‪ .‬ﻣﺪل ﻫﺎي دﻳﮕﺮي ﻣﺜﻞ ﻣﺪل ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺐ و ﻣﺪل ﺷﺒﻜﻪ اي ﺑﻪ ﻃﻮر‬
‫ﺻﺮﻳﺢ ﺗﺮي ارﺗﺒﺎط ﻫﺎ را ﻧﺸﺎن ﻣﻲ دﻫﻨﺪ‪.‬‬

‫در ﻣﺒﺎﺣﺚ ﺗﺨﺼﺼﻲ ﺗﺮ اﺻﺘﻼح دادﮔﺎن ﻳﺎ ﭘﺎﻳﮕﺎه داده ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎي ﻣﺮﺗﺒﻂ ﺑﺎ ﻫﻢ ﺗﻌﺮﻳﻒ‬
‫ﻣﻲ ﺷﻮد‪ .‬ﺑﺴﻴﺎري از ﺣﺮﻓﻪ اي ﻫﺎ ﻣﺠﻤﻮﻋﻪ اي از داده ﻫﺎﻳﻲ ﺑﺎ ﺧﺼﻮﺻﻴﺎت ﻳﻜﺴﺎن ﺑﻪ ﻣﻨﻈﻮر اﻳﺠﺎد ﻳﻚ ﭘﺎﻳﮕﺎه داده‬
‫اي ﻳﻜﺘﺎ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ‪.‬‬

‫ﻣﻌﻤﻮﻻ ‪ DBMS‬ﻫﺎ ﺑﺮ اﺳﺎس ﻣﺪل ﻫﺎﻳﻲ ﻛﻪ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ﺗﻘﺴﻴﻢ ﺑﻨﺪي ﻣﻲ ﺷﻮﻧﺪ‪ :‬ارﺗﺒﺎﻃﻲ‪،‬ﺷﻲ ﮔﺮا‪ ،‬ﺷﺒﻜﻪ‬
‫اي و اﻣﺜﺎل آن‪ .‬ﻣﺪل ﻫﺎي داده اي ﺑﻪ ﺗﻌﻴﻴﻦ زﺑﺎﻧﻬﺎي دﺳﺘﺮﺳﻲ ﺑﻪ ﭘﺎﻳﮕﺎه ﻫﺎي داده ﻋﻼﻗﻪ ﻣﻨﺪ ﻫﺴﺘﻨﺪ‪ .‬ﺑﺨﺶ ﻗﺎﺑﻞ‬
‫ﺗﻮﺟﻬﻲ از ﻣﻬﻨﺪﺳﻲ ‪ DBMS‬ﻣﺴﺘﻘﻞ از ﻣﺪل ﻫﺎي ﻣﻲ ﺑﺎﺷﺪ و ﺑﻪ ﻓﺎﻛﺘﻮر ﻫﺎﻳﻲ ﻫﻤﭽﻮن اﺟﺮا‪ ،‬ﻫﻤﺰﻣﺎﻧﻲ‪،‬ﺟﺎﻣﻌﻴﺖ و‬
‫ﺑﺎزﻳﺎﻓﺖ از ﺧﻄﺎﻫﺎي ﺳﺨﺖ اﻓﺰاري واﺑﺴﻄﻪ اﺳﺖ‪.‬در اﻳﻦ ﺳﻄﺢ ﺗﻔﺎوت ﻫﺎي ﺑﺴﻴﺎري ﺑﻴﻦ ﻣﺤﺼﻮﻻت وﺟﻮد دارد‪.‬‬

‫ﻫﺮ ‪ database‬در اﺳﻜﻴﻮال از ﻗﺴﻤﺘﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ‪،‬اﻳﻦ ﺑﺨﺸﻬﺎ ﺷﺎﻣﻞ ﻣﻮارد زﻳﺮ اﺳﺖ‪:‬‬

‫‪Table‬‬ ‫‪‬‬
‫‪View‬‬ ‫‪‬‬
‫‪Stored procedre‬‬ ‫‪‬‬
‫‪Function‬‬ ‫‪‬‬
‫و‪....‬‬ ‫‪‬‬

‫‪Table‬ﭼﻴﺴﺖ ؟‬

‫ﺟﺪول ) ‪ ( table‬در ﭘﺎﻳﮕﺎه داده ﻫﺎ ﭼﻴﺴﺖ ؟ داده ﻫﺎ در دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده داﺧﻞ ﺟﺪول ﻳﺎ ‪ table‬ﻫﺎ‬
‫ذﺧﻴﺮه ﻣﻴﺸﻮﻧﺪ‪ .‬ﻫﺮ ‪ database‬ﻣﻴﺘﻮاﻧﺪ ﺷﺎﻣﻞ ﭼﻨﺪﻳﻦ ‪ table‬ﺑﺎﺷﺪ ‪.‬ﻫﺮ ﺟﺪول از ﺗﻌﺪادي ﺳﻄﺮ و ﺳﺘﻮن ﺗﺸﻜﻴﻞ‬
‫ﺷﺪه اﺳﺖ‪.‬‬

‫ﺑﺮاي ﺗﻤﺎم ﺳﺘﻮن ﻫﺎ در دﻳﺘﺎﺑﻴﺲ ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع ﻛﺎرﻛﺮد آن ﻣﻴﺘﻮاﻧﻴﺪ ﻧﻮع ﻣﻮرد ﻧﻈﺮ ﺧﻮد را ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ ‪ ،‬ﻣﻘﺪارﻫﺎﻳﻲ‬
‫ﻛﻪ درون ﻫﺮ ﻓﻴﻠﺪ ذﺧﻴﺮه ﻣﻴﺸﻮد ﺑﺎﻳﺴﺘﻲ ﺑﺎ ﻧﻮع اﻧﺘﺨﺎﺑﻲ ﻓﻴﻠﺪ ﻣﻄﺎﺑﻘﺖ داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده ‪SQL‬‬ ‫‪4‬‬

‫ﺟﺪول ﻳﻚ ﻣﺠﻤﻮﻋﻪ اي اﺳﺖ از اﻃﻼﻋﺎت ﺛﺒﺖ ﺷﺪه ﻣﺮﺗﺒﻂ و واﺑﺴﺘﻪ ﺑﻪ ﻫﻢ ﻛﻪ از ﺳﺘﻮن ﻫﺎ و ردﻳﻒ ﻫﺎ ﺗﺸﻜﻴﻞ‬
‫ﺷﺪه اﺳﺖ‪ .‬ﺟﺪاول ﻣﻬﻤﺘﺮﻳﻦ ﻋﻨﺎﺻﺮ ﺳﻴﺴﺘﻢ ﻫﺎي ﭘﺎﻳﮕﺎه داده ﻫﺴﺘﻨﺪ ‪ ،‬ﻛﻪ ﺑﺮاي ذﺧﻴﺮه و ﻧﮕﻬﺪاري ﺳﺎزﻣﺎن ﻳﺎﻓﺘﻪ‬
‫اﻃﻼﻋﺎت ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ‪.‬‬

‫ﺟﺪول ﺑﺨﺸﻲ از ﭘﺎﻳﮕﺎه داده اﺳﺖ‪ .‬ﻳﻚ ﭘﺎﻳﮕﺎه داده از ﺟﺪاول ﻣﺨﺘﻠﻒ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ‪.‬‬

‫ﻣﺜﺎل ‪ :‬ﺑﺮاي ذﺧﻴﺮهﺳﺎزي اﻧﻮاع ﻣﺨﺘﻠﻒ داده ﻫﺎ ﺷﻤﺎ ﻧﻴﺎزﻣﻨﺪ اﻳﺠﺎد ﺟﺪاول ﺟﺪاﮔﺎﻧﻪاي ﻫﺴﺘﻴﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل‪ ،‬اﮔﺮ‬
‫ﺷﻤﺎ ﻳﻚ ﻧﺮم اﻓﺰار ﻣﺪﻳﺮﻳﺖ ﻣﺪرﺳﻪ دارﻳﺪ‪ ،‬ﻣﻤﻜﻦ اﺳﺖ ﻧﻴﺎز ﺑﻪ اﻳﺠﺎد ﺟﺪاول زﻳﺮ ﺑﺎﺷﺪ‪:‬‬

‫‪ ‬داﻧﺶ آﻣﻮزان – ﺑﺮاي ذﺧﻴﺮه ﻟﻴﺴﺘﻲ از ﺗﻤﺎم اﻋﻀﺎي داﻧﺶ آﻣﻮزان‬


‫‪ ‬ﻣﻌﻠﻤﺎن – ذﺧﻴﺮه ﻟﻴﺴﺘﻲ از ﺗﻤﺎم ﻣﻌﻠﻤﺎن‬
‫‪ ‬ﺣﻀﻮر و ﻏﻴﺎب – ﺑﺮاي ﭘﻴﮕﻴﺮي ﺣﻀﻮر ﻫﻤﻪ داﻧﺶ آﻣﻮزان‬
‫‪_ MarkList‬ﺑﺮاي ذﺧﻴﺮه ﻟﻴﺴﺖ ﻋﻼﻣﺖ ﻫﻤﻪ داﻧﺶ آﻣﻮزا‬ ‫‪‬‬

‫‪Field‬ﭼﻴﺴﺖ ؟‬

‫ﺑﻪ ﻫﺮ ﻳﻚ از ﺧﺎﻧﻪ ﻫﺎي ﺳﺘﻮن ﻳﻚ ﺟﺪول ﻓﻴﻠﺪ ) ‪ ( Field‬ﻣﻲ ﮔﻮﻳﻨﺪ ‪ .‬ﻫﺮ ﻓﻴﻠﺪ ﻳﻜﻲ از ﺧﺼﻮﺻﻴﺎت آن‬
‫ﻣﻮﺟﻮدﻳﺖ را ﺑﻪ ﻫﻤﺮاه ﻣﻘﺪار آن ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ‪.‬‬

‫ﻫﺮ ﻓﻴﻠﺪ در ﺑﺮ ﮔﻴﺮﻧﺪه ﻳﻚ ﺻﻔﺖ و وﻳﮋﮔﻲ ﺑﺮاي ﻣﻮﺟﻮدﻳﺖ ﻣﻲ ﺑﺎﺷﺪ ‪ ،‬ﻛﻪ داراي ‪ 2‬ﺟﺰء اﺻﻠﻲ اﺳﺖ‪:‬‬

‫‪ .1‬اﺳﻢ ﺻﻔﺖ ﺧﺎﺻﻪ ‪ :‬ﻧﺎم ﺻﻔﺖ ﻣﻮرد ﻧﻈﺮ را ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﺪ ‪ .‬ﺑﺮاي ﻣﺜﺎل ﻓﻴﻠﺪ ﻧﺎم ‪ ،‬ﻧﺎم ﺧﺎﻧﻮادﮔﻲ ‪ ،‬و ‪ ...‬در‬
‫ﺟﺪول اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ ﺷﺨﺺ ‪.‬‬
‫‪ .2‬ﻣﻘﺪار ﺻﻔﺖ ﺧﺎﺻﻪ ‪ :‬در ﺑﺮﮔﻴﺮﻧﺪه ﻣﻘﺪار ﺑﺮاي ﺻﻔﺖ ﻣﻮرد ﻧﻈﺮ اﺳﺖ ‪ .‬ﺑﺮاي ﻣﺜﺎل ﻣﻘﺪار " ﺳﻌﻴﺪ " ﺑﻪ‬
‫ﻋﻨﻮان ﻣﻘﺪار ﺑﺮاي ﻓﻴﻠﺪ ﻧﺎم‪.‬‬

‫ﻳﻚ ﻓﻴﻠﺪ ﻧﺸﺎﻧﻪ ﻳﻚ ﺳﺘﻮن در ﺟﺪول اﺳﺖ‪ .‬ﻳﻚ رﻛﻮرد ﻣﺠﻤﻮﻋﻪ اي از ﻓﻴﻠﺪﻫﺎ اﺳﺖ‪ .‬ﺗﻤﺎم رﻛﻮردﻫﺎ در ﻫﻤﺎن ﺟﺪول‬
‫ﻫﻤﺎن ﻓﻴﻠﺪﻫﺎ راﺧﻮاﻫﻨﺪ داﺷﺖ‪.‬‬

‫ﻣﺜﺎل درﺑﺎره ﻓﻴﻠﺪ ﻫﺎ ‪ :‬اﮔﺮ ﺷﻤﺎ ﻳﻚ ﺟﺪول ﺑﺎ ﻧﺎم ”‪ “Students‬داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪ ،‬ﻣﻤﻜﻦ اﺳﺖ زﻣﻴﻨﻪ ﻫﺎي زﻳﺮ‬
‫ﻣﻮرد ﻧﻴﺎز ﺑﺎﺷﻨﺪ‪:‬‬
‫ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده ‪SQL‬‬ ‫‪5‬‬

‫‪Name‬ﺑﺮاي ذﺧﻴﺮه ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔﻲ داﻧﺶ آﻣﻮز‬ ‫‪‬‬


‫‪Address‬ﺑﺮاي ذﺧﻴﺮه آدرس‬ ‫‪‬‬
‫‪DateofBirth‬ﺑﺮاي ذﺧﻴﺮه ﺗﺎرﻳﺦ ﺗﻮﻟﺪ داﻧﺶ آﻣﻮز‬ ‫‪‬‬
‫‪RegistrationDate‬ﺑﺮاي ذﺧﻴﺮه ﺗﺎرﻳﺦ ﺛﺒﺖ ﻧﺎم داﻧﺶ آﻣﻮز‬ ‫‪‬‬
‫‪ ‬و…‬

‫اﮔﺮ ﺷﻤﺎ ﻓﻴﻠﺪي را ﺑﻪ ﺟﺪول اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪ ،‬اﻳﻦ ﻓﻴﻠﺪ ﺑﻪ ﺗﻤﺎم رﻛﻮردﻫﺎي ﻣﻮﺟﻮد آن ﺟﺪول اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در‬
‫ﻣﺜﺎل ﻓﻮق‪ ،‬ﺗﻤﺎﻣﻲ رﻛﻮردﻫﺎي ﺟﺪول در ”‪ “Students‬ﻫﻤﺎن ‪ 4‬ﻓﻴﻠﺪ را ﺧﻮاﻫﻨﺪ داﺷﺖ‪.‬‬

‫‪Record‬ﭼﻴﺴﺖ ؟‬

‫رﻛﻮرد در ﭘﺎﻳﮕﺎه داده ﭼﻴﺴﺖ ؟ ﺑﻪ ﺳﻄﺮﻫﺎي ﻳﻚ ﺟﺪول رﻛﻮرد ) ‪ ( Record‬ﮔﻔﺘﻪ ﻣﻴﺸﻮد‪ .‬ﻫﺮ رﻛﻮرد ﻣﺠﻤﻮﻋﻪ‬
‫اي از اﻃﻼﻋﺎت ﻃﺒﻘﻪ ﺑﻨﺪي ﺷﺪه درﺑﺎره ﻳﻚ ﻣﻮﺟﻮدﻳﺖ ﺧﺎص اﺳﺖ‪.‬‬

‫ﻣﻮﺟﻮدﻳﺖ‬

‫ﻣﻮﺟﻮدﻳﺖ ﭘﺪﻳﺪه ‪ ،‬ﺷﻲ ﻳﺎ ﻓﺮدي در ﻣﺤﻴﻂ ﭘﺎﻳﮕﺎه داده اﺳﺖ ﻛﻪ ﻣﻲ ﺧﻮاﻫﻴﻢ اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ آن را ﻧﮕﻬﺪاري‬
‫ﻛﻨﻴﻢ‪.‬‬
‫ﻣﺜﺎل ‪ :‬ﺑﻪ ﻃﻮر ﻣﺜﺎل در ﻣﺤﻴﻂ ﭘﺎﻳﮕﺎه داده ﻳﻚ ﻣﺤﻴﻂ آﻣﻮزﺷﻲ‪ ،‬اﻧﻮاع ﻣﻮﺟﻮدﻳﺖ ﻫﺎ ﻋﺒﺎرﺗﻨﺪ از ‪ :‬داﻧﺸﺠﻮ ‪ ،‬ﻛﻼس ‪،‬‬
‫واﺣﺪﻫﺎي درﺳﻲ ‪ ،‬اﺳﺘﺎد ‪ ،‬داﻧﺸﻜﺪه و‪... .‬‬

‫ﻳﻚ رﻛﻮرد ﻧﺸﺎن دﻫﻨﺪه ﻳﻚ ورودي در ﺟﺪول اﺳﺖ ‪.‬ﻳﻚ ﺟﺪول ﻣﻲ ﺗﻮاﻧﺪ ﻫﺮ ﺗﻌﺪاد رﻛﻮرد داﺷﺘﻪ‬
‫ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺜﺎل از رﻛﻮرد در ﭘﺎﻳﮕﺎه داده ‪ :‬اﮔﺮ ﺷﻤﺎ ﺟﺪول ”‪ “Students‬ﺑﺮاي ذﺧﻴﺮه اﻃﻼﻋﺎت داﻧﺶ آﻣﻮزان داﺷﺘﻪ‬
‫ﺑﺎﺷﻴﺪ‪ ،‬در اﻳﻦ ﺟﺪول ﻳﻚ رﻛﻮرد ﻧﺸﺎن دﻫﻨﺪه ﻳﻚ داﻧﺶ آﻣﻮز ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن داﻧﺶ آﻣﻮز ﺑﻪ‬
‫ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺑﺎﻳﺪ ﻳﻚ رﻛﻮرد ﺑﻪ ﺟﺪول ”‪ “Students‬اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ﭘﺎك ﻛﺮدن ﻳﺎ وﻳﺮاﻳﺶ اﻃﻼﻋﺎت داﻧﺶ آﻣﻮز ﻫﻢ‬
‫ﺑﺎﻳﺪ ﺷﻤﺎ ﻳﻚ رﻛﻮرد را از اﻳﻦ ﺟﺪول ﺣﺬف ﻛﻨﻴﺪ‪.‬‬
‫ﻣﻘﺪﻣﺎت‪SQL‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪7‬‬

‫‪SQL‬ﭼﻴﺴﺖ ؟ )اس ﻛﻴﻮ ال ﭼﻴﺴﺖ(‬

‫در ﻣﺪل راﺑﻄﻪاي دادهﻫﺎ‪ ،‬زﺑﺎن ﺳﺎﺧﺘﺎرﻣﻨﺪ ﭘﺮﺳﺶﻫﺎ ﻳﺎ اس ﻛﻴﻮ ال ﻳﺎ ﺳﻲ ﻛﻮال ‪(Structured Query‬‬
‫)‪Language - SQL‬زﺑﺎﻧﻲ اﺳﺖ ﺳﻄﺢ ﺑﺎﻻ ﻣﺒﺘﻨﻲ ﺑﺮ زﺑﺎن ﺳﻄﺢ ﭘﺎﻳﻴﻦ و رﻳﺎﺿﻲ ﺟﺒﺮ راﺑﻄﻪاي ﻛﻪ ﺑﺮاي اﻳﺠﺎد‪،‬‬
‫ﺗﻐﻴﻴﺮ‪ ،‬و ﺑﺎزﻳﺎﺑﻲ دادهﻫﺎ و ﻧﻴﺰ ﻋﻤﻠﻴﺎت ﺑﺮ روي آﻧﻬﺎ ﺑﻪﻛﺎر ﻣﻲرود‪.‬‬

‫زﺑﺎن ‪ SQL‬ﺑﻪ ﺳﻤﺖ ﻣﺪل ﺷﻲﮔﺮا ‪ -‬راﺑﻄﻪاي ﻧﻴﺰ ﭘﻴﺸﺮﻓﺖ ﻛﺮده اﺳﺖ‪.‬‬

‫ﺳﻲﻛﻮال اﺳﺘﺎﻧﺪارد ‪ (ANSI (American National Standards Institute‬را در ﺳﺎل ‪ 1986‬و ‪ISO‬‬
‫)‪(International Organization for Standardization‬را در ﺳﺎل ‪ 1987‬اﺗﺨﺎذ ﻧﻤﻮد‪ .‬اﺳﺘﺎﻧﺪاردﻫﺎي‬
‫ﻣﺨﺘﻠﻔﻲ از اسﻛﻴﻮال ﺗﺎﻛﻨﻮن ﻋﺮﺿﻪ ﺷﺪه ﻛﻪ در ﺟﺪول زﻳﺮ ﺑﻴﺎن ﻣﻲﻛﻨﻴﻢ‪:‬‬

‫اسﻛﻴﻮال‪87-‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪89-‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪92-‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪1999:‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪2003:‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪2005:‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪2008:‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪2010:‬‬ ‫‪‬‬

‫اسﻛﻴﻮال‪2011:‬‬ ‫‪‬‬

‫ﺑﺴﻴﺎري از اﺻﻄﻼﺣﺎت زﺑﺎن اسﻛﻴﻮال ﺗﺤﺖ اﺳﺘﺎﻧﺪارد ﺑﻴﻦاﻟﻤﻠﻠﻲ ﺑﻮده‪ ،‬و در ﻧﺘﻴﺠﻪ‪ ،‬از آﻧﻬﺎ ﺷﺒﻴﻪ ﺑﻘﻴﻪ زﺑﺎﻧﻬﺎي‬
‫اﺳﺘﺎﻧﺪارد ﻣﺜﻞ ﻣﺤﺼﻮﻻت ﺷﺮﻛﺖ اوراﻛﻞ[ ‪] 2 PL/SQL‬ﻳﺎ ‪ Sybase‬و( ‪ SQL PL‬ﻣﺪل روﻳﻪاي( از ﺷﺮﻛﺖ‬
‫آيﺑﻲام ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫اسﻛﻴﻮال ﺑﺮاي ﻛﺎرﻫﺎي وﻳﮋه و ﻣﺤﺪودي )ﮔﺰارش ﮔﻴﺮي از دادهﻫﺎ در ﭘﺎﻳﮕﺎه دادهﻫﺎي راﺑﻄﻪاي( ﻃﺮاﺣﻲ ﺷﺪهاﺳﺖ‪.‬‬
‫ﺑﺮ ﺧﻼف زﺑﺎﻧﻬﺎي دﺳﺘﻮري ﻣﺜﻞ ﺑﻴﺴﻴﻚ ﻳﺎ ﺳﻲ ﻛﻪ ﺑﺮاي ﺣﻞ ﻣﺴﺎﺋﻞ ﻃﺮاﺣﻲ ﺷﺪه‪SQL ،‬زﺑﺎﻧﻲ ﺑﺮ ﭘﺎﻳﻪ اﻋﻼن‬
‫اﺳﺖ‪ .‬زﺑﺎﻧﻬﺎي ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘﻪاي ﻣﺜﻞ ‪ PL/SQL‬ﺑﻪ دﻧﺒﺎل ﻛﺎﻣﻞ ﻛﺮدن زﺑﺎن ﺑﻪ ﻫﺪف اﻳﺠﺎد زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﺎ‬
‫ﺣﻔﻆ ﻣﺰﻳﺖﻫﺎي ‪ SQL‬ﻣﻲﺑﺎﺷﺪ‪ .‬ﺷﻴﻮه دﻳﮕﺮ ﻛﺎر اﻳﻦ اﺳﺖ ﻛﻪ ﺑﻪ ﻛﺪﻫﺎي زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺟﺎزه دﺳﺘﺮﺳﻲ ﺑﻪ‬
‫ﭘﺎﻳﮕﺎه داده ﺑﻪ ﻛﻤﻚ دﺳﺘﻮرات ‪ SQL‬داده ﺷﻮد ﻣﺜﻼً ‪ PostgreSQL‬ﺑﻪ ﺗﻮاﺑﻌﺶ اﺟﺎزه ﻣﻲدﻫﺪ ﻛﻪ درون ﻛﺪﻫﺎي‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪8‬‬

‫‪Tcl ،Perl‬و ‪ C‬ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ‪ .‬ﮔﺎﻫﻲ ﺑﻪ ﺷﻮﺧﻲ ﮔﻔﺘﻪ ﻣﻲﺷﻮد ﻛﻪ ‪ SQL‬ﻧﻪ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪاﺳﺖ‪ ،‬ﻧﻪ ﻣﺤﺪود ﺑﻪ‬
‫ﮔﺰارش ﮔﻴﺮيﻫﺎ و اﺻﻼً ﻳﻚ زﺑﺎن ﻧﻴﺴﺖ!‬

‫ﻣﺰاﻳﺎي ‪SQL‬‬

‫‪SQL‬ﺑﺮ ﭘﺎﻳﻪ زﺑﺎن ﭘﺮس و ﺟﻮ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ ﻣﻴﺒﺎﺷﺪ‬ ‫‪‬‬

‫‪SQL‬ﺑﻪ ﺷﻤﺎ اﺟﺎزه دﺳﺘﻴﺎﺑﻲ و ﻛﻨﺘﺮل داده ﻫﺎ را ﻣﻲ دﻫﺪ‬ ‫‪‬‬

‫‪SQL‬ﻳﻚ اﺳﺘﺎﻧﺪارد‪ ) ANSI‬اﻧﺠﻤﻦ اﺳﺘﺎﻧﺪارد ﻣﻠﻲ آﻣﺮﻳﻜﺎ( ﻣﻴﺒﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ درﺧﻮاﺳﺘﻬﺎي ﭘﻴﻮﺳﺘﻪ ﻳﻚ ﭘﺎﻳﮕﺎه داده را اﺟﺮا ﻛﻨﺪ‬ ‫‪‬‬

‫‪SQL‬ﻣﺘﻮاﻧﺪ دوﺑﺎره اﻃﻼﻋﺎت را از ﭘﺎﻳﮕﺎه داده ﭘﺲ ﺑﮕﻴﺮد‬ ‫‪‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﻳﻚ رﻛﻮرد ﺷﺎﻣﻞ اﻃﻼﻋﺎت را در ﭘﺎﻳﮕﺎه داده ذﺧﻴﺮه ﻛﻨﺪ‬ ‫‪‬‬

‫‪SQL‬ﻣﺘﻮاﻧﺪ اﻃﻼﻋﺎت ﭘﺎﻳﮕﺎه داده را ﺑﻪ روز رﺳﺎﻧﻲ ﻛﻨﺪ‬ ‫‪‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﻫﺮ ﻗﺴﻤﺖ از اﻃﻼﻋﺎت را از ﭘﺎﻳﮕﺎه داده اﺻﻼح ﻳﺎ ﺣﺬف ﻛﻨﺪ‬ ‫‪‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺗﺎزه ﺑﺴﺎزد‬ ‫‪‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﺟﺪاول ﺣﺎوي اﻃﻼﻋﺎت ﺟﺪﻳﺪ را ﺑﻪ ﭘﺎﻳﮕﺎه داده اﺿﺎﻓﻪ ﻛﻨﺪ‬ ‫‪‬‬

‫‪SQL‬اﺟﺎزه ﺗﻨﻈﻴﻢ ﺟﺪاول و ﺷﻴﻮه دﺳﺘﻴﺎﺑﻲ ﺑﻪ اﻃﻼﻋﺎت و ﻧﺤﻮه ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت را ﻣﻴﺪﻫﺪ‪.‬‬ ‫‪‬‬

‫ﺗﺎرﻳﺨﭽﻪ اس ﻛﻴﻮ ال)‪(SQL‬‬

‫ﻣﻨﺸﺎ اﺻﻠﻲ ﺳﻲﻛﻮال ﺑﻪ ﻣﻘﺎﻟﻪ ﺳﺎل ‪ 1970‬ادﮔﺎر ﻛﺎد ﺗﺤﺖ ﻋﻨﻮان »ﻣﺪل راﺑﻄﻪاي دادهﻫﺎ ﺑﺮاي ﺑﺎﻧﻚﻫﺎي ﺑﺰرگ‬
‫دادهﻫﺎي اﺷﺘﺮاﻛﻲ«]‪ [1‬ﺑﺎز ﻣﻲﮔﺮدد‪ .‬در دﻫﻪ ٔ◌ ‪ 70‬ﮔﺮوﻫﻲ از ﺷﺮﻛﺖ آيﺑﻲام در ﺷﻬﺮ ﺳﺎن ﺧﻮزه ﺑﺮ روي ﺳﻴﺴﺘﻢ‬
‫ﭘﺎﻳﮕﺎه دادهﻫﺎي ﺳﻴﺴﺘﻢ آر ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ اﻳﻦ ﻣﻘﺎﻟﻪ ﻛﺎر ﻣﻲﻛﺮدﻧﺪ و زﺑﺎن ‪ SEQUEL‬را ﺑﻪ ﻣﻨﻈﻮر ﻋﻤﻠﻴﺎت و‬
‫ﺑﺎزﻳﺎﺑﻲ اﻃﻼﻋﺎت ذﺧﻴﺮه ﺷﺪه در ﺳﻴﺴﺘﻢ آر اﻳﺠﺎد ﻛﺮدﻧﺪ‪ .‬اﮔﺮ ﭼﻪ اسﻛﻴﻮال ﻧﺎﺷﻲ از ﺗﻼﺷﻬﺎي ﻛﺎد ﺑﻮد اﻣﺎ دوﻧﺎﻟﺪ‬
‫ﭼﺎﻣﺒﺮﻟﻴﻦ و رﻳﻤﻮﻧﺪ ﺑﻮﻳﺲ ﺑﻪ ﻋﻨﻮان ﻃﺮاﺣﺎن زﺑﺎن ‪ SEQUEL‬ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﺳﻤﻴﻨﺎرﻫﺎﻳﻲ در زﻣﻴﻨﻪ ﻓﻨﺎوري ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ و ﻣﺒﺎﺣﺜﺎﺗﻲ در ﻣﻮرد ﻣﺰاﻳﺎي ﻣﺪل راﺑﻄﻪاي ﺟﺪﻳﺪ ﺑﺮﮔﺰار ﮔﺮدﻳﺪ‪ .‬ﺗﺎ‬
‫‪ 1976‬ﻣﺸﺨﺺ ﺑﻮد ﻛﻪ آيﺑﻲام ﻛﻪ ﻃﺮﻓﺪار ﺟﺪي ﻓﻨﺎوري ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ راﺑﻄﻪاي ﺑﻮده‪ ،‬ﺗﻮﺟﻪ زﻳﺎدي ﻧﺴﺒﺖ ﺑﻪ‬
‫زﺑﺎن ﺳﻲﻛﻮال دارد‪ .‬ﺗﺒﻠﻴﻐﺎت در زﻣﻴﻨﻪ ﺳﻴﺴﺘﻢ آر ﺑﺎﻋﺚ ﺟﺬب ﮔﺮوﻫﻲ از ﻣﻬﻨﺪﺳﻴﻦ در ﻣﻨﻠﻮ ﭘﺎرك در ﻛﺎﻟﻴﻔﺮﻧﻴﺎ‬
‫ﮔﺮدﻳﺪ‪ .‬اﻳﻦ ﮔﺮوه ﺑﻪ اﻳﻦ ﻧﺘﻴﺠﻪ رﺳﻴﺪﻧﺪ ﻛﻪ ﺗﺤﻘﻴﻘﺎت آيﺑﻲام ﻣﻨﺠﺮ ﺑﻪ ﻳﻚ ﺑﺎزار ﺗﺠﺎري ﺑﺮاي ﺑﺎﻧﻚﻫﺎي اﻃﻼﻋﺎﺗﻲ‬
‫راﺑﻄﻪاي ﺧﻮاﻫﺪ ﮔﺮدﻳﺪ‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪9‬‬

‫در ‪ 1977‬اﻳﻦ ﮔﺮوه ﺷﺮﻛﺘﻲ ﺑﻨﺎم اﻳﻨﻚ )‪ (Inc‬و رﻟﻴﺸﻨﺎل ﺳﺎﻓﺘﻮﻳﺮ )‪ (Relational Software‬ﺗﺄﺳﻴﺲ ﻧﻤﻮدﻧﺪ‬
‫ﺗﺎ ﻳﻚ ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎهﻫﺎي داده راﺑﻄﻪاي ﺑﺮ اﺳﺎس ﺳﻲﻛﻮال ﺑﺴﺎزﻧﺪ‪ .‬ﻣﺤﺼﻮﻟﻲ ﺑﻨﺎم اوراﻛﻞ در ‪ 1979‬ﻋﺮﺿﻪ‬
‫ﮔﺮدﻳﺪ‪ ،‬و اوﻟﻴﻦ ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده راﺑﻄﻪاي ﺑﻮﺟﻮد آﻣﺪ‪ .‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻣﺤﺼﻮل اوراﻛﻞ ﺑﺎﻋﺚ ﮔﺮدﻳﺪ اوﻟﻴﻦ‬
‫ﻣﺤﺼﻮل آيﺑﻲام ﺑﺮاي ﻣﺪت ‪ 2‬ﺳﺎل در ﺑﺎزار دﭼﺎر رﻛﻮد ﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻣﺤﺼﻮل ﺑﺮ روي ﻣﻴﻨﻲ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي وﻛﺲ‬
‫دﻳﺠﻴﺘﺎل )‪ (VAx Digital‬اﺟﺮا ﻣﻲﺷﺪ ﻛﻪ ﺧﻴﻠﻲ از ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﺑﺰرگ آيﺑﻲام ارزانﺗﺮ ﺑﻮدﻧﺪ‪.‬‬

‫اﻣﺮوزه اﻳﻦ ﺷﺮﻛﺖ ﺑﺎ ﻧﺎم اوراﻛﻞ اوﻟﻴﻦ ﻓﺮوﺷﻨﺪه ﺳﻴﺴﺘﻢﻫﺎي ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ راﺑﻄﻪاي اﺳﺖ‪ .‬اﺳﺘﺎدان‬
‫آزﻣﺎﻳﺸﮕﺎهﻫﺎي ﻛﺎﻣﭙﻴﻮﺗﺮ در داﻧﺸﮕﺎه ﺑﺮﻛﻠﻲ ﻛﺎﻟﻴﻔﺮﻧﻴﺎ ﻧﻴﺰ در ﻧﻴﻤﻪ دﻫﻪ ‪ 1970‬ﻣﺸﻐﻮل ﺗﺤﻘﻴﻖ در زﻣﻴﻨﻪ ﺑﺎﻧﻚﻫﺎي‬
‫اﻃﻼﻋﺎﺗﻲ راﺑﻄﻪاي ﺑﻮدن )ﻣﺎﻧﻨﺪ ﺗﻴﻢ ﺗﺤﻘﻴﻖ آيﺑﻲام(‪ ،‬ﮔﺮوه ﻓﻮق ﻧﻴﺰ ﻳﻚ ﻧﻤﻮﻧﻪ از ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده‬
‫راﺑﻄﻪاي اﻳﺠﺎد ﻧﻤﻮدﻧﺪ و ﺳﻴﺴﺘﻢ ﺧﻮد را اﻳﻨﮕﺮس )‪ (Ingres‬ﻧﺎم ﻧﻬﺎدﻧﺪ‪.‬‬

‫ﭘﺮوژه اﻳﻨﮕﺮس ﺷﺎﻣﻞ ﻳﻚ زﺑﺎن ﭘﺮسوﺟﻮ ﺑﻨﺎم ‪ QUEL‬ﺑﻮد‪ ،‬اﮔﺮ ﭼﻪ از ﺳﻲﻛﻮال ﺧﻴﻠﻲ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ ﺗﺮ ﺑﻮد‪ ،‬اﻣﺎ‬
‫ﺷﺒﺎﻫﺖ آن ﺑﻪ زﺑﺎن اﻧﮕﻠﻴﺴﻲ ﻛﻤﺘﺮ ﺑﻮد‪.‬‬

‫در ﺣﺎﻟﻴﻜﻪ اوراﻛﻞ و اﻳﻨﮕﺮس ﺑﺮاي اراﺋﻪ ﻣﺤﺼﻮﻻت ﺗﺠﺎري در رﻗﺎﺑﺖ ﺑﻮدﻧﺪ‪ ،‬ﭘﺮوژه ﺳﻴﺴﺘﻢ آر ﺷﺮﻛﺖ آيﺑﻲام در‬
‫ﺗﻼش ﺑﻮدهاﺳﺖ ﻛﻪ ﻳﻚ ﻣﺤﺼﻮ ل ﺗﺠﺎري ﺑﺎ ﻧﺎم( ‪ SQL/Data system‬ﻳﺎ )‪ SQL/DS‬ﻋﺮﺿﻪ ﻧﻤﺎﻳﺪ‪ .‬آيﺑﻲام‬
‫ﻣﻮﺟﻮدﻳﺖ ‪ SQL/DS‬را در ‪ 1981‬اﻋﻼم‪ ،‬و در ‪ 1982‬ﺷﺮوع ﺑﻪ ﻋﺮﺿﻪ ﻣﺤﺼﻮل ﺧﻮد ﻧﻤﻮد‪ .‬در ﺳﺎل ‪ 1983‬آيﺑﻲام‬
‫ﻳﻚ ﻧﺴﺨﻪ ‪ SQL/DS‬را ﺑﺮاي( ‪ VM/CMS‬ﺳﻴﺴﺘﻢﻋﺎﻣﻠﻲ ﻛﻪ در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺰرگ آيﺑﻲام ﻏﺎﻟﺒﺎ اﺳﺘﻔﺎده ﺷﺪه‬
‫ﺑﻮد(‪ ،‬اﻋﻼم ﻧﻤﻮد‪.‬‬

‫ﻫﻤﭽﻨﻴﻦ در ﺳﺎل ‪ 1983‬ﺷﺮﻛﺖ آيﺑﻲام‪ ،‬ﻣﺤﺼﻮل ديﺑﻲﺗﻮ را ﻣﻌﺮﻓﻲ ﻧﻤﻮد ﻛﻪ ﻳﻚ ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده‬
‫راﺑﻄﻪاي ﺑﺮاي ﺳﻴﺴﺘﻢﻫﺎي ﺑﺰرگ آن ﺷﺮﻛﺖ ﺑﻮد‪ .‬ديﺑﻲﺗﻮ ﺗﺤﺖ ﺳﻴﺴﺘﻢﻋﺎﻣﻞ وياماس )ﺳﻴﺴﺘﻢﻋﺎﻣﻞ ﻣﺮاﻛﺰ‬
‫ﻛﺎﻣﭙﻴﻮﺗﺮي ﺑﺰرگ( اﺟﺮا ﻣﻲﺷﺪ‪ .‬اوﻟﻴﻦ ﻧﺴﺨﻪ ديﺑﻲﺗﻮ در ‪ 1985‬ﻋﺮﺿﻪ ﮔﺮدﻳﺪ‪ ،‬و ﻣﺴﺌﻮﻟﻴﻦ آيﺑﻲام اﻋﻼم ﻧﻤﻮدﻧﺪ‬
‫ﻛﻪ اﻳﻦ ﻣﺤﺼﻮل ﻳﻚ ﺑﺮﻧﺎﻣﻪ اﺳﺘﺮاﺗﮋﻳﻚ ﺑﺮاي ﺗﻜﻨﻮﻟﻮژي ﻧﺮماﻓﺰاري آيﺑﻲام ﻣﻲﺑﺎﺷﺪ‪ .‬از آن ﺗﺎرﻳﺦ ﺗﺎﻛﻨﻮن ديﺑﻲﺗﻮ‬
‫ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده راﺑﻄﻪاي ﺷﺎﺧﺼﻲ ﺑﻮده و آيﺑﻲام از آن ﺣﻤﺎﻳﺖ ﻧﻤﻮده و زﺑﺎن »ﺳﻲﻛﻮال ديﺑﻲﺗﻮ«‬
‫اﺳﺘﺎﻧﺪارد ﻋﻤﻠﻲ زﺑﺎن ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﺑﻮدهاﺳﺖ‪.‬‬

‫ﺑﺎ ‪ SQL‬ﭼﻪ ﻛﺎر ﻫﺎﻳﻲ ﻣﻴﺘﻮان اﻧﺠﺎم داد ؟‬

‫‪SQL .1‬اﻳﻦ ﺗﻮاﻧﺎﻳﻲ را دارد ﻛﻪ ﻳﻚ ﻛﻮﺋﺮي )‪ (Query‬را اﺟﺮا ﻛﻨﺪ‪.‬‬


‫‪SQL .2‬ﻣﻴﺘﻮاﻧﺪ داده ﻫﺎ را از دﻳﺘﺎﺑﻴﺲ ﺑﺎزﻳﺎﺑﻲ ﻛﻨﺪ‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪10‬‬

‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ رﻛﻮردﻫﺎﻳﻲ را ﺑﻪ دﻳﺘﺎﺑﻴﺲ اﺿﺎﻓﻪ )‪ (Insert‬ﻛﻨﺪ‪.‬‬ ‫‪.3‬‬


‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ رﻛﻮردﻫﺎ را از دﻳﺘﺎﺑﻴﺲ واﻛﺸﻲ و وﻳﺮاﻳﺶ )‪ (Update‬ﻛﻨﺪ‪.‬‬ ‫‪.4‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪرﻛﻮردﻫﺎ را از دﻳﺘﺎﺑﻴﺲ واﻛﺸﻲ و ﺣﺬف )‪ (Delete‬ﻛﻨﺪ‪.‬‬ ‫‪.5‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺟﺪﻳﺪ )‪ (New Database‬اﻳﺠﺎد ﻛﻨﺪ‪.‬‬ ‫‪.6‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﺟﺪول ﺑﻪ دﻳﺘﺎﺑﻴﺲ )‪ (New Table‬اﺿﺎﻓﻪ ﻛﻨﺪ‪.‬‬ ‫‪.7‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ‪ stored procedure‬در دﻳﺘﺎﺑﻴﺲ اﻳﺠﺎد ﻛﻨﺪ‪.‬‬ ‫‪.8‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ‪ view‬در دﻳﺘﺎﺑﻴﺲ اﻳﺠﺎد ﻛﻨﺪ‪.‬‬ ‫‪.9‬‬
‫‪SQL‬ﻣﻴﺘﻮاﻧﺪ ﺑﻪ ‪procedure ، table‬و ‪ view‬ﻫﺎ دﺳﺘﺮﺳﻲ ﺗﻌﺮﻳﻒ ﻛﻨﺪ‪.‬‬ ‫‪.10‬‬

‫اﺳﺘﻔﺎده از ‪ SQL‬در ﻃﺮاﺣﻲ ﺳﺎﻳﺖ‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ وب ﺳﺎﻳﺖ داﻳﻨﺎﻣﻴﻚ ﻛﻪ داده ﻫﺎ و اﻃﻼﻋﺎت را از ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺑﺨﻮاﻧﺪ ﺷﻤﺎ ﺑﺎﻳﺴﺘﻲ ﻣﺮاﺣﻞ‬
‫زﻳﺮ را ﭘﻴﮕﻴﺮي ﻛﻨﻴﺪ‪.‬‬

‫اﺳﺘﻔﺎده از ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده راﺑﻄﻪ اي )‪ (RDBMS‬ﻣﺎﻧﻨﺪ ‪SQL ، Access‬‬ ‫‪‬‬

‫‪My SQL ،Server‬‬


‫ﻳﻚ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺗﺤﺖ ﺳﺮور ﻣﺎﻧﻨﺪ ‪ PHP‬ﻳﺎ ‪ASP‬‬ ‫‪‬‬

‫اﺳﺘﻔﺎده از ﭘﺎﻳﮕﺎه داده‪SQL‬‬ ‫‪‬‬

‫اﺳﺘﻔﺎده از ‪ HTML‬و‪CSS‬‬ ‫‪‬‬

‫داده ﻫﺎ در ‪ RDBMS‬در ﻗﺴﻤﺖ ‪ Table‬ذﺧﻴﺮه ﻣﻴﺸﻮﻧﺪ‪.‬ﺟﺪول ﻫﺎ ﻣﺠﻤﻮﻋﻪ از اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ ﺑﺮﻧﺎﻣﻪ‬


‫ﻣﻴﺒﺎﺷﻨﺪ ‪ ،‬ﻫﺮ ﺟﺪول ﺷﺎﻣﻞ ﺳﻄﺮ ﻫﺎ و ﺳﺘﻮن ﻫﺎ ﻣﻴﺒﺎﺷﺪ‪.‬اﺳﺘﻔﺎده از ‪ SQL‬در ﻃﺮاﺣﻲ ﺳﺎﻳﺖ ﺑﻪ ﺷﻤﺎ ﻛﻤﻚ‬
‫ﻣﻴﻜﻨﺪ ﺗﺎ ﻳﻚ وب ﺳﺎﻳﺖ داﻳﻨﺎﻣﻴﻚ و ﭘﻮﻳﺎ اﻳﺠﺎد ﻛﻨﻴﺪ‪.‬‬

‫دﺳﺘﻮرات ‪ DML‬و ‪ DDL‬در اس ﻛﻴﻮ ال‬

‫‪SQL‬ﺑﻪ دو ﻗﺴﻤﺖ ﺗﻘﺴﻴﻢ ﻣﻴﺸﻮد‪:‬‬

‫زﺑﺎن دﺳﺘﻜﺎري داده ﻫﺎ)‪DML (Data Manipulation Language‬‬ ‫‪‬‬

‫زﺑﺎن ﺗﻌﺮﻳﻒ داده ﻫﺎ)‪DDL (Data Definition Language‬‬ ‫‪‬‬


‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪11‬‬

‫دﺳﺘﻮرات ‪ DML‬ﺷﺎﻣﻞ ﺑﺨﺸﻬﺎي زﻳﺮ ﻣﻴﺸﻮﻧﺪ‬

‫‪SELECT‬واﻛﺸﻲ اﻃﻼﻋﺎت از دﻳﺘﺎﺑﻴﺲ‬ ‫‪.1‬‬


‫‪UPDATE‬وﻳﺮاﻳﺶ اﻃﻼﻋﺎت دﻳﺘﺎﺑﻴﺲ‬ ‫‪.2‬‬
‫‪DELETE‬ﭘﺎك ﻛﺮدن اﻃﻼﻋﺎت از دﻳﺘﺎﺑﻴﺲ‬ ‫‪.3‬‬
‫‪INSERT INTO‬اﺿﺎﻓﻪ ﻛﺮدن اﻃﻼﻋﺎت ﺟﺪﻳﺪ ﺑﻪ دﻳﺘﺎﺑﻴﺲ‬ ‫‪.4‬‬

‫دﺳﺘﻮرات‪ DDL‬ﺷﺎﻣﻞ ﺑﺨﺸﻬﺎي زﻳﺮ ﻣﻴﺸﻮﻧﺪ‬

‫‪CREATE DATABASE‬اﻳﺠﺎد ﻳﻚ دﻳﺘﺎﺑﻴﺲ ﺟﺪﻳﺪ‬ ‫‪.1‬‬


‫‪ALTER DATABASE‬اﻳﺠﺎد ﺗﻐﻴﻴﺮات در دﻳﺘﺎﺑﻴﺲ‬ ‫‪.2‬‬
‫‪CREATE TABLE‬اﻳﺠﺎد ﻳﻚ ‪ table‬ﺟﺪﻳﺪ‬ ‫‪.3‬‬
‫‪ALTER TABLE‬اﻋﻤﺎل ﺗﻐﻴﻴﺮات در‪table‬‬ ‫‪.4‬‬
‫‪DROP TABLE‬ﭘﺎك ﻛﺮدن ﻳﻚ‪table‬‬ ‫‪.5‬‬
‫‪CREATE INDEX‬اﻳﺠﺎد ﻳﻚ ﺷﺎﺧﺼﻪ‬ ‫‪.6‬‬
‫‪DROP INDEX‬ﺣﺬف ﻳﻚ ﺷﺎﺧﺺ‬ ‫‪.7‬‬

‫ﺗﻌﺮﻳﻒ ﺷﺎﺧﺼﻪ ‪ Index :‬ﺷﺎﺧﺺ ﻋﺒﺎرﺗﺴﺖ از ﻳﻚ ﺷﻤﺎره ﻛﻪ ﺑﻪ ﻫﺮ ﻳﻚ از ﻓﻴﻠﺪﻫﺎ در ﺳﻄﺮﻫﺎي ﻳﻚ ﺟﺪول‬


‫اﺧﺘﺼﺎص داده ﻣﻲ ﺷﻮد ‪ .‬ﺷﺎﺧﺺ ﻫﺎ در ﭘﺸﺖ ﭘﺮده ﺟﺪاول اﻳﺠﺎد ﺷﺪه و از دﻳﺪ ﻛﺎرﺑﺮ ﻛﺎﻣﻼ ﻣﺨﻔﻲ ﻫﺴﺘﻨﺪ ‪.‬‬
‫اﺳﺘﻔﺎده از ﺷﺎﺧﺺ ﻫﺎ ﺑﺎﻋﺚ ﻣﻲ ﺷﻮد ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺑﺘﻮاﻧﺪ ﻣﻘﺎدﻳﺮ ﺳﻄﺮﻫﺎي ﻣﺨﺘﻠﻒ را ﺑﺮ ﺣﺴﺐ ﻣﻘﺪار ﻳﻚ ﻓﻴﻠﺪ و ﺑﺮ‬
‫ﺣﺴﺐ ﺷﻤﺎره ﺷﺎﺧﺺ آﻧﻬﺎ از ﻛﻢ ﺑﻪ زﻳﺎد ﻳﺎ ﺑﺮ ﻋﻜﺲ ﻣﺮﺗﺐ ﻛﻨﺪ و در ﻋﻤﻠﻴﺎت ﺟﺴﺘﺠﻮ ﺑﺎﻋﺚ ﺑﺎﻻ رﻓﺘﻦ ﺳﺮﻋﺖ‬
‫ﺟﺴﺘﺠﻮ ﻣﻲ ﺷﻮد ‪.‬‬

‫اﻧﻮاع داده و ﻣﺘﻐﻴﺮ در‪SQL‬‬

‫اﻧﻮاع داده رﺷﺘﻪ اي در اﺳﻜﻴﻮال ‪: Character strings‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري ﻋﺒﺎرات و ﻳﺎ ﺣﺮوف ‪ ASCII‬ﻣﻲﺑﺎﺷﺪ‪ .‬در اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ‪ ،‬ﺑﺮاي ﻧﮕﻬﺪاري ﻫﺮ ﺣﺮف‪،‬‬
‫ﻳﻚ ﺑﺎﻳﺖ اﺷﻐﺎل ﻣﻲﺷﻮد و ﻟﺬا ﻧﻴﺎز ﺑﻪ ‪ Collation‬ﺑﺮاي ﺗﻌﻴﻴﻦ زﺑﺎن اﻃﻼﻋﺎت ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪12‬‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫اﻃﻼﻋﺎت ﻣﺘﻨﻲ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ از ‪ 1‬ﺗﺎ ﺣﺪاﻛﺜﺮ ‪ 8000‬ﺣﺮف را در ﺧﻮد ذﺧﻴﺮه‬


‫)‪char(n‬‬
‫ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫اﻃﻼﻋﺎت ﻣﺘﻨﻲ ﺑﺎ ﻃﻮل ﻣﺘﻐﻴﺮ از ‪ 1‬ﺗﺎ ﺣﺪاﻛﺜﺮ ‪ 8000‬ﺣﺮف را در ﺧﻮد ذﺧﻴﺮه‬


‫ﻣﻲﻛﻨﻨﺪ‪ .‬ﻓﺮق ﺑﻴﻦ ‪ Char‬و ‪ VarChar‬در اﻳﻦ اﺳﺖ ﻛﻪ در‪ ، Char‬ﻃﻮل‬
‫رﺷﺘﻪ ﺛﺎﺑﺖ اﺳﺖ‪ .‬ﻳﻌﻨﻲ اﮔﺮ ﻳﻚ ﻓﻴﻠﺪ را از ﻧﻮع )‪ Char(20‬ﻣﻌﺮﻓﻲ ﻛﺮده و در‬
‫)‪varchar(n‬‬
‫آن ﻛﻠﻤﻪ ‪ Orion‬را ﻗﺮار دﻫﻴﻢ‪ ،‬ﻋﻴﻦ ‪ 20‬ﺣﺮف اﺳﺘﻔﺎده ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻳﻌﻨﻲ ‪5‬‬
‫ﻛﺎراﻛﺘﺮ اول را ﻛﻠﻤﻪ ﻣﺮﺑﻮﻃﻪ اﺷﻐﺎل ﻛﺮده و ‪ 15‬ﻛﺎراﻛﺘﺮ ﺑﺎﻗﻲﻣﺎﻧﺪه‪Blank ،‬‬
‫ﺧﻮاﻫﻨﺪ ﺑﻮد‪ .‬اﻣﺎ در ‪ VarChar‬اﻳﻨﮕﻮﻧﻪ ﻧﻴﺴﺖ‪..‬‬

‫اﻃﻼﻋﺎت از ‪ 1‬ﺗﺎ ‪ 2‬ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد و ﻣﻜﺎﻧﻴﺰم آن ﻫﻢ ﺑﺼﻮرت ﭘﻮﻳﻨﺘﺮي‬


‫)‪varchar(max‬‬
‫ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫اﻃﻼﻋﺎت از ‪ 1‬ﺗﺎ ‪ 2‬ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬اﻳﻦ ﻧﻮع داده ﻫﻤﺎﻧﻨﺪ ‪ Image‬و‬
‫)‪VarBinary(MAX‬در ﺧﻮد رﻛﻮرد ذﺧﻴﺮه ﻧﻤﻲﺷﻮﻧﺪ‪ .‬ﺑﻠﻜﻪ ﺗﻮﺳﻂ ﻳﻚ ﭘﻮﻳﻨﺘﺮ‬
‫‪text‬‬
‫ﺑﻪ ﺟﺎي دﻳﮕﺮي اﺷﺎره ﻣﻲﻛﻨﻨﺪ‪ .‬اﻳﻦ ﻧﻮع داده در ‪ SQL 10‬ﺣﺬف ﺷﺪه و ﺑﺠﺎي‬
‫آنﻫﺎ از )‪ VarChar(MAX‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪..‬‬

‫اﻧﻮاع داده ﻳﻮﻧﻴﻜﺪ در اﺳﻜﻴﻮال‪: Unicode types‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﻣﺘﻮن ‪ Unicode‬ﺑﻮده و ﺑﺮاي ﻧﮕﻬﺪاري ﻫﺮ ﺣﺮف‪ ،‬از دو ﺑﺎﻳﺖ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ .‬ﭘﺲ‬
‫ﻣﺴﻠﻤﺎً ﻧﺴﺒﺖ ﺑﻪ ﻧﻮع دادهﻫﺎي ﻛﺎراﻛﺘﺮي‪ ،‬ﺣﺎﻓﻈﻪ ﺑﻴﺸﺘﺮي را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص ﻣﻲدﻫﺪ و در ﺿﻤﻦ ﻛﻤﻲ ﻫﻢ ﻛﻨﺪﺗﺮ‬
‫اﺳﺖ‪ .‬اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ‪ ،‬اﺣﺘﻴﺎج ﺑﻪ ‪ Collation‬ﻧﺪارﻧﺪ‪.‬‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫در اﻳﻦ ﻧﻮع داده‪ ،‬اﻃﻼﻋﺎت از ‪ 1‬ﺗﺎ ﺣﺪاﻛﺜﺮ ‪ 4000‬ﺣﺮف ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ ذﺧﻴﺮه‬
‫)‪nchar(n‬‬
‫ﻣﻲﺷﻮد‪.‬‬

‫در اﻳﻦ ﻧﻮع داده‪ ،‬اﻃﻼﻋﺎت از ‪ 1‬ﺗﺎ ﺣﺪاﻛﺜﺮ ‪ 4000‬ﺑﺎﻳﺖ ﺑﺎ ﻃﻮل ﻣﺘﻐﻴﺮ ذﺧﻴﺮه‬
‫)‪nvarchar(n‬‬
‫ﻣﻲﺷﻮد‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪13‬‬

‫در اﻳﻦ ﻧﻮع داده از ‪ 1‬ﺗﺎ ‪ 1‬ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬ﻣﻜﺎﻧﻴﺰم آن ﻫﻢ ﺑﺼﻮرت‬
‫)‪nvarchar(max‬‬
‫‪Pointer‬ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫در اﻳﻦ ﻧﻮع داده‪ ،‬از ‪ 1‬ﺗﺎ ‪ 1‬ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬ﻣﻜﺎﻧﻴﺰم آن ﻫﻢ ﺑﺼﻮرت‬
‫‪ntext‬‬
‫‪Pointer .‬‬

‫اﻧﻮاع داده ﺑﺎﻳﻨﺮي در اﺳﻜﻴﻮال‪: Binary types‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري اﻃﻼﻋﺎت ﺑﺼﻮرت ﺑﺎﻳﻨﺎري ﻣﺎﻧﻨﺪ ﺗﺼﺎوﻳﺮ ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫ﻳﻚ ﻓﻴﻠﺪ دو ﺑﻴﺘﻲ اﺳﺖ و ﻣﻲﺗﻮاﻧﺪ ‪ 0‬و ‪ 1‬و ‪ Null‬را ذﺧﻴﺮه ﻛﻨﺪ‪.‬ﻛﺎرﺑﺮد آن در‬
‫‪bit‬‬
‫زﻣﺎنﻫﺎﻳﻲ اﺳﺖ ﻛﻪ دو ﺣﺎﻟﺖ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﺎﻧﻨﺪ ﺟﻨﺴﻴﺖ زن و ﻣﺮد‪.‬‬

‫)‪binary(n‬‬ ‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ‪ ،‬از ‪ 1‬ﺗﺎ ‪ 8000‬ﺑﺎﻳﺖ را در ﺧﻮد ﺟﺎي ﻣﻲدﻫﻨﺪ‪.‬‬

‫)‪varbinary(n‬‬ ‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﻫﻢ از ‪ 1‬ﺗﺎ ‪ 8000‬ﺑﺎﻳﺖ را در ﺧﻮد ﺟﺎي ﻣﻲدﻫﻨﺪ‪) .‬ﻣﺘﻐﻴﺮ‪).‬‬

‫اﻳﻦ ﻧﻮع ‪ Datatype‬در ‪ SQL 2005‬ﻣﻌﺮﻓﻲ ﺷﺪه و ﺗﻘﺮﻳﺒﺎً ﻫﻤﺎﻧﻨﺪ دادهﻫﺎي‬


‫)‪varbinary(max‬‬
‫‪Image‬ﻫﺴﺘﻨﺪ‪.‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ از ‪ 1‬ﺗﺎ ﺣﺪاﻛﺜﺮ ‪ 2‬ﮔﻴﮕﺎﺑﺎﻳﺖ را ﻣﻲﺗﻮاﻧﻨﺪ ذﺧﻴﺮه ﻛﻨﻨﺪ‪ .‬ﻓﺮق اﻳﻦ‬
‫ﻧﻮع دادهﻫﺎ ﺑﺎ دو ﻧﻮع ﻗﺒﻠﻲ اﻳﻦ اﺳﺖ ﻛﻪ در دو ﻧﻮع ﻗﺒﻠﻲ‪ ،‬اﻃﻼﻋﺎت در ﺧﻮد‬
‫رﻛﻮرد ﺛﺒﺖ ﻣﻲﺷﻮﻧﺪ وﻟﻲ در اﻳﻦ ﻧﻮع دادهﻫﺎ‪ ،‬اﻃﻼﻋﺎت در ﻳﻚ ‪ Page‬ذﺧﻴﺮه‬
‫‪image‬‬
‫ﻣﻲﺷﻮد و ﺑﻪ ﺟﺎﻳﺶ در رﻛﻮرد‪ ،‬ﻳﻚ ﭘﻮﻳﻨﺘﺮ ‪ 16‬ﺑﺎﻳﺘﻲ ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬اﻳﻦ ﻧﻮع‬
‫ﻓﻴﻠﺪﻫﺎ در ‪ SQL 10‬ﺣﺬف ﺷﺪه و ﺑﻪ ﺟﺎﻳﺶ ﺑﺎﻳﺪ از ‪ VarBinary‬اﺳﺘﻔﺎده‬
‫ﻛﺮد‪.‬‬

‫اﻧﻮاع داده ﻋﺪدي در اس ﻛﻴﻮ ال‪: Number types‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري اﻋﺪاد ﺻﺤﻴﺢ و ﺑﺪون اﻋﺸﺎر اﺳﺘﻔﺎده ﻣﻲﮔﺮدد و داراي ‪ 4‬ﻧﻮع ﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ‪ .‬در‬
‫ﺿﻤﻦ اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ رﺗﺒﻪ ﻳﻚ ﺳﺮﻋﺖ در ﻧﻮع ﻓﻴﻠﺪﻫﺎي ﻋﺪدي را دارد‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪14‬‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫‪tinyint‬‬ ‫ﻳﻚ ﺑﺎﻳﺖ را اﺷﻐﺎل ﻣﻲﻛﻨﺪ و ﻣﻲﺗﻮاﻧﺪ از ‪ 0‬ﺗﺎ ‪ 255‬را در ﺧﻮد ذﺧﻴﺮه ﻛﻨﺪ‪.‬‬

‫ﻳﻚ ﻋﺪد دو ﺑﺎﻳﺘﻲ اﺳﺖ و ﻣﻲﺗﻮاﻧﺪ از ‪ 32767‬ﻣﻨﻔﻲ ﺗﺎ ‪ 32767‬ﻣﺜﺒﺖ را در ﺧﻮد‬


‫‪smallint‬‬
‫ذﺧﻴﺮه ﻛﻨﺪ‪.‬‬

‫ﻳﻚ ﻋﺪد ﭼﻬﺎر ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ اﻋﺪاد ﺑﻴﻦ ﻣﺜﺒﺖ و ﻣﻨﻔﻲ ‪ 2‬ﻣﻴﻠﻴﺎرد را در‬
‫‪int‬‬
‫ﺧﻮد ذﺧﻴﺮه ﻛﻨﺪ‪.‬‬

‫ﻳﻚ ﻋﺪد ‪ 8‬ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ اﻋﺪاد ﺑﻴﻦ ﻣﺜﺒﺖ و ﻣﻨﻔﻲ ‪ 4‬ﻣﻴﻠﻴﺎرد را در ﺧﻮد‬
‫‪bigint‬‬
‫ذﺧﻴﺮه ﻛﻨﺪ‪.‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري اﻋﺪاد اﻋﺸﺎري ﺑﺎ ﺗﻌﺪاد اﻋﺸﺎر ﻣﺸﺨﺺ اﺳﺘﻔﺎده‬
‫ﻣﻲﮔﺮدد‪ .‬اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺴﻴﺎر ﻛﻨﺪ ﺑﻮده و اﺳﺘﻔﺎده از آﻧﻬﺎ ﺗﻮﺻﻴﻪ ﻧﻤﻲﮔﺮدد‪ .‬ﻛﻪ‬
‫در آن ‪ Precision‬ﺑﻪ ﻣﻌﻨﺎي ﺗﻌﺪاد ﻛﻞ رﻗﻢﻫﺎي ﻋﺪد و ‪ Scale‬ﺗﻌﺪاد ارﻗﺎم )‪decimal(p,s‬‬
‫اﻋﺸﺎر را ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ‪ .‬ﻣﺜﻼً اﮔﺮ ﻓﻴﻠﺪري ﺑﺼﻮرت )‪ Deciaml(6,2‬ﺗﻌﺮﻳﻒ‬
‫ﺷﻮد‪ ،‬ﺣﺪاﻛﺜﺮ آن ﺑﺮاﺑﺮ ‪ 9999٫99‬ﻣﻲﺑﺎﺷﺪ‪..‬‬

‫)‪numeric(p,s‬‬ ‫‪.‬‬
‫ﻳﻚ ﻋﺪد ‪ 4‬ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ‪ 6‬رﻗﻢ ﺻﺤﻴﺢ و ‪ 4‬رﻗﻢ اﻋﺸﺎر را در ﺧﻮد‬
‫‪smallmoney‬‬
‫ذﺧﻴﺮه ﻛﻨﺪ‪..‬‬

‫ﻳﻚ ﻋﺪد ‪ 8‬ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ‪ 15‬رﻗﻢ ﺻﺤﻴﺢ و ‪ 4‬رﻗﻢ اﻋﺸﺎر را در ﺧﻮد‬
‫‪money‬‬
‫ذﺧﻴﺮه ﻛﻨﺪ‪..‬‬

‫)‪float(n‬‬ ‫ﻳﻚ ﻋﺪد ‪ 8‬ﺑﺎﻳﺘﻲ ﻛﻪ اﻋﺪاد ﺑﺼﻮرت ﺗﻮاﻧﻲ از ‪ 10‬ﻧﮕﻬﺪاري ﻣﻲﺷﻮﻧﺪ‪. .‬‬

‫‪real‬‬ ‫ﻳﻚ ﻋﺪد ‪ 4‬ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ اﻋﺪاد ﺑﺼﻮرت ﺗﻮاﻧﻲ از ‪ 10‬ﻧﮕﻬﺪاري ﻣﻲﺷﻮﻧﺪ‪..‬‬

‫اﻧﻮاع داده ﺗﺎرﻳﺦ در اس ﻛﻴﻮال‪:Date types‬‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﺗﺎرﻳﺦ ﻣﻴﻼدي و ﺳﺎﻋﺖ اﺳﺘﻔﺎده ﻣﻲﺷﻮد و ﺑﺮاي ﺗﺎرﻳﺦ ﺷﻤﺴﻲ ﻛﺎرﺑﺮد ﻧﺪارد‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪15‬‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ‪ 8 ،‬ﺑﺎﻳﺘﻲ اﺳﺖ و از ﺳﺎل ‪ 1700‬ﺗﺎ ‪ 9999‬را ﺑﺎ دﻗﺖ ﻫﺰارم ﺛﺎﻧﻴﻪ‬
‫‪datetime‬‬
‫ذﺧﻴﺮه ﻣﻲﻛﻨﺪ‪..‬‬

‫‪datetime2‬‬ ‫‪.‬‬
‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ‪ 4 ،‬ﺑﺎﻳﺘﻲ اﺳﺖ و از ﺳﺎل ‪ 1900‬ﺗﺎ ‪ 2079‬را ﺑﺎ دﻗﺖ ﻫﺰارم ﺛﺎﻧﻴﻪ‬
‫‪smalldatetime‬‬
‫ذﺧﻴﺮه ﻣﻲﻛﻨﺪ‪..‬‬

‫‪date‬‬ ‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﺗﺎرﻳﺦ ﻣﻴﻼدي اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪time‬‬ ‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﺳﺎﻋﺖ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪datetimeoffset‬‬
‫‪timestamp‬‬

‫اﻧﻮاع دﻳﮕﺮ داده ﻫﺎ در‪sql: Other data types‬‬

‫ﻧﻮع داده‬ ‫ﺷﺮح‬

‫اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري اﻧﻮاع داده اﺳﺘﻔﺎده ﻣﻲﺷﻮد و ﻧﻮع آن ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ‬
‫اوﻟﻴﻦ ﻣﻘﺪاري ﻛﻪ در آن ﻗﺮار ﻣﻲﮔﻴﺮد ﺗﻌﻴﻴﻦ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﭼﻮن ﻧﻮع و ﺣﺠﻢ‬
‫‪sql_variant‬‬ ‫ﻓﻴﻠﺪ ﻣﺸﺨﺺ ﻧﻴﺴﺖ‪ ،‬ﻟﺬا ﺗﻨﻬﺎ ﻳﻚ اﺷﺎرهﮔﺮ ‪ 16‬ﺑﺎﻳﺘﻲ در آن ﻗﺮار ﮔﺮﻓﺘﻪ و داده‬
‫اﺻﻠﻲ در ﻓﺎﻳﻞ ﺟﺪاﮔﺎﻧﻪ ﻧﮕﻬﺪاري ﻣﻲﺷﻮد‪ .‬اﺳﺘﻔﺎده از اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ‪ ،‬ﺗﻮﺻﻴﻪ‬
‫ﻧﻤﻲﮔﺮدد‪..‬‬

‫‪.‬اﻳﻦ ﻓﻴﻠﺪ ‪ 16‬ﺑﺎﻳﺘﻲ‪ ،‬ﺑﻪ ﻣﺎ ﻛﺪي ‪ Unique‬ﻳﺎ ﺗﻚ ﻣﻲدﻫﺪ ﻛﻪ ﺑﻪ اﺻﻄﻼح‬


‫‪uniqueidentifier‬‬
‫‪GUID‬ﻣﻲﮔﻮﻳﻨﺪ‪ .‬ﻳﻜﻲ از ﻛﺎرﺑﺮدﻫﺎي آن در ‪ Replication‬اﺳﺖ‪.‬‬

‫اﻳﻦ ﻓﻴﻠﺪ ﺑﻴﺸﺘﺮ ﺑﺮاي اﻧﺘﻘﺎل اﻃﻼﻋﺎت و دﺳﺘﻮرات ﺗﺤﺖ ‪ web‬اﺳﺘﻔﺎده‬


‫‪xml‬‬
‫ﻣﻲﺷﻮد و ﺷﺎﻣﻞ اﻧﻮاع ‪ MetaData‬ﻫﺎي ﻣﺨﺘﻠﻒ اﺳﺖ‪.‬‬
‫ﻣﻘﺪﻣﺎت ‪SQL‬‬ ‫‪16‬‬

‫‪cursor‬‬ ‫اﻳﻦ ﻓﻴﻠﺪ ﻣﺮﺑﻮط ﺑﻪ ﻛﻨﺘﺮل ‪ Cursor‬اﺳﺖ‪.‬‬

‫‪table‬‬ ‫‪.‬‬
‫دﺳﺘﻮرات‪SQL‬‬
‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪18‬‬

‫دﺳﺘﻮر ‪ SELECT‬در‪sql‬‬

‫دﺳﺘﻮر ‪ SELECT‬در اﺳﻜﻴﻮال ﺑﺮاي اﻧﺘﺨﺎب و اﺳﺘﺨﺮاج اﻃﻼﻋﺎت ﻣﻮرد ﻧﻈﺮ از ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺟﺪول و ﺳﭙﺲ‬
‫ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ در ﻳﻚ ﺟﺪول ﻣﻮﻗﺖ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬

‫‪SELECT‬در اﻳﻨﺠﺎ ﺑﻪ ﻣﻔﻬﻮم ﻓﻌﻞ اﺳﺖ و ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ اﻃﻼﻋﺎﺗﻲ را‬
‫ﺑﺨﻮاﻧﻴﻢ‪.‬‬

‫‪SELECT‬ﻓﻬﺮﺳﺖ ﺳﺘﻮﻧﻬﺎ ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ ﻗﺼﺪ ﺧﻮاﻧﺪن ﻛﺪام ﺳﺘﻮﻧﻬﺎ را از ﺑﺎﻧﻚ دارﻳﻢ در ﺻﻮرﺗﻲ‬ ‫‪‬‬

‫ﻛﻪ در اﻳﻦ ﻓﻬﺮﺳﺖ * ﻗﺮار دﻫﻴﻢ ﻛﻠﻴﻪ ﺳﺘﻮﻧﻬﺎي ﺟﺪول ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد‪.‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ‪ FROM‬ﻣﺸﺨﺺ ﻣﻴﻜﻨﻴﻢ ﻛﻪ از ﻛﺪام ﺟﺪول ﻳﺎ ﺟﺪاول اﻳﻦ ﺳﺘﻮﻧﻬﺎ ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﺷﻮﻧﺪ‬ ‫‪‬‬

‫‪.‬‬

‫دﺳﺘﻮر * ‪SELECT‬‬

‫دﺳﺘﻮر * ‪ SELECT‬ﻫﻤﻪ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﺟﺪول را اﻧﺘﺨﺎب ﻣﻴﻜﻨﺪ‪.‬ﺑﺮاي اﻧﺘﺨﺎب ﻛﻠﻴﻪ ﺳﺘﻮن ﻫﺎي ﺟﺪول‬
‫در ﻗﺴﻤﺖ ﻧﺎم ﺳﺘﻮن ﺑﺎﻳﺪ ﻋﻼﻣﺖ * را ﮔﺬاﺷﺖ اﺳﺘﻔﺎده ﻛﺮد ‪.‬‬

‫‪SELECT * FROM table_name‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﺑﺮﺧﻲ از ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﺠﺎي ﻧﻮﺷﺘﻦ ﺗﻤﺎم ﺳﺘﻮﻧﻬﺎﻳﻲ ﻛﻪ در ﺗﻬﻴﻪ ﮔﺰارش ﺑﻪ آﻧﻬﺎ اﺣﺘﻴﺎج دارﻧﺪ از *‬
‫اﺳﺘﻔﺎده ﻣﻴﻜﻨﻨﺪ ﻛﻪ اﻳﻦ ﻛﺎر ﺑﺎﻋﺚ ﺑﺎﻻ رﻓﺘﻦ ﺑﺎر ﺷﺒﻜﻪ ﺷﺪه و ﻛﺎراﻳﻲ ﺳﻴﺴﺘﻢ را ﭘﺎﻳﻴﻦ ﻣﻲ آورد ﻟﺬا ﺑﻬﺘﺮ اﺳﺖ‬
‫ﺑﺠﺎي اﺳﺘﻔﺎده از * ﻛﻤﻲ ﺑﺨﻮد زﺣﻤﺖ دﻫﻴﺪ و ﻟﻴﺴﺖ ﺗﻤﺎﻣﻲ ﺳﺘﻮﻧﻬﺎ را ﺑﻄﻮر ﻛﺎﻣﻞ ﻗﻴﺪ ﻛﻨﻴﺪ‪.‬‬

‫دﺳﺘﻮر ‪ SELECT DISTINCT‬در‪sql‬‬

‫ﭼﻨﺎﻧﭽﻪ در ﺳﺘﻮن ﻫﺎي ﻣﻮرد ﺟﺴﺘﺠﻮ ‪ ،‬ﻣﻮارد ﺗﻜﺮاري وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ در ﻧﺘﻴﺠﻪ ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﺧﻮاﻫﻨﺪ‬
‫ﺷﺪ ‪ .‬ﺑﺮاي ﺟﻠﻮﮔﻴﺮي از ﭼﻨﻴﻦ ﻣﻮردي و ﻋﺪم ﻧﻤﺎﻳﺶ ﻣﻮارد ﺗﻜﺮاري ﭘﺲ از دﺳﺘﻮر‬
‫‪Select‬ﻋﺒﺎرت ‪ DISTINCT‬ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد‪.‬‬
‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪19‬‬

‫)‪SELECT DISTINCT column_name(s‬‬


‫‪FROM table_name‬‬

‫ﻣﺜﺎل ‪ :‬ﺗﺼﻮر ﻛﻨﻴﺪ ﻳﻚ ﺟﺪول ﻣﺸﺘﺮي ﺑﺎ ‪ 1000‬رﻛﻮرد ﺑﺎ ‪ 90‬درﺻﺪ ﻣﺸﺘﺮي از ﻛﺎﻟﻴﻔﺮﻧﻴﺎ‪ Query ،‬زﻳﺮ ﻛﺪ ‪ CA‬را‬
‫‪ 9000‬ﺑﺎر ﺧﻮاﻫﺪ ﺑﺎز ﮔﺮداﻧﺪ ﻛﻪ اﺻﻼً ﻳﻚ ﻧﺘﻴﺠﻪ ﻣﻔﻴﺪي ﻧﻤﻲ ﺑﺎﺷﺪ‪.‬‬

‫‪SELECT State From Customer‬‬

‫ﻛﻠﻴﺪ واژه ‪ Distinct‬در اﻳﻦ ﻣﻮﻗﻌﻴﺖ ﺷﻤﺎ را ﻛﻤﻚ ﻣﻲ ﻛﻨﺪ ‪. Distinct‬ﻛﻪ درﺳﺖ ﺑﻌﺪ از ‪ SELECT‬ﻗﺮار ﻣﻲ‬
‫ﮔﻴﺮد‪ ،‬ﺑﻪ ‪ SQL Server‬دﺳﺘﻮر داده ﻛﻪ ﺳﻄﺮﻫﺎي ﺗﻜﺮاري در ﻧﺘﺎﻳﺞ را ﺣﺬف ﻧﻤﺎﻳﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ‪ Query‬زﻳﺮ ﻫﺮ ﻛﺪ‬
‫اﻳﺎﻟﺘﻲ را ﻓﻘﻂ ﻳﻚ ﺑﺎر ﺑﺎز ﻣﻲ ﮔﺮداﻧﺪ ﺑﻪ ﻃﻮر وﺿﻮح ﻟﻴﺴﺘﻲ ﻛﻪ ﺷﻤﺎ ﺟﺴﺘﺠﻮ ﻣﻲ ﻛﻨﻴﺪ‪.‬‬

‫‪SELECT DISTINCT State From Customer‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻫﻤﺘﺎي ﻛﻠﻴﺪ واژه ‪All ، Distinct‬ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ‪ SQL Server‬را ﺑﺮاي ﺑﺎزﮔﺮداﻧﺪن ﻫﻤﻪ ﺳﻄﺮﻫﺎ‬
‫آﮔﺎه ﻣﻲ ﺳﺎزد ﺧﻮاه آن واﺣﺪ ﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ ‪. All‬ﭘﻴﺶ ﻓﺮض دﺳﺘﻮر ‪ select‬اﺳﺖ ‪ ،‬ﭘﺲ ﻧﻴﺎزي ﺑﻪ ﻧﻮﺷﺘﻦ آن‬
‫ﻧﻴﺴﺖ‪.‬‬

‫دﺳﺘﻮر ﺷﺮﻃﻲ ‪ WHERE‬در‪sql‬‬

‫دﺳﺘﻮر ‪ Where‬ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﺷﺮط ﻳﺎ ﺷﺮط ﻫﺎﻳﻲ ﺟﻬﺖ ﻣﺤﺪود ﻛﺮدن ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ و ﻳﺎ اﺳﺘﺨﺮاج ﻧﺘﺎﻳﺞ‬
‫دﻗﻴﻘﺘﺮ ﺑﺮاي داﺷﺘﻦ ﺧﺮوﺟﻲ ﻛﻪ در ذﻫﻦ ﻣﺎ وﺟﻮد دارد اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ‪ .‬اﻳﻦ ذﺳﺘﻮر ﺑﺎﻳﺪ ﭘﺲ از دﺳﺘﻮر‬
‫‪Select‬و ﺗﻌﻴﻴﻦ ﺳﺘﻮن ﻫﺎ از ﺟﺪول ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﻛﺎر رود‪.‬‬

‫ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎي ‪OR ، AND‬و ﭘﺮاﻧﺘﺰ ﻣﻲ ﺗﻮان ﭼﻨﺪﻳﻦ ﺷﺮط را ﺑﺎ ﻫﻢ ﺗﺮﻛﻴﺐ ﻛﺮد ‪.‬ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎ‬
‫ﺷﺮط ﻫﺎﻳﻲ ﻛﻪ روي دﺳﺘﻮر داده ﺷﺪه اﺳﺖ ﻣﻄﺎﺑﻘﺖ داده ﺧﻮاﻫﺪ ﺷﺪ ‪.‬‬

‫‪Select Name , Family‬‬


‫‪From Person‬‬
‫"‪Where IdNumber= " 1111‬‬

‫در ﻣﺜﺎل ﺑﺎﻻ ﻧﺎم و ﻓﺎﻣﻴﻠﻲ اﺷﺨﺎﺻﻲ ﻛﻪ ﻓﻴﻠﺪ ‪ IdNumber‬آﻧﻬﺎ ﺑﺮاﺑﺮ ‪ 1111‬ﺑﺎﺷﺪ ﺗﻮﺳﻂ دﺳﺘﻮر ‪ where‬در‬
‫اﺳﻜﻴﻮال ﺑﺮﮔﺮداﻧﺪه ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪20‬‬

‫ﻋﻤﻠﮕﺮ ﻫﺎي ‪ And‬و ‪ Or‬در‪SQL‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ‪ And‬و ‪ Or‬ﺑﺮاي ﺗﺮﻛﻴﺐ ﺷﺮط ﻫﺎ در دﺳﺘﻮر ‪ Where‬در ‪ sql‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ‪.‬‬

‫ﮔﺎﻫﻲ اوﻗﺎت ﺧﺮوﺟﻲ ﻛﻪ ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ در اس ﻛﻴﻮال ﺑﺎﻳﺴﺘﻲ ﭼﻨﺪ ﺷﺮط ﻣﺨﺘﻠﻒ داﺷﺘﻪ ﺑﺎﺷﺪ ‪ .‬ﺑﻪ ﻃﻮر ﻣﺜﺎل‬
‫اﻓﺮادي را ﻣﻴﺨﻮاﻫﻴﻢ ﻛﻪ ﺳﻦ ﺑﺎﻻي ‪ 23‬ﺳﺎل و ﻣﺪرك ﺗﺤﺼﻴﻠﻲ ﺑﺎﻻي ﻟﻴﺴﺎﻧﺲ داﺷﺘﻪ ﺑﺎﺷﻨﺪ ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ ﺑﺎﻳﺴﺘﻲ‬
‫ﻫﺮ ﻛﺪام از ﺷﺮط ﻫﺎ را ﺟﺪاﮔﺎﻧﻪ ﺗﻌﺮﻳﻒ ﻛﺮده و ﺳﭙﺲ آﻧﻬﺎ را ﺑﺎ ﻫﻢ ﺗﺮﻛﻴﺐ ﻛﻨﻴﻢ ‪ .‬ﺑﺮﻧﺎﻣﻪ ﻫﺮ ﻛﺪام از ﺷﺮط ﻫﺎ را‬
‫ﺑﺮرﺳﻲ ﻣﻴﻜﻨﺪ و ﺧﺮوﺟﻲ را ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ‪.‬‬

‫ﻋﻤﻠﮕﺮ ‪ And‬ﺑﺮاي اﺟﺮاي دﺳﺘﻮر ﻧﻴﺎز دارد ﺗﺎ ﺗﻤﺎم ﺷﺮط ﻫﺎي ﺗﻌﻴﻴﻦ ﺷﺪه ﺑﺮاي آن درﺳﺖ ﺑﺎﺷﺪ‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫' ‪WHERE FirstName=' saeed‬‬
‫' ‪AND LastName=' rajabi‬‬

‫ﻋﻤﮕﺮ ‪ Or‬ﻓﻘﻂ ﻧﻴﺎز دارد ﻛﻪ ﺣﺪاﻗﻞ ﻳﻜﻲ از ﺷﺮط ﻫﺎ درﺳﺖ ﺑﺎﺷﺪ‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE FirstName='saeed‬‬
‫'‪OR FirstName='rajabi‬‬

‫ﺗﺮﻛﻴﺐ ﻋﻤﻠﮕﺮﻫﺎي ‪ And‬و‪Or‬‬

‫‪Select * From Persons‬‬


‫‪Where ( ( Grade = 16 AND Major = 'Hard Ware' ) OR ( Garde = 12 AND Major‬‬
‫; " ) ) '‪= 'SoftWare‬‬

‫دﺳﺘﻮر ‪ Order By‬در‪sql‬‬

‫اﻃﻼﻋﺎﺗﻲ ﻛﻪ در دﺳﺘﻮر ‪ select‬در اﺳﻜﻴﻮال ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد ي ﺑﻲ ﻧﻈﻢ و ﻳﺎ ﺑﻬﺘﺮ ﺑﮕﻮﻳﻴﻢ‬
‫ﺑﺪون ﻧﻈﻢ ﻣﺪ ﻧﻈﺮ ﻣﺎ اﺳﺖ‪ .‬ﻣﻘﺎدﻳﺮ ﺧﺮوﺟﻲ در ﺳﺘﻮن ﻫﺎي ﺟﺪول ﺑﺮ اﺳﺎس ﻣﻘﺪار ﻫﻴﺞ ﺳﺘﻮﻧﻲ ﻣﺮﺗﺐ ﻧﻤﻴﺸﻮﻧﺪ ‪ .‬ﺑﺎ‬
‫دﺳﺘﻮر دﺳﺘﻮر ‪ Order By‬ﻣﻴﺘﻮان اﻃﻼﻋﺎت ﺟﺪول را ﺑﺮ اﺳﺎس ﻣﻘﺎدﻳﺮ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﺑﺮﺣﺴﺐ ﺷﺎﺧﺺ ﻫﺎﻳﻲ‬
‫ﻣﺜﻞ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ ‪ ،‬ﺑﺰرﮔﺘﺮ ﻳﺎ ﻛﻮﭼﻜﺘﺮ ﺑﻮدن اﻋﺪاد و ‪...‬ﻣﺮﺗﺐ ﻛﺮد‪.‬‬
‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪21‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر‪Order By‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫]‪ORDER BY column_name(s) [ASC|DESC‬‬

‫ﻋﻼﻣﺎت ][ در اﻃﺮاف ‪ where‬ﺑﺪﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﻣﻴﺘﻮاﻧﻴﺪ ‪ where‬را ﺑﻜﺎر ﻧﺒﺮﻳﺪ‪ .‬اﻣﺎ اﮔﺮ ﺑﻜﺎر ﺑﺮدﻳﺪ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﻗﺒﻞ‬
‫از ‪ order‬ﺑﺎﺷﺪ ‪ . ASC‬ﺑﻪ ﻣﻌﻨﺎي ﺻﻌﻮدي ﺑﻮدن)‪ (a to z‬و ‪ DESC‬ﺑﻪ ﻣﻌﻨﺎي ﻧﺰوﻟﻲ ﺑﻮدن اﺳﺖ‪ (z to a).‬ﭘﻴﺶ‬
‫ﻓﺮﺿﺶ ‪ ACS‬اﺳﺖ‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻫﻤﭽﻨﻴﻦ اﻳﻦ ﻧﻴﺰ اﻣﻜﺎن ﭘﺬﻳﺮﺳﺖ ﻛﻪ ﻣﺮﺗﺐ ﺳﺎزي را ﺑﺮ ﻣﺒﻨﺎي ﺑﻴﺶ از ﻳﻚ ﺳﺘﻮن اﻧﺠﺎم دﻫﻴﺪ ‪.‬ﺑﺮاي اﻳﻦ‬
‫ﻣﻨﻈﻮر ﺑﺨﺶ ﻣﺮﺗﺐ ﺳﺎزي ﻛﺪ ﺑﺎﻻ ﺑﺼﻮرت زﻳﺮ در ﻣﻴﺎﻳﺪ‪:‬‬

‫]‪ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪Select Name , Family From Person‬‬


‫"‪Where idnumber="11‬‬
‫‪Order By Family‬‬

‫ﺧﺮوﺟﻲ دﺳﺘﻮر ﺑﺎﻻ ‪ ،‬اﺷﺨﺎص ﺑﺎ ﺷﺮط ذﻛﺮ ﺷﺪه در دﺳﺘﻮر ‪ where‬را ﺑﺮ اﺳﺎس ﻧﺎم ﻓﺎﻣﻴﻠﻲ ﻣﺮﺗﺐ ﺻﻌﻮدي ﻣﻴﻜﻨﺪ‪.‬‬

‫دﺳﺘﻮر ‪ Group By‬در‪sql‬‬

‫از دﺳﺘﻮر ‪ Group By‬در اﺳﻜﻴﻮال ﺑﺮاي دﺳﺘﻪ ﺑﻨﺪي ﻳﻚ ﺳﺘﻮن ﺑﺮ ﺣﺴﺐ ﻣﻘﺎدﻳﺮ ﻣﺸﺎﺑﻪ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن‬
‫دﻳﮕﺮ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫در ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮﺧﻲ از ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ ‪ SQL‬ﻛﻪ ﻋﻤﻞ ﻣﺤﺎﺳﺒﻪ ) ﻣﺜﻞ ﻣﺠﻤﻮع و ﻣﻴﺎﻧﮕﻴﻦ ( را ﺑﺮ روي‬
‫داده ﻫﺎ اﻧﺠﺎم ﻣﻲ دﻫﻨﺪ ‪ ،‬اﻳﻦ ﻣﺸﻜﻞ وﺟﻮد دارد ﻛﻪ اﻳﻦ ﺗﻮاﺑﻊ ﻗﺎدر ﺑﻪ ﺟﺪا ﻛﺮدن و ﻣﺘﻤﺎﻳﺰ ﻛﺮدن اﻃﻼﻋﺎت ﻣﻮﺟﻮد‬
‫در دو ﺳﺘﻮن ﻧﺴﺒﺖ ﺑﻪ ﻫﻢ ﻧﻴﺴﺘﻨﺪ و ﻧﺘﺎﻳﺞ ﻣﺤﺎﺳﺒﺎت را ﺑﻪ ﺻﻮرت ﻛﻠﻲ ﺑﺮاي ﻫﻤﻪ آﻧﻬﺎ در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻧﺪ ‪ .‬در اﻳﻦ‬
‫ﻣﻮاﻗﻊ از دﺳﺘﻮر ‪ Group By‬اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬


‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪22‬‬

‫)‪SELECT column_name, aggregate_function(column_name‬‬


‫‪FROM table_name‬‬
‫‪WHERE column_name operator value‬‬
‫‪GROUP BY column_name‬‬

‫دﺳﺘﻮر ‪ Group By‬در ‪ sql‬وﻗﺘﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﻣﺎ در ﺣﺎل اﻧﺘﺨﺎب ﭼﻨﺪ ﺳﺘﻮن ﻫﺴﺘﻴﻢ و ﺣﺪاﻗﻞ‬
‫ﻳﻚ ﻋﻤﻠﮕﺮ ﻣﺤﺎﺳﺒﺎﺗﻲ در دﺳﺘﻮر ‪ select‬دارﻳﻢ ‪ .‬در اﻳﻦ زﻣﺎن ﻣﺎ ﺑﺎﻳﺪ ﺗﻤﺎم ﺳﺘﻮﻧﻬﺎي دﻳﮕﺮ را ﮔﺮوه‬
‫ﻛﻨﻴﻢ‪.‬‬

‫ﻣﺜﺎل ‪ :‬در ﻣﺜﺎل زﻳﺮ ﻣﺠﻤﻮع ﻧﻤﺮات ﻫﺮ داﻧﺶ آﻣﻮز را ﺑﺼﻮرت ﮔﺮوه ﺑﻨﺪي ﺷﺪه ﺑﺮ اﺳﺎس ﻓﻴﻠﺪ ﻧﺎم داﻧﺶ آﻣﻮز ﺑﻪ‬
‫ﺧﺮوﺟﻲ داده ﻣﻲ ﺷﻮد ‪:‬‬

‫‪Select Name ,Sum ( Grade ) As‬ﻣﺠﻤﻮع ﻧﻤﺮات‬


‫‪From Class‬‬
‫; ‪Group By Name‬‬

‫ﻧﻜﺘﻪ ‪ :‬دﺳﺘﻮر ‪ group by‬در اﺳﻜﻴﻮال از ﺟﻤﻠﻪ ي ﭘﺮﻛﺎرﺑﺮدﺗﺮﻳﻦ دﺳﺘﻮرات اﺳﺖ ﻛﻪ ﻳﺎدﮔﻴﺮي ﻛﺎﻣﻞ اﻳﻦ دﺳﺘﻮر ‪،‬‬
‫ﻣﻴﺘﻮاﻧﺪ ﺗﻔﺎوت اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺣﺮﻓﻪ اي در ‪ sql‬ﺑﺎﺷﺪ‪.‬‬
‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪23‬‬

‫دﺳﺘﻮر ﺷﺮﻃﻲ ‪ Having‬در‪sql‬‬

‫دﺳﺘﻮر ‪ Having‬در اﺳﻜﻴﻮال ﺑﺮاي اﻓﺰودن ﺷﺮط ﺑﻪ ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ ‪ SQL‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ‪ ،‬زﻳﺮا از دﺳﺘﻮر‬
‫‪Where‬ﻧﻤﻲ ﺗﻮان ﺑﺮاي ﻛﺎر ﺑﺎ ﻣﻘﺎدﻳﺮ ﺧﺮوﺟﻲ ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ ‪ SQL‬اﺳﺘﻔﺎده ﻛﺮد ‪.‬‬

‫ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ دﺳﺘﻮر ‪ Having‬در ‪ sql‬ﺑﺮاي اﻋﻤﺎل ﺷﺮط ﺑﻪ ﺳﺘﻮن ﻫﺎ اﻋﻤﺎل ﻣﻲ ﺷﻮد و ﻫﻤﺎن ﻛﺎري را ﻣﻲ ﻛﻨﺪ‬
‫ﻛﻪ ‪ Where‬در رﻛﻮردﻫﺎ اﻧﺠﺎم ﻣﻲ دﻫﺪ ‪ .‬دﺳﺘﻮر ‪ Having‬ﻣﻌﻤﻮﻻ ﺑﺎ دﺳﺘﻮر ‪ Group By‬ﻣﻲ آﻳﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ﺷﺮﻃﻲ ‪ Having‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫)‪SELECT column_name, aggregate_function(column_name‬‬


‫‪FROM table_name‬‬
‫‪WHERE column_name operator value‬‬
‫‪GROUP BY column_name‬‬
‫‪HAVING aggregate_function(column_name) operator value‬‬

‫ﻣﺜﺎل ‪ :‬در ﻣﺜﺎل زﻳﺮ ﻫﻤﭽﻮن ﻣﺜﺎل ﺑﺨﺶ دﺳﺘﻮر ‪ group by‬ﻋﻤﻞ ﺷﺪه ‪ ،‬ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑﻌﺪ از ﮔﺮوه ﺑﻨﺪي ﺑﺮ‬
‫اﺳﺎس ﻧﺎم داﻧﺶ آﻣﻮزان و دادن ﺧﺮوﺟﻲ ﺟﻤﻊ ﻧﻤﺮات آﻧﻬﺎ ‪ ،‬ﺧﺮوﺟﻲ ﺷﺎﻣﻞ داﻧﺶ آﻣﻮزاﻧﻲ اﺳﺖ ﻛﻪ ﻣﺠﻤﻮع ﻧﻤﺮات‬
‫آﻧﻬﺎ ﺑﺎﻻﺗﺮ از ‪ 25‬ﺑﺎﺷﺪ‪:‬‬

‫ﺟﻤﻊ ﻧﻤﺮه ‪ Select Name , Sum ( Grade ) As‬ﻣﺠﻤﻮع ﻧﻤﺮات‬


‫‪From Students‬‬
‫‪Group By Name‬‬
‫‪Having Sum ( Grade ) > 25‬‬
‫‪Order By Family‬‬

‫ﻧﻜﺘﻪ ﻣﺜﺎل ‪ :‬در ﻣﺜﺎل ﺑﺎﻻ ﺑﻪ ﺟﺎي ‪ having‬ﻧﻤﻴﺘﻮان از ‪ where‬اﺳﺘﻔﺎده ﻛﺮد و ﺑﺮاي اﻋﻤﺎل ﺷﺮط ﺑﺮ روي‬
‫ﻓﻴﻠﺪﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ آﻣﺪه در دﺳﺘﻮر ‪ group by‬ﺑﺎﻳﺪ از ﺟﻤﻠﻪ ﺷﺮﻃﻲ ‪ having‬اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫دﺳﺘﻮر ‪ Insert‬در اﺳﻜﻴﻮال‬

‫دﺳﺘﻮر ‪ Insert‬در ‪ sql‬ﺑﺮاي وارد ﻛﺮدن و اﻳﺠﺎد ﻳﻚ رﻛﻮرد ﺟﺪﻳﺪ در ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫دو روش اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮر وﺟﻮد دارد‪:‬‬


‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪24‬‬

‫‪INSERT INTO table_name‬‬


‫)‪VALUES (value1, value2, value3,...‬‬

‫)‪INSERT INTO table_name (column1, column2, column3,...‬‬


‫)‪VALUES (value1, value2, value3,...‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻣﻲ ﺗﻮان در دﺳﺘﻮر ‪ Insert‬در اﺳﻜﻴﻮال ﺗﻌﻴﻴﻦ ﻛﺮد ﻛﻪ ﻣﻘﺎدﻳﺮ ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﻪ ﻛﺪام ﺳﺘﻮن ﻫﺎي‬
‫ﺟﺪول وارد ﺷﻮﻧﺪ ‪ .‬ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر اﺑﺘﺪا ﻧﺎم ﺳﺘﻮن ﻫﺎي ﻣﻮرد ﻧﻈﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ ﺟﻠﻮي ﻧﺎم ﺟﺪول در ﻳﻚ ﭘﺮاﻧﺘﺰ‬
‫وارد ﻛﺮده و ﺑﺎ ﻛﺎﻣﺎ از ﻫﻢ ﺟﺪا ﻣﻲ ﻛﻨﻴﻢ ‪ .‬ﺳﭙﺲ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﺎﻇﺮ را ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﻴﺐ ﭘﺲ از واژه ‪ Vaues‬در ﭘﺮاﻧﺘﺰ‬
‫وارد ﻣﻲ ﻛﻨﻴﻢ‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﭼﻨﺎﻧﭽﻪ ﺑﺮاي ﻓﻴﻠﺪ ﻳﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻣﻘﺪاري در دﺳﺘﻮر ‪ insert‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻧﺸﻮد ‪ ،‬ﻣﻘﺎدﻳﺮ ﭘﻴﺶ ﻓﺮض‬
‫ﺗﻌﻴﻴﻦ ﺷﺪه و در ﺻﻮرت ﺗﻌﻴﻴﻦ ﻧﻜﺮدن ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض ﺟﺎي آﻧﻬﺎ در ﺟﺪول ﺧﺎﻟﻲ ﻣﻲ ﻣﺎﻧﺪ ‪ .‬ﻓﻘﻂ ﺑﺎﻳﺪ ﺑﻪ ﺗﺮﺗﻴﺐ‬
‫ﻧﺎم ﺳﺘﻮن ﻫﺎ و ﻣﻘﺎدﻳﺮ دﻗﺖ ﻛﺮد‪.‬‬

‫) "‪Insert into Student ( Name , Family ) Values ( "Saeed" , "Rajabi‬‬

‫در ﻣﺜﺎل ﺑﺎﻻ ﻧﺎم ‪ Saeed‬در ﻓﻴﻠﺪ ‪ Name‬و ﻧﺎم ‪ Rajabi‬در ﻓﻴﻠﺪ ‪ Family‬ﻣﻴﺮود‪ .‬ﺑﻘﻴﻪ ي ﻓﻴﻠﺪ ﻫﺎ در ﺻﻮرت‬
‫ﺗﻌﻴﻴﻦ ﻛﺮدن ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض آن ﻣﻘﺪار را ﻣﻴﮕﻴﺮﻧﺪ و در ﺻﻮرت ﺗﻌﻴﻴﻦ ﻧﻜﺮدن آن ‪ ،‬ﻣﻘﺪار ﺧﺎﻟﻲ ﻳﺎ ‪Null‬‬
‫ﻣﻴﮕﻴﺮﻧﺪ‪.‬‬

‫دﺳﺘﻮر ‪ Update‬در‪sql‬‬

‫دﺳﺘﻮر ‪ Update‬در اﺳﻜﻴﻮال ﺑﺮاي ﺗﻐﻴﻴﺮ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ و ﺟﺎﻳﮕﺰﻳﻨﻲ آن ﺑﺎ ﻳﻚ ﻣﻘﺪار ﺟﺪﻳﺪ ﺑﻪ ﻛﺎر‬
‫ﻣﻲ رود ‪ .‬وﻳﺮاﻳﺶ اﻃﻼﻋﺎت در ﺑﺎﻧﻚ اس ﻛﻴﻮال از ﺟﻤﻠﻪ ﻣﻬﻤﺘﺮﻳﻦ اﻋﻤﺎل ﻫﺴﺖ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر‬
‫‪Update‬اﻣﻜﺎن ﭘﺬﻳﺮ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫‪UPDATE table_name‬‬
‫‪SET column1=value, column2=value2,...‬‬
‫‪WHERE some_column=some_value‬‬

‫ﺑﺮاي وﻳﺮاﻳﺶ ﻛﺮدن ﺑﻴﺶ از ﻳﻚ ﻓﻴﻠﺪ ﺑﻪ روش زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ‪:‬‬


‫دﺳﺘﻮرات ‪SQL‬‬ ‫‪25‬‬

‫‪Update Person‬‬
‫" ‪Set Name = " bahar" , Family = " shokri" , id-number=" 11‬‬
‫‪Where ID =3222‬‬

‫ﺑﺮاي وﻳﺮاﻳﺶ ﻳﻚ ﻓﻴﻠﺪ دﺳﺘﻮر زﻳﺮ را ﻣﻴﻨﻮﻳﺴﻴﻢ‪:‬‬

‫‪Update Person‬‬
‫" ‪Set Name =" Ali‬‬
‫" ‪Where Name = " Ahmad‬‬

‫دﺳﺘﻮر ‪ Delete‬در اﺳﻜﻴﻮال‬

‫دﺳﺘﻮر ‪ Delete‬در ‪ sql‬ﺑﺮاي ﺣﺬف اﻃﻼﻋﺎت ﻳﻚ رﻛﻮرد در ﺟﺪول ﺑﺎﻧﻚ اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪ .‬از دﺳﺘﻮر‬
‫‪delete‬ﺑﺎﻳﺪ ﺑﺎ دﻗﺖ اﺳﺘﻔﺎده ﺷﻮد زﻳﺮا اﻣﻜﺎن ﺑﺎزﮔﺮداﻧﺪن رﻛﻮرد ﻫﺎي ﺣﺬف ﺷﺪه ﺑﻪ اﻳﻦ راﺣﺘﻲ ﻫﺎ ﻧﻴﺴﺖ!‬

‫‪DELETE FROM table_name‬‬


‫‪WHERE some_column=some_value‬‬

‫ﺑﺮاي ﭘﺎك ﻛﺮدن ﻳﻚ رﻛﻮرد ﺑﺎ ﺷﻨﺎﺳﻪ ﻣﺸﺨﺺ از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫‪Delete From Person‬‬


‫" ‪Where ID = "16‬‬

‫دﺳﺘﻮر * ‪Delete‬‬

‫اﻳﻦ اﻣﻜﺎن وﺟﻮد دارد ﻛﻪ ﺑﺎ دﺳﺘﻮر * ‪ Delete‬ﺑﺪون ﺣﺬف ﻳﻚ ﺟﺪول ‪ ،‬ﻛﻠﻴﻪ رﻛﻮردﻫﺎي درون آن را ﭘﺎك ﻛﺮد‪.‬‬

‫‪Delete From Person‬‬


‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ‬
‫‪SQL‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪27‬‬

‫دﺳﺘﻮر ‪ TOP‬در‪sql‬‬

‫دﺳﺘﻮر ‪ TOP‬در دﺳﺘﻮر ‪ select‬اﺳﻜﻴﻮال ‪ ،‬ﺗﻌﺪاد رﻛﻮرﻫﺎي ﺧﺮوﺟﻲ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪.‬‬

‫دﺳﺘﻮر ‪ top‬در ‪ sql‬ﺑﺮاي ﺟﺪاوﻟﻲ ﻛﻪ ﺑﺎﻻي ﻫﺰاران رﻛﻮرد دارﻧﺪ ﺑﺴﻴﺎر ﻣﻔﻴﺪ ﻣﻴﺒﺎﺷﺪ ‪.‬ﺧﺮوﺟﻲ ﺑﺎ ﺗﻌﺪاد رﻛﻮردﻫﺎي‬
‫ﺑﺎﻻ ﺑﺮ روي ﻛﺎراﻳﻲ ﺑﺮﻧﺎﻣﻪ ي ﻣﺮﺗﺒﻂ ﺑﺎ ‪ sql‬ﻣﻤﻜﻦ اﺳﺖ ﺗﺎﺛﻴﺮ ﺑﮕﺬارد‪.‬‬

‫ﻣﺜﺎل ‪ :‬ﺑﺎ ﻣﺜﺎل زﻳﺮ ﻣﺎ ‪ 2‬رﻛﻮرد از ﺟﺪول را اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪SELECT TOP 2 * FROM Persons‬‬

‫ﻣﺜﺎل ‪ :‬ﺑﺎ ﻣﺜﺎل زﻳﺮ ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ ‪ 50‬درﺻﺪ از رﻛﻮردﻫﺎ در ﺟﺪول ﺑﺎﻻ را اﻧﺘﺨﺎب ﻛﻨﻴﻢ‪:‬‬

‫‪SELECT TOP 50 PERCENT * FROM Persons‬‬

‫ﻋﻤﻠﮕﺮ ‪ Like‬در‪SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ Like‬در ﺷﺮﻃﻬﺎي ‪ ، sql‬ﺑﺮاي اﻟﮕﻮي ﺧﺎص ﺟﺴﺘﺠﻮ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻴﮕﻴﺮد‪ .‬ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ like‬در‬
‫اﺳﻜﻴﻮال ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE column_name LIKE pattern‬‬

‫ﻣﺜﺎل ‪ :‬دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎ ﺑﺎ ﺣﺮف ‪ s‬ﺷﺮوع ﻣﻴﺸﻮﻧﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE 's%‬‬

‫ﻣﺜﺎل ‪ :‬دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎ ﺑﻪ ﺣﺮف ‪ s‬ﺧﺘﻢ ﻣﻴﺸﻮﻧﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE '%s‬‬

‫ﻣﺜﺎل ‪ :‬دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎﺷﺎﻣﻞ ﺣﺮف ‪ st‬ﻣﻴﺒﺎﺷﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ‪.‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪28‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE '%st%‬‬

‫ﻣﺜﺎل ‪ :‬دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎﺷﺎﻣﻞ ﺣﺮف ‪ st‬ﻧﻤﻴﺒﺎﺷﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City NOT LIKE '%st%‬‬

‫ﻧﻜﺘﻪ ‪ :‬در ﻣﻘﺎﻟﻪ ي ﺑﻌﺪي ﻋﻼﻣﺖ ﻫﺎي ﺷﺮﻃﻲ در ‪ Like‬را ﺗﻮﺿﻴﺢ ﺧﻮاﻫﻴﻢ داد‪.‬‬

‫ﻋﻼﻣﺖ ﻫﺎي ﺷﺮﻃﻲ در‪Like‬‬

‫ﻳﺎدآوري از دﺳﺘﻮر ‪ Like :‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﻣﻘﺎﻟﻪ ي ﻗﺒﻠﻲ در ﻣﻮرد دﺳﺘﻮر ‪ like‬در ‪ sql‬ﮔﻔﺘﻪ ﺷﺪ ‪ ،‬ﻫﻨﮕﺎم‬
‫ﻛﺎرﻛﺮدن ﺑﺎ رﺷﺘﻪ ﻫﺎ ﻫﻤﻴﺸﻪ ﺧﻮاﻫﺎن ﻣﻄﺎﺑﻘﺖ ﻛﺎﻣﻞ رﺷﺘﻪ ﻫﺎ ﻧﻴﺴﺘﻴﻢ ‪ ،‬ﺑﻠﻜﻪ ﺑﺨﺸﻲ از رﺷﺘﻪ ﻳﺎ اﻟﮕﻮي ﺧﺎﺻﻲ از آن‬
‫ﺑﻴﺸﺘﺮ ﻣﻮردﻧﻈﺮ اﺳﺖ‪ .‬در اﻳﻦ ﻫﻨﮕﺎم ﻣﻲ ﺗﻮان از دﺳﺘﻮر ‪ LIKE‬در ﺷﺮط ﻫﺎي اﺳﻜﻴﻮال ‪ ،‬ﺑﻪ ﺟﺎي‬
‫ﻋﻼﻣﺖ = اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫در دﺳﺘﻮر ‪ ، like‬دو ﻛﺎراﻛﺘﺮ ‪ %‬و _ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﻪ ﻣﻌﻨﻲ ﭼﻨﺪ ﻛﺎراﻛﺘﺮ و ﻳﻚ ﻛﺎراﻛﺘﺮ را ﺑﺮاي ﺗﻄﺎﺑﻖ ﻣﻲ ﺗﻮان ﺑﻜﺎر‬
‫ﺑﺮد‪.‬‬

‫در آﻣﻮزش ‪ sql‬اﻳﻦ ﻋﻼﻣﺖ ﻫﺎ ﻛﺎرﺑﺮد ﺑﺴﻴﺎري دارﻧﺪ‪.‬‬

‫ﻣﺜﺎل ‪ :‬اﺳﺎﻣﻲ ﻛﻠﻴﻪ ﻣﺸﺘﺮﻳﺎﻧﻲ ﻛﻪ آدرس آﻧﻬﺎ ﺷﺎﻣﻞ ﻛﻠﻤﻪ ‪ Main‬اﺳﺖ ﺑﻄﻮرﻳﻜﻪ ﻗﺒﻞ ‪ Main‬ﻫﺮ ﭼﻨﺪ ﻛﺎراﻛﺘﺮي‬
‫ﻛﻪ ﺧﻮاﺳﺖ ﺑﻴﺎﻳﺪ وﻟﻲ ﺑﻌﺪ از ‪ Main‬ﻓﻘﻂ ﻳﻚ ﻛﺎراﻛﺘﺮ ﺑﻴﺎﻳﺪ را ﭘﻴﺪا ﻛﻦ‪:‬‬

‫‪SELECT customer_name‬‬
‫‪FROM customer‬‬
‫;'_‪WHERE customer_street LIKE '%Main‬‬

‫ﻋﻤﻠﮕﺮ ‪ In‬در‪sql‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪29‬‬

‫ﻋﻤﻠﮕﺮ ‪ In‬در اﺳﻜﻴﻮال ﺑﺮاي ﻣﺸﺎﻫﺪه اﻃﻼﻋﺎت رﻛﻮردﻫﺎﻳﻲ از ﺟﺪول ﺑﻪ ﻛﺎر ﻣﻲ رود ﻛﻪ ﺷﻤﺎ ﻣﻘﺪار دﻗﻴﻖ ﺣﺪاﻗﻞ‬
‫ﻳﻜﻲ از ﻓﻴﻠﺪﻫﺎي آﻧﺮا ﻣﻲ داﻧﻴﺪ ‪ .‬دﺳﺘﻮر ‪ in‬در اﺳﻜﻴﻮل ﺑﺮاي ﻛﻮﺋﺮي ﻫﺎي ﭘﻴﭽﻴﺪه در اس ﻛﻴﻮ ال ﺑﺴﻴﺎر ﻛﺎرﺑﺮدي‬
‫اﺳﺖ‪.‬‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫)‪WHERE column_name IN (value1,value2,...‬‬

‫ﻣﺜﺎل ‪ :‬از ﺟﺪول ‪ Persons‬ﻣﺸﺨﺼﺎت اﻓﺮادي را ﺑﺪﻫﻴﺪ ﻛﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﻲ آﻧﻬﺎ رﺟﺒﻲ ﻳﺎ ﻳﻮﺳﻔﻲ اﺳﺖ‪:‬‬

‫‪Select * From Persons‬‬


‫" ( ‪Where Family IN‬رﺟﺒﻲ" ‪" ,‬ﻳﻮﺳﻔﻲ;) "‬

‫ﻋﻤﻠﮕﺮ ‪ BETWEEN‬در اﺳﻜﻴﻮال‬

‫ﻋﻤﻠﮕﺮ ‪ BETWEEN‬در ‪ sql‬ﺑﺮاي اﻧﺘﺨﺎب اﻃﻼﻋﺎت در ﻳﻚ ﻣﺤﺪوده ﺧﺎص ‪ ،‬در ﺑﻴﻦ دو ﻣﻘﺪار ﺗﻌﻴﻴﻦ ﺷﺪه‬
‫اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ‪ .‬اﻳﻦ ﻣﻘﺎدﻳﺮ ﻣﻲ ﺗﻮاﻧﺪ از ﻧﻮع ﻋﺪدي ‪ ،‬ﻣﺘﻦ ﻳﺎ ﺗﺎرﻳﺦ ﺑﺎﺷﺪ‪.‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ در ﻣﻮرد دﺳﺘﻮر ‪ Between‬در ‪ sql‬اﻳﻨﺴﺖ ﻛﻪ ﺑﺎﻳﺪ ﻧﻮع ﻣﺪﻧﻈﺮ ﺑﺎ ﻧﻮع داده اي ﻓﻴﻠﺪ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه‬
‫ﺑﺎﺷﺪ‪.‬‬ ‫ﻳﻜﺴﺎن‬ ‫دﺳﺘﻮر‬ ‫در‬
‫ﻧﻜﺘﻪ ي دﻳﮕﺮ در ﻣﻮرد ‪ Between‬در ﻣﻮرد داده ﻫﺎي ﻣﺘﻨﻲ ‪ ،‬ﺗﺮﺗﻴﺐ ﻗﺮار ﮔﻴﺮي ﺣﺮوف اﻟﻔﺒﺎ ﻣﺪ ﻧﻈﺮ ﺑﺮﻧﺎﻣﻪ اﺳﺖ‪.‬‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE column_name‬‬
‫‪BETWEEN value1 AND value2‬‬

‫ﻣﺜﺎل ‪ :‬ﺑﺮاي ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت درون ﻣﺤﺪوده ﺗﻌﻴﻴﻦ ﺷﺪه ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ ‪:‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪30‬‬

‫‪SELECT * FROM Persons‬‬


‫‪WHERE LastName‬‬
‫'‪BETWEEN 'Hansen' AND 'Pettersen‬‬

‫ﻣﺜﺎل ‪ :‬ﺑﺮاي ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت ﺧﺎرج از ﻣﺤﺪوده ﺗﻌﻴﻴﻦ ﺷﺪه از ﻳﻚ ﻋﻤﻠﮕﺮ ‪ NOT‬ﻗﺒﻞ از دﺳﺘﻮر ‪Between ...‬‬
‫‪And‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫‪SELECT * FROM Persons‬‬


‫‪WHERE LastName‬‬
‫'‪NOT BETWEEN 'Hansen' AND 'Pettersen‬‬

‫‪Alias‬در اس ﻛﻴﻮ ال‬

‫زﻣﺎﻧﻲ ﻛﻪ ﺑﺎ دﺳﺘﻮر ‪ select‬در ‪ sql‬ﻳﻚ ﻛﻮﺋﺮي اﺟﺮا ﻛﺮده اﻳﻢ ﻧﺎم ﻳﺎ ﻋﻨﻮاﻧﻲ ﻛﻪ در ﺑﺎﻻي ﻫﺮ ﺳﺘﻮن در ﺧﺮوﺟﻲ‬
‫ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد ‪ ،‬ﻫﻤﺎن ﻧﺎم ﻓﻴﻠﺪ ﻣﺮﺑﻮط ﺑﻪ داده در ﺟﺪول اﺻﻠﻲ ﭘﺎﻳﮕﺎه داده اﺳﺖ‪.‬‬

‫ﮔﺎﻫﻲ اوﻗﺎت ﻣﻴﺨﻮاﻫﻴﻢ ﻧﺎم ﺳﺘﻮن ﻣﺎ در ﺧﺮوﺟﻲ ﺑﺮاﺑﺮ ﺑﺎ ﻧﺎم دﻟﺨﻮاه ﻣﺎ ﺑﺎﺷﺪ ﻳﺎ در ﻣﻮاردي ﻛﻪ در‬
‫ﺑﺨﺸﺘﻮاﺑﻊ ‪ SQL‬ﺧﻮاﻫﻴﻢ دﻳﺪ ‪ ،‬ﻳﻚ ﺳﺘﻮن ﺟﺪﻳﺪ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺑﺎﻳﺪ ﻧﺎﻣﻲ ﺑﺮاي آن ﺗﻌﻴﻴﻦ ﺷﻮد در‬
‫اﻳﻦ ﻣﻮارد ازوﻳﮋﮔﻲ ‪ Alias‬اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ‪.‬‬

‫از وﻳﮋﮔﻲ ‪ Alias‬ﺑﺮاي در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﻳﻚ ﻧﺎم ﻣﺴﺘﻌﺎر و ﻣﺠﺎزي ﺑﺮاي ﻗﺮار ﮔﺮﻓﺘﻦ در ﺑﺨﺶ ﻋﻨﻮان ﻫﺮ ﺳﺘﻮن در‬
‫ﺧﺮوﺟﻴﺪﺳﺘﻮر ‪ Select‬در اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫ﺗﻌﺮﻳﻒ ‪ Alias‬ﺑﺮاي ﺟﺪاول ‪ sql :‬ﻛﻠﻤﻪ ﻛﻠﻴﺪي ‪ as‬در اﺳﻜﻴﻮال اﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲ دﻫﺪ‪.‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪AS alias_name‬‬

‫ﺗﻌﺮﻳﻒ ‪ Alias‬ﺑﺮاي ﺳﺘﻮﻧﻬﺎ در‪sql :‬‬

‫‪SELECT column_name AS alias_name‬‬


‫‪FROM table_name‬‬

‫ﻣﺜﺎل‪:‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪31‬‬

‫‪Select Name As‬ﻧﺎم ‪ , Family As‬ﺧﺎﻧﻮادﮔﻲ‪From Persons‬‬


‫‪Where id >15‬‬
‫; ‪Order By Family‬‬

‫ﻣﻲ ﺗﻮان ﺑﺮ روي ﻣﻘﺎدﻳﺮ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده ﻋﺪدي دارﻧﺪ ‪ ،‬ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ) ﻣﺜﻞ ﺿﺮب ‪ ،‬ﺗﻘﺴﻴﻢ و ‪ ( ...‬اﻧﺠﺎم‬
‫داده و ﺳﭙﺲ ﻧﺘﺎﻳﺞ ﻣﺤﺎﺳﺒﺎت را در ﻳﻚ ﺳﺘﻮن ﺟﺪﻳﺪ ﺑﺎ ﻋﻨﻮان دﻟﺨﻮاه ﺗﻌﻴﻴﻦ ﺷﺪه ﺗﻮﺳﻂ وﻳﮋﮔﻲ ‪ Alias‬در‬
‫ﺧﺮوﺟﻲ دﺳﺘﻮر‪ Select‬ﻧﻤﺎﻳﺶ داد ‪.‬در اﻳﻦ ﺣﺎﻟﺖ ﺳﺘﻮن ﻳﺎ ﺳﺘﻮن ﻫﺎي ﺑﻪ ﺟﺪول ﺧﺮوﺟﻲ اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد‪.‬‬

‫ﻣﺜﺎل ‪ :‬ﻣﺜﺎل زﻳﺮ ﻛﺎرﺑﺮدي از اﻳﻦ ﻣﻮرد را در دﺳﺘﻮر ‪ select‬ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬

‫" ‪Select Name+Family As‬ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔﻲ‪" From Persons‬‬


‫‪Where id >15‬‬
‫; ‪Order By Family‬‬

‫دﺳﺘﻮرﻫﺎي ﭘﻴﻮﻧﺪ ) ‪ ( Join‬در‪SQL‬‬

‫از ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات ‪ Join‬در اﺳﻜﻴﻮال ‪ ،‬ﺑﺮاي ﭘﻴﻮﻧﺪ ﺟﺪول ﻫﺎ در ﭘﺎﻳﮕﺎه داده ﻫﺎ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ‪.‬از دﺳﺘﻮر‬
‫ﻫﺎي ‪ ، Join‬ﺑﺮاي ارﺗﺒﺎط ﺑﻴﻦ ﭼﻨﺪﻳﻦ ﺟﺪول ﻛﻪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ارﺗﺒﺎط دارﻧﺪ ‪ ،‬درواﻗﻊ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ ﺑﺮاي آﻧﻬﺎ ﺗﻌﺮﻳﻒ‬
‫ﺷﺪه اﺳﺖ‪ ،‬ﻣﻴﺘﻮان اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫ﺗﻔﺎوﺗﻬﺎي ﺑﻴﻦ دﺳﺘﻮرات ﭘﻴﻮﻧﺪ ) ‪ ( JOIN‬در‪SQL‬‬

‫دﺳﺘﻮر ‪ INNER JOIN :‬ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ JOIN‬ﻳﺎ دﺳﺘﻮر ‪ INNER JOIN‬از ﺑﻴﻦ ﺳﻄﺮﻫﺎﻳﻲ اﻧﺘﺨﺎب‬
‫ﻣﻴﺸﻮد ﻛﻪ ﺣﺪاﻗﻞ ﻳﻚ راﺑﻄﻪ در ﻫﺮ دو ﺟﺪول وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫دﺳﺘﻮر ‪ LEFT JOIN :‬ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ LEFT JOIN‬از از ﺟﺪول ﺳﻤﺖ ﭼﭗ اﻧﺘﺨﺎب ﻣﻴﺸﻮد‪ ،‬ﺣﺘﻲ اﮔﺮ‬
‫ﻫﻴﭻ راﺑﻄﻪ اي ﺑﺎ ﺟﺪول ﺳﻤﺖ راﺳﺖ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫راﺳﺖ اﻧﺘﺨﺎب‬ ‫ﺳﻤﺖ‬ ‫از از ﺟﺪول‬ ‫ﺧﺮوﺟﻲ دﺳﺘﻮر ‪RIGHT JOIN‬‬ ‫‪RIGHT‬‬ ‫دﺳﺘﻮر ‪JOIN :‬‬
‫ﻣﻴﺸﻮد‪ ،‬ﺣﺘﻲ اﮔﺮ ﻫﻴﭻ راﺑﻄﻪ اي ﺑﺎ ﺟﺪول ﭼﭗ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪32‬‬

‫دﺳﺘﻮر ‪ FULL JOIN :‬ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ FULL JOIN‬از ﺑﻴﻦ ﺳﻄﺮﻫﺎﻳﻲ اﻧﺘﺨﺎب ﻣﻴﺸﻮد ﻛﻪ ﻳﻚ‬
‫راﺑﻄﻪ در ﻳﻜﻲ از ﺟﺪاوﻟﺒﺎﻳﺴﺘﻲ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺗﻔﺎوت ‪ Join‬و‪InnerJoin‬‬

‫ﺗﻔﺎوت ‪ Join‬و ‪ InnerJoin‬در ‪ performance‬آﻧﻬﺎ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﻧﺘﻴﺠﻪ ي اﺟﺮاي ﻫﺮ دوي آﻧﻬﺎ ﻳﻜﺴﺎن اﺳﺖ‬
‫اﻣﺎ دﺳﺘﻮر ‪ InnerJoin‬داراي ‪ Prformance‬ﺑﺎﻻﺗﺮي ﻣﻲ ﺑﺎﺷﺪ و ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ ﺗﻮﺻﻴﻪ ﻣﻲ ﺷﻮد ﻛﻪ از دﺳﺘﻮر‬
‫‪InnerJoin‬اﺳﺘﻔﺎده ﺷﻮد‪.‬‬

‫در ﻣﻘﺎﻻت زﻳﺮ ﻳﻚ ﺑﻪ ﻳﻚ اﻳﻦ ﭘﻴﻮﻧﺪ ﻫﺎ در اﺳﻜﻴﻮال ﺑﺎ ﻣﺜﺎل ﺗﻮﺿﻴﺢ داده ﺷﺪه اﻧﺪ‪:‬‬

‫ﻣﻘﺎﻟﻪ ي دﺳﺘﻮر ‪ inner join‬در‪sql‬‬ ‫‪‬‬

‫ﻣﻘﺎﻟﻪ ي دﺳﺘﻮر ‪ left join‬در‪sql‬‬ ‫‪‬‬

‫ﻣﻘﺎﻟﻪ ي دﺳﺘﻮر ‪ right join‬در‪sql‬‬ ‫‪‬‬

‫ﻣﻘﺎﻟﻪ ي دﺳﺘﻮر ‪ full join‬در‪sql‬‬ ‫‪‬‬

‫دﺳﺘﻮر ‪ INNER JOIN‬در‪sql‬‬

‫ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ INNER JOIN‬در اس ﻛﻴﻮ ال از ﺑﻴﻦ ﺳﻄﺮﻫﺎﻳﻲ اﻧﺘﺨﺎب ﻣﻴﺸﻮد ﻛﻪ ﺣﺪاﻗﻞ ﻳﻚ راﺑﻄﻪ در ﻫﺮ‬
‫دو ﺟﺪول وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺗﻔﺎوت دﺳﺘﻮر ‪ Join‬و دﺳﺘﻮر ‪ InnerJoin‬در ‪ performance‬آﻧﻬﺎ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﻧﺘﻴﺠﻪ ي اﺟﺮاي ﻫﺮ دوي آﻧﻬﺎ‬
‫ﻳﻜﺴﺎن اﺳﺖ اﻣﺎدﺳﺘﻮر ‪ InnerJoin‬داراي ‪ Prformance‬و ﻛﺎراﻳﻲ ﺑﺎﻻﺗﺮي ﻣﻲ ﺑﺎﺷﺪ و ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ ﺗﻮﺻﻴﻪ‬
‫ﻣﻲ ﺷﻮد ﻛﻪ از دﺳﺘﻮر ‪ InnerJoin‬اﺳﺘﻔﺎده ﺷﻮد‪.‬‬

‫ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ ﻛﻪ در آن ﻛﻠﻤﻪ ي ﻛﻠﻴﺪي ‪ ON‬ﻓﻴﻠﺪ راﺑﻄﻪ رو در دو ﺟﺪول ﻣﺸﺨﺺ‬
‫ﻣﻴﻜﻨﺪ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name1‬‬
‫‪INNER JOIN table_name2‬‬
‫‪ON table_name1.column_name=table_name2.column_name‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪33‬‬

‫در دﺳﺘﻮر ‪ INNER JOIN‬در اﺳﻜﻴﻮال ﺑﺎﻳﺴﺘﻲ ﺣﺪاﻗﻞ ﻳﻚ راﺑﻄﻪ در ﻫﺮ دو ﺟﺪول وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ ﺑﻌﺪ‬
‫از ﻛﻠﻤﻪ ﻛﻠﻴﺪي ‪ On‬ﻣﻲ آﻳﺪ‪.‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﻣﻬﻤﺘﺮﻳﻦ دﺳﺘﻮر ﻫﺎ در آﻣﻮزش ‪ ، sql‬دﺳﺘﻮر ‪ inner join‬ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻳﺎدﮔﻴﺮي ﻛﺎﻣﻞ دﺳﺘﻮر‬
‫‪join‬ﻣﻴﺘﻮاﻧﺪ ﺗﻔﺎوت اﺻﻠﻲ آﻣﻮزش ﺣﺮﻓﻪ اي اﺳﻜﻴﻮال ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺜﺎل ‪ :‬اﮔﺮ رﻛﻮردي )ﺧﺮوﺟﻲ( ﻛﻪ در ﺟﺪول "‪ "Persons‬وﺟﻮد دارد ﻫﻴﭻ ﺗﻄﺎﺑﻘﻲ ﺑﺎ ﺧﺮوﺟﻲ ﻫﺎي‬
‫ﺟﺪول "‪ "Orders‬ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ‪ ،‬اﻳﻦ رﻛﻮردﻫﺎ در ﺧﺮوﺟﻲ اﻳﻦ دﺳﺘﻮر ‪ sql‬ﻧﻤﺎﻳﺶ داده ﻧﻤﻴﺸﻮﻧﺪ‪.‬‬

‫‪SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo‬‬


‫‪FROM Persons‬‬
‫‪INNER JOIN Orders‬‬
‫‪ON Persons.P_Id=Orders.P_Id‬‬
‫‪ORDER BY Persons.LastName‬‬

‫دﺳﺘﻮر ‪ LEFT JOIN‬در‪sql‬‬

‫ﭼﭗ اﻧﺘﺨﺎب‬ ‫ﺳﻤﺖ‬ ‫از از ﺟﺪول‬ ‫اﺳﻜﻴﻮال‬ ‫‪ LEFT‬در‬ ‫دﺳﺘﻮر ‪JOIN‬‬ ‫ﺧﺮوﺟﻲ‬
‫ﻣﻴﺸﻮد‪ ،‬ﺣﺘﻲ اﮔﺮ ﻫﻴﭻ راﺑﻄﻪ اي ﺑﺎ ﺟﺪول ﺳﻤﺖ راﺳﺖ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر ‪ left join‬در ‪ sql‬ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name1‬‬
‫‪LEFT JOIN table_name2‬‬
‫‪ON table_name1.column_name=table_name2.column_name‬‬

‫ﻧﻜﺘﻪ ‪ :‬در ﺑﻌﻀﻲ دﻳﺘﺎﺑﻴﺲ ﻫﺎ دﺳﺘﻮر ‪ LEFT JOIN‬ﺑﺎ ﻧﺎم دﺳﺘﻮر ‪ LEFT OUTER JOIN‬اﺳﺘﻔﺎده ﻣﻴﺸﻮد‬
‫ﻛﻪ ﺗﻔﺎوﺗﻲ در اﻳﻦ زﻣﻴﻨﻪ وﺟﻮد ﻧﺪارد‪.‬‬

‫ﻣﺜﺎل ‪ :‬در اﻳﻦ ﻣﺜﺎل ﺟﺪول اﺻﻠﻲ ‪ ،‬ﺟﺪول ‪ Persons‬ﻣﻴﺒﺎﺷﺪ ﻛﻪ در ﺳﻤﺖ ﭼﭗ ‪ JOIN‬ﻗﺮار دارد و ﺧﺮوﺟﻲ ﻫﺎ‬
‫ﺑﺮ اﺳﺎس اﻳﻦ ﺟﺪول ﺗﻨﻈﻴﻢ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪34‬‬

‫‪SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo‬‬


‫‪FROM Persons‬‬
‫‪LEFT JOIN Orders‬‬
‫‪ON Persons.P_Id=Orders.P_Id‬‬
‫‪ORDER BY Persons.LastName‬‬

‫در ﺻﻮرت ﻧﺪاﺷﺘﻦ راﺑﻄﻪ ي ﺑﻌﻀﻲ اي رﻛﻮرد ﻫﺎ ﺑﺎ ﺟﺪول ﺳﻤﺖ راﺳﺖ ‪ ،‬ﻓﻴﻠﺪ ﻫﺎي آن ‪ null‬اﻧﺘﺨﺎب ﻣﻴﺸﻮﻧﺪ ﻛﻪ‬
‫ﺑﺎ ﺗﺮﻛﻴﺐ آن ﺑﺎ دﺳﺘﻮر ‪ isNull‬در اﺳﻜﻴﻮل ﻣﻴﺘﻮاﻧﻴﺪ ﺧﺮوﺟﻲ ﻫﺎي دﻟﺨﻮاه ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪left‬‬
‫‪join‬ﺑﺪﺳﺖ آورﻳﺪ‬

‫دﺳﺘﻮر ‪ RIGHT JOIN‬در‪sql‬‬

‫ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ RIGHT JOIN‬در اﺳﻜﻴﻮال از از ﺟﺪول ﺳﻤﺖ راﺳﺖ اﻧﺘﺨﺎب ﻣﻴﺸﻮد‪ ،‬ﺣﺘﻲ اﮔﺮ ﻫﻴﭻ راﺑﻄﻪ‬
‫اي ﺑﺎ ﺟﺪول ﭼﭗ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ‪.‬ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ right join‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name1‬‬
‫‪RIGHT JOIN table_name2‬‬
‫‪ON table_name1.column_name=table_name2.column_name‬‬

‫ﻧﻜﺘﻪ ‪ :‬در ﺑﻌﻀﻲ دﻳﺘﺎﺑﻴﺲ ﻫﺎ دﺳﺘﻮر ‪ RIGHT JOIN‬ﺑﺎ ﻧﺎم دﺳﺘﻮر ‪ RIGHT OUTER JOIN‬اﺳﺘﻔﺎده‬
‫ﻣﻴﺸﻮد‪.‬‬

‫ﻣﺜﺎل ‪ :‬در اﻳﻦ ﻣﺜﺎل ﺟﺪول اﺻﻠﻲ ‪ ،‬ﺟﺪول ‪ Orders‬ﻣﻴﺒﺎﺷﺪ ﻛﻪ در ﺳﻤﺖ راﺳﺖ ‪ JOIN‬ﻗﺮار دارد و ﺧﺮوﺟﻲ ﻫﺎ‬
‫ﺑﺮ اﺳﺎس اﻳﻦ ﺟﺪول ﺗﻨﻈﻴﻢ ﻣﻴﺸﻮد‪.‬‬

‫‪SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo‬‬


‫‪FROM Persons‬‬
‫‪RIGHT JOIN Orders‬‬
‫‪ON Persons.P_Id=Orders.P_Id‬‬
‫‪ORDER BY Persons.LastName‬‬

‫در ﺻﻮرت ﻧﺪاﺷﺘﻪ راﺑﻄﻪ ي ﺑﻌﻀﻲ اي رﻛﻮرد ﻫﺎ ﺑﺎ ﺟﺪول ﺳﻤﺖ ﭼﭗ ‪ ،‬ﻓﻴﻠﺪ ﻫﺎي آن ‪ null‬اﻧﺘﺨﺎب ﻣﻴﺸﻮﻧﺪ ﻛﻪ ﺑﺎ‬
‫ﺗﺮﻛﻴﺐ آن ﺑﺎ دﺳﺘﻮر ‪ isNull‬در اﺳﻜﻴﻮل ﻣﻴﺘﻮاﻧﻴﺪ ﺧﺮوﺟﻲ ﻫﺎي دﻟﺨﻮاه ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪right‬‬
‫‪join‬ﺑﺪﺳﺖ آورﻳﺪ‪.‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪35‬‬

‫دﺳﺘﻮر ‪ FULL JOIN‬در‪sql‬‬

‫ﺧﺮوﺟﻲ دﺳﺘﻮر ‪ FULL JOIN‬در ‪ sql‬از ﺑﻴﻦ ﺳﻄﺮﻫﺎﻳﻲ اﻧﺘﺨﺎب ﻣﻴﺸﻮد ﻛﻪ ﻳﻚ راﺑﻄﻪ در ﻳﻜﻲ از‬
‫ﺟﺪاول ﺑﺎﻳﺴﺘﻲ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺑﻪ ﻃﻮر ﺧﻼﺻﻪ دﺳﺘﻮر ( ‪ full join‬دﺳﺘﻮر ) ‪ full outer join‬ﺑﺼﻮرت ‪ or‬ﻛﺎر ﻣﻴﻜﻨﺪ و دﺳﺘﻮر ‪inner‬‬
‫‪join‬ﺑﺼﻮرت‪and .‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name1‬‬
‫‪FULL JOIN table_name2‬‬
‫‪ON table_name1.column_name=table_name2.column_name‬‬

‫ﻣﺜﺎل ‪ :‬در ﻣﺜﺎل زﻳﺮ ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ full join‬در اﺳﻜﻴﻮال ‪ ،‬ﻫﻤﻪ ي اﻓﺮاد ﺑﺎ ﺳﻔﺎرش ﻫﺎﻳﺸﺎن و‬
‫ﻫﻤﻪ ي ﺳﻔﺎرﺷﺎت ﺑﺎ اﻓﺮاد ﻣﺮﺑﻮط ﺑﻪ آﻧﻬﺎ را در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﻴﻢ‪.‬‬

‫‪SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo‬‬


‫‪FROM Persons‬‬
‫‪FULL JOIN Orders‬‬
‫‪ON Persons.P_Id=Orders.P_Id‬‬
‫‪ORDER BY Persons.LastName‬‬

‫دﺳﺘﻮر ‪ UNION‬در‪sql‬‬

‫از دﺳﺘﻮر ‪ Union‬ﺑﺮاي ﺗﺮﻛﻴﺐ و ادﻏﺎم دو ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﻣﺨﺘﻠﻒ از ‪ 2‬ﻳﺎ ﭼﻨﺪ ﺟﺪول و ﻧﺸﺎن دادن آﻧﻬﺎ در ﻳﻚ‬
‫ﺷﻮد ‪.‬‬ ‫ﻣﻲ‬ ‫اﺳﺘﻔﺎده‬ ‫ﻣﺸﺘﺮك‬ ‫ﺳﺘﻮن‬
‫در دﺳﺘﻮر ‪ ، union‬ﻧﻮع داده اي ﺳﺘﻮن ﻫﺎي اﻧﺘﺨﺎب ﺷﺪه ﺑﺮاي ﺗﺮﻛﻴﺐ ﺑﺎﻳﺪ ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ‪.‬‬

‫دﺳﺘﻮر ‪ Union‬در ﻫﻨﮕﺎم ﺗﺮﻛﻴﺐ ﻓﻴﻠﺪ ﻫﺎ ‪ ،‬در ﺻﻮرت ﺑﺮﺧﻮرد ﺑﺎ ﻣﻘﺎدﻳﺮ ﺗﻜﺮاري آﻧﻬﺎ را ﺣﺬف ﻛﺮده و از ﻫﺮ ﻣﻘﺪار‬
‫ﻳﻚ ﻧﻤﻮﻧﻪ را ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﺪ ‪ .‬ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ union‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT column_name(s) FROM table_name1‬‬


‫‪UNION‬‬
‫‪SELECT column_name(s) FROM table_name2‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪36‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪SELECT E_Name FROM Employees_Norway‬‬


‫‪UNION‬‬
‫‪SELECT E_Name FROM Employees_USA‬‬

‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺗﻤﺎم ﻣﻘﺎدﻳﺮ ‪ ،‬ﺣﺘﻲ ﻣﻘﺎدﻳﺮ ﺗﻜﺮاري ﺑﺎﻳﺪ از دﺳﺘﻮر ‪ Union ALL‬اﺳﺘﻔﺎده ﻛﺮد‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT column_name(s) FROM table_name1‬‬


‫‪UNION ALL‬‬
‫‪SELECT column_name(s) FROM table_name2‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪SELECT E_Name FROM Employees_Norway‬‬


‫‪UNION ALL‬‬
‫‪SELECT E_Name FROM Employees_USA‬‬
‫‪Result‬‬

‫در آﻣﻮزش ‪ ، sql‬دﺳﺘﻮر ‪ union‬و دﺳﺘﻮر ‪ union all‬ﻛﺎرﺑﺮد ﻫﺎي وﻳﮋه و ﺧﺎﺻﻲ دارﻧﺪ‪.‬‬

‫دﺳﺘﻮر ‪ SELECT INTO‬در‪sql‬‬

‫از دﺳﺘﻮر ‪ Select Into‬در ﻣﻮارد زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪:‬‬

‫اﻳﺠﺎد ﻳﻚ ( ‪ Back Up‬ﻧﺴﺨﻪ ﭘﺸﺘﻴﺒﺎن ( از ﻳﻚ ﺟﺪول‪.‬‬ ‫‪.1‬‬


‫اﻳﺠﺎد ﻳﻚ آرﺷﻴﻮ از رﻛﻮردﻫﺎي ﻳﻚ ﺟﺪول‪.‬‬ ‫‪.2‬‬
‫ﻗﺮار دادن ﺑﺮﺧﻲ از رﻛﻮردﻫﺎ ﻳﺎ ﻓﻴﻠﺪﻫﺎي ﻣﻮرد ﻧﻈﺮ از ﻳﻚ ﺟﺪول در ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ‪.‬‬ ‫‪.3‬‬
‫اﻳﺠﺎد ﻳﻚ ﻧﺴﺨﻪ ﭘﺸﺘﻴﺒﺎن از ﻛﻞ ﻳﻚ ﭘﺎﻳﮕﺎه داده در ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺟﺪﻳﺪ‪.‬‬ ‫‪.4‬‬

‫ﺗﻤﺎﻣﻲ ﻣﺜﺎﻟﻬﺎي زﻳﺮ ﻧﺤﻮه اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ select into‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪37‬‬

‫در اﻳﻦ ﻣﺜﺎل )ﺳﺎﺧﺘﺎر( ﻣﺎ ﻣﻲ ﻣﻴﺨﻮاﻫﻴﻢ ﺑﺮﺧﻲ از رﻛﻮردﻫﺎ ﻳﺎ ﻓﻴﻠﺪﻫﺎي ﻣﻮرد ﻧﻈﺮ از ﻳﻚ ﺟﺪول در ﻳﻚ‬ ‫‪‬‬

‫ﺟﺪول ﺟﺪﻳﺪ ﻗﺮار دﻫﻴﻢ‪:‬‬

‫‪We can select all columns into the new table:‬‬


‫* ‪SELECT‬‬
‫]‪INTO new_table_name [IN externaldatabase‬‬
‫‪FROM old_tablename‬‬

‫در اﻳﻦ ﻣﺜﺎل )ﺳﺎﺧﺘﺎر( ﻣﺎ ﺗﻨﻬﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ ﺳﺘﻮن ﻫﺎ را ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ اﻧﺘﺨﺎب ﻛﻨﻴﻢ‪:‬‬ ‫‪‬‬

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

‫در اﻳﻦ ﻣﺜﺎل ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ ﻳﻚ ( ‪ Back Up‬ﻧﺴﺨﻪ ﭘﺸﺘﻴﺒﺎن ( از ﻳﻚ ﺟﺪول ‪ Persons‬اﻳﺠﺎد ﻛﻨﻴﻢ‪:‬‬ ‫‪‬‬

‫* ‪SELECT‬‬
‫‪INTO Persons_Backup‬‬
‫‪FROM Persons‬‬

‫در اﻳﻦ ﻣﺜﺎل ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ ﻳﻚ ﻛﭙﻲ از ﺟﺪول ‪ Persons‬را ﺑﻪ ﻳﻚ ﭘﺎﻳﮕﺎه داده دﻳﮕﺮ‬ ‫‪‬‬

‫)‪(Backup.mdb‬اﺿﺎﻓﻪ ﻛﻨﻴﻢ‪:‬‬

‫* ‪SELECT‬‬
‫'‪INTO Persons_Backup IN 'Backup.mdb‬‬
‫‪FROM Persons‬‬

‫در اﻳﻦ ﺳﺎﺧﺘﺎر ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ ﻳﻚ ﺗﻌﺪادي از ﻓﻴﻠﺪﻫﺎ را ﺑﻪ ﺟﺪول ﺟﺪﻳﺪ ﻛﭙﻲ ﻛﻨﻴﻢ‪:‬‬ ‫‪‬‬

‫‪SELECT LastName,FirstName‬‬
‫‪INTO Persons_Backup‬‬
‫‪FROM Persons‬‬

‫در اﻳﻦ ﻣﺜﺎل ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ ﺑﺎ داﺷﺘﻦ ﻳﻚ دﺳﺘﻮر ﺷﺮﻃﻲ ﻓﻴﻠﺪﻫﺎﻳﻲ را از ﺟﺪول ‪ Persons‬ﺑﻪ‬ ‫‪‬‬

‫ﺟﺪول ‪ Persons_Backup‬اﺿﺎﻓﻪ ﻛﻨﻴﻢ‪:‬‬


‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪38‬‬

‫‪SELECT LastName,Firstname‬‬
‫‪INTO Persons_Backup‬‬
‫‪FROM Persons‬‬
‫'‪WHERE City='Sandnes‬‬

‫اﻧﺘﺨﺎب داده از ﺑﻴﺶ از ﻳﻚ ﺟﺪول ﻫﻢ در دﺳﺘﻮر ‪ select into‬اﻣﻜﺎن ﭘﺬﻳﺮ اﺳﺖ ‪ .‬در ﻣﺜﺎل زﻳﺮ ﺟﺪول‬ ‫‪‬‬

‫"‪"Persons_Order_Backup‬ﺷﺎﻣﻞ داده ﻫﺎ از دو ﺟﺪول "‪ "Persons‬و "‪ "Orders‬ﻣﻴﺒﺎﺷﺪ‪.‬‬

‫‪SELECT Persons.LastName,Orders.OrderNo‬‬
‫‪INTO Persons_Order_Backup‬‬
‫‪FROM Persons‬‬
‫‪INNER JOIN Orders‬‬
‫‪ON Persons.P_Id=Orders.P_Id‬‬

‫ذﻛﺮ ﻧﺎم ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺟﺪﻳﺪ در دﺳﺘﻮر ‪ Select Into‬اﺧﺘﻴﺎري اﺳﺖ ‪ .‬ﭼﻨﺎﻧﭽﻪ ﻧﺎﻣﻲ در اﻳﻦ ﻗﺴﻤﺖ ذﻛﺮ‬
‫ﻧﺸﻮد ‪ ،‬ﺑﺮﻧﺎﻣﻪ ﻧﺴﺨﻪ ﭘﺸﺘﻴﺒﺎن را در ﻫﻤﺎن ﭘﺎﻳﮕﺎه داده ﻣﻮﺟﻮد اﻳﺠﺎد ﻣﻲ ﻛﻨﺪ و ﭼﻨﺎﻧﭽﻪ ﻧﺎﻣﻲ ذﻛﺮ ﺷﻮد ‪ ،‬ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﺴﺨﻪ ﭘﺸﺘﻴﺒﺎن را در ﭘﺎﻳﮕﺎه داده ذﻛﺮ ﺷﺪه اﻳﺠﺎد ﻣﻲ ﻛﻨﺪ‪.‬‬

‫ﻣﻘﺪار ‪ Null‬در اس ﻛﻴﻮ ال‬

‫در ﺣﺎﻟﺖ ﻛﻠﻲ ﻣﻘﺎدﻳﺮ ﺳﺘﻮن ﻫﺎ ﻣﻴﺘﻮاﻧﻨﺪ ﻣﻘﺪار ‪ null‬داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ .‬زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺳﺘﻮن اﺧﺘﻴﺎري ﺑﺎﺷﺪ ‪ ،‬ﺷﻤﺎ‬
‫ﻣﻴﺘﻮاﻧﻴﺪﻣﻘﺪار ‪ Null‬در آن ذﺧﻴﺮه ﻛﻨﻴﺪ‪ .‬اﺧﺘﻴﺎري ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﻣﻴﺘﻮاﻧﻴﺪ ﺧﺎﻟﻲ رﻫﺎﻳﺶ ﻛﻨﻴﺪ ‪.‬‬

‫ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در ﺻﻮرت ﻣﻘﺪار ﻧﺪادن ﺑﻪ ﻓﻴﻠﺪي در ﻳﻚ رﻛﻮرد ‪ ,‬ﻣﻘﺪار ‪ Null‬اﺳﺖ‪.‬‬

‫ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ is null‬در ‪ sql‬ﻣﻴﺘﻮاﻧﻴﻢ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ ﻣﻘﺎدﻳﺮ ﺗﻬﻲ دارﻧﺪ را ﺑﺎ در دﺳﺘﻮر ‪ Select‬اﻧﺘﺨﺎب‬
‫ﻛﻨﻴﻢ‪.‬‬

‫ﻣﻘﺪار ‪ null‬از ﺟﻤﻠﻪ ﻣﻘﺎدﻳﺮي اﺳﺖ ﻛﻪ زﻳﺎد ﺑﺎﻫﺎش در آﻣﻮزش ‪ sql‬ﺳﺮ و ﻛﺎر ﺧﻮاﻫﻴﻢ داﺷﺖ‪.‬‬

‫ﻧﻜﺘﻪ ي ﺑﺴﻴﺎري ﻣﻬﻢ در ﻣﻮرد ‪ null‬ﻳﺎ ﺗﻬﻲ اﻳﻨﺴﺖ ﻛﻪ اﻳﻦ ﻣﻘﺪار ﺑﺎ ﻣﻘﺪار رﺷﺘﻪ اي ‪ space‬ﻳﺎ ' ' ﺗﻔﺎوت‬
‫ﻛﺎﻣﻞ دارد‪ .‬ﻫﻤﭽﻨﻴﻦ ‪ null‬را ﻧﺒﺎﻳﺪ ﺑﺎ ﻣﻘﺪار رﺷﺘﻪ اي آن ﻳﻌﻨﻲ '‪ 'null‬اﺷﺘﺒﺎه ﺑﮕﻴﺮﻳﻢ‪.‬‬

‫دﺳﺘﻮر ‪ ISNULL‬در‪sql‬‬
‫دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ ‪SQL‬‬ ‫‪39‬‬

‫از دﺳﺘﻮر ‪ ISNULL‬در اﺳﻜﻴﻮال زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﺷﻤﺎ ﻣﻴﺨﻮاﻫﻴﺪ ﺗﻤﺎم ﻓﻴﻠﺪﻫﺎي ‪ null‬را در ﺧﺮوﺟﻲ‬
‫داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪.‬‬

‫ﻣﻘﺪار ‪ null‬در اس ﻛﻴﻮ ال ﺑﺎ ' ' ‪ space‬ﺗﻔﺎوت دارد‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ is null‬ﺑﻪ ﻫﻤﺮاه ﻣﺜﺎل آن ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ ﻛﻪ در اﻳﻦ ﻣﺜﺎل ﺗﻤﺎم رﻛﻮردﻫﺎﻳﻲ ﻛﻪ ﺣﺎوي ﻓﻴﻠﺪ‬
‫آدرس ‪ null‬ﻫﺴﺘﻨﺪ اﻧﺘﺨﺎب ﻣﻲ ﺷﻮﻧﺪ‪.‬‬

‫‪SELECT LastName,FirstName,Address FROM Persons‬‬


‫‪WHERE Address IS NULL‬‬

‫ﺑﺮ ﻋﻜﺲ دﺳﺘﻮر ‪ is null‬در ‪ ، sql‬دﺳﺘﻮر ‪ is not Null‬ﻫﺴﺖ ﻛﻪ ﻣﻘﺎدﻳﺮي را ﺑﺮﻣﻴﮕﺮداﻧﺪ ﻛﻪ ‪Null‬‬
‫ﻧﺒﺎﺷﺪ ﻛﻪ ﺑﻴﺸﺘﺮ از اﻳﻦ ﺷﻜﻞ از اﻳﻦ دﺳﺘﻮر اﺳﺘﻔﺎده ﻣﺸﻮد‪.‬‬

‫ﻣﺜﺎل ‪ :‬در ﻣﺜﺎل زﻳﺮ رﻛﻮردﻫﺎﻳﻲ ﻛﻪ آدرس آﻧﻬﺎ ﺗﻬﻲ ) ‪ ( null‬ﻧﻴﺴﺘﻨﺪ ‪ ،‬اﻧﺘﺨﺎب و در ﺧﺮوﺟﻲ اﻳﻦ دﺳﺘﻮر در‬
‫اﺳﻜﻴﻮال ﻣﻲ روﻧﺪ‪.‬‬

‫‪SELECT LastName,FirstName,Address FROM Persons‬‬


‫‪WHERE Address IS NOT NULL‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ‬
‫)‪(DDL‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪41‬‬

‫دﺳﺘﻮر ‪ CREATE DATABASE‬در‪sql‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺟﺪﻳﺪ از دﺳﺘﻮر ‪ CREATE DATABASE‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ create database‬در اﺳﻜﻴﻮال ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪CREATE DATABASE database_name‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ دﻳﺘﺎﺑﻴﺲ ﺑﺎ ﻧﺎم ‪ mySite_db‬ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪CREATE DATABASE mySite_db‬‬

‫دﺳﺘﻮر ‪ Create Table‬در‪sql‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ در ﭘﺎﻳﮕﺎه داده ‪ ، sql‬از دﺳﺘﻮر ‪ Create Table‬اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ ‪.‬‬
‫ﺑﺮاي اﻳﺠﺎد ﺟﺪول در اﺳﻜﻴﻮال ﺑﺎﻳﺴﺘﻲ ﻧﻜﺎت زﻳﺮ را در ﻧﻈﺮ ﮔﺮﻓﺖ‪:‬‬

‫‪ .1‬ﺗﻌﻴﻴﻦ ﻳﻚ ﻧﺎم ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﺮاي ﺟﺪول‪.‬‬


‫‪ .2‬ﺗﻌﻴﻴﻦ ﺗﻌﺪاد ﺳﺘﻮن ﻫﺎي ) ﻓﻴﻠﺪ ﻫﺎ ( ﺟﺪول و ﻧﺎم آﻧﻬﺎ ﻛﻪ ﻧﺒﺎﻳﺪ ﺗﻜﺮاري ﺑﺎﺷﺪ‪.‬‬
‫‪ .3‬ﺗﻌﻴﻴﻦ ﻧﻮع داده اي ﺳﺘﻮن ﻫﺎي ﺟﺪول و اﻧﺪازه آﻧﻬﺎ در ﺻﻮرت ﻧﻴﺎز‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ create table‬در ‪ sql‬در ﺳﺎده ﺗﺮﻳﻦ ﺣﺎﻟﺖ ‪ ،‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪CREATE TABLE table_name‬‬


‫(‬
‫‪column_name1 data_type,‬‬
‫‪column_name2 data_type,‬‬
‫‪column_name3 data_type,‬‬
‫‪....).‬‬

‫ﺑﺮاي ﻣﺜﺎل ﺑﺮاي اﻳﺠﺎد ﺟﺪول ‪ Persons‬ﺑﺎ ﻓﻴﻠﺪﻫﺎي زﻳﺮ ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int,‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪42‬‬

‫‪LastName varchar(255),‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫دﺳﺘﻮر ‪ Drop‬در اﺳﻜﻴﻮال‬

‫ﺗﻤﺎﻣﻲ ﺟﺪول ﻫﺎ ‪ ،‬اﻧﺪﻳﺲ ﻫﺎ ‪ ،‬و ﺣﺘﻲ دﻳﺘﺎﺑﻴﺲ ﻫﺎ ﻣﻴﺘﻮاﻧﻨﺪ ﺑﺎ دﺳﺘﻮر ‪ Drop‬در ‪ sql‬ﺣﺬف ﺷﻮﻧﺪ‪ .‬ﺷﻴﻮه ﻫﺎي‬
‫اﺳﺘﻔﺎده ازدﺳﺘﻮر ‪ drop‬در ‪ sql‬ﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ‪:‬‬

‫دﺳﺘﻮر‪Drop Index‬‬

‫از دﺳﺘﻮر ‪ DROP INDEX‬ﺑﺮاي ﺣﺬف ﻳﻚ اﻧﺪﻳﺲ ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫‪DROP INDEX table_name.index_name‬‬

‫دﺳﺘﻮر‪Drop Table‬‬

‫از دﺳﺘﻮر ‪ DROP TABLE‬ﺑﺮاي ﺣﺬف ﻳﻚ ﺟﺪول در ﭘﺎﻳﮕﺎه داده اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫‪DROP TABLE table_name‬‬

‫دﺳﺘﻮر‪Drop Database‬‬

‫از دﺳﺘﻮر ‪ DROP DATABASE‬ﺑﺮاي ﺣﺬف ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺑﻪ ﺻﻮرت ﻛﺎﻣﻞ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‬

‫‪DROP DATABASE database_name‬‬

‫دﺳﺘﻮر‪TRUNCATE‬‬

‫ﺑﺮاي ﺣﺬف ﻛﻠﻴﻪ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﻳﻚ ﺟﺪول ﺑﺪون ﺣﺬف ﺳﺘﻮن ﻫﺎي آن از دﺳﺘﻮر ‪ TRUNCATE‬اﺳﺘﻔﺎده‬
‫ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪TRUNCATE TABLE table_name‬‬


‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪43‬‬

‫اﻳﻦ دﺳﺘﻮر ﺑﺎﻋﺚ ﺧﺎﻟﻲ ﺷﺪن ﺟﺪول از اﻃﻼﻋﺎت ﻣﻲ ﺷﻮد ‪ ،‬ﺑﺪون اﻳﻨﻜﻪ ﺧﻮد آن و ﺳﺎﺧﺘﺎرش ﺗﻐﻴﻴﺮي ﻛﻨﺪ ‪.‬‬

‫ﻣﺜﺎل‪:‬‬

‫;‪Truncate Table Mydb‬‬

‫دﺳﺘﻮر ‪ Create Index‬در‪sql‬‬

‫از دﺳﺘﻮر ‪ Create Index‬در اﺳﻜﻴﻮال ﺑﺮاي اﻳﺠﺎد اﻧﺪﻳﺲ در ﺳﺘﻮن ﻫﺎي ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫در ﻳﻚ ﺟﺪول ﻣﻲ ﺗﻮان ﺑﺮاي ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﺟﺪول اﻧﺪﻳﺲ اﻳﺠﺎد ﻛﺮد ‪ ،‬ﻛﻪ اﻳﻦ اﻧﺪﻳﺲ ﻫﺎ ﺑﺎﻋﺚ ﺑﺎﻻ رﻓﺘﻦ‬
‫ﺳﺮﻋﺖ ﺟﺴﺘﺠﻮ در رﻛﻮردﻫﺎي ﺟﺪول ﻣﻲ ﺷﻮد ‪.‬‬

‫اﻧﺪﻳﺲ ﻳﻚ ﺷﻤﺎره اﺳﺖ ﻛﻪ ﺑﻪ ﻫﺮ ﺳﻄﺮ ﺟﺪول اﺧﺘﺼﺎص داده ﻣﻲ ﺷﻮد و ﻣﻌﻤﻮﻻ از ﺻﻔﺮ ﺷﺮوع ﻣﻲ ﺷﻮد ‪ .‬اﻧﺪﻳﺲ‬
‫ﻫﺎ از دﻳﺪ ﻛﺎرﺑﺮ ﻣﺨﻔﻲ ﻫﺴﺘﻨﺪ و ﻫﺮ اﻧﺪﻳﺲ ﻳﻚ ﻧﺎم ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد دارد‪.‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ﺑﺎ داده ﻫﺎي ﺗﻜﺮاري ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪CREATE INDEX index_name‬‬


‫)‪ON table_name (column_name‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪CREATE INDEX PIndex‬‬


‫)‪ON Persons (LastName‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ﻳﺎ ‪ ، index‬ﺑﺎ داده ﻫﺎي ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد )‪ (unique‬ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪CREATE UNIQUE INDEX index_name‬‬


‫)‪ON table_name (column_name‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ) ‪ ( index‬ﺑﺮاي ﺑﻴﺶ از ﻳﻚ ﻓﻴﻠﺪ ‪ ،‬ﺑﺎﻳﺪ ﻧﺎم ﻓﻴﻠﺪ ﻫﺎي ﻣﻮرد ﻧﻈﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ در ﭘﺮاﻧﺘﺰ‬
‫ﺑﻌﺪ از ﻧﺎم ﺟﺪول وارد ﻛﺮد‪.‬‬

‫‪CREATE INDEX PIndex‬‬


‫)‪ON Persons (LastName, FirstName‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪44‬‬

‫دﺳﺘﻮر ‪ Alter Table‬در‪sql‬‬

‫از دﺳﺘﻮر ‪ Alter Table‬ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﻳﺎ ﺣﺬف ﻛﺎﻣﻞ ﻳﻚ ﺳﺘﻮن از ﻳﻚ ﺟﺪول و ﻳﺎ ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻓﻴﻠﺪ‬
‫ﻣﻮﺟﻮد در ﭘﺎﻳﮕﺎه داده ‪ sql‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪.‬‬

‫اﺿﺎﻓﻪ ﻛﺮدن ﻓﻴﻠﺪ ﺑﻪ ﺟﺪول در اﺳﻜﻴﻮال‬

‫ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﻳﻚ ﺳﺘﻮن ) ﻓﻴﻠﺪ ( ﺟﺪﻳﺪ ﺑﻪ ﻳﻚ ﺟﺪول ﻣﻮﺟﻮد در اﺳﻜﻴﻮال از دﺳﺘﻮر ‪ALTER‬‬
‫‪TABLE‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪ADD column_name datatype‬‬

‫ﺣﺬف ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول در‪sql‬‬

‫ﺑﺮاي ﺣﺬف ﻳﻚ ﺳﺘﻮن از ﻳﻚ ﺟﺪول ﻣﻮﺟﻮد ﺑﻪ روش زﻳﺮ ﻋﻤﻞ ﻣﻲ ﺷﻮد‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪DROP COLUMN column_name‬‬

‫ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول در‪sql‬‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻳﻚ ﻓﻴﻠﺪ از ﺟﺪول در اﺳﻜﻴﻮال از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪ALTER COLUMN column_name datatype‬‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ دﻳﺪﻳﺪ ‪ ،‬دﺳﺘﻮر ‪ alter table‬ﻳﻜﻲ از ﻣﻬﻤﺘﺮﻳﻦ دﺳﺘﻮرات در ‪ sql‬اﺳﺖ ﻛﻪ ﺑﺎ ‪ 3‬ﭘﺎراﻣﺘﺮ و ﻛﻠﻤﻪ ي‬
‫ﻛﻠﻴﺪي زﻳﺮ ‪ ،‬ﺗﻐﻴﻴﺮات ﺟﺪول را ﺑﺎ اﺳﺘﻔﺎده از ﻛﺪ در ‪ sql‬راﺣﺖ ﻣﻴﻜﻨﻨﺪ‪:‬‬

‫‪ADD‬‬ ‫‪‬‬
‫‪DROP COLUMN‬‬ ‫‪‬‬
‫‪DROP COLUMN‬‬ ‫‪‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪45‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﺎم ﻫﺎي ﻓﻴﻠﺪﻫﺎي ﺟﺪول در اﺳﻜﻴﻮال ﺑﺎﻳﺪ از ‪ sp‬ﻫﺎي اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻛﺮد ‪ .‬در ﻣﻘﺎﻟﻪ‬
‫ي زﻳﺮ ‪ ،‬ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪﻫﺎ ﻫﻤﺮاه ﺑﺎ ﻣﺜﺎل ﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ‪:‬‬

‫ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪ در ﻳﻚ ﺟﺪول ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر‪sql‬‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪ در ﺟﺪول از ﺗﻐﻴﻴﺮ ﻛﺪ ﺑﺎﻳﺪ ﺑﻪ روش زﻳﺮ و ﺑﺎ ﻛﻤﻚ ‪ stored procedure‬ﻫﺎي ﺧﻮد اﺳﻜﻴﻮال‬
‫‪ ،‬ﻋﻤﻞ ﻛﺮد‪:‬‬

‫'‪sp_RENAME 'table_name.old_name' , 'new_name', 'COLUMN‬‬

‫ﻣﺜﺎل از ﺗﻐﻴﻴﺮ ﻧﺎم ﺳﺘﻮن و ﻓﻴﻠﺪ ‪ TerritoryID‬ﺑﻪ ‪ TerrID‬از ﺟﺪول ‪ Sales‬از ﭘﺎﻳﮕﺎه داده ي‪Db_name :‬‬

‫;‪USE Db_name‬‬
‫‪GO‬‬
‫;'‪EXEC sp_rename 'Sales.TerritoryID', 'TerrID', 'COLUMN‬‬
‫‪GO‬‬

‫اﻳﺠﺎد ﻣﺤﺪودﻳﺖ ﺑﺮاي ﻓﻴﻠﺪ ﻫﺎ در اﺳﻜﻴﻮال)‪(Constraints‬‬

‫‪Constraint‬ﻫﺎ در ‪ sql‬ﻳﺎ ﻫﻤﺎن ﻣﺤﺪودﻳﺖ ﻫﺎ در اس ﻛﻴﻮ ال ‪ ،‬ﺑﺮاي ﻣﺤﺪود ﻛﺮدن ﻧﻮع داده ﻫﺎﻳﻲ ﻛﻪ ﻣﻴﺘﻮاﻧﺪ‬
‫در ﺟﺪول ﺗﻌﺮﻳﻒ ﺷﻮد ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻴﮕﻴﺮد‪.‬‬

‫اﻳﻦ ﻣﺤﺪودﻳﺖ ﻫﺎ را زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ اﻳﺠﺎد ﻣﻴﻜﻨﻴﻢ ﻳﺎ زﻣﺎﻧﻲ ﻛﻪ ﻧﻮع داده اي ﺟﺪول را ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﻴﻢ‬
‫ﺑﺎﻳﺴﺘﻲ در ﻧﻈﺮ داﺷﺘﻪ ﺑﺎﺷﻴﻢ‪.‬‬

‫‪Constraint‬ﻫﺎي ‪ sql‬ﺷﺎﻣﻞ ﻣﻮارد زﻳﺮ ﻣﻴﺸﻮﻧﺪ‪:‬‬

‫‪NOT NULL‬‬ ‫‪‬‬


‫‪UNIQUE‬‬ ‫‪‬‬
‫‪PRIMARY KEY‬‬ ‫‪‬‬
‫‪FOREIGN KEY‬‬ ‫‪‬‬
‫‪CHECK‬‬ ‫‪‬‬
‫‪DEFAULT‬‬ ‫‪‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪46‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Primary Key , SQL PRIMARY KEY Constraint‬ﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ در اس‬
‫ﻛﻴﻮ ال‬

‫از ﻣﺤﺪودﻳﺖ ‪ Primary Key‬زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ ﻓﻴﻠﺪ ﻛﻠﻴﺪ اﺻﻠﻲ در ‪ ، sql‬ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ‪.‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Primary Key‬ﻳﻜﻲ از ﻣﻬﻤﺘﺮﻳﻦ ﻣﺤﺪودﻳﺖﻫﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻓﻴﻠﺪ ﻛﻠﻴﺪ‪ ،‬ﻣﻘﺪار ﺗﻜﺮاري ﻗﺒﻮل ﻧﻤﻲﻛﻨﺪ و‬
‫ﺑﻴﺸﺘﺮ ﺑﺮاي ﺗﻔﻜﻴﻚ و ﺟﺴﺘﺠﻮي رﻛﻮردﻫﺎ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬

‫ﻓﻴﻠﺪ ﻛﻠﻴﺪ اﺻﻠﻲ در اﺳﻜﻴﻮال ﻫﻴﭻ وﻗﺖ ‪ Null‬ﻧﻤﻲﭘﺬﻳﺮد‪ .‬ﭘﺲ ﺳﺘﻮن ‪Allow Nulls‬‬ ‫‪‬‬

‫ﺑﺮاي اﻳﻦ ﻓﻴﻠﺪ ﻧﺒﺎﻳﺪ ﭼﻚ ﺧﻮرده ﺑﺎﺷﺪ‪.‬‬


‫ﻫﺮ ﺟﺪول ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﻛﻠﻴﺪ اوﻟﻴﻪ )‪ (Primary Key‬داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫اﻋﻤﺎل ﻣﺤﺪودﻳﺖ ‪ PRIMARY KEY‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ ‪ Primary Key‬در دﺳﺘﻮر ‪ create table‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL PRIMARY KEY,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ ‪ Primary Key‬روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪47‬‬

‫‪City varchar(255),‬‬
‫)‪CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName‬‬
‫)‬

‫ﻣﺤﺪودﻳﺖ ‪ PRIMARY KEY‬ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ ‪ Primary Key‬روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫)‪ADD PRIMARY KEY (P_Id‬‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ ‪ Primary Key‬روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬

‫‪ALTER TABLE Persons‬‬


‫)‪ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻳﻚ‪PRIMARY KEY‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ ‪ Primary Key‬ﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ ‪ ،‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ ﭘﻴﺮوي ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫‪DROP CONSTRAINT pk_PersonID‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Foreign Key , SQL FOREIGN KEY Constraint‬ﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در‬
‫اس ﻛﻴﻮال‬

‫ﻳﻚ ‪ FOREIGN KEY‬ﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در اﺳﻜﻴﻮال ‪ ،‬در ﻳﻚ ﺟﺪول ﺑﻪ ﻳﻚ ‪ PRIMARY KEY‬در‬
‫ﺟﺪوﻟﻲ دﻳﮕﺮ اﺷﺎره ﻣﻲ ﻛﻨﺪ‪.‬‬

‫ﺑﺮاي ارﺗﺒﺎط ﺑﻴﻦ ﺟﺪاول از ﻣﺤﺪودﻳﺖ ‪ Foreign Key‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد و در اﺻﻞ‬ ‫‪‬‬

‫‪Relational Integrity‬را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪.‬‬


‫ﺑﻪ ﻋﺒﺎرت ﺳﺎده ﺗﺮ ‪ ،‬ﻛﻠﻴﺪ ﺧﺎرﺟﻲ ﻫﻤﺎن ﻣﻘﺪار ﻛﻠﻴﺪ اﺻﻠﻲ از ﺟﺪول دﻳﮕﺮ اﺳﺖ‪.‬‬ ‫‪‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪48‬‬

‫ﻣﻘﺪار ﻳﻚ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ ﻣﻴﺘﻮاﻧﺪ ﺗﻜﺮاري ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬

‫ﻓﻴﻠﺪﻫﺎي ﻛﻠﻴﺪ ﺧﺎرﺟﻲ ‪ ،‬ﺳﻪ ﻧﻮع ﻣﺤﺪودﻳﺖ را اﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ‪:‬‬

‫‪ .1‬اﺟﺎزه ﺣﺬف رﻛﻮردي از ﺟﺪول ﭘﺪر ﻧﺪارﻳﻢ ﻛﻪ ﻓﺮزﻧﺪي داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬


‫‪ .2‬اﺟﺎزه ‪ insert‬رﻛﻮرد در ﺟﺪول ﻓﺮزﻧﺪ ﺑﺎ ﻛﺪ ﭘﺪري ﻛﻪ در ﺟﺪول ﭘﺪر ﻣﻮﺟﻮد ﻧﻴﺴﺖ را ﻧﺪارﻳﻢ‪.‬‬
‫‪ .3‬ﻣﻘﺪار ﻛﻠﻴﺪ ﭘﺪري را ﻛﻪ داراي ﻓﺮزﻧﺪ ﻫﺴﺖ را ﻧﻤﻲﺗﻮاﻧﻴﻢ ﺗﻐﻴﻴﺮ دﻫﻴﻢ‪.‬‬

‫ﻫﻤﭽﻨﻴﻦ ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬از وارد ﻛﺮدن داده ﻫﺎي ﻧﺎﻣﻌﺘﺒﺮ در ﺟﺪول ﺟﻠﻮﮔﻴﺮي ﻣﻴﻜﻨﺪ‪.‬‬
‫)در ﻓﻴﻠﺪ )‪ ، foreign key‬دﻟﻴﻞ آن ﻫﻢ‪ ،‬اﻳﻦ اﺳﺖ ﻛﻪ ﺑﺎ ﻣﻘﺎدﻳﺮ ﺟﺪول دﻳﮕﺮ ﻛﻪ ﺑﻪ آن اﺷﺎره ﻣﻲ ﻛﻨﺪ ﺗﻄﺎﺑﻖ‬
‫ﻧﺪارد‪.‬‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬در دﺳﺘﻮر ‪ ، create table‬روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر‬
‫‪SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Orders‬‬


‫(‬
‫‪O_Id int NOT NULL PRIMARY KEY,‬‬
‫‪OrderNo int NOT NULL,‬‬
‫)‪P_Id int FOREIGN KEY REFERENCES Persons(P_Id‬‬
‫)‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪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‬‬
‫)‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪49‬‬

‫ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Orders‬‬


‫)‪ADD FOREIGN KEY (P_Id‬‬
‫)‪REFERENCES Persons(P_Id‬‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ ‪ FOREIGN KEY‬روي ﭼﻨﺪ ﺳﺘﻮن‪ ،‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Orders‬‬


‫‪ADD CONSTRAINT fk_PerOrders‬‬
‫)‪FOREIGN KEY (P_Id‬‬
‫)‪REFERENCES Persons(P_Id‬‬

‫از ﺑﻴﻦ ﺑﺮدن‪FOREIGN KEY‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ ‪ ، FOREIGN KEY‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Orders‬‬


‫‪DROP CONSTRAINT fk_PerOrders‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Check , SQL CHECK Constraint‬ﻳﺎ ﻣﺤﺪودﻳﺖ ﻫﺎي ﺧﺎص در‪sql‬‬

‫از ﻣﺤﺪودﻳﺖ ‪ Check‬ﻳﺎ ﻣﺤﺪودﻳﺖ ﺧﺎص در اس ﻛﻴﻮ ال زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺑﺨﻮاﻫﻴﻢ ﺑﺮاي ﻳﻚ ﻓﻴﻠﺪ‪ ،‬ﻳﻚ‬
‫ﺳﺮي ﻣﺤﺪودﻳﺖ ﺧﺎص روي ﻓﻴﻠﺪ ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ‪.‬‬

‫ﺑﺮاي ﻣﺜﺎل ‪ :‬ﻣﻘﺎدﻳﺮ داﺧﻞ ﻓﻴﻠﺪ ﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎ ﺑﺰرﮔﺘﺮ از ‪ 10‬ﺑﺎﺷﺪ در ﻏﻴﺮ اﻳﻨﺼﻮرت در ﻫﻨﮕﺎم ورود اﻃﻼﻋﺎت‪ ،‬ﻛﺎرﺑﺮ‬
‫ﺑﺎ ﺧﻄﺎ ﻣﻮاﺟﻪ ﮔﺮدد‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻣﺤﺪودﻳﺖ ‪ Check‬را ﻣﻴﺘﻮان ﺑﺮاي ﺳﺘﻮن و ﺟﺪول ﺗﻌﺮﻳﻒ ﻛﺮد‪.‬‬


DDL ‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ‬ 50

‫ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺟﺪول ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮد‬CHECK ‫ﻣﺤﺪودﻳﺖ‬

‫ زﻳﺮ اﺳﺘﻔﺎده‬SQL ‫ روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر‬، create table ‫ در دﺳﺘﻮر‬Check ‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ‬
:‫ﻣﻲ ﻛﻨﻴﻢ‬

CREATE TABLE Persons


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

: ‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر‬Check ‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ‬

CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,


FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)

‫ ﭘﺲ از ﺳﺎﺧﺘﻪ ﺷﺪن ﺟﺪول‬CHECK ‫ﻣﺤﺪودﻳﺖ‬

:‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر‬Check ‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ‬

ALTER TABLE Persons


ADD CHECK (P_Id>0)

:‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر‬Check ‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪51‬‬

‫‪ALTER TABLE Persons‬‬


‫)'‪ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes‬‬

‫از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ‪CHECK‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ ‪ Check‬ﻳﺎ ﻣﺤﺪودﻳﺖ ﺧﺎص ‪ ،‬از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫‪DROP CHECK chk_Person‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Default , SQL DEFAULT Constraint‬ﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در‪sql‬‬

‫از ﻣﺤﺪودﻳﺖ ‪ Default‬ﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در اس ﻛﻴﻮ ال ‪ ،‬ﻣﻴﺘﻮاﻧﻴﻢ زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻛﻪ ‪ ،‬در‬
‫ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول و ﺗﻌﻴﻴﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ‪ ،‬ﻣﻘﺪار ‪ Default Value‬و ﻳﺎ ﭘﻴﺶ ﻓﺮض ﺑﻪ ﻳﻚ ﻓﻴﻠﺪ ﺑﺪﻫﻴﻢ‪.‬‬

‫در واﻗﻊ ﻣﺤﺪودﻳﺖ در اﻳﻨﺠﺎ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ اﮔﺮ ﻛﺎرﺑﺮ در ﻫﻨﮕﺎم درج ﻳﺎ ﺑﻪ روزرﺳﺎﻧﻲ ﻣﻘﺪار‬
‫آن ﻓﻴﻠﺪ را وارد ﻧﻜﺮد‪ ،‬ﻣﻘﺪار ‪ Default Value‬ﺑﻪ ﺟﺎي آن ﻗﺮار ﺑﮕﻴﺮد‪.‬‬

‫ﻣﺤﺪودﻳﺖ ‪ DEFAULT‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ ‪ Default‬در دﺳﺘﻮر ‪ create table‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫'‪City varchar(255) DEFAULT 'Sandnes‬‬
‫)‬

‫از ﻣﺤﺪودﻳﺖ ‪ Default‬ﻣﻲ ﺗﻮان در ﻣﻮاﻗﻌﻲ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ از ‪ function‬ﻫﺎ در ‪ SQL‬اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪،‬ز دﺳﺘﻮر‬
‫‪SQL‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬ﺑﺮاي ﻣﺜﺎل ﺗﺎﺑﻊ‪()GETDATE‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪52‬‬

‫‪CREATE TABLE Orders‬‬


‫(‬
‫‪O_Id int NOT NULL,‬‬
‫‪OrderNo int NOT NULL,‬‬
‫‪P_Id int,‬‬
‫)(‪OrderDate date DEFAULT GETDATE‬‬
‫)‬

‫ﻣﺤﺪودﻳﺖ ‪ DEFAULT‬ﭘﺲ از ﺳﺎﺧﺖ ﺟﺪول‬

‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ ‪ Default‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫'‪ALTER COLUMN City SET DEFAULT 'SANDNES‬‬

‫از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ‪DEFAULT‬‬

‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ ‪ Default‬ﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در ‪ ، sql‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫‪ALTER COLUMN City DROP DEFAULT‬‬

‫ﻣﺤﺪودﻳﺖ ‪ NOT NULL‬در‪sql‬‬

‫از ﻣﺤﺪودﻳﺖ ‪ NOT NULL‬در دﺳﺘﻮر ‪ create table‬زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻜﻨﻴﻢ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ ﻣﻘﺪار ‪Allow‬‬
‫‪Null‬ﻓﻴﻠﺪﻫﺎ را ﻏﻴﺮ ﻓﻌﺎل ﻛﻨﻴﻢ‪.‬‬

‫در ﺣﻘﻴﻘﺖ ﺑﺎ ﺗﻌﺮﻳﻒ اﻳﻦ ﻣﺤﺪودﻳﺖ اﺟﺎزه ﻧﻤﻴﺪﻫﻴﻢ ﻛﻪ ﻓﻴﻠﺪ ﻣﺎ ﻣﻘﺪار ‪ Null‬ﺑﮕﻴﺮد‪ .‬ﭘﺲ در ﻫﻨﮕﺎم درج‬
‫ﻳﺎ ﺑﻪ روزرﺳﺎﻧﻲ‪ ،‬اﮔﺮ ﻛﺎرﺑﺮ ﻣﻘﺪاري را در اﻳﻦ ﻓﻴﻠﺪﻫﺎ وارد ﻧﻜﺮد‪ ،‬ﺟﻠﻮي اﻧﺠﺎم ﻋﻤﻠﻴﺎت ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد‪.‬‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ ‪ NOT NULL‬از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪53‬‬

‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﻛﻪ در ﻣﺜﺎل ﺑﺎﻻ ‪ p_Id‬و ‪ LastName‬اﺟﺎزه ي ‪ null‬ﺑﻮدن ﻧﺪارﻧﺪ وﻟﻲ دﻳﮕﺮ ﻓﻴﻠﺪﻫﺎ ‪ allow null‬ﻫﺴﺘﻨﺪ‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﭘﻴﺶ ﻓﺮض ﺑﺮاي ﻓﻴﻠﺪﻫﺎ در دﺳﺘﻮر ‪ ، create table‬ﻣﻘﺪار دﻫﻲ آﻧﻬﺎ ‪ allow null‬اﺳﺖ‪.‬‬

‫ﻣﺤﺪودﻳﺖ ‪ Unique , SQL UNIQUE Constraint‬در‪sql‬‬

‫از ﻣﺤﺪودﻳﺖ ‪ Unique‬زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺑﺨﻮاﻫﻴﻢ ﻣﻘﺎدﻳﺮ ﺑﻌﻀﻲ از ﻓﻴﻠﺪﻫﺎ ﺗﻜﺮاري ﻧﺒﺎﺷﻨﺪ‪.‬‬

‫اﻳﻦ ﻓﻴﻠﺪﻫﺎ ﻣﻤﻜﻦ اﺳﺖ ﻛﻠﻴﺪ ﻧﺒﺎﺷﻨﺪ ‪ ،‬اﻣﺎ ﺑﻨﺎﺑﺮ ﻟﺰوم ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺴﺘﻲ ﻏﻴﺮ ﺗﻜﺮاري ﺑﺎﺷﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻓﻴﻠﺪ آدرس‬
‫اﻳﻤﻴﻞ‪ ،‬ﻛﻠﻴﺪ ﻧﻴﺴﺖ اﻣﺎ ﺑﺎﻳﺪ ‪ Unique‬ﻳﺎ واﺣﺪ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر از ‪ Unique Index‬ﻫﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫ﻣﺤﺪودﻳﺖ ‪ PRIMARY KEY‬ﺑﻪ ﺻﻮرت ﺧﻮدﻛﺎر‪ ،‬ﻣﺤﺪودﻳﺖ ‪ Unique‬را ﻧﻴﺰ دارد‪.‬‬ ‫‪‬‬

‫در ﻫﺮ ﺟﺪول ﺑﻴﺶ از ﻳﻚ ﻓﻴﻠﺪ ﻧﻴﺰ ﻣﻴﺘﻮاﻧﺪ از ﻣﺤﺪودﻳﺖ ‪ Unique‬اﺳﺘﻔﺎده ﻛﻨﺪ‪.‬‬ ‫‪‬‬

‫ﻣﺤﺪودﻳﺖ ‪ UNIQUE‬در ﻫﻨﮕﺎم ﺳﺎﺧﺖ‪TABLE‬‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ ‪ Unique‬در دﺳﺘﻮر ‪ create table‬در ‪ ، sql‬روي ﻳﻚ ﺳﺘﻮن از ﻛﻠﻤﻪ ﻛﻠﻴﺪي‬
‫‪UNIQUE‬ﺑﺼﻮرت زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL UNIQUE,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ ‪ Unique‬روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر ‪ SQL‬زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪:‬‬
DDL ‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ‬ 54

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 ‫ﻣﺤﺪودﻳﺖ‬

:‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر‬Unique ‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ‬

ALTER TABLE Persons


ADD UNIQUE (P_Id)

:‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر‬Unique ‫ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ‬

ALTER TABLE Persons


ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

UNIQUE‫از ﺑﻴﻦ ﺑﺮدن ﻳﻚ ﻣﺤﺪودﻳﺖ‬

:‫ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‬SQL ‫ از دﺳﺘﻮر‬Unique ‫ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ‬

ALTER TABLE Persons


DROP CONSTRAINT uc_PersonID

sql‫ در‬identity ‫ﻓﻴﻠﺪ‬

‫ ﻓﻴﻠﺪ‬، ‫ ﺑﻪ اﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﺑﻪ ازاي ﻫﺮ رﻛﻮردي ﻛﻪ در ﺟﺪول وارد ﻣﻲ ﻛﻨﻴﻢ‬sql ‫ در‬identity ‫ﻓﻴﻠﺪ‬
‫ ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﻴﻚ ﻣﻘﺪار دﻫﻲ ﺧﻮاﻫﺪ ﺷﺪ و ﻧﻤﻲ ﺗﻮاﻧﻴﻢ اﻳﻦ ﻓﻴﻠﺪ را ﻣﻘﺪار دﻫﻲ ﻛﻨﻴﻢ‬، ‫ﺷﺪه‬identity
.
‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ ‪DDL‬‬ ‫‪55‬‬

‫ﻓﻴﻠﺪ ‪ identity‬دو ﺧﺼﻮﺻﻴﺖ دارد‪:‬‬

‫‪Identity Increment :‬ﻛﻪ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻣﻘﺪار ﻓﻴﻠﺪ ﭼﻨﺪ ﺗﺎﻳﻲ اﻓﺰاﻳﺶ ﭘﻴﺪا ﻛﻨﺪ‪ ،‬ﺑﻪ ﻃﻮر ﭘﻴﺶ ﻓﺮض‬
‫ﻣﻘﺪار آن ﻳﻚ اﺳﺖ و ﻣﻲ ﺗﻮاﻧﺪ اﻋﺪاد ﻣﺜﺒﺖ و ﻫﻤﻴﻦ ﻃﻮر ﻣﻨﻔﻲ ﻧﻴﺰ ﺑﮕﻴﺮد‪.‬‬

‫‪Identity Seed :‬ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻣﻘﺪار اﻳﻦ ﻓﻴﻠﺪ از ﭼﻪ ﻋﺪدي ﺷﺮوع ﺷﻮد‪ ،‬ﺑﻪ ﻃﻮر ﭘﻴﺶ ﻓﺮض از ﻳﻚ ﺷﺮوع‬
‫ﻣﻲ ﺷﻮد وﻟﻲ ﻣﻲ ﺗﻮاﻧﺪ از اﻋﺪاد ﻣﻨﻔﻲ و ﻫﺮ ﻋﺪد ﻣﺜﺒﺘﻲ ﺑﺮاي ﺷﺮوع ﻓﻴﻠﺪ ‪ Identity‬اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫ﺑﺮاي اﺳﺘﻔﺎده از ﻓﻴﻠﺪ ‪ identity‬در ‪ sql‬از ﺳﺎﺧﺘﺎر زﻳﺮ اﺳﺘﻔﺎده ﻣﻜﻨﻴﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int PRIMARY KEY IDENTITY,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬اﮔﺮ رﻛﻮردﻫﺎي ﺟﺪول را ﺑﺎ ‪ Delete‬ﺣﺬف ﻛﻨﻴﻢ ﻣﻘﺪار آﺧﺮﻳﻦ ‪ Identity‬ﺣﻔﻆ ﺧﻮاﻫﺪ ﺷﺪ و درج ﺑﺎ‬
‫ﻋﺪد ﺑﻌﺪي آن ﺻﻮرت ﻣﻲ ﮔﻴﺮد‪ ،‬اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺑﻌﺪ از ﺣﺬف داده ﻫﺎ درج ﺑﺎ ﻣﻘﺪار ‪ Seed‬ﺗﻌﺮﻳﻒ ﺷﺪه ﺻﻮرت ﮔﻴﺮد‬
‫ﺑﻪ ﺟﺎي ‪ Delete‬از دﺳﺘﻮر ‪ TRUNCATE table_name‬اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ‪ ،‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻻگ ﻫﻢ ذﺧﻴﺮه‬
‫ﻧﺨﻮاﻫﺪ ﺷﺪ ‪ ،‬ﺿﻤﻦ اﻳﻨﻜﻪ ﺳﺮﻋﺖ ﺣﺬف رﻛﻮردﻫﺎ ﺑﺴﻴﺎر ﺑﻴﺸﺘﺮ اﺳﺖ‪.‬‬

‫آﻣﻮزش ‪ view‬در‪sql‬‬

‫‪view‬در ‪ sql‬در واﻗﻊ ﻫﻤﺎن ﺟﺪاول ﻣﺠﺎزي ﻫﺴﺘﻨﺪ ﻛﻪ ﺗﻮﺳﻂ آن ﻣﻲ ﺗﻮاﻧﻴﺪ ﻋﻤﻠﻴﺎت ﺧﺎﺻﻲ رو ﻛﻪ ﺷﺎﻣﻞ‬
‫دﺳﺘﻮرات ‪ sql‬ﻣﻴﺸﻪ رو اﻧﺠﺎم ﺑﺪﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﺧﺮوﺟﻲ داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪.‬‬

‫ﻛﺎرﺑﺮد ‪ view‬در اﺳﻜﻴﻮال‬

‫از ﻣﺰﻳﺖ ﻫﺎي ‪ view‬اﻳﻦ اﺳﺖ ﻛﻪ ﺑﻌﺪ از ﻳﻚ ﺑﺎر اﺟﺮا ﺑﻪ ﺻﻮرت ﻣﻮﻗﺖ در ﺳﺮور ذﺧﻴﺮه ﻣﻲ ﺷﻮد و ﺑﺮاي‬
‫ﻣﺮاﺟﻌﺎت ﺑﻌﺪي از ﻫﻤﺎن اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد و ﺳﺮﻋﺖ ﺧﻴﻠﻲ ﺑﺎﻻﻳﻲ دارد‪.‬‬
DDL ‫دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ‬ 56

:‫ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‬sql ‫ در‬View ‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر‬

CREATE VIEW view_name AS


SELECT column_name(s)
FROM table_name
WHERE condition
‫ﺗﻮاﺑﻊ ‪SQL‬‬
‫ﺗﻮاﺑﻊ ‪SQL‬‬ ‫‪58‬‬

‫ﺗﺎﺑﻊ ‪ Avg‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ Avg‬در اﺳﻜﻴﻮال ﻣﻴﺎﻧﮕﻴﻦ ﻳﻚ ﺳﺘﻮن ﻋﺪدي را ﺑﺮﻣﻴﮕﺮداﻧﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ avg‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT AVG(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ COUNT‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ COUNT‬در ‪ sql‬ﺗﻌﺪاد ﺳﻄﺮﻫﺎي ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ را ﺷﻤﺮده و ﻣﻘﺪار آﻧﺮا ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪ .‬ﺑﻪ ﺗﺎﺑﻊ‬
‫‪count‬در اﺳﻜﻴﻮال ‪ ،‬ﺗﺎﺑﻊ ﺳﻄﺮ ﺷﻤﺎر ﻫﻢ ﻣﻲ ﮔﻮﻳﻨﺪ‪.‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﺗﺎﺑﻊ ‪ count‬در اس ﻛﻴﻮ ال ‪ ،‬ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ ﻣﻘﺪار آﻧﻬﺎ ﺧﺎﻟﻲ ﻳﺎ ﺗﻜﺮاري ﺑﺎﺷﺪ را ﻧﻤﻲ ﺷﻤﺎرد ‪ .‬ﺑﺮاي‬
‫ﺷﻤﺎرش ﻛﻠﻴﻪ ﻓﻴﻠﺪﻫﺎ ) ﺣﺘﻲ ﺗﻜﺮاري ( ﺑﺎﻳﺪ ﻗﺒﻞ از ﻧﺎم ﺳﺘﻮن در دﺳﺘﻮر ‪ Count‬ﻋﺒﺎرت ‪ Distinct‬ذﻛﺮ ﺷﻮد‪.‬‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT COUNT(*) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ First‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ First‬در اﺳﻜﻴﻮال ﻣﻘﺪار اوﻟﻴﻦ رﻛﻮرد را در ﻳﻚ ﻓﻴﻠﺪ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪ .‬ﺗﺮﺗﻴﺐ در ﺗﺎﺑﻊ ‪ ، first‬ﻫﻤﺎن ﺗﺮﺗﻴﺐ‬
‫ﻗﺮار ﮔﻴﺮي رﻛﻮردﻫﺎ در ﺟﺪول اﺳﺖ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ first‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT FIRST(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Last‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ Last‬در اﺳﻜﻴﻮال ﻣﻘﺪار آﺧﺮﻳﻦ رﻛﻮرد را در ﻳﻚ ﻓﻴﻠﺪ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪ .‬ﺗﺮﺗﻴﺐ در دﺳﺘﻮر و ﺗﺎﺑﻊ ‪ ، last‬ﻫﻤﺎن‬
‫ﺗﺮﺗﻴﺐ ﻗﺮار ﮔﻴﺮي رﻛﻮردﻫﺎ در ﺟﺪول اﺳﺖ‪.‬‬
‫ﺗﻮاﺑﻊ ‪SQL‬‬ ‫‪59‬‬

‫ﺳﺎﺧﺘﺎر ﺗﺎﺑﻊ ‪ last‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT LAST(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Max‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ Max‬در ‪ sql‬ﺑﻴﺸﺘﺮﻳﻦ ﻣﻘﺪار ﻣﻮﺟﻮد در ﺑﻴﻦ ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ‪.‬‬

‫ﺗﺎﺑﻊ ‪ max‬در ‪ sql‬ﺑﺎ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي ﻳﺎ ﺣﺮوﻓﻲ ﺑﺎﺷﺪ ‪ ،‬ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﻛﺎر رود ‪ .‬در ﻓﻴﻠﺪﻫﺎ ﺑﺎ‬
‫ﻣﻘﺎدﻳﺮ ﻋﺪدي ﺗﺎﺑﻊ ﺑﺰﮔﺘﺮﻳﻦ ﻋﺪد و در ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﻲ ‪ ،‬ﺗﺎﺑﻊ ‪ max‬ﻛﻠﻤﻪ اي ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ از آ‬
‫ﺗﺎ ي در ﻓﺎرﺳﻲ و ‪ A‬ﺗﺎ ‪ Z‬در اﻧﮕﻠ‪‬ﺴﻲ در آﺧﺮﻳﻦ رده ﺑﺎﺷﺪ ‪ ،‬را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT MAX(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Min‬در اس ﻛﻴﻮ ال‬

‫ﺗﺎﺑﻊ ‪ Min‬در ‪ sql‬ﻛﻤﺘﺮﻳﻦ ﻣﻘﺪار ﻣﻮﺟﻮد در ﺑﻴﻦ ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪.‬‬

‫ﺗﺎﺑﻊ ‪ min‬در اس ﻛﻴﻮال ﺑﺎ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي ﻳﺎ ﺣﺮوﻓﻲ ﺑﺎﺷﺪ ‪ ،‬ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﻛﺎر رود ‪ .‬در‬
‫ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻋﺪدي ﺗﺎﺑﻊ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﺪد و در ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﻲ ‪ ،‬ﺗﺎﺑﻊ ﻛﻠﻤﻪ اي ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ‬
‫از آ ﺗﺎ ي در ﻓﺎرﺳﻲ و ‪ A‬ﺗﺎ ‪ Z‬در اﻧﮕﻠ‪‬ﺴﻲ در ﺑﺎﻻﺗﺮﻳﻦ رده ﺑﺎﺷﺪ ‪ ،‬را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ min‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT MIN(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Sum‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ Sum‬در ‪ sql‬ﻣﺠﻤﻮع ﻣﻘﺎدﻳﺮ اﻋﺪاد در ﻳﻚ ﻓﻴﻠﺪ را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪.‬‬
‫ﺗﺎﺑﻊ )(‪ Sum‬ﺑﺎﻳﺪ ﺑﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي اﺳﺖ ‪ ،‬ﺑﻪ ﻛﺎر رود‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ sum‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬


‫ﺗﻮاﺑﻊ ‪SQL‬‬ ‫‪60‬‬

‫‪SELECT SUM(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ UCase‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ UCase‬در اﺳﻜﻴﻮال ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪ را ﺑﻪ ﺣﺮوف ﺑﺰرگ ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ Ucase‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT UCASE(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ lcase‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ lcase‬در اﺳﻜﻴﻮال ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪ را ﺑﻪ ﺣﺮوف ﻛﻮﭼﻚ ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ LCase‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT LCASE(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Mid‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ mid‬ﺑﺮاي اﺳﺘﺨﺮاج ﻛﺎراﻛﺘﺮ از ﻓﻴﻠﺪ ﻣﺘﻨﻲ ‪ ،‬از ﻛﺎراﻛﺘﺮ ﺗﻌﻴﻴﻦ ﺷﺪه ﺗﺎ ﭼﻨﺪ ﻛﺎراﻛﺘﺮ ﺑﻌﺪ ﻛﻪ ﺗﻌﻴﻴﻦ ﻣﻴﻜﻨﻴﻢ ‪،‬‬
‫ﺑﻜﺎر ﻣﻴﺮود‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻣﻘﺪار ﺗﻌﺪاد ﻛﺎراﻛﺘﺮ ) ‪ ( lenght‬در دﺳﺘﻮر ‪ mid‬اﺳﻜﻴﻮال ‪ ،‬اﺧﺘﻴﺎري اﺳﺖ و در ﺻﻮرت ﻧﺰاﺷﺘﻦ اﻳﻦ‬
‫ﻣﻘﺪار ‪ ،‬ﺑﺮش و اﺳﺘﺨﺮاج ﻛﺎراﻛﺘﺮ از ﻧﻘﻄﻪ ﺷﺮوع ﺗﺎ آﺧﺮ رﺷﺘﻪ ‪ ،‬اﻧﺠﺎم ﻣﻴﮕﻴﺮد‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ mid‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT MID(column_name,start[,length]) FROM table_nam‬‬

‫ﺗﺎﺑﻊ ‪ Len‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ len‬در ‪ ، sql‬ﻃﻮل )ﺗﻌﺪاد ﻛﺎراﻛﺘﺮﻫﺎي( ﻳﻚ ﻓﻴﻠﺪ ﻣﺘﻨﻲ رﺷﺘﻪ اي را ﺑﺮﻣﻴﮕﺮداﻧﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ len‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬


‫ﺗﻮاﺑﻊ ‪SQL‬‬ ‫‪61‬‬

‫‪SELECT LEN(column_name) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Round‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ round‬در ‪ sql‬ﺑﺮاي( ‪ round‬روﻧﺪ ﻛﺮدن( ﻛﺮدن ﻳﻚ ﻣﻘﺪار ﻋﺪدي ﺑﻪ ﺗﻌﺪاد اﻋﺸﺎر ﻣﺸﺨﺺ اﺳﺘﻔﺎده‬
‫ﻣﻴﺸﻮد‪ .‬ﻧﺎم ﺳﺘﻮن و ﺗﻌﺪاد رﻗﻢ اﻋﺸﺎر را داﺧﻞ ﭘﺮاﻧﺘﺰ اﻳﻦ دﺳﺘﻮر ﺗﻌﻴﻴﻦ ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ round‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT ROUND(column_name,decimals) FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Now‬در‪sql‬‬

‫ﺗﺎﺑﻊ ‪ now‬در اﺳﻜﻴﻮال ﺗﺎرﻳﺦ و ﺳﺎﻋﺖ ﺟﺎري ﺳﻴﺴﺘﻢ را ﺑﺮﻣﻴﮕﺮداﻧﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ now‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT NOW() FROM table_name‬‬

‫ﺗﺎﺑﻊ ‪ Format‬در اﺳﻜﻴﻮال‬

‫ﺗﺎﺑﻊ ‪ format‬در ‪ sql‬ﭼﮕﻮﻧﮕﻲ ﻧﻤﺎﻳﺶ ﻳﻚ ﻓﻴﻠﺪ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪.‬‬

‫ﺳﺎﺧﺘﺎر دﺳﺘﻮر ‪ format‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫‪SELECT FORMAT(column_name,format) FROM table_name‬‬

‫ﻣﺜﺎل ﭼﮕﻮﻧﮕﻲ ﻛﺎر ﺗﺎﺑﻊ ‪ format‬در اﺳﻜﻴﻮال را ﺗﻮﺿﻴﺢ ﻣﻴﺪﻫﺪ‪:‬‬

‫‪SELECT ProductName, Price, FORMAT(Now(),'YYYY-MM-DD') AS PerDate‬‬


‫‪FROM Products‬‬

‫ﺗﺎﺑﻊ ‪ isNull‬در اﺳﻜﻴﻮال‬


‫ﺗﻮاﺑﻊ ‪SQL‬‬ ‫‪62‬‬

‫ﺑﺎ ﺗﺎﺑﻊ ‪ isNull‬در اﺳﻜﻴﻮال ﻣﻴﺘﻮان ﺗﻌﻴﻴﻦ ﻛﺮد ﻛﻪ در ﺻﻮرﺗﻲ ﻛﻪ ﻣﻘﺪار ﻳﻚ ﻓﻴﻠﺪ از رﻛﻮرد ﺑﺮاﺑﺮ ﻣﻘﺪار‬
‫‪NULL‬ﺑﻮد ‪ ،‬ﺧﺮوﺟﻲ ﺑﻪ ﺟﺎي ﻣﻘﺪار ‪ ، NUll‬ﭼﻪ ﻣﻘﺪار دﻳﮕﺮي ﺷﻮد‪.‬‬

‫ﺑﻪ اﻳﻦ ﺻﻮرت ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ ﻣﻴﮕﻮﻳﺪ اﮔﺮ ‪ Null‬ﺑﻮد ﺧﺮوﺟﻲ ﭼﻪ ﺷﻮد‪.‬‬

‫ﺳﺎﺧﺘﺎر ﺗﺎﺑﻊ ‪ isNull‬در ‪ sql‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬

‫)‪SELECT ISNULL(column_name,value‬‬

‫‪FROM table_name‬‬

‫ﻣﺜﺎل ‪ :‬اﺳﺘﻔﺎده از اﻳﻦ ﺗﺎﺑﻊ ﻣﻬﻢ در ﻓﻴﻠﺪﻫﺎي ﺗﺮﻛﻴﺒﻲ ﻳﺎ ﻣﺤﺎﺳﺒﺎﺗﻲ ﺑﺴﻴﺎر زﻳﺎد اﺳﺖ‪:‬‬

‫))‪SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0‬‬
‫‪FROM Products‬‬

‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬در ﻣﺜﺎل ﺑﺎﻻ در ﺻﻮرﺗﻲ ﻛﻪ ‪ ISNULL UnitsOnOrder,0‬را ﻗﺮار ﻧﺪﻫﻴﻢ و‬
‫ﻣﺴﺘﻘﻴﻤﺎ ‪ UnitsOnOrder‬را ﻗﺮار دﻫﻴﻢ ‪ ،‬ﻣﻤﻜﻦ اﺳﺖ در ﺻﻮرت ‪ Null‬ﺑﻮدن ﻳﻜﻲ از ﻣﻘﺎدﻳﺮ اﻳﻦ ﻓﻴﻠﺪ در‬
‫رﻛﻮردﻫﺎي ﺟﺪول ﻣﺤﺼﻮﻻت ‪ ،‬ﺑﺎ ارور ﻣﻮاﺟﻪ ﺷﻮﻳﻢ‪.‬‬

‫ﻧﻜﺘﻪ ‪ :‬ﻳﻜﻲ از ﺗﻮاﺑﻊ ﺑﺴﻴﺎر ﻛﺎرﺑﺮدي ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﺎ ﻧﺎدﻳﺪه ﮔﺮﻓﺘﻦ آن و ارﺟﺎع ﻛﺎر اﻳﻦ ﺗﺎﺑﻊ ﺑﻪ ﺑﺨﺶ ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎﺷﻮن از ﻛﺎراﻳﻲ ﺳﻴﺴﺘﻢ ﻣﻴﻜﺎﻫﻨﺪ‪ ،‬ﺗﺎﺑﻊ و دﺳﺘﻮر ‪ isNull‬در اﺳﻜﻴﻮال ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

You might also like