Database
Database
SQL
ﻓﻬﺮﺳﺖ أ
Tableﭼﻴﺴﺖ ؟ ٣ ............................................................................................................................................
Fieldﭼﻴﺴﺖ ؟ ٤ ..............................................................................................................................................
Recordﭼﻴﺴﺖ ؟ ٥ ..........................................................................................................................................
ﻣﺤﺪودﻳﺖ Primary Key , SQL PRIMARY KEY Constraintﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ در اس ﻛﻴﻮ ال ٤٦ .......................................
ﻣﺤﺪودﻳﺖ Foreign Key , SQL FOREIGN KEY Constraintﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در اس ﻛﻴﻮال ٤٧ .....................................
ﻣﺤﺪودﻳﺖ Check , SQL CHECK Constraintﻳﺎ ﻣﺤﺪودﻳﺖ ﻫﺎي ﺧﺎص در٤٩ ........................................................ sql
ﻓﻬﺮﺳﺖ د
ﻣﺤﺪودﻳﺖ Default , SQL DEFAULT Constraintﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در٥١ ........................................................... sql
دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﭼﻴﺴﺖ ؟ ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﻳﺎ ﭘﺎﻳﮕﺎه داده ﻳﺎ دﻳﺘﺎﺑﻴﺲ ) (data baseﺑﻪ ﻣﺠﻤﻮﻋﻪ
اي از اﻃﻼﻋﺎت ﺑﺎ ﺳﺎﺧﺘﺎر ﻣﻨﻈﻢ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮد .اﻳﻦ ﭘﺎﻳﮕﺎه ﻫﺎي اﻃﻼﻋﺎﺗﻲ ﻣﻌﻤﻮﻻً در ﻗﺎﻟﺒﻲ ﻛﻪ ﺑﺮاي دﺳﺘﮕﺎه ﻫﺎ و
راﻳﺎﻧﻪ ﻫﺎ ﻗﺎﺑﻞ ﺧﻮاﻧﺪن و ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﺑﺎﺷﻨﺪ ذﺧﻴﺮه ﻣﻲ ﺷﻮﻧﺪ.
ﭘﺎﻳﮕﺎه داده اس ﻛﻴﻮ ال ﭼﻴﺴﺖ ؟ ﺑﺎ ﮔﺴﺘﺮش ﻃﺮاﺣﻲ وب ﺳﺎﻳﺖ ﻫﺎي ﭘﻮﻳﺎ در ﺷﺒﻜﻪ ﺟﻬﺎﻧﻲ وب ﻧﻴﺎز ﺑﻪ
ﻳﻚ ﭘﺎﻳﮕﺎه داده و ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ) (databaseﺑﺰرگ ﺑﺮاي ﻣﺪﻳﺮﻳﺖ ﻣﺤﺘﻮا اﺣﺴﺎس ﻣﻴﺸﺪ .ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده
ﻫﺎ ﻳﻚ ﻓﺮاﻳﻨﺪ ﭘﻴﭽﻴﺪه اﺳﺖ ،ﻛﻪ ﺑﻪ ﻃﻮر ﻗﺎﺑﻞ ﺗﻮﺟﻬﻲ ﺑﺎ ﺑﺮﻧﺎﻣﻪ و زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ SQLاﻳﻦ ﻧﻴﺎز ﺑﺮﻃﺮف ﺷﺪه
اﺳﺖ.
ﭘﺎﻳﮕﺎه داده در اﺻﻞ ﻣﺠﻤﻮﻋﻪ اي ﺳﺎزﻣﺎن ﻳﺎﻓﺘﻪ از اﻃﻼﻋﺎت اﺳﺖ .اﻳﻦ واژه از داﻧﺶ راﻳﺎﻧﻪ ﺳﺮﭼﺸﻤﻪ ﻣﻲ ﮔﻴﺮد ،اﻣﺎ
ﻛﺎرﺑﺮ وﺳﻴﻊ و ﻋﻤﻮﻣﻲ ﻧﻴﺰ دارد ،اﻳﻦ وﺳﻌﺖ ﺑﻪ اﻧﺪازه اي اﺳﺖ ﻛﻪ ﻣﺮﻛﺰ اروﭘﺎﻳﻲ ﭘﺎﻳﮕﺎه داده )ﻛﻪ ﺗﻌﺎرﻳﻒ ﺧﺮدﻣﻨﺪاﻧﻪ
اي ﺑﺮاي ﭘﺎﻳﮕﺎه داده اﻳﺠﺎد ﻣﻲ ﻛﻨﺪ( ﺷﺎﻣﻞ ﺗﻌﺎرﻳﻒ ﻏﻴﺮ اﻟﻜﺘﺮوﻧﻴﻜﻲ ﺑﺮاي ﭘﺎﻳﮕﺎه داده ﻣﻲ ﺑﺎﺷﺪ .در اﻳﻦ ﻧﻮﺷﺘﺎر ﺑﻪ
ﻛﺎرﺑﺮد ﻫﺎي ﺗﻜﻨﻴﻜﻲ ﺑﺮاي اﻳﻦ اﺻﻄﻼح ﻣﺤﺪود ﻣﻲ ﺷﻮد.
ﻳﻚ ﺗﻌﺮﻳﻒ ﻣﻤﻜﻦ اﻳﻦ اﺳﺖ ﻛﻪ :ﭘﺎﻳﮕﺎه داده ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎي ذﺧﻴﺮه ﺷﺪه در راﻳﺎﻧﻪ ﺑﺎ ﻳﻚ روش
ﺳﻴﺴﺘﻤﺎﺗﻴﻚ )اﺻﻮﻟﻲ( ﻣﺜﻞ ﻳﻚ ﺑﺮﻧﺎﻣﻪ راﻳﺎﻧﻪ اي اﺳﺖ ﻛﻪ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﺳﻮاﻻت ﻛﺎرﺑﺮ ﭘﺎﺳﺦ دﻫﺪ .ﺑﺮاي ذﺧﻴﺮه و
ﺑﺎزﻳﺎﺑﻲ ﺑﻬﺘﺮ ،ﻫﺮ رﻛﻮرد ﻣﻌﻤﻮﻻ ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از اﺟﺰاي داده اي ﻳﺎ روﻳﺪاد ﻫﺎ ﺳﺎزﻣﺎﻧﺪﻫﻲ ﻣﻲ ﮔﺮدد.
ﺑﺨﺶ ﻫﺎي ﺑﺎزﻳﺎﺑﻲ ﺷﺪه در ﻫﺮ ﭘﺮﺳﺶ ﺑﻪ اﻃﻼﻋﺎﺗﻲ ﺗﺒﺪﻳﻞ ﻣﻲ ﺷﻮد ﻛﻪ ﺑﺮاي اﺗﺨﺎذ ﻳﻚ ﺗﺼﻤﻴﻢ ﻛﺎرﺑﺮد دارد .ﺑﺮﻧﺎﻣﻪ
راﻳﺎﻧﻪ اي ﻛﻪ ﺑﺮاي ﻣﺪﻳﺮﻳﺖ و ﭘﺮﺳﺶ و ﭘﺎﺳﺦ ﺑﻴﻦ ﭘﺎﻳﮕﺎه ﻫﺎي داده اي اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد را ﻣﺪﻳﺮ ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎه
داده اي ﻳﺎ ﺑﻪ اﺧﺘﺼﺎر ) (DBMSﻣﻲ ﻧﺎﻣﻴﻢ .ﺧﺼﻮﺻﻴﺎت و ﻃﺮاﺣﻲ ﺳﻴﺴﺘﻢ ﻫﺎي ﭘﺎﻳﮕﺎه داده اي در ﻋﻠﻢ اﻃﻼﻋﺎت
ﻣﻄﺎﻟﻌﻪ ﻣﻲ ﺷﻮد.
ﻣﻔﻬﻮم اﺻﻠﻲ ﭘﺎﻳﮕﺎه داده اﻳﻦ اﺳﺖ ﻛﻪ ﭘﺎﻳﮕﺎه داده ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎ ﻳﺎ ﺗﻜﻪ ﻫﺎﻳﻲ از
ﻳﻚ ﺷﻨﺎﺧﺖ اﺳﺖ .ﻧﻮﻋﺎ در ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺗﻮﺻﻴﻒ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ اي ﺑﺮاي ﻣﻮﺟﻮدﻳﺖ ﻫﺎي ﻧﮕﻪ داري ﺷﺪه در
ﭘﺎﻳﮕﺎه داده وﺟﻮد دارد :اﻳﻦ ﺗﻮﺻﻴﻒ ﺑﺎ ﻳﻚ اﻟﮕﻮ ﻳﺎ ﻣﺪل ﺷﻨﺎﺧﺘﻪ ﻣﻲ ﺷﻮد .ﻣﺪل ﺗﻮﺻﻴﻔﻲ ،اﺷﻴﺎ ﭘﺎﻳﮕﺎه ﻫﺎي داده و
ارﺗﺒﺎط ﺑﻴﻦ آﻧﻬﺎ را ﻧﺸﺎن ﻣﻲ دﻫﺪ .روش ﻫﺎي ﻣﺘﻔﺎوﺗﻲ ﺑﺮاي ﺳﺎزﻣﺎﻧﺪﻫﻲ اﻳﻦ ﻣﺪل ﻫﺎ وﺟﻮد دارد ﻛﻪ ﺑﻪ آﻧﻬﺎ ﻣﺪل
ﻫﺎي ﭘﺎﻳﮕﺎه داده ﮔﻮﻳﻴﻢ.
ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده SQL 3
ﭘﺮﻛﺎرﺑﺮد ﺗﺮﻳﻦ ﻣﺪﻟﻲ ﻛﻪ اﻣﺮوزه ﺑﺴﻴﺎر اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ،ﻣﺪل راﺑﻄﻪ اي اﺳﺖ ﻛﻪ ﺑﻪ ﻃﻮر ﻋﺎم ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ
ﻣﻲ ﺷﻮد :ﻧﻤﺎﻳﺶ ﺗﻤﺎم اﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺑﻪ ﻓﺮم ﺟﺪاول ﻣﺮﺗﺒﻂ ﻛﻪ ﻫﺮﻳﻚ از ﺳﻄﺮ ﻫﺎ و ﺳﺘﻮﻧﻬﺎ ﺗﺸﻜﻴﻞ ﺷﺪه
اﺳﺖ)ﺗﻌﺮﻳﻒ ﺣﻘﻴﻘﻲ آن در ﻋﻠﻢ رﻳﺎﺿﻴﺎت ﺑﺮﺳﻲ ﻣﻲ ﺷﻮد( .در اﻳﻦ ﻣﺪل واﺑﺴﺘﮕﻲ ﻫﺎ ﺑﻪ ﻛﻤﻚ ﻣﻘﺎدﻳﺮ ﻣﺸﺘﺮك در
ﺑﻴﺶ از ﻳﻚ ﺟﺪول ﻧﺸﺎن داده ﻣﻲ ﺷﻮد .ﻣﺪل ﻫﺎي دﻳﮕﺮي ﻣﺜﻞ ﻣﺪل ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺐ و ﻣﺪل ﺷﺒﻜﻪ اي ﺑﻪ ﻃﻮر
ﺻﺮﻳﺢ ﺗﺮي ارﺗﺒﺎط ﻫﺎ را ﻧﺸﺎن ﻣﻲ دﻫﻨﺪ.
در ﻣﺒﺎﺣﺚ ﺗﺨﺼﺼﻲ ﺗﺮ اﺻﺘﻼح دادﮔﺎن ﻳﺎ ﭘﺎﻳﮕﺎه داده ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از رﻛﻮرد ﻫﺎي ﻣﺮﺗﺒﻂ ﺑﺎ ﻫﻢ ﺗﻌﺮﻳﻒ
ﻣﻲ ﺷﻮد .ﺑﺴﻴﺎري از ﺣﺮﻓﻪ اي ﻫﺎ ﻣﺠﻤﻮﻋﻪ اي از داده ﻫﺎﻳﻲ ﺑﺎ ﺧﺼﻮﺻﻴﺎت ﻳﻜﺴﺎن ﺑﻪ ﻣﻨﻈﻮر اﻳﺠﺎد ﻳﻚ ﭘﺎﻳﮕﺎه داده
اي ﻳﻜﺘﺎ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ.
ﻣﻌﻤﻮﻻ DBMSﻫﺎ ﺑﺮ اﺳﺎس ﻣﺪل ﻫﺎﻳﻲ ﻛﻪ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ﺗﻘﺴﻴﻢ ﺑﻨﺪي ﻣﻲ ﺷﻮﻧﺪ :ارﺗﺒﺎﻃﻲ،ﺷﻲ ﮔﺮا ،ﺷﺒﻜﻪ
اي و اﻣﺜﺎل آن .ﻣﺪل ﻫﺎي داده اي ﺑﻪ ﺗﻌﻴﻴﻦ زﺑﺎﻧﻬﺎي دﺳﺘﺮﺳﻲ ﺑﻪ ﭘﺎﻳﮕﺎه ﻫﺎي داده ﻋﻼﻗﻪ ﻣﻨﺪ ﻫﺴﺘﻨﺪ .ﺑﺨﺶ ﻗﺎﺑﻞ
ﺗﻮﺟﻬﻲ از ﻣﻬﻨﺪﺳﻲ DBMSﻣﺴﺘﻘﻞ از ﻣﺪل ﻫﺎي ﻣﻲ ﺑﺎﺷﺪ و ﺑﻪ ﻓﺎﻛﺘﻮر ﻫﺎﻳﻲ ﻫﻤﭽﻮن اﺟﺮا ،ﻫﻤﺰﻣﺎﻧﻲ،ﺟﺎﻣﻌﻴﺖ و
ﺑﺎزﻳﺎﻓﺖ از ﺧﻄﺎﻫﺎي ﺳﺨﺖ اﻓﺰاري واﺑﺴﻄﻪ اﺳﺖ.در اﻳﻦ ﺳﻄﺢ ﺗﻔﺎوت ﻫﺎي ﺑﺴﻴﺎري ﺑﻴﻦ ﻣﺤﺼﻮﻻت وﺟﻮد دارد.
ﻫﺮ databaseدر اﺳﻜﻴﻮال از ﻗﺴﻤﺘﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ،اﻳﻦ ﺑﺨﺸﻬﺎ ﺷﺎﻣﻞ ﻣﻮارد زﻳﺮ اﺳﺖ:
Table
View
Stored procedre
Function
و....
Tableﭼﻴﺴﺖ ؟
ﺟﺪول ) ( tableدر ﭘﺎﻳﮕﺎه داده ﻫﺎ ﭼﻴﺴﺖ ؟ داده ﻫﺎ در دﻳﺘﺎﺑﻴﺲ ﻳﺎ ﭘﺎﻳﮕﺎه داده داﺧﻞ ﺟﺪول ﻳﺎ tableﻫﺎ
ذﺧﻴﺮه ﻣﻴﺸﻮﻧﺪ .ﻫﺮ databaseﻣﻴﺘﻮاﻧﺪ ﺷﺎﻣﻞ ﭼﻨﺪﻳﻦ tableﺑﺎﺷﺪ .ﻫﺮ ﺟﺪول از ﺗﻌﺪادي ﺳﻄﺮ و ﺳﺘﻮن ﺗﺸﻜﻴﻞ
ﺷﺪه اﺳﺖ.
ﺑﺮاي ﺗﻤﺎم ﺳﺘﻮن ﻫﺎ در دﻳﺘﺎﺑﻴﺲ ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع ﻛﺎرﻛﺮد آن ﻣﻴﺘﻮاﻧﻴﺪ ﻧﻮع ﻣﻮرد ﻧﻈﺮ ﺧﻮد را ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ ،ﻣﻘﺪارﻫﺎﻳﻲ
ﻛﻪ درون ﻫﺮ ﻓﻴﻠﺪ ذﺧﻴﺮه ﻣﻴﺸﻮد ﺑﺎﻳﺴﺘﻲ ﺑﺎ ﻧﻮع اﻧﺘﺨﺎﺑﻲ ﻓﻴﻠﺪ ﻣﻄﺎﺑﻘﺖ داﺷﺘﻪ ﺑﺎﺷﺪ.
ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده SQL 4
ﺟﺪول ﻳﻚ ﻣﺠﻤﻮﻋﻪ اي اﺳﺖ از اﻃﻼﻋﺎت ﺛﺒﺖ ﺷﺪه ﻣﺮﺗﺒﻂ و واﺑﺴﺘﻪ ﺑﻪ ﻫﻢ ﻛﻪ از ﺳﺘﻮن ﻫﺎ و ردﻳﻒ ﻫﺎ ﺗﺸﻜﻴﻞ
ﺷﺪه اﺳﺖ .ﺟﺪاول ﻣﻬﻤﺘﺮﻳﻦ ﻋﻨﺎﺻﺮ ﺳﻴﺴﺘﻢ ﻫﺎي ﭘﺎﻳﮕﺎه داده ﻫﺴﺘﻨﺪ ،ﻛﻪ ﺑﺮاي ذﺧﻴﺮه و ﻧﮕﻬﺪاري ﺳﺎزﻣﺎن ﻳﺎﻓﺘﻪ
اﻃﻼﻋﺎت ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ.
ﺟﺪول ﺑﺨﺸﻲ از ﭘﺎﻳﮕﺎه داده اﺳﺖ .ﻳﻚ ﭘﺎﻳﮕﺎه داده از ﺟﺪاول ﻣﺨﺘﻠﻒ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
ﻣﺜﺎل :ﺑﺮاي ذﺧﻴﺮهﺳﺎزي اﻧﻮاع ﻣﺨﺘﻠﻒ داده ﻫﺎ ﺷﻤﺎ ﻧﻴﺎزﻣﻨﺪ اﻳﺠﺎد ﺟﺪاول ﺟﺪاﮔﺎﻧﻪاي ﻫﺴﺘﻴﺪ .ﺑﺮاي ﻣﺜﺎل ،اﮔﺮ
ﺷﻤﺎ ﻳﻚ ﻧﺮم اﻓﺰار ﻣﺪﻳﺮﻳﺖ ﻣﺪرﺳﻪ دارﻳﺪ ،ﻣﻤﻜﻦ اﺳﺖ ﻧﻴﺎز ﺑﻪ اﻳﺠﺎد ﺟﺪاول زﻳﺮ ﺑﺎﺷﺪ:
Fieldﭼﻴﺴﺖ ؟
ﺑﻪ ﻫﺮ ﻳﻚ از ﺧﺎﻧﻪ ﻫﺎي ﺳﺘﻮن ﻳﻚ ﺟﺪول ﻓﻴﻠﺪ ) ( Fieldﻣﻲ ﮔﻮﻳﻨﺪ .ﻫﺮ ﻓﻴﻠﺪ ﻳﻜﻲ از ﺧﺼﻮﺻﻴﺎت آن
ﻣﻮﺟﻮدﻳﺖ را ﺑﻪ ﻫﻤﺮاه ﻣﻘﺪار آن ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ.
ﻫﺮ ﻓﻴﻠﺪ در ﺑﺮ ﮔﻴﺮﻧﺪه ﻳﻚ ﺻﻔﺖ و وﻳﮋﮔﻲ ﺑﺮاي ﻣﻮﺟﻮدﻳﺖ ﻣﻲ ﺑﺎﺷﺪ ،ﻛﻪ داراي 2ﺟﺰء اﺻﻠﻲ اﺳﺖ:
.1اﺳﻢ ﺻﻔﺖ ﺧﺎﺻﻪ :ﻧﺎم ﺻﻔﺖ ﻣﻮرد ﻧﻈﺮ را ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﺪ .ﺑﺮاي ﻣﺜﺎل ﻓﻴﻠﺪ ﻧﺎم ،ﻧﺎم ﺧﺎﻧﻮادﮔﻲ ،و ...در
ﺟﺪول اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ ﺷﺨﺺ .
.2ﻣﻘﺪار ﺻﻔﺖ ﺧﺎﺻﻪ :در ﺑﺮﮔﻴﺮﻧﺪه ﻣﻘﺪار ﺑﺮاي ﺻﻔﺖ ﻣﻮرد ﻧﻈﺮ اﺳﺖ .ﺑﺮاي ﻣﺜﺎل ﻣﻘﺪار " ﺳﻌﻴﺪ " ﺑﻪ
ﻋﻨﻮان ﻣﻘﺪار ﺑﺮاي ﻓﻴﻠﺪ ﻧﺎم.
ﻳﻚ ﻓﻴﻠﺪ ﻧﺸﺎﻧﻪ ﻳﻚ ﺳﺘﻮن در ﺟﺪول اﺳﺖ .ﻳﻚ رﻛﻮرد ﻣﺠﻤﻮﻋﻪ اي از ﻓﻴﻠﺪﻫﺎ اﺳﺖ .ﺗﻤﺎم رﻛﻮردﻫﺎ در ﻫﻤﺎن ﺟﺪول
ﻫﻤﺎن ﻓﻴﻠﺪﻫﺎ راﺧﻮاﻫﻨﺪ داﺷﺖ.
ﻣﺜﺎل درﺑﺎره ﻓﻴﻠﺪ ﻫﺎ :اﮔﺮ ﺷﻤﺎ ﻳﻚ ﺟﺪول ﺑﺎ ﻧﺎم ” “Studentsداﺷﺘﻪ ﺑﺎﺷﻴﺪ ،ﻣﻤﻜﻦ اﺳﺖ زﻣﻴﻨﻪ ﻫﺎي زﻳﺮ
ﻣﻮرد ﻧﻴﺎز ﺑﺎﺷﻨﺪ:
ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﮕﺎه داده SQL 5
اﮔﺮ ﺷﻤﺎ ﻓﻴﻠﺪي را ﺑﻪ ﺟﺪول اﺿﺎﻓﻪ ﻛﻨﻴﺪ ،اﻳﻦ ﻓﻴﻠﺪ ﺑﻪ ﺗﻤﺎم رﻛﻮردﻫﺎي ﻣﻮﺟﻮد آن ﺟﺪول اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ .در
ﻣﺜﺎل ﻓﻮق ،ﺗﻤﺎﻣﻲ رﻛﻮردﻫﺎي ﺟﺪول در ” “Studentsﻫﻤﺎن 4ﻓﻴﻠﺪ را ﺧﻮاﻫﻨﺪ داﺷﺖ.
Recordﭼﻴﺴﺖ ؟
رﻛﻮرد در ﭘﺎﻳﮕﺎه داده ﭼﻴﺴﺖ ؟ ﺑﻪ ﺳﻄﺮﻫﺎي ﻳﻚ ﺟﺪول رﻛﻮرد ) ( Recordﮔﻔﺘﻪ ﻣﻴﺸﻮد .ﻫﺮ رﻛﻮرد ﻣﺠﻤﻮﻋﻪ
اي از اﻃﻼﻋﺎت ﻃﺒﻘﻪ ﺑﻨﺪي ﺷﺪه درﺑﺎره ﻳﻚ ﻣﻮﺟﻮدﻳﺖ ﺧﺎص اﺳﺖ.
ﻣﻮﺟﻮدﻳﺖ
ﻣﻮﺟﻮدﻳﺖ ﭘﺪﻳﺪه ،ﺷﻲ ﻳﺎ ﻓﺮدي در ﻣﺤﻴﻂ ﭘﺎﻳﮕﺎه داده اﺳﺖ ﻛﻪ ﻣﻲ ﺧﻮاﻫﻴﻢ اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ آن را ﻧﮕﻬﺪاري
ﻛﻨﻴﻢ.
ﻣﺜﺎل :ﺑﻪ ﻃﻮر ﻣﺜﺎل در ﻣﺤﻴﻂ ﭘﺎﻳﮕﺎه داده ﻳﻚ ﻣﺤﻴﻂ آﻣﻮزﺷﻲ ،اﻧﻮاع ﻣﻮﺟﻮدﻳﺖ ﻫﺎ ﻋﺒﺎرﺗﻨﺪ از :داﻧﺸﺠﻮ ،ﻛﻼس ،
واﺣﺪﻫﺎي درﺳﻲ ،اﺳﺘﺎد ،داﻧﺸﻜﺪه و... .
ﻳﻚ رﻛﻮرد ﻧﺸﺎن دﻫﻨﺪه ﻳﻚ ورودي در ﺟﺪول اﺳﺖ .ﻳﻚ ﺟﺪول ﻣﻲ ﺗﻮاﻧﺪ ﻫﺮ ﺗﻌﺪاد رﻛﻮرد داﺷﺘﻪ
ﺑﺎﺷﺪ.
ﻣﺜﺎل از رﻛﻮرد در ﭘﺎﻳﮕﺎه داده :اﮔﺮ ﺷﻤﺎ ﺟﺪول ” “Studentsﺑﺮاي ذﺧﻴﺮه اﻃﻼﻋﺎت داﻧﺶ آﻣﻮزان داﺷﺘﻪ
ﺑﺎﺷﻴﺪ ،در اﻳﻦ ﺟﺪول ﻳﻚ رﻛﻮرد ﻧﺸﺎن دﻫﻨﺪه ﻳﻚ داﻧﺶ آﻣﻮز ﺧﻮاﻫﺪ ﺑﻮد .ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن داﻧﺶ آﻣﻮز ﺑﻪ
ﺑﺮﻧﺎﻣﻪ ،ﺑﺎﻳﺪ ﻳﻚ رﻛﻮرد ﺑﻪ ﺟﺪول ” “Studentsاﺿﺎﻓﻪ ﻛﻨﻴﺪ .ﺑﺮاي ﭘﺎك ﻛﺮدن ﻳﺎ وﻳﺮاﻳﺶ اﻃﻼﻋﺎت داﻧﺶ آﻣﻮز ﻫﻢ
ﺑﺎﻳﺪ ﺷﻤﺎ ﻳﻚ رﻛﻮرد را از اﻳﻦ ﺟﺪول ﺣﺬف ﻛﻨﻴﺪ.
ﻣﻘﺪﻣﺎتSQL
ﻣﻘﺪﻣﺎت SQL 7
در ﻣﺪل راﺑﻄﻪاي دادهﻫﺎ ،زﺑﺎن ﺳﺎﺧﺘﺎرﻣﻨﺪ ﭘﺮﺳﺶﻫﺎ ﻳﺎ اس ﻛﻴﻮ ال ﻳﺎ ﺳﻲ ﻛﻮال (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اﺟﺎزه ﺗﻨﻈﻴﻢ ﺟﺪاول و ﺷﻴﻮه دﺳﺘﻴﺎﺑﻲ ﺑﻪ اﻃﻼﻋﺎت و ﻧﺤﻮه ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت را ﻣﻴﺪﻫﺪ.
ﻣﻨﺸﺎ اﺻﻠﻲ ﺳﻲﻛﻮال ﺑﻪ ﻣﻘﺎﻟﻪ ﺳﺎل 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ﻋﺮﺿﻪ ﮔﺮدﻳﺪ ،و ﻣﺴﺌﻮﻟﻴﻦ آيﺑﻲام اﻋﻼم ﻧﻤﻮدﻧﺪ
ﻛﻪ اﻳﻦ ﻣﺤﺼﻮل ﻳﻚ ﺑﺮﻧﺎﻣﻪ اﺳﺘﺮاﺗﮋﻳﻚ ﺑﺮاي ﺗﻜﻨﻮﻟﻮژي ﻧﺮماﻓﺰاري آيﺑﻲام ﻣﻲﺑﺎﺷﺪ .از آن ﺗﺎرﻳﺦ ﺗﺎﻛﻨﻮن ديﺑﻲﺗﻮ
ﺳﺎﻣﺎﻧﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده راﺑﻄﻪاي ﺷﺎﺧﺼﻲ ﺑﻮده و آيﺑﻲام از آن ﺣﻤﺎﻳﺖ ﻧﻤﻮده و زﺑﺎن »ﺳﻲﻛﻮال ديﺑﻲﺗﻮ«
اﺳﺘﺎﻧﺪارد ﻋﻤﻠﻲ زﺑﺎن ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﺑﻮدهاﺳﺖ.
ﺑﺮاي اﻳﺠﺎد ﻳﻚ وب ﺳﺎﻳﺖ داﻳﻨﺎﻣﻴﻚ ﻛﻪ داده ﻫﺎ و اﻃﻼﻋﺎت را از ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺑﺨﻮاﻧﺪ ﺷﻤﺎ ﺑﺎﻳﺴﺘﻲ ﻣﺮاﺣﻞ
زﻳﺮ را ﭘﻴﮕﻴﺮي ﻛﻨﻴﺪ.
اﺳﺘﻔﺎده از ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎه داده راﺑﻄﻪ اي ) (RDBMSﻣﺎﻧﻨﺪ SQL ، Access
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري ﻋﺒﺎرات و ﻳﺎ ﺣﺮوف ASCIIﻣﻲﺑﺎﺷﺪ .در اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ،ﺑﺮاي ﻧﮕﻬﺪاري ﻫﺮ ﺣﺮف،
ﻳﻚ ﺑﺎﻳﺖ اﺷﻐﺎل ﻣﻲﺷﻮد و ﻟﺬا ﻧﻴﺎز ﺑﻪ Collationﺑﺮاي ﺗﻌﻴﻴﻦ زﺑﺎن اﻃﻼﻋﺎت ﻣﻲﺑﺎﺷﺪ.
ﻣﻘﺪﻣﺎت SQL 12
اﻃﻼﻋﺎت از 1ﺗﺎ 2ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد .اﻳﻦ ﻧﻮع داده ﻫﻤﺎﻧﻨﺪ Imageو
)VarBinary(MAXدر ﺧﻮد رﻛﻮرد ذﺧﻴﺮه ﻧﻤﻲﺷﻮﻧﺪ .ﺑﻠﻜﻪ ﺗﻮﺳﻂ ﻳﻚ ﭘﻮﻳﻨﺘﺮ
text
ﺑﻪ ﺟﺎي دﻳﮕﺮي اﺷﺎره ﻣﻲﻛﻨﻨﺪ .اﻳﻦ ﻧﻮع داده در SQL 10ﺣﺬف ﺷﺪه و ﺑﺠﺎي
آنﻫﺎ از ) VarChar(MAXاﺳﺘﻔﺎده ﻣﻲﺷﻮد..
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﻣﺘﻮن Unicodeﺑﻮده و ﺑﺮاي ﻧﮕﻬﺪاري ﻫﺮ ﺣﺮف ،از دو ﺑﺎﻳﺖ اﺳﺘﻔﺎده ﻣﻲﺷﻮد .ﭘﺲ
ﻣﺴﻠﻤﺎً ﻧﺴﺒﺖ ﺑﻪ ﻧﻮع دادهﻫﺎي ﻛﺎراﻛﺘﺮي ،ﺣﺎﻓﻈﻪ ﺑﻴﺸﺘﺮي را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص ﻣﻲدﻫﺪ و در ﺿﻤﻦ ﻛﻤﻲ ﻫﻢ ﻛﻨﺪﺗﺮ
اﺳﺖ .اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ،اﺣﺘﻴﺎج ﺑﻪ Collationﻧﺪارﻧﺪ.
در اﻳﻦ ﻧﻮع داده ،اﻃﻼﻋﺎت از 1ﺗﺎ ﺣﺪاﻛﺜﺮ 4000ﺣﺮف ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ ذﺧﻴﺮه
)nchar(n
ﻣﻲﺷﻮد.
در اﻳﻦ ﻧﻮع داده ،اﻃﻼﻋﺎت از 1ﺗﺎ ﺣﺪاﻛﺜﺮ 4000ﺑﺎﻳﺖ ﺑﺎ ﻃﻮل ﻣﺘﻐﻴﺮ ذﺧﻴﺮه
)nvarchar(n
ﻣﻲﺷﻮد.
ﻣﻘﺪﻣﺎت SQL 13
در اﻳﻦ ﻧﻮع داده از 1ﺗﺎ 1ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد .ﻣﻜﺎﻧﻴﺰم آن ﻫﻢ ﺑﺼﻮرت
)nvarchar(max
Pointerﻣﻲﺑﺎﺷﺪ.
در اﻳﻦ ﻧﻮع داده ،از 1ﺗﺎ 1ﻣﮕﺎ ﺣﺮف ذﺧﻴﺮه ﻣﻲﺷﻮد .ﻣﻜﺎﻧﻴﺰم آن ﻫﻢ ﺑﺼﻮرت
ntext
Pointer .
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري اﻃﻼﻋﺎت ﺑﺼﻮرت ﺑﺎﻳﻨﺎري ﻣﺎﻧﻨﺪ ﺗﺼﺎوﻳﺮ ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ
ﻳﻚ ﻓﻴﻠﺪ دو ﺑﻴﺘﻲ اﺳﺖ و ﻣﻲﺗﻮاﻧﺪ 0و 1و Nullرا ذﺧﻴﺮه ﻛﻨﺪ.ﻛﺎرﺑﺮد آن در
bit
زﻣﺎنﻫﺎﻳﻲ اﺳﺖ ﻛﻪ دو ﺣﺎﻟﺖ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ .ﻣﺎﻧﻨﺪ ﺟﻨﺴﻴﺖ زن و ﻣﺮد.
)binary(n اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ،از 1ﺗﺎ 8000ﺑﺎﻳﺖ را در ﺧﻮد ﺟﺎي ﻣﻲدﻫﻨﺪ.
)varbinary(n اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﻫﻢ از 1ﺗﺎ 8000ﺑﺎﻳﺖ را در ﺧﻮد ﺟﺎي ﻣﻲدﻫﻨﺪ) .ﻣﺘﻐﻴﺮ).
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ از 1ﺗﺎ ﺣﺪاﻛﺜﺮ 2ﮔﻴﮕﺎﺑﺎﻳﺖ را ﻣﻲﺗﻮاﻧﻨﺪ ذﺧﻴﺮه ﻛﻨﻨﺪ .ﻓﺮق اﻳﻦ
ﻧﻮع دادهﻫﺎ ﺑﺎ دو ﻧﻮع ﻗﺒﻠﻲ اﻳﻦ اﺳﺖ ﻛﻪ در دو ﻧﻮع ﻗﺒﻠﻲ ،اﻃﻼﻋﺎت در ﺧﻮد
رﻛﻮرد ﺛﺒﺖ ﻣﻲﺷﻮﻧﺪ وﻟﻲ در اﻳﻦ ﻧﻮع دادهﻫﺎ ،اﻃﻼﻋﺎت در ﻳﻚ Pageذﺧﻴﺮه
image
ﻣﻲﺷﻮد و ﺑﻪ ﺟﺎﻳﺶ در رﻛﻮرد ،ﻳﻚ ﭘﻮﻳﻨﺘﺮ 16ﺑﺎﻳﺘﻲ ذﺧﻴﺮه ﻣﻲﺷﻮد .اﻳﻦ ﻧﻮع
ﻓﻴﻠﺪﻫﺎ در SQL 10ﺣﺬف ﺷﺪه و ﺑﻪ ﺟﺎﻳﺶ ﺑﺎﻳﺪ از VarBinaryاﺳﺘﻔﺎده
ﻛﺮد.
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري اﻋﺪاد ﺻﺤﻴﺢ و ﺑﺪون اﻋﺸﺎر اﺳﺘﻔﺎده ﻣﻲﮔﺮدد و داراي 4ﻧﻮع ﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ .در
ﺿﻤﻦ اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ رﺗﺒﻪ ﻳﻚ ﺳﺮﻋﺖ در ﻧﻮع ﻓﻴﻠﺪﻫﺎي ﻋﺪدي را دارد.
ﻣﻘﺪﻣﺎت SQL 14
tinyint ﻳﻚ ﺑﺎﻳﺖ را اﺷﻐﺎل ﻣﻲﻛﻨﺪ و ﻣﻲﺗﻮاﻧﺪ از 0ﺗﺎ 255را در ﺧﻮد ذﺧﻴﺮه ﻛﻨﺪ.
ﻳﻚ ﻋﺪد ﭼﻬﺎر ﺑﺎﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ اﻋﺪاد ﺑﻴﻦ ﻣﺜﺒﺖ و ﻣﻨﻔﻲ 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ﻧﮕﻬﺪاري ﻣﻲﺷﻮﻧﺪ..
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﺗﺎرﻳﺦ ﻣﻴﻼدي و ﺳﺎﻋﺖ اﺳﺘﻔﺎده ﻣﻲﺷﻮد و ﺑﺮاي ﺗﺎرﻳﺦ ﺷﻤﺴﻲ ﻛﺎرﺑﺮد ﻧﺪارد.
ﻣﻘﺪﻣﺎت SQL 15
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ 8 ،ﺑﺎﻳﺘﻲ اﺳﺖ و از ﺳﺎل 1700ﺗﺎ 9999را ﺑﺎ دﻗﺖ ﻫﺰارم ﺛﺎﻧﻴﻪ
datetime
ذﺧﻴﺮه ﻣﻲﻛﻨﺪ..
datetime2 .
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ 4 ،ﺑﺎﻳﺘﻲ اﺳﺖ و از ﺳﺎل 1900ﺗﺎ 2079را ﺑﺎ دﻗﺖ ﻫﺰارم ﺛﺎﻧﻴﻪ
smalldatetime
ذﺧﻴﺮه ﻣﻲﻛﻨﺪ..
date اﻳﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ﺑﺮاي ﻧﮕﻬﺪاري ﺗﺎرﻳﺦ ﻣﻴﻼدي اﺳﺘﻔﺎده ﻣﻲﺷﻮد.
datetimeoffset
timestamp
اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ﺑﺮاي ﻧﮕﻬﺪاري اﻧﻮاع داده اﺳﺘﻔﺎده ﻣﻲﺷﻮد و ﻧﻮع آن ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ
اوﻟﻴﻦ ﻣﻘﺪاري ﻛﻪ در آن ﻗﺮار ﻣﻲﮔﻴﺮد ﺗﻌﻴﻴﻦ ﺧﻮاﻫﺪ ﺷﺪ .ﭼﻮن ﻧﻮع و ﺣﺠﻢ
sql_variant ﻓﻴﻠﺪ ﻣﺸﺨﺺ ﻧﻴﺴﺖ ،ﻟﺬا ﺗﻨﻬﺎ ﻳﻚ اﺷﺎرهﮔﺮ 16ﺑﺎﻳﺘﻲ در آن ﻗﺮار ﮔﺮﻓﺘﻪ و داده
اﺻﻠﻲ در ﻓﺎﻳﻞ ﺟﺪاﮔﺎﻧﻪ ﻧﮕﻬﺪاري ﻣﻲﺷﻮد .اﺳﺘﻔﺎده از اﻳﻦ ﻧﻮع ﻓﻴﻠﺪ ،ﺗﻮﺻﻴﻪ
ﻧﻤﻲﮔﺮدد..
table .
دﺳﺘﻮراتSQL
دﺳﺘﻮرات SQL 18
دﺳﺘﻮر SELECTدرsql
دﺳﺘﻮر SELECTدر اﺳﻜﻴﻮال ﺑﺮاي اﻧﺘﺨﺎب و اﺳﺘﺨﺮاج اﻃﻼﻋﺎت ﻣﻮرد ﻧﻈﺮ از ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺟﺪول و ﺳﭙﺲ
ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ در ﻳﻚ ﺟﺪول ﻣﻮﻗﺖ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد:
)SELECT column_name(s
FROM table_name
SELECTدر اﻳﻨﺠﺎ ﺑﻪ ﻣﻔﻬﻮم ﻓﻌﻞ اﺳﺖ و ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ اﻃﻼﻋﺎﺗﻲ را
ﺑﺨﻮاﻧﻴﻢ.
SELECTﻓﻬﺮﺳﺖ ﺳﺘﻮﻧﻬﺎ ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ ﻛﻪ ﻗﺼﺪ ﺧﻮاﻧﺪن ﻛﺪام ﺳﺘﻮﻧﻬﺎ را از ﺑﺎﻧﻚ دارﻳﻢ در ﺻﻮرﺗﻲ
ﻛﻪ در اﻳﻦ ﻓﻬﺮﺳﺖ * ﻗﺮار دﻫﻴﻢ ﻛﻠﻴﻪ ﺳﺘﻮﻧﻬﺎي ﺟﺪول ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد.
ﺑﺎ اﺳﺘﻔﺎده از ﻛﻠﻤﻪ FROMﻣﺸﺨﺺ ﻣﻴﻜﻨﻴﻢ ﻛﻪ از ﻛﺪام ﺟﺪول ﻳﺎ ﺟﺪاول اﻳﻦ ﺳﺘﻮﻧﻬﺎ ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﺷﻮﻧﺪ
.
دﺳﺘﻮر * SELECT
دﺳﺘﻮر * SELECTﻫﻤﻪ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﺟﺪول را اﻧﺘﺨﺎب ﻣﻴﻜﻨﺪ.ﺑﺮاي اﻧﺘﺨﺎب ﻛﻠﻴﻪ ﺳﺘﻮن ﻫﺎي ﺟﺪول
در ﻗﺴﻤﺖ ﻧﺎم ﺳﺘﻮن ﺑﺎﻳﺪ ﻋﻼﻣﺖ * را ﮔﺬاﺷﺖ اﺳﺘﻔﺎده ﻛﺮد .
ﻧﻜﺘﻪ ﻣﻬﻢ :ﺑﺮﺧﻲ از ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﺠﺎي ﻧﻮﺷﺘﻦ ﺗﻤﺎم ﺳﺘﻮﻧﻬﺎﻳﻲ ﻛﻪ در ﺗﻬﻴﻪ ﮔﺰارش ﺑﻪ آﻧﻬﺎ اﺣﺘﻴﺎج دارﻧﺪ از *
اﺳﺘﻔﺎده ﻣﻴﻜﻨﻨﺪ ﻛﻪ اﻳﻦ ﻛﺎر ﺑﺎﻋﺚ ﺑﺎﻻ رﻓﺘﻦ ﺑﺎر ﺷﺒﻜﻪ ﺷﺪه و ﻛﺎراﻳﻲ ﺳﻴﺴﺘﻢ را ﭘﺎﻳﻴﻦ ﻣﻲ آورد ﻟﺬا ﺑﻬﺘﺮ اﺳﺖ
ﺑﺠﺎي اﺳﺘﻔﺎده از * ﻛﻤﻲ ﺑﺨﻮد زﺣﻤﺖ دﻫﻴﺪ و ﻟﻴﺴﺖ ﺗﻤﺎﻣﻲ ﺳﺘﻮﻧﻬﺎ را ﺑﻄﻮر ﻛﺎﻣﻞ ﻗﻴﺪ ﻛﻨﻴﺪ.
ﭼﻨﺎﻧﭽﻪ در ﺳﺘﻮن ﻫﺎي ﻣﻮرد ﺟﺴﺘﺠﻮ ،ﻣﻮارد ﺗﻜﺮاري وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ در ﻧﺘﻴﺠﻪ ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﺧﻮاﻫﻨﺪ
ﺷﺪ .ﺑﺮاي ﺟﻠﻮﮔﻴﺮي از ﭼﻨﻴﻦ ﻣﻮردي و ﻋﺪم ﻧﻤﺎﻳﺶ ﻣﻮارد ﺗﻜﺮاري ﭘﺲ از دﺳﺘﻮر
Selectﻋﺒﺎرت DISTINCTﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد.
دﺳﺘﻮرات SQL 19
ﻣﺜﺎل :ﺗﺼﻮر ﻛﻨﻴﺪ ﻳﻚ ﺟﺪول ﻣﺸﺘﺮي ﺑﺎ 1000رﻛﻮرد ﺑﺎ 90درﺻﺪ ﻣﺸﺘﺮي از ﻛﺎﻟﻴﻔﺮﻧﻴﺎ Query ،زﻳﺮ ﻛﺪ CAرا
9000ﺑﺎر ﺧﻮاﻫﺪ ﺑﺎز ﮔﺮداﻧﺪ ﻛﻪ اﺻﻼً ﻳﻚ ﻧﺘﻴﺠﻪ ﻣﻔﻴﺪي ﻧﻤﻲ ﺑﺎﺷﺪ.
ﻛﻠﻴﺪ واژه Distinctدر اﻳﻦ ﻣﻮﻗﻌﻴﺖ ﺷﻤﺎ را ﻛﻤﻚ ﻣﻲ ﻛﻨﺪ . Distinctﻛﻪ درﺳﺖ ﺑﻌﺪ از SELECTﻗﺮار ﻣﻲ
ﮔﻴﺮد ،ﺑﻪ SQL Serverدﺳﺘﻮر داده ﻛﻪ ﺳﻄﺮﻫﺎي ﺗﻜﺮاري در ﻧﺘﺎﻳﺞ را ﺣﺬف ﻧﻤﺎﻳﺪ .ﺑﻨﺎﺑﺮاﻳﻦ Queryزﻳﺮ ﻫﺮ ﻛﺪ
اﻳﺎﻟﺘﻲ را ﻓﻘﻂ ﻳﻚ ﺑﺎر ﺑﺎز ﻣﻲ ﮔﺮداﻧﺪ ﺑﻪ ﻃﻮر وﺿﻮح ﻟﻴﺴﺘﻲ ﻛﻪ ﺷﻤﺎ ﺟﺴﺘﺠﻮ ﻣﻲ ﻛﻨﻴﺪ.
ﻧﻜﺘﻪ :ﻫﻤﺘﺎي ﻛﻠﻴﺪ واژه All ، Distinctﻣﻲ ﺑﺎﺷﺪ ﻛﻪ SQL Serverرا ﺑﺮاي ﺑﺎزﮔﺮداﻧﺪن ﻫﻤﻪ ﺳﻄﺮﻫﺎ
آﮔﺎه ﻣﻲ ﺳﺎزد ﺧﻮاه آن واﺣﺪ ﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ . Allﭘﻴﺶ ﻓﺮض دﺳﺘﻮر selectاﺳﺖ ،ﭘﺲ ﻧﻴﺎزي ﺑﻪ ﻧﻮﺷﺘﻦ آن
ﻧﻴﺴﺖ.
دﺳﺘﻮر Whereﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﺷﺮط ﻳﺎ ﺷﺮط ﻫﺎﻳﻲ ﺟﻬﺖ ﻣﺤﺪود ﻛﺮدن ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ و ﻳﺎ اﺳﺘﺨﺮاج ﻧﺘﺎﻳﺞ
دﻗﻴﻘﺘﺮ ﺑﺮاي داﺷﺘﻦ ﺧﺮوﺟﻲ ﻛﻪ در ذﻫﻦ ﻣﺎ وﺟﻮد دارد اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .اﻳﻦ ذﺳﺘﻮر ﺑﺎﻳﺪ ﭘﺲ از دﺳﺘﻮر
Selectو ﺗﻌﻴﻴﻦ ﺳﺘﻮن ﻫﺎ از ﺟﺪول ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﻛﺎر رود.
ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎي OR ، ANDو ﭘﺮاﻧﺘﺰ ﻣﻲ ﺗﻮان ﭼﻨﺪﻳﻦ ﺷﺮط را ﺑﺎ ﻫﻢ ﺗﺮﻛﻴﺐ ﻛﺮد .ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎ
ﺷﺮط ﻫﺎﻳﻲ ﻛﻪ روي دﺳﺘﻮر داده ﺷﺪه اﺳﺖ ﻣﻄﺎﺑﻘﺖ داده ﺧﻮاﻫﺪ ﺷﺪ .
در ﻣﺜﺎل ﺑﺎﻻ ﻧﺎم و ﻓﺎﻣﻴﻠﻲ اﺷﺨﺎﺻﻲ ﻛﻪ ﻓﻴﻠﺪ IdNumberآﻧﻬﺎ ﺑﺮاﺑﺮ 1111ﺑﺎﺷﺪ ﺗﻮﺳﻂ دﺳﺘﻮر whereدر
اﺳﻜﻴﻮال ﺑﺮﮔﺮداﻧﺪه ﻣﻲ ﺷﻮﻧﺪ.
دﺳﺘﻮرات SQL 20
ﻋﻤﻠﮕﺮﻫﺎي Andو Orﺑﺮاي ﺗﺮﻛﻴﺐ ﺷﺮط ﻫﺎ در دﺳﺘﻮر Whereدر sqlاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .
ﮔﺎﻫﻲ اوﻗﺎت ﺧﺮوﺟﻲ ﻛﻪ ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ در اس ﻛﻴﻮال ﺑﺎﻳﺴﺘﻲ ﭼﻨﺪ ﺷﺮط ﻣﺨﺘﻠﻒ داﺷﺘﻪ ﺑﺎﺷﺪ .ﺑﻪ ﻃﻮر ﻣﺜﺎل
اﻓﺮادي را ﻣﻴﺨﻮاﻫﻴﻢ ﻛﻪ ﺳﻦ ﺑﺎﻻي 23ﺳﺎل و ﻣﺪرك ﺗﺤﺼﻴﻠﻲ ﺑﺎﻻي ﻟﻴﺴﺎﻧﺲ داﺷﺘﻪ ﺑﺎﺷﻨﺪ .در اﻳﻦ ﺣﺎﻟﺖ ﺑﺎﻳﺴﺘﻲ
ﻫﺮ ﻛﺪام از ﺷﺮط ﻫﺎ را ﺟﺪاﮔﺎﻧﻪ ﺗﻌﺮﻳﻒ ﻛﺮده و ﺳﭙﺲ آﻧﻬﺎ را ﺑﺎ ﻫﻢ ﺗﺮﻛﻴﺐ ﻛﻨﻴﻢ .ﺑﺮﻧﺎﻣﻪ ﻫﺮ ﻛﺪام از ﺷﺮط ﻫﺎ را
ﺑﺮرﺳﻲ ﻣﻴﻜﻨﺪ و ﺧﺮوﺟﻲ را ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ.
ﻋﻤﻠﮕﺮ Andﺑﺮاي اﺟﺮاي دﺳﺘﻮر ﻧﻴﺎز دارد ﺗﺎ ﺗﻤﺎم ﺷﺮط ﻫﺎي ﺗﻌﻴﻴﻦ ﺷﺪه ﺑﺮاي آن درﺳﺖ ﺑﺎﺷﺪ.
اﻃﻼﻋﺎﺗﻲ ﻛﻪ در دﺳﺘﻮر selectدر اﺳﻜﻴﻮال ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد ي ﺑﻲ ﻧﻈﻢ و ﻳﺎ ﺑﻬﺘﺮ ﺑﮕﻮﻳﻴﻢ
ﺑﺪون ﻧﻈﻢ ﻣﺪ ﻧﻈﺮ ﻣﺎ اﺳﺖ .ﻣﻘﺎدﻳﺮ ﺧﺮوﺟﻲ در ﺳﺘﻮن ﻫﺎي ﺟﺪول ﺑﺮ اﺳﺎس ﻣﻘﺪار ﻫﻴﺞ ﺳﺘﻮﻧﻲ ﻣﺮﺗﺐ ﻧﻤﻴﺸﻮﻧﺪ .ﺑﺎ
دﺳﺘﻮر دﺳﺘﻮر Order Byﻣﻴﺘﻮان اﻃﻼﻋﺎت ﺟﺪول را ﺑﺮ اﺳﺎس ﻣﻘﺎدﻳﺮ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﺑﺮﺣﺴﺐ ﺷﺎﺧﺺ ﻫﺎﻳﻲ
ﻣﺜﻞ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ ،ﺑﺰرﮔﺘﺮ ﻳﺎ ﻛﻮﭼﻜﺘﺮ ﺑﻮدن اﻋﺪاد و ...ﻣﺮﺗﺐ ﻛﺮد.
دﺳﺘﻮرات SQL 21
)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اﺳﺖ.
ﻧﻜﺘﻪ :ﻫﻤﭽﻨﻴﻦ اﻳﻦ ﻧﻴﺰ اﻣﻜﺎن ﭘﺬﻳﺮﺳﺖ ﻛﻪ ﻣﺮﺗﺐ ﺳﺎزي را ﺑﺮ ﻣﺒﻨﺎي ﺑﻴﺶ از ﻳﻚ ﺳﺘﻮن اﻧﺠﺎم دﻫﻴﺪ .ﺑﺮاي اﻳﻦ
ﻣﻨﻈﻮر ﺑﺨﺶ ﻣﺮﺗﺐ ﺳﺎزي ﻛﺪ ﺑﺎﻻ ﺑﺼﻮرت زﻳﺮ در ﻣﻴﺎﻳﺪ:
ﻣﺜﺎل:
ﺧﺮوﺟﻲ دﺳﺘﻮر ﺑﺎﻻ ،اﺷﺨﺎص ﺑﺎ ﺷﺮط ذﻛﺮ ﺷﺪه در دﺳﺘﻮر whereرا ﺑﺮ اﺳﺎس ﻧﺎم ﻓﺎﻣﻴﻠﻲ ﻣﺮﺗﺐ ﺻﻌﻮدي ﻣﻴﻜﻨﺪ.
از دﺳﺘﻮر Group Byدر اﺳﻜﻴﻮال ﺑﺮاي دﺳﺘﻪ ﺑﻨﺪي ﻳﻚ ﺳﺘﻮن ﺑﺮ ﺣﺴﺐ ﻣﻘﺎدﻳﺮ ﻣﺸﺎﺑﻪ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن
دﻳﮕﺮ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
در ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮﺧﻲ از ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ SQLﻛﻪ ﻋﻤﻞ ﻣﺤﺎﺳﺒﻪ ) ﻣﺜﻞ ﻣﺠﻤﻮع و ﻣﻴﺎﻧﮕﻴﻦ ( را ﺑﺮ روي
داده ﻫﺎ اﻧﺠﺎم ﻣﻲ دﻫﻨﺪ ،اﻳﻦ ﻣﺸﻜﻞ وﺟﻮد دارد ﻛﻪ اﻳﻦ ﺗﻮاﺑﻊ ﻗﺎدر ﺑﻪ ﺟﺪا ﻛﺮدن و ﻣﺘﻤﺎﻳﺰ ﻛﺮدن اﻃﻼﻋﺎت ﻣﻮﺟﻮد
در دو ﺳﺘﻮن ﻧﺴﺒﺖ ﺑﻪ ﻫﻢ ﻧﻴﺴﺘﻨﺪ و ﻧﺘﺎﻳﺞ ﻣﺤﺎﺳﺒﺎت را ﺑﻪ ﺻﻮرت ﻛﻠﻲ ﺑﺮاي ﻫﻤﻪ آﻧﻬﺎ در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻧﺪ .در اﻳﻦ
ﻣﻮاﻗﻊ از دﺳﺘﻮر Group Byاﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ.
دﺳﺘﻮر Group Byدر sqlوﻗﺘﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﻣﺎ در ﺣﺎل اﻧﺘﺨﺎب ﭼﻨﺪ ﺳﺘﻮن ﻫﺴﺘﻴﻢ و ﺣﺪاﻗﻞ
ﻳﻚ ﻋﻤﻠﮕﺮ ﻣﺤﺎﺳﺒﺎﺗﻲ در دﺳﺘﻮر selectدارﻳﻢ .در اﻳﻦ زﻣﺎن ﻣﺎ ﺑﺎﻳﺪ ﺗﻤﺎم ﺳﺘﻮﻧﻬﺎي دﻳﮕﺮ را ﮔﺮوه
ﻛﻨﻴﻢ.
ﻣﺜﺎل :در ﻣﺜﺎل زﻳﺮ ﻣﺠﻤﻮع ﻧﻤﺮات ﻫﺮ داﻧﺶ آﻣﻮز را ﺑﺼﻮرت ﮔﺮوه ﺑﻨﺪي ﺷﺪه ﺑﺮ اﺳﺎس ﻓﻴﻠﺪ ﻧﺎم داﻧﺶ آﻣﻮز ﺑﻪ
ﺧﺮوﺟﻲ داده ﻣﻲ ﺷﻮد :
ﻧﻜﺘﻪ :دﺳﺘﻮر group byدر اﺳﻜﻴﻮال از ﺟﻤﻠﻪ ي ﭘﺮﻛﺎرﺑﺮدﺗﺮﻳﻦ دﺳﺘﻮرات اﺳﺖ ﻛﻪ ﻳﺎدﮔﻴﺮي ﻛﺎﻣﻞ اﻳﻦ دﺳﺘﻮر ،
ﻣﻴﺘﻮاﻧﺪ ﺗﻔﺎوت اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺣﺮﻓﻪ اي در sqlﺑﺎﺷﺪ.
دﺳﺘﻮرات SQL 23
دﺳﺘﻮر Havingدر اﺳﻜﻴﻮال ﺑﺮاي اﻓﺰودن ﺷﺮط ﺑﻪ ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ SQLاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ،زﻳﺮا از دﺳﺘﻮر
Whereﻧﻤﻲ ﺗﻮان ﺑﺮاي ﻛﺎر ﺑﺎ ﻣﻘﺎدﻳﺮ ﺧﺮوﺟﻲ ﺗﻮاﺑﻊ درون ﺳﺎﺧﺘﻪ SQLاﺳﺘﻔﺎده ﻛﺮد .
ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ دﺳﺘﻮر Havingدر sqlﺑﺮاي اﻋﻤﺎل ﺷﺮط ﺑﻪ ﺳﺘﻮن ﻫﺎ اﻋﻤﺎل ﻣﻲ ﺷﻮد و ﻫﻤﺎن ﻛﺎري را ﻣﻲ ﻛﻨﺪ
ﻛﻪ Whereدر رﻛﻮردﻫﺎ اﻧﺠﺎم ﻣﻲ دﻫﺪ .دﺳﺘﻮر Havingﻣﻌﻤﻮﻻ ﺑﺎ دﺳﺘﻮر Group Byﻣﻲ آﻳﺪ.
ﻣﺜﺎل :در ﻣﺜﺎل زﻳﺮ ﻫﻤﭽﻮن ﻣﺜﺎل ﺑﺨﺶ دﺳﺘﻮر group byﻋﻤﻞ ﺷﺪه ،ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑﻌﺪ از ﮔﺮوه ﺑﻨﺪي ﺑﺮ
اﺳﺎس ﻧﺎم داﻧﺶ آﻣﻮزان و دادن ﺧﺮوﺟﻲ ﺟﻤﻊ ﻧﻤﺮات آﻧﻬﺎ ،ﺧﺮوﺟﻲ ﺷﺎﻣﻞ داﻧﺶ آﻣﻮزاﻧﻲ اﺳﺖ ﻛﻪ ﻣﺠﻤﻮع ﻧﻤﺮات
آﻧﻬﺎ ﺑﺎﻻﺗﺮ از 25ﺑﺎﺷﺪ:
ﻧﻜﺘﻪ ﻣﺜﺎل :در ﻣﺜﺎل ﺑﺎﻻ ﺑﻪ ﺟﺎي havingﻧﻤﻴﺘﻮان از whereاﺳﺘﻔﺎده ﻛﺮد و ﺑﺮاي اﻋﻤﺎل ﺷﺮط ﺑﺮ روي
ﻓﻴﻠﺪﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ آﻣﺪه در دﺳﺘﻮر group byﺑﺎﻳﺪ از ﺟﻤﻠﻪ ﺷﺮﻃﻲ havingاﺳﺘﻔﺎده ﻛﺮد.
دﺳﺘﻮر Insertدر sqlﺑﺮاي وارد ﻛﺮدن و اﻳﺠﺎد ﻳﻚ رﻛﻮرد ﺟﺪﻳﺪ در ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
ﻧﻜﺘﻪ :ﻣﻲ ﺗﻮان در دﺳﺘﻮر Insertدر اﺳﻜﻴﻮال ﺗﻌﻴﻴﻦ ﻛﺮد ﻛﻪ ﻣﻘﺎدﻳﺮ ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﻪ ﻛﺪام ﺳﺘﻮن ﻫﺎي
ﺟﺪول وارد ﺷﻮﻧﺪ .ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر اﺑﺘﺪا ﻧﺎم ﺳﺘﻮن ﻫﺎي ﻣﻮرد ﻧﻈﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ ﺟﻠﻮي ﻧﺎم ﺟﺪول در ﻳﻚ ﭘﺮاﻧﺘﺰ
وارد ﻛﺮده و ﺑﺎ ﻛﺎﻣﺎ از ﻫﻢ ﺟﺪا ﻣﻲ ﻛﻨﻴﻢ .ﺳﭙﺲ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﺎﻇﺮ را ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﻴﺐ ﭘﺲ از واژه Vauesدر ﭘﺮاﻧﺘﺰ
وارد ﻣﻲ ﻛﻨﻴﻢ.
ﻧﻜﺘﻪ :ﭼﻨﺎﻧﭽﻪ ﺑﺮاي ﻓﻴﻠﺪ ﻳﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻣﻘﺪاري در دﺳﺘﻮر insertدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻧﺸﻮد ،ﻣﻘﺎدﻳﺮ ﭘﻴﺶ ﻓﺮض
ﺗﻌﻴﻴﻦ ﺷﺪه و در ﺻﻮرت ﺗﻌﻴﻴﻦ ﻧﻜﺮدن ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض ﺟﺎي آﻧﻬﺎ در ﺟﺪول ﺧﺎﻟﻲ ﻣﻲ ﻣﺎﻧﺪ .ﻓﻘﻂ ﺑﺎﻳﺪ ﺑﻪ ﺗﺮﺗﻴﺐ
ﻧﺎم ﺳﺘﻮن ﻫﺎ و ﻣﻘﺎدﻳﺮ دﻗﺖ ﻛﺮد.
در ﻣﺜﺎل ﺑﺎﻻ ﻧﺎم Saeedدر ﻓﻴﻠﺪ Nameو ﻧﺎم Rajabiدر ﻓﻴﻠﺪ Familyﻣﻴﺮود .ﺑﻘﻴﻪ ي ﻓﻴﻠﺪ ﻫﺎ در ﺻﻮرت
ﺗﻌﻴﻴﻦ ﻛﺮدن ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض آن ﻣﻘﺪار را ﻣﻴﮕﻴﺮﻧﺪ و در ﺻﻮرت ﺗﻌﻴﻴﻦ ﻧﻜﺮدن آن ،ﻣﻘﺪار ﺧﺎﻟﻲ ﻳﺎ Null
ﻣﻴﮕﻴﺮﻧﺪ.
دﺳﺘﻮر Updateدرsql
دﺳﺘﻮر Updateدر اﺳﻜﻴﻮال ﺑﺮاي ﺗﻐﻴﻴﺮ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ و ﺟﺎﻳﮕﺰﻳﻨﻲ آن ﺑﺎ ﻳﻚ ﻣﻘﺪار ﺟﺪﻳﺪ ﺑﻪ ﻛﺎر
ﻣﻲ رود .وﻳﺮاﻳﺶ اﻃﻼﻋﺎت در ﺑﺎﻧﻚ اس ﻛﻴﻮال از ﺟﻤﻠﻪ ﻣﻬﻤﺘﺮﻳﻦ اﻋﻤﺎل ﻫﺴﺖ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر
Updateاﻣﻜﺎن ﭘﺬﻳﺮ ﻣﻲ ﺑﺎﺷﺪ.
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Update Person
" Set Name = " bahar" , Family = " shokri" , id-number=" 11
Where ID =3222
Update Person
" Set Name =" Ali
" Where Name = " Ahmad
دﺳﺘﻮر Deleteدر sqlﺑﺮاي ﺣﺬف اﻃﻼﻋﺎت ﻳﻚ رﻛﻮرد در ﺟﺪول ﺑﺎﻧﻚ اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .از دﺳﺘﻮر
deleteﺑﺎﻳﺪ ﺑﺎ دﻗﺖ اﺳﺘﻔﺎده ﺷﻮد زﻳﺮا اﻣﻜﺎن ﺑﺎزﮔﺮداﻧﺪن رﻛﻮرد ﻫﺎي ﺣﺬف ﺷﺪه ﺑﻪ اﻳﻦ راﺣﺘﻲ ﻫﺎ ﻧﻴﺴﺖ!
ﺑﺮاي ﭘﺎك ﻛﺮدن ﻳﻚ رﻛﻮرد ﺑﺎ ﺷﻨﺎﺳﻪ ﻣﺸﺨﺺ از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ.
دﺳﺘﻮر * Delete
اﻳﻦ اﻣﻜﺎن وﺟﻮد دارد ﻛﻪ ﺑﺎ دﺳﺘﻮر * Deleteﺑﺪون ﺣﺬف ﻳﻚ ﺟﺪول ،ﻛﻠﻴﻪ رﻛﻮردﻫﺎي درون آن را ﭘﺎك ﻛﺮد.
دﺳﺘﻮر TOPدرsql
دﺳﺘﻮر topدر sqlﺑﺮاي ﺟﺪاوﻟﻲ ﻛﻪ ﺑﺎﻻي ﻫﺰاران رﻛﻮرد دارﻧﺪ ﺑﺴﻴﺎر ﻣﻔﻴﺪ ﻣﻴﺒﺎﺷﺪ .ﺧﺮوﺟﻲ ﺑﺎ ﺗﻌﺪاد رﻛﻮردﻫﺎي
ﺑﺎﻻ ﺑﺮ روي ﻛﺎراﻳﻲ ﺑﺮﻧﺎﻣﻪ ي ﻣﺮﺗﺒﻂ ﺑﺎ sqlﻣﻤﻜﻦ اﺳﺖ ﺗﺎﺛﻴﺮ ﺑﮕﺬارد.
ﻣﺜﺎل :ﺑﺎ ﻣﺜﺎل زﻳﺮ ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ 50درﺻﺪ از رﻛﻮردﻫﺎ در ﺟﺪول ﺑﺎﻻ را اﻧﺘﺨﺎب ﻛﻨﻴﻢ:
ﻋﻤﻠﮕﺮ LikeدرSQL
ﻋﻤﻠﮕﺮ Likeدر ﺷﺮﻃﻬﺎي ، sqlﺑﺮاي اﻟﮕﻮي ﺧﺎص ﺟﺴﺘﺠﻮ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻴﮕﻴﺮد .ﺳﺎﺧﺘﺎر دﺳﺘﻮر likeدر
اﺳﻜﻴﻮال ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ:
)SELECT column_name(s
FROM table_name
WHERE column_name LIKE pattern
ﻣﺜﺎل :دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎ ﺑﺎ ﺣﺮف sﺷﺮوع ﻣﻴﺸﻮﻧﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ.
ﻣﺜﺎل :دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎ ﺑﻪ ﺣﺮف sﺧﺘﻢ ﻣﻴﺸﻮﻧﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ.
ﻣﺜﺎل :دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎﺷﺎﻣﻞ ﺣﺮف stﻣﻴﺒﺎﺷﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ.
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 28
ﻣﺜﺎل :دﺳﺘﻮر زﻳﺮ اﻓﺮادي ﻛﻪ ﺷﻬﺮ آﻧﻬﺎﺷﺎﻣﻞ ﺣﺮف stﻧﻤﻴﺒﺎﺷﺪ را اﻧﺘﺨﺎب ﻣﺒﻜﻨﺪ.
ﻧﻜﺘﻪ :در ﻣﻘﺎﻟﻪ ي ﺑﻌﺪي ﻋﻼﻣﺖ ﻫﺎي ﺷﺮﻃﻲ در Likeرا ﺗﻮﺿﻴﺢ ﺧﻮاﻫﻴﻢ داد.
ﻳﺎدآوري از دﺳﺘﻮر Like :ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﻣﻘﺎﻟﻪ ي ﻗﺒﻠﻲ در ﻣﻮرد دﺳﺘﻮر likeدر sqlﮔﻔﺘﻪ ﺷﺪ ،ﻫﻨﮕﺎم
ﻛﺎرﻛﺮدن ﺑﺎ رﺷﺘﻪ ﻫﺎ ﻫﻤﻴﺸﻪ ﺧﻮاﻫﺎن ﻣﻄﺎﺑﻘﺖ ﻛﺎﻣﻞ رﺷﺘﻪ ﻫﺎ ﻧﻴﺴﺘﻴﻢ ،ﺑﻠﻜﻪ ﺑﺨﺸﻲ از رﺷﺘﻪ ﻳﺎ اﻟﮕﻮي ﺧﺎﺻﻲ از آن
ﺑﻴﺸﺘﺮ ﻣﻮردﻧﻈﺮ اﺳﺖ .در اﻳﻦ ﻫﻨﮕﺎم ﻣﻲ ﺗﻮان از دﺳﺘﻮر LIKEدر ﺷﺮط ﻫﺎي اﺳﻜﻴﻮال ،ﺑﻪ ﺟﺎي
ﻋﻼﻣﺖ = اﺳﺘﻔﺎده ﻛﺮد.
در دﺳﺘﻮر ، likeدو ﻛﺎراﻛﺘﺮ %و _ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﻪ ﻣﻌﻨﻲ ﭼﻨﺪ ﻛﺎراﻛﺘﺮ و ﻳﻚ ﻛﺎراﻛﺘﺮ را ﺑﺮاي ﺗﻄﺎﺑﻖ ﻣﻲ ﺗﻮان ﺑﻜﺎر
ﺑﺮد.
ﻣﺜﺎل :اﺳﺎﻣﻲ ﻛﻠﻴﻪ ﻣﺸﺘﺮﻳﺎﻧﻲ ﻛﻪ آدرس آﻧﻬﺎ ﺷﺎﻣﻞ ﻛﻠﻤﻪ 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ﻣﺸﺨﺼﺎت اﻓﺮادي را ﺑﺪﻫﻴﺪ ﻛﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﻲ آﻧﻬﺎ رﺟﺒﻲ ﻳﺎ ﻳﻮﺳﻔﻲ اﺳﺖ:
ﻋﻤﻠﮕﺮ BETWEENدر sqlﺑﺮاي اﻧﺘﺨﺎب اﻃﻼﻋﺎت در ﻳﻚ ﻣﺤﺪوده ﺧﺎص ،در ﺑﻴﻦ دو ﻣﻘﺪار ﺗﻌﻴﻴﻦ ﺷﺪه
اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .اﻳﻦ ﻣﻘﺎدﻳﺮ ﻣﻲ ﺗﻮاﻧﺪ از ﻧﻮع ﻋﺪدي ،ﻣﺘﻦ ﻳﺎ ﺗﺎرﻳﺦ ﺑﺎﺷﺪ.
ﻧﻜﺘﻪ ﻣﻬﻢ در ﻣﻮرد دﺳﺘﻮر Betweenدر sqlاﻳﻨﺴﺖ ﻛﻪ ﺑﺎﻳﺪ ﻧﻮع ﻣﺪﻧﻈﺮ ﺑﺎ ﻧﻮع داده اي ﻓﻴﻠﺪ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه
ﺑﺎﺷﺪ. ﻳﻜﺴﺎن دﺳﺘﻮر در
ﻧﻜﺘﻪ ي دﻳﮕﺮ در ﻣﻮرد Betweenدر ﻣﻮرد داده ﻫﺎي ﻣﺘﻨﻲ ،ﺗﺮﺗﻴﺐ ﻗﺮار ﮔﻴﺮي ﺣﺮوف اﻟﻔﺒﺎ ﻣﺪ ﻧﻈﺮ ﺑﺮﻧﺎﻣﻪ اﺳﺖ.
)SELECT column_name(s
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
ﻣﺜﺎل :ﺑﺮاي ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت درون ﻣﺤﺪوده ﺗﻌﻴﻴﻦ ﺷﺪه ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ :
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 30
ﻣﺜﺎل :ﺑﺮاي ﻧﻤﺎﻳﺶ اﻃﻼﻋﺎت ﺧﺎرج از ﻣﺤﺪوده ﺗﻌﻴﻴﻦ ﺷﺪه از ﻳﻚ ﻋﻤﻠﮕﺮ NOTﻗﺒﻞ از دﺳﺘﻮر Between ...
Andاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
زﻣﺎﻧﻲ ﻛﻪ ﺑﺎ دﺳﺘﻮر selectدر sqlﻳﻚ ﻛﻮﺋﺮي اﺟﺮا ﻛﺮده اﻳﻢ ﻧﺎم ﻳﺎ ﻋﻨﻮاﻧﻲ ﻛﻪ در ﺑﺎﻻي ﻫﺮ ﺳﺘﻮن در ﺧﺮوﺟﻲ
ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد ،ﻫﻤﺎن ﻧﺎم ﻓﻴﻠﺪ ﻣﺮﺑﻮط ﺑﻪ داده در ﺟﺪول اﺻﻠﻲ ﭘﺎﻳﮕﺎه داده اﺳﺖ.
ﮔﺎﻫﻲ اوﻗﺎت ﻣﻴﺨﻮاﻫﻴﻢ ﻧﺎم ﺳﺘﻮن ﻣﺎ در ﺧﺮوﺟﻲ ﺑﺮاﺑﺮ ﺑﺎ ﻧﺎم دﻟﺨﻮاه ﻣﺎ ﺑﺎﺷﺪ ﻳﺎ در ﻣﻮاردي ﻛﻪ در
ﺑﺨﺸﺘﻮاﺑﻊ SQLﺧﻮاﻫﻴﻢ دﻳﺪ ،ﻳﻚ ﺳﺘﻮن ﺟﺪﻳﺪ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺑﺎﻳﺪ ﻧﺎﻣﻲ ﺑﺮاي آن ﺗﻌﻴﻴﻦ ﺷﻮد در
اﻳﻦ ﻣﻮارد ازوﻳﮋﮔﻲ Aliasاﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ .
از وﻳﮋﮔﻲ Aliasﺑﺮاي در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﻳﻚ ﻧﺎم ﻣﺴﺘﻌﺎر و ﻣﺠﺎزي ﺑﺮاي ﻗﺮار ﮔﺮﻓﺘﻦ در ﺑﺨﺶ ﻋﻨﻮان ﻫﺮ ﺳﺘﻮن در
ﺧﺮوﺟﻴﺪﺳﺘﻮر Selectدر اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
ﺗﻌﺮﻳﻒ Aliasﺑﺮاي ﺟﺪاول sql :ﻛﻠﻤﻪ ﻛﻠﻴﺪي asدر اﺳﻜﻴﻮال اﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲ دﻫﺪ.
)SELECT column_name(s
FROM table_name
AS alias_name
ﻣﺜﺎل:
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 31
ﻣﻲ ﺗﻮان ﺑﺮ روي ﻣﻘﺎدﻳﺮ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده ﻋﺪدي دارﻧﺪ ،ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ) ﻣﺜﻞ ﺿﺮب ،ﺗﻘﺴﻴﻢ و ( ...اﻧﺠﺎم
داده و ﺳﭙﺲ ﻧﺘﺎﻳﺞ ﻣﺤﺎﺳﺒﺎت را در ﻳﻚ ﺳﺘﻮن ﺟﺪﻳﺪ ﺑﺎ ﻋﻨﻮان دﻟﺨﻮاه ﺗﻌﻴﻴﻦ ﺷﺪه ﺗﻮﺳﻂ وﻳﮋﮔﻲ Aliasدر
ﺧﺮوﺟﻲ دﺳﺘﻮر Selectﻧﻤﺎﻳﺶ داد .در اﻳﻦ ﺣﺎﻟﺖ ﺳﺘﻮن ﻳﺎ ﺳﺘﻮن ﻫﺎي ﺑﻪ ﺟﺪول ﺧﺮوﺟﻲ اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد.
از ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات Joinدر اﺳﻜﻴﻮال ،ﺑﺮاي ﭘﻴﻮﻧﺪ ﺟﺪول ﻫﺎ در ﭘﺎﻳﮕﺎه داده ﻫﺎ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .از دﺳﺘﻮر
ﻫﺎي ، Joinﺑﺮاي ارﺗﺒﺎط ﺑﻴﻦ ﭼﻨﺪﻳﻦ ﺟﺪول ﻛﻪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ارﺗﺒﺎط دارﻧﺪ ،درواﻗﻊ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ ﺑﺮاي آﻧﻬﺎ ﺗﻌﺮﻳﻒ
ﺷﺪه اﺳﺖ ،ﻣﻴﺘﻮان اﺳﺘﻔﺎده ﻛﺮد.
دﺳﺘﻮر 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در اس ﻛﻴﻮ ال از ﺑﻴﻦ ﺳﻄﺮﻫﺎﻳﻲ اﻧﺘﺨﺎب ﻣﻴﺸﻮد ﻛﻪ ﺣﺪاﻗﻞ ﻳﻚ راﺑﻄﻪ در ﻫﺮ
دو ﺟﺪول وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ.
ﺗﻔﺎوت دﺳﺘﻮر 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ﻧﻤﺎﻳﺶ داده ﻧﻤﻴﺸﻮﻧﺪ.
ﭼﭗ اﻧﺘﺨﺎب ﺳﻤﺖ از از ﺟﺪول اﺳﻜﻴﻮال LEFTدر دﺳﺘﻮر JOIN ﺧﺮوﺟﻲ
ﻣﻴﺸﻮد ،ﺣﺘﻲ اﮔﺮ ﻫﻴﭻ راﺑﻄﻪ اي ﺑﺎ ﺟﺪول ﺳﻤﺖ راﺳﺖ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ.
)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
در ﺻﻮرت ﻧﺪاﺷﺘﻦ راﺑﻄﻪ ي ﺑﻌﻀﻲ اي رﻛﻮرد ﻫﺎ ﺑﺎ ﺟﺪول ﺳﻤﺖ راﺳﺖ ،ﻓﻴﻠﺪ ﻫﺎي آن nullاﻧﺘﺨﺎب ﻣﻴﺸﻮﻧﺪ ﻛﻪ
ﺑﺎ ﺗﺮﻛﻴﺐ آن ﺑﺎ دﺳﺘﻮر isNullدر اﺳﻜﻴﻮل ﻣﻴﺘﻮاﻧﻴﺪ ﺧﺮوﺟﻲ ﻫﺎي دﻟﺨﻮاه ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر left
joinﺑﺪﺳﺖ آورﻳﺪ
ﺧﺮوﺟﻲ دﺳﺘﻮر 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ﻗﺮار دارد و ﺧﺮوﺟﻲ ﻫﺎ
ﺑﺮ اﺳﺎس اﻳﻦ ﺟﺪول ﺗﻨﻈﻴﻢ ﻣﻴﺸﻮد.
در ﺻﻮرت ﻧﺪاﺷﺘﻪ راﺑﻄﻪ ي ﺑﻌﻀﻲ اي رﻛﻮرد ﻫﺎ ﺑﺎ ﺟﺪول ﺳﻤﺖ ﭼﭗ ،ﻓﻴﻠﺪ ﻫﺎي آن nullاﻧﺘﺨﺎب ﻣﻴﺸﻮﻧﺪ ﻛﻪ ﺑﺎ
ﺗﺮﻛﻴﺐ آن ﺑﺎ دﺳﺘﻮر isNullدر اﺳﻜﻴﻮل ﻣﻴﺘﻮاﻧﻴﺪ ﺧﺮوﺟﻲ ﻫﺎي دﻟﺨﻮاه ﺧﻮد را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر right
joinﺑﺪﺳﺖ آورﻳﺪ.
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 35
ﺧﺮوﺟﻲ دﺳﺘﻮر 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در اﺳﻜﻴﻮال ،ﻫﻤﻪ ي اﻓﺮاد ﺑﺎ ﺳﻔﺎرش ﻫﺎﻳﺸﺎن و
ﻫﻤﻪ ي ﺳﻔﺎرﺷﺎت ﺑﺎ اﻓﺮاد ﻣﺮﺑﻮط ﺑﻪ آﻧﻬﺎ را در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﻴﻢ.
دﺳﺘﻮر UNIONدرsql
از دﺳﺘﻮر Unionﺑﺮاي ﺗﺮﻛﻴﺐ و ادﻏﺎم دو ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﻣﺨﺘﻠﻒ از 2ﻳﺎ ﭼﻨﺪ ﺟﺪول و ﻧﺸﺎن دادن آﻧﻬﺎ در ﻳﻚ
ﺷﻮد . ﻣﻲ اﺳﺘﻔﺎده ﻣﺸﺘﺮك ﺳﺘﻮن
در دﺳﺘﻮر ، unionﻧﻮع داده اي ﺳﺘﻮن ﻫﺎي اﻧﺘﺨﺎب ﺷﺪه ﺑﺮاي ﺗﺮﻛﻴﺐ ﺑﺎﻳﺪ ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ.
دﺳﺘﻮر Unionدر ﻫﻨﮕﺎم ﺗﺮﻛﻴﺐ ﻓﻴﻠﺪ ﻫﺎ ،در ﺻﻮرت ﺑﺮﺧﻮرد ﺑﺎ ﻣﻘﺎدﻳﺮ ﺗﻜﺮاري آﻧﻬﺎ را ﺣﺬف ﻛﺮده و از ﻫﺮ ﻣﻘﺪار
ﻳﻚ ﻧﻤﻮﻧﻪ را ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﺪ .ﺳﺎﺧﺘﺎر دﺳﺘﻮر unionﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ:
ﻣﺜﺎل:
ﺑﺮاي ﻣﺸﺎﻫﺪه ﺗﻤﺎم ﻣﻘﺎدﻳﺮ ،ﺣﺘﻲ ﻣﻘﺎدﻳﺮ ﺗﻜﺮاري ﺑﺎﻳﺪ از دﺳﺘﻮر Union ALLاﺳﺘﻔﺎده ﻛﺮد
ﻣﺜﺎل:
در آﻣﻮزش ، sqlدﺳﺘﻮر unionو دﺳﺘﻮر union allﻛﺎرﺑﺮد ﻫﺎي وﻳﮋه و ﺧﺎﺻﻲ دارﻧﺪ.
ﺗﻤﺎﻣﻲ ﻣﺜﺎﻟﻬﺎي زﻳﺮ ﻧﺤﻮه اﺳﺘﻔﺎده از دﺳﺘﻮر select intoرا ﻧﺸﺎن ﻣﻴﺪﻫﺪ:
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 37
در اﻳﻦ ﻣﺜﺎل )ﺳﺎﺧﺘﺎر( ﻣﺎ ﻣﻲ ﻣﻴﺨﻮاﻫﻴﻢ ﺑﺮﺧﻲ از رﻛﻮردﻫﺎ ﻳﺎ ﻓﻴﻠﺪﻫﺎي ﻣﻮرد ﻧﻈﺮ از ﻳﻚ ﺟﺪول در ﻳﻚ
در اﻳﻦ ﻣﺜﺎل )ﺳﺎﺧﺘﺎر( ﻣﺎ ﺗﻨﻬﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ ﺳﺘﻮن ﻫﺎ را ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ اﻧﺘﺨﺎب ﻛﻨﻴﻢ:
)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ﺑﻪ
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
'WHERE City='Sandnes
اﻧﺘﺨﺎب داده از ﺑﻴﺶ از ﻳﻚ ﺟﺪول ﻫﻢ در دﺳﺘﻮر select intoاﻣﻜﺎن ﭘﺬﻳﺮ اﺳﺖ .در ﻣﺜﺎل زﻳﺮ ﺟﺪول
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اﺳﺖ.
ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر is nullدر sqlﻣﻴﺘﻮاﻧﻴﻢ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ ﻣﻘﺎدﻳﺮ ﺗﻬﻲ دارﻧﺪ را ﺑﺎ در دﺳﺘﻮر Selectاﻧﺘﺨﺎب
ﻛﻨﻴﻢ.
ﻣﻘﺪار nullاز ﺟﻤﻠﻪ ﻣﻘﺎدﻳﺮي اﺳﺖ ﻛﻪ زﻳﺎد ﺑﺎﻫﺎش در آﻣﻮزش sqlﺳﺮ و ﻛﺎر ﺧﻮاﻫﻴﻢ داﺷﺖ.
ﻧﻜﺘﻪ ي ﺑﺴﻴﺎري ﻣﻬﻢ در ﻣﻮرد nullﻳﺎ ﺗﻬﻲ اﻳﻨﺴﺖ ﻛﻪ اﻳﻦ ﻣﻘﺪار ﺑﺎ ﻣﻘﺪار رﺷﺘﻪ اي spaceﻳﺎ ' ' ﺗﻔﺎوت
ﻛﺎﻣﻞ دارد .ﻫﻤﭽﻨﻴﻦ nullرا ﻧﺒﺎﻳﺪ ﺑﺎ ﻣﻘﺪار رﺷﺘﻪ اي آن ﻳﻌﻨﻲ ' 'nullاﺷﺘﺒﺎه ﺑﮕﻴﺮﻳﻢ.
دﺳﺘﻮر ISNULLدرsql
دﺳﺘﻮرات ﭘﻴﺸﺮﻓﺘﻪ SQL 39
از دﺳﺘﻮر ISNULLدر اﺳﻜﻴﻮال زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﻛﻪ ﺷﻤﺎ ﻣﻴﺨﻮاﻫﻴﺪ ﺗﻤﺎم ﻓﻴﻠﺪﻫﺎي nullرا در ﺧﺮوﺟﻲ
داﺷﺘﻪ ﺑﺎﺷﻴﺪ.
ﺳﺎﺧﺘﺎر دﺳﺘﻮر is nullﺑﻪ ﻫﻤﺮاه ﻣﺜﺎل آن ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ ﻛﻪ در اﻳﻦ ﻣﺜﺎل ﺗﻤﺎم رﻛﻮردﻫﺎﻳﻲ ﻛﻪ ﺣﺎوي ﻓﻴﻠﺪ
آدرس nullﻫﺴﺘﻨﺪ اﻧﺘﺨﺎب ﻣﻲ ﺷﻮﻧﺪ.
ﺑﺮ ﻋﻜﺲ دﺳﺘﻮر is nullدر ، sqlدﺳﺘﻮر is not Nullﻫﺴﺖ ﻛﻪ ﻣﻘﺎدﻳﺮي را ﺑﺮﻣﻴﮕﺮداﻧﺪ ﻛﻪ Null
ﻧﺒﺎﺷﺪ ﻛﻪ ﺑﻴﺸﺘﺮ از اﻳﻦ ﺷﻜﻞ از اﻳﻦ دﺳﺘﻮر اﺳﺘﻔﺎده ﻣﺸﻮد.
ﻣﺜﺎل :در ﻣﺜﺎل زﻳﺮ رﻛﻮردﻫﺎﻳﻲ ﻛﻪ آدرس آﻧﻬﺎ ﺗﻬﻲ ) ( nullﻧﻴﺴﺘﻨﺪ ،اﻧﺘﺨﺎب و در ﺧﺮوﺟﻲ اﻳﻦ دﺳﺘﻮر در
اﺳﻜﻴﻮال ﻣﻲ روﻧﺪ.
ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ در ﭘﺎﻳﮕﺎه داده ، sqlاز دﺳﺘﻮر Create Tableاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ .
ﺑﺮاي اﻳﺠﺎد ﺟﺪول در اﺳﻜﻴﻮال ﺑﺎﻳﺴﺘﻲ ﻧﻜﺎت زﻳﺮ را در ﻧﻈﺮ ﮔﺮﻓﺖ:
ﺳﺎﺧﺘﺎر دﺳﺘﻮر create tableدر sqlدر ﺳﺎده ﺗﺮﻳﻦ ﺣﺎﻟﺖ ،ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ:
ﺑﺮاي ﻣﺜﺎل ﺑﺮاي اﻳﺠﺎد ﺟﺪول Personsﺑﺎ ﻓﻴﻠﺪﻫﺎي زﻳﺮ ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ:
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
)City varchar(255
)
ﺗﻤﺎﻣﻲ ﺟﺪول ﻫﺎ ،اﻧﺪﻳﺲ ﻫﺎ ،و ﺣﺘﻲ دﻳﺘﺎﺑﻴﺲ ﻫﺎ ﻣﻴﺘﻮاﻧﻨﺪ ﺑﺎ دﺳﺘﻮر Dropدر sqlﺣﺬف ﺷﻮﻧﺪ .ﺷﻴﻮه ﻫﺎي
اﺳﺘﻔﺎده ازدﺳﺘﻮر dropدر sqlﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ:
دﺳﺘﻮرDrop Index
از دﺳﺘﻮر DROP INDEXﺑﺮاي ﺣﺬف ﻳﻚ اﻧﺪﻳﺲ ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
دﺳﺘﻮرDrop Table
از دﺳﺘﻮر DROP TABLEﺑﺮاي ﺣﺬف ﻳﻚ ﺟﺪول در ﭘﺎﻳﮕﺎه داده اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
دﺳﺘﻮرDrop Database
از دﺳﺘﻮر DROP DATABASEﺑﺮاي ﺣﺬف ﻳﻚ ﭘﺎﻳﮕﺎه داده ﺑﻪ ﺻﻮرت ﻛﺎﻣﻞ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد
دﺳﺘﻮرTRUNCATE
ﺑﺮاي ﺣﺬف ﻛﻠﻴﻪ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﻳﻚ ﺟﺪول ﺑﺪون ﺣﺬف ﺳﺘﻮن ﻫﺎي آن از دﺳﺘﻮر TRUNCATEاﺳﺘﻔﺎده
ﻣﻲ ﻛﻨﻴﻢ:
اﻳﻦ دﺳﺘﻮر ﺑﺎﻋﺚ ﺧﺎﻟﻲ ﺷﺪن ﺟﺪول از اﻃﻼﻋﺎت ﻣﻲ ﺷﻮد ،ﺑﺪون اﻳﻨﻜﻪ ﺧﻮد آن و ﺳﺎﺧﺘﺎرش ﺗﻐﻴﻴﺮي ﻛﻨﺪ .
ﻣﺜﺎل:
از دﺳﺘﻮر Create Indexدر اﺳﻜﻴﻮال ﺑﺮاي اﻳﺠﺎد اﻧﺪﻳﺲ در ﺳﺘﻮن ﻫﺎي ﺟﺪول اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
در ﻳﻚ ﺟﺪول ﻣﻲ ﺗﻮان ﺑﺮاي ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺳﺘﻮن ﺟﺪول اﻧﺪﻳﺲ اﻳﺠﺎد ﻛﺮد ،ﻛﻪ اﻳﻦ اﻧﺪﻳﺲ ﻫﺎ ﺑﺎﻋﺚ ﺑﺎﻻ رﻓﺘﻦ
ﺳﺮﻋﺖ ﺟﺴﺘﺠﻮ در رﻛﻮردﻫﺎي ﺟﺪول ﻣﻲ ﺷﻮد .
اﻧﺪﻳﺲ ﻳﻚ ﺷﻤﺎره اﺳﺖ ﻛﻪ ﺑﻪ ﻫﺮ ﺳﻄﺮ ﺟﺪول اﺧﺘﺼﺎص داده ﻣﻲ ﺷﻮد و ﻣﻌﻤﻮﻻ از ﺻﻔﺮ ﺷﺮوع ﻣﻲ ﺷﻮد .اﻧﺪﻳﺲ
ﻫﺎ از دﻳﺪ ﻛﺎرﺑﺮ ﻣﺨﻔﻲ ﻫﺴﺘﻨﺪ و ﻫﺮ اﻧﺪﻳﺲ ﻳﻚ ﻧﺎم ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد دارد.
ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ﺑﺎ داده ﻫﺎي ﺗﻜﺮاري ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ:
ﻣﺜﺎل:
ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ﻳﺎ ، indexﺑﺎ داده ﻫﺎي ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ) (uniqueﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻴﻜﻨﻴﻢ:
ﺑﺮاي اﻳﺠﺎد ﻳﻚ اﻧﺪﻳﺲ ) ( indexﺑﺮاي ﺑﻴﺶ از ﻳﻚ ﻓﻴﻠﺪ ،ﺑﺎﻳﺪ ﻧﺎم ﻓﻴﻠﺪ ﻫﺎي ﻣﻮرد ﻧﻈﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ در ﭘﺮاﻧﺘﺰ
ﺑﻌﺪ از ﻧﺎم ﺟﺪول وارد ﻛﺮد.
از دﺳﺘﻮر Alter Tableﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﻳﺎ ﺣﺬف ﻛﺎﻣﻞ ﻳﻚ ﺳﺘﻮن از ﻳﻚ ﺟﺪول و ﻳﺎ ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻓﻴﻠﺪ
ﻣﻮﺟﻮد در ﭘﺎﻳﮕﺎه داده sqlاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.
ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﻳﻚ ﺳﺘﻮن ) ﻓﻴﻠﺪ ( ﺟﺪﻳﺪ ﺑﻪ ﻳﻚ ﺟﺪول ﻣﻮﺟﻮد در اﺳﻜﻴﻮال از دﺳﺘﻮر ALTER
TABLEاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد:
ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﻮع داده ي ﻳﻚ ﻓﻴﻠﺪ از ﺟﺪول در اﺳﻜﻴﻮال از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ:
ﻫﻤﺎﻧﻄﻮر ﻛﻪ دﻳﺪﻳﺪ ،دﺳﺘﻮر alter tableﻳﻜﻲ از ﻣﻬﻤﺘﺮﻳﻦ دﺳﺘﻮرات در sqlاﺳﺖ ﻛﻪ ﺑﺎ 3ﭘﺎراﻣﺘﺮ و ﻛﻠﻤﻪ ي
ﻛﻠﻴﺪي زﻳﺮ ،ﺗﻐﻴﻴﺮات ﺟﺪول را ﺑﺎ اﺳﺘﻔﺎده از ﻛﺪ در sqlراﺣﺖ ﻣﻴﻜﻨﻨﺪ:
ADD
DROP COLUMN
DROP COLUMN
دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ DDL 45
ﻧﻜﺘﻪ ﻣﻬﻢ :ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﺎم ﻫﺎي ﻓﻴﻠﺪﻫﺎي ﺟﺪول در اﺳﻜﻴﻮال ﺑﺎﻳﺪ از spﻫﺎي اﺳﻜﻴﻮال اﺳﺘﻔﺎده ﻛﺮد .در ﻣﻘﺎﻟﻪ
ي زﻳﺮ ،ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪﻫﺎ ﻫﻤﺮاه ﺑﺎ ﻣﺜﺎل ﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ:
ﺑﺮاي ﺗﻐﻴﻴﺮ ﻧﺎم ﻓﻴﻠﺪ در ﺟﺪول از ﺗﻐﻴﻴﺮ ﻛﺪ ﺑﺎﻳﺪ ﺑﻪ روش زﻳﺮ و ﺑﺎ ﻛﻤﻚ stored procedureﻫﺎي ﺧﻮد اﺳﻜﻴﻮال
،ﻋﻤﻞ ﻛﺮد:
ﻣﺜﺎل از ﺗﻐﻴﻴﺮ ﻧﺎم ﺳﺘﻮن و ﻓﻴﻠﺪ TerritoryIDﺑﻪ TerrIDاز ﺟﺪول Salesاز ﭘﺎﻳﮕﺎه داده يDb_name :
;USE Db_name
GO
;'EXEC sp_rename 'Sales.TerritoryID', 'TerrID', 'COLUMN
GO
Constraintﻫﺎ در sqlﻳﺎ ﻫﻤﺎن ﻣﺤﺪودﻳﺖ ﻫﺎ در اس ﻛﻴﻮ ال ،ﺑﺮاي ﻣﺤﺪود ﻛﺮدن ﻧﻮع داده ﻫﺎﻳﻲ ﻛﻪ ﻣﻴﺘﻮاﻧﺪ
در ﺟﺪول ﺗﻌﺮﻳﻒ ﺷﻮد ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻴﮕﻴﺮد.
اﻳﻦ ﻣﺤﺪودﻳﺖ ﻫﺎ را زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺟﺪول ﺟﺪﻳﺪ اﻳﺠﺎد ﻣﻴﻜﻨﻴﻢ ﻳﺎ زﻣﺎﻧﻲ ﻛﻪ ﻧﻮع داده اي ﺟﺪول را ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﻴﻢ
ﺑﺎﻳﺴﺘﻲ در ﻧﻈﺮ داﺷﺘﻪ ﺑﺎﺷﻴﻢ.
ﻣﺤﺪودﻳﺖ Primary Key , SQL PRIMARY KEY Constraintﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ در اس
ﻛﻴﻮ ال
از ﻣﺤﺪودﻳﺖ Primary Keyزﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ ﻓﻴﻠﺪ ﻛﻠﻴﺪ اﺻﻠﻲ در ، sqlﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ.
ﻣﺤﺪودﻳﺖ Primary Keyﻳﻜﻲ از ﻣﻬﻤﺘﺮﻳﻦ ﻣﺤﺪودﻳﺖﻫﺎ ﻣﻲﺑﺎﺷﺪ .ﻓﻴﻠﺪ ﻛﻠﻴﺪ ،ﻣﻘﺪار ﺗﻜﺮاري ﻗﺒﻮل ﻧﻤﻲﻛﻨﺪ و
ﺑﻴﺸﺘﺮ ﺑﺮاي ﺗﻔﻜﻴﻚ و ﺟﺴﺘﺠﻮي رﻛﻮردﻫﺎ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد.
ﻓﻴﻠﺪ ﻛﻠﻴﺪ اﺻﻠﻲ در اﺳﻜﻴﻮال ﻫﻴﭻ وﻗﺖ Nullﻧﻤﻲﭘﺬﻳﺮد .ﭘﺲ ﺳﺘﻮن Allow Nulls
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ Primary Keyدر دﺳﺘﻮر create tableاز دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ Primary Keyروي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
City varchar(255),
)CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName
)
ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ Primary Keyروي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ Primary Keyروي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ
ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ Primary Keyﻳﺎ ﻛﻠﻴﺪ اﺻﻠﻲ ،از دﺳﺘﻮر SQLزﻳﺮ ﭘﻴﺮوي ﻣﻲ ﻛﻨﻴﻢ:
ﻣﺤﺪودﻳﺖ Foreign Key , SQL FOREIGN KEY Constraintﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در
اس ﻛﻴﻮال
ﻳﻚ FOREIGN KEYﻳﺎ ﻛﻠﻴﺪ ﺧﺎرﺟﻲ در اﺳﻜﻴﻮال ،در ﻳﻚ ﺟﺪول ﺑﻪ ﻳﻚ PRIMARY KEYدر
ﺟﺪوﻟﻲ دﻳﮕﺮ اﺷﺎره ﻣﻲ ﻛﻨﺪ.
ﺑﺮاي ارﺗﺒﺎط ﺑﻴﻦ ﺟﺪاول از ﻣﺤﺪودﻳﺖ Foreign Keyاﺳﺘﻔﺎده ﻣﻲﺷﻮد و در اﺻﻞ
ﻫﻤﭽﻨﻴﻦ ﻣﺤﺪودﻳﺖ FOREIGN KEYاز وارد ﻛﺮدن داده ﻫﺎي ﻧﺎﻣﻌﺘﺒﺮ در ﺟﺪول ﺟﻠﻮﮔﻴﺮي ﻣﻴﻜﻨﺪ.
)در ﻓﻴﻠﺪ ) ، foreign keyدﻟﻴﻞ آن ﻫﻢ ،اﻳﻦ اﺳﺖ ﻛﻪ ﺑﺎ ﻣﻘﺎدﻳﺮ ﺟﺪول دﻳﮕﺮ ﻛﻪ ﺑﻪ آن اﺷﺎره ﻣﻲ ﻛﻨﺪ ﺗﻄﺎﺑﻖ
ﻧﺪارد.
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ FOREIGN KEYدر دﺳﺘﻮر ، create tableروي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر
SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ FOREIGN KEYروي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ FOREIGN KEYروي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ FOREIGN KEYروي ﭼﻨﺪ ﺳﺘﻮن ،از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ ، FOREIGN KEYاز دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
از ﻣﺤﺪودﻳﺖ Checkﻳﺎ ﻣﺤﺪودﻳﺖ ﺧﺎص در اس ﻛﻴﻮ ال زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺑﺨﻮاﻫﻴﻢ ﺑﺮاي ﻳﻚ ﻓﻴﻠﺪ ،ﻳﻚ
ﺳﺮي ﻣﺤﺪودﻳﺖ ﺧﺎص روي ﻓﻴﻠﺪ ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ.
ﺑﺮاي ﻣﺜﺎل :ﻣﻘﺎدﻳﺮ داﺧﻞ ﻓﻴﻠﺪ ﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎ ﺑﺰرﮔﺘﺮ از 10ﺑﺎﺷﺪ در ﻏﻴﺮ اﻳﻨﺼﻮرت در ﻫﻨﮕﺎم ورود اﻃﻼﻋﺎت ،ﻛﺎرﺑﺮ
ﺑﺎ ﺧﻄﺎ ﻣﻮاﺟﻪ ﮔﺮدد.
زﻳﺮ اﺳﺘﻔﺎدهSQL روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮر، create table در دﺳﺘﻮرCheck ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ
:ﻣﻲ ﻛﻨﻴﻢ
: زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢSQL روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮرCheck ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ
: زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢSQL روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮرCheck ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ
: زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢSQL روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮرCheck ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﺤﺪودﻳﺖ
دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ DDL 51
ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ Checkﻳﺎ ﻣﺤﺪودﻳﺖ ﺧﺎص ،از دﺳﺘﻮر زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
از ﻣﺤﺪودﻳﺖ Defaultﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در اس ﻛﻴﻮ ال ،ﻣﻴﺘﻮاﻧﻴﻢ زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻛﻪ ،در
ﻫﻨﮕﺎم ﺳﺎﺧﺖ ﺟﺪول و ﺗﻌﻴﻴﻦ ﻧﻮع ﻓﻴﻠﺪﻫﺎ ،ﻣﻘﺪار Default Valueو ﻳﺎ ﭘﻴﺶ ﻓﺮض ﺑﻪ ﻳﻚ ﻓﻴﻠﺪ ﺑﺪﻫﻴﻢ.
در واﻗﻊ ﻣﺤﺪودﻳﺖ در اﻳﻨﺠﺎ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ اﮔﺮ ﻛﺎرﺑﺮ در ﻫﻨﮕﺎم درج ﻳﺎ ﺑﻪ روزرﺳﺎﻧﻲ ﻣﻘﺪار
آن ﻓﻴﻠﺪ را وارد ﻧﻜﺮد ،ﻣﻘﺪار Default Valueﺑﻪ ﺟﺎي آن ﻗﺮار ﺑﮕﻴﺮد.
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺤﺪودﻳﺖ Defaultدر دﺳﺘﻮر create tableاز دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
از ﻣﺤﺪودﻳﺖ Defaultﻣﻲ ﺗﻮان در ﻣﻮاﻗﻌﻲ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ از functionﻫﺎ در SQLاﺳﺘﻔﺎده ﻛﻨﻴﻢ،ز دﺳﺘﻮر
SQLﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:ﺑﺮاي ﻣﺜﺎل ﺗﺎﺑﻊ()GETDATE
دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ DDL 52
ﺑﺮاي از ﺑﻴﻦ ﺑﺮدن ﻣﺤﺪودﻳﺖ Defaultﻳﺎ ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض در ، sqlاز دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
از ﻣﺤﺪودﻳﺖ NOT NULLدر دﺳﺘﻮر create tableزﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻜﻨﻴﻢ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ ﻣﻘﺪار Allow
Nullﻓﻴﻠﺪﻫﺎ را ﻏﻴﺮ ﻓﻌﺎل ﻛﻨﻴﻢ.
در ﺣﻘﻴﻘﺖ ﺑﺎ ﺗﻌﺮﻳﻒ اﻳﻦ ﻣﺤﺪودﻳﺖ اﺟﺎزه ﻧﻤﻴﺪﻫﻴﻢ ﻛﻪ ﻓﻴﻠﺪ ﻣﺎ ﻣﻘﺪار Nullﺑﮕﻴﺮد .ﭘﺲ در ﻫﻨﮕﺎم درج
ﻳﺎ ﺑﻪ روزرﺳﺎﻧﻲ ،اﮔﺮ ﻛﺎرﺑﺮ ﻣﻘﺪاري را در اﻳﻦ ﻓﻴﻠﺪﻫﺎ وارد ﻧﻜﺮد ،ﺟﻠﻮي اﻧﺠﺎم ﻋﻤﻠﻴﺎت ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد.
FirstName varchar(255),
Address varchar(255),
)City varchar(255
)
ﻛﻪ در ﻣﺜﺎل ﺑﺎﻻ p_Idو LastNameاﺟﺎزه ي nullﺑﻮدن ﻧﺪارﻧﺪ وﻟﻲ دﻳﮕﺮ ﻓﻴﻠﺪﻫﺎ allow nullﻫﺴﺘﻨﺪ.
ﻧﻜﺘﻪ :ﭘﻴﺶ ﻓﺮض ﺑﺮاي ﻓﻴﻠﺪﻫﺎ در دﺳﺘﻮر ، create tableﻣﻘﺪار دﻫﻲ آﻧﻬﺎ allow nullاﺳﺖ.
از ﻣﺤﺪودﻳﺖ Uniqueزﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺑﺨﻮاﻫﻴﻢ ﻣﻘﺎدﻳﺮ ﺑﻌﻀﻲ از ﻓﻴﻠﺪﻫﺎ ﺗﻜﺮاري ﻧﺒﺎﺷﻨﺪ.
اﻳﻦ ﻓﻴﻠﺪﻫﺎ ﻣﻤﻜﻦ اﺳﺖ ﻛﻠﻴﺪ ﻧﺒﺎﺷﻨﺪ ،اﻣﺎ ﺑﻨﺎﺑﺮ ﻟﺰوم ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺴﺘﻲ ﻏﻴﺮ ﺗﻜﺮاري ﺑﺎﺷﻨﺪ .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻓﻴﻠﺪ آدرس
اﻳﻤﻴﻞ ،ﻛﻠﻴﺪ ﻧﻴﺴﺖ اﻣﺎ ﺑﺎﻳﺪ Uniqueﻳﺎ واﺣﺪ ﺑﺎﺷﺪ .ﺑﺮاي اﻳﻦ ﻛﺎر از Unique Indexﻫﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
ﻣﺤﺪودﻳﺖ PRIMARY KEYﺑﻪ ﺻﻮرت ﺧﻮدﻛﺎر ،ﻣﺤﺪودﻳﺖ Uniqueرا ﻧﻴﺰ دارد.
در ﻫﺮ ﺟﺪول ﺑﻴﺶ از ﻳﻚ ﻓﻴﻠﺪ ﻧﻴﺰ ﻣﻴﺘﻮاﻧﺪ از ﻣﺤﺪودﻳﺖ Uniqueاﺳﺘﻔﺎده ﻛﻨﺪ.
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ Uniqueدر دﺳﺘﻮر create tableدر ، sqlروي ﻳﻚ ﺳﺘﻮن از ﻛﻠﻤﻪ ﻛﻠﻴﺪي
UNIQUEﺑﺼﻮرت زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺤﺪودﻳﺖ Uniqueروي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮر SQLزﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ:
DDL دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ 54
: زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢSQL روي ﻳﻚ ﺳﺘﻮن از دﺳﺘﻮرUnique ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ
: زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢSQL روي ﭼﻨﺪ ﺳﺘﻮن از دﺳﺘﻮرUnique ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﻣﺤﺪودﻳﺖ
ﻓﻴﻠﺪ، ﺑﻪ اﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﺑﻪ ازاي ﻫﺮ رﻛﻮردي ﻛﻪ در ﺟﺪول وارد ﻣﻲ ﻛﻨﻴﻢsql درidentity ﻓﻴﻠﺪ
ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﻴﻚ ﻣﻘﺪار دﻫﻲ ﺧﻮاﻫﺪ ﺷﺪ و ﻧﻤﻲ ﺗﻮاﻧﻴﻢ اﻳﻦ ﻓﻴﻠﺪ را ﻣﻘﺪار دﻫﻲ ﻛﻨﻴﻢ، ﺷﺪهidentity
.
دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ DDL 55
Identity Increment :ﻛﻪ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻣﻘﺪار ﻓﻴﻠﺪ ﭼﻨﺪ ﺗﺎﻳﻲ اﻓﺰاﻳﺶ ﭘﻴﺪا ﻛﻨﺪ ،ﺑﻪ ﻃﻮر ﭘﻴﺶ ﻓﺮض
ﻣﻘﺪار آن ﻳﻚ اﺳﺖ و ﻣﻲ ﺗﻮاﻧﺪ اﻋﺪاد ﻣﺜﺒﺖ و ﻫﻤﻴﻦ ﻃﻮر ﻣﻨﻔﻲ ﻧﻴﺰ ﺑﮕﻴﺮد.
Identity Seed :ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻣﻘﺪار اﻳﻦ ﻓﻴﻠﺪ از ﭼﻪ ﻋﺪدي ﺷﺮوع ﺷﻮد ،ﺑﻪ ﻃﻮر ﭘﻴﺶ ﻓﺮض از ﻳﻚ ﺷﺮوع
ﻣﻲ ﺷﻮد وﻟﻲ ﻣﻲ ﺗﻮاﻧﺪ از اﻋﺪاد ﻣﻨﻔﻲ و ﻫﺮ ﻋﺪد ﻣﺜﺒﺘﻲ ﺑﺮاي ﺷﺮوع ﻓﻴﻠﺪ Identityاﺳﺘﻔﺎده ﻛﺮد.
ﻧﻜﺘﻪ ﻣﻬﻢ :اﮔﺮ رﻛﻮردﻫﺎي ﺟﺪول را ﺑﺎ Deleteﺣﺬف ﻛﻨﻴﻢ ﻣﻘﺪار آﺧﺮﻳﻦ Identityﺣﻔﻆ ﺧﻮاﻫﺪ ﺷﺪ و درج ﺑﺎ
ﻋﺪد ﺑﻌﺪي آن ﺻﻮرت ﻣﻲ ﮔﻴﺮد ،اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺑﻌﺪ از ﺣﺬف داده ﻫﺎ درج ﺑﺎ ﻣﻘﺪار Seedﺗﻌﺮﻳﻒ ﺷﺪه ﺻﻮرت ﮔﻴﺮد
ﺑﻪ ﺟﺎي Deleteاز دﺳﺘﻮر TRUNCATE table_nameاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ ،ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻻگ ﻫﻢ ذﺧﻴﺮه
ﻧﺨﻮاﻫﺪ ﺷﺪ ،ﺿﻤﻦ اﻳﻨﻜﻪ ﺳﺮﻋﺖ ﺣﺬف رﻛﻮردﻫﺎ ﺑﺴﻴﺎر ﺑﻴﺸﺘﺮ اﺳﺖ.
آﻣﻮزش viewدرsql
viewدر sqlدر واﻗﻊ ﻫﻤﺎن ﺟﺪاول ﻣﺠﺎزي ﻫﺴﺘﻨﺪ ﻛﻪ ﺗﻮﺳﻂ آن ﻣﻲ ﺗﻮاﻧﻴﺪ ﻋﻤﻠﻴﺎت ﺧﺎﺻﻲ رو ﻛﻪ ﺷﺎﻣﻞ
دﺳﺘﻮرات sqlﻣﻴﺸﻪ رو اﻧﺠﺎم ﺑﺪﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﺧﺮوﺟﻲ داﺷﺘﻪ ﺑﺎﺷﻴﺪ.
از ﻣﺰﻳﺖ ﻫﺎي viewاﻳﻦ اﺳﺖ ﻛﻪ ﺑﻌﺪ از ﻳﻚ ﺑﺎر اﺟﺮا ﺑﻪ ﺻﻮرت ﻣﻮﻗﺖ در ﺳﺮور ذﺧﻴﺮه ﻣﻲ ﺷﻮد و ﺑﺮاي
ﻣﺮاﺟﻌﺎت ﺑﻌﺪي از ﻫﻤﺎن اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد و ﺳﺮﻋﺖ ﺧﻴﻠﻲ ﺑﺎﻻﻳﻲ دارد.
DDL دﺳﺘﻮرات ﺗﻌﺮﻳﻒ داده ﻫﺎ 56
ﺗﺎﺑﻊ Avgدرsql
ﺗﺎﺑﻊ COUNTدر sqlﺗﻌﺪاد ﺳﻄﺮﻫﺎي ﻣﻮﺟﻮد در ﻳﻚ ﻓﻴﻠﺪ را ﺷﻤﺮده و ﻣﻘﺪار آﻧﺮا ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .ﺑﻪ ﺗﺎﺑﻊ
countدر اﺳﻜﻴﻮال ،ﺗﺎﺑﻊ ﺳﻄﺮ ﺷﻤﺎر ﻫﻢ ﻣﻲ ﮔﻮﻳﻨﺪ.
ﻧﻜﺘﻪ ﻣﻬﻢ :ﺗﺎﺑﻊ countدر اس ﻛﻴﻮ ال ،ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ ﻣﻘﺪار آﻧﻬﺎ ﺧﺎﻟﻲ ﻳﺎ ﺗﻜﺮاري ﺑﺎﺷﺪ را ﻧﻤﻲ ﺷﻤﺎرد .ﺑﺮاي
ﺷﻤﺎرش ﻛﻠﻴﻪ ﻓﻴﻠﺪﻫﺎ ) ﺣﺘﻲ ﺗﻜﺮاري ( ﺑﺎﻳﺪ ﻗﺒﻞ از ﻧﺎم ﺳﺘﻮن در دﺳﺘﻮر Countﻋﺒﺎرت Distinctذﻛﺮ ﺷﻮد.
ﺗﺎﺑﻊ Firstدرsql
ﺗﺎﺑﻊ Firstدر اﺳﻜﻴﻮال ﻣﻘﺪار اوﻟﻴﻦ رﻛﻮرد را در ﻳﻚ ﻓﻴﻠﺪ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .ﺗﺮﺗﻴﺐ در ﺗﺎﺑﻊ ، firstﻫﻤﺎن ﺗﺮﺗﻴﺐ
ﻗﺮار ﮔﻴﺮي رﻛﻮردﻫﺎ در ﺟﺪول اﺳﺖ.
ﺗﺎﺑﻊ Lastدرsql
ﺗﺎﺑﻊ Lastدر اﺳﻜﻴﻮال ﻣﻘﺪار آﺧﺮﻳﻦ رﻛﻮرد را در ﻳﻚ ﻓﻴﻠﺪ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .ﺗﺮﺗﻴﺐ در دﺳﺘﻮر و ﺗﺎﺑﻊ ، lastﻫﻤﺎن
ﺗﺮﺗﻴﺐ ﻗﺮار ﮔﻴﺮي رﻛﻮردﻫﺎ در ﺟﺪول اﺳﺖ.
ﺗﻮاﺑﻊ SQL 59
ﺗﺎﺑﻊ Maxدر sqlﺑﻴﺸﺘﺮﻳﻦ ﻣﻘﺪار ﻣﻮﺟﻮد در ﺑﻴﻦ ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.
ﺗﺎﺑﻊ maxدر sqlﺑﺎ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي ﻳﺎ ﺣﺮوﻓﻲ ﺑﺎﺷﺪ ،ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﻛﺎر رود .در ﻓﻴﻠﺪﻫﺎ ﺑﺎ
ﻣﻘﺎدﻳﺮ ﻋﺪدي ﺗﺎﺑﻊ ﺑﺰﮔﺘﺮﻳﻦ ﻋﺪد و در ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﻲ ،ﺗﺎﺑﻊ maxﻛﻠﻤﻪ اي ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ از آ
ﺗﺎ ي در ﻓﺎرﺳﻲ و Aﺗﺎ Zدر اﻧﮕﻠﺴﻲ در آﺧﺮﻳﻦ رده ﺑﺎﺷﺪ ،را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.
ﺗﺎﺑﻊ Minدر sqlﻛﻤﺘﺮﻳﻦ ﻣﻘﺪار ﻣﻮﺟﻮد در ﺑﻴﻦ ﻣﻘﺎدﻳﺮ ﻓﻴﻠﺪﻫﺎي ﻳﻚ ﺳﺘﻮن را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .
ﺗﺎﺑﻊ minدر اس ﻛﻴﻮال ﺑﺎ ﺳﺘﻮن ﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي ﻳﺎ ﺣﺮوﻓﻲ ﺑﺎﺷﺪ ،ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﻛﺎر رود .در
ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻋﺪدي ﺗﺎﺑﻊ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﺪد و در ﻓﻴﻠﺪﻫﺎ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺘﻨﻲ ،ﺗﺎﺑﻊ ﻛﻠﻤﻪ اي ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ ﺣﺮوف اﻟﻔﺒﺎ
از آ ﺗﺎ ي در ﻓﺎرﺳﻲ و Aﺗﺎ Zدر اﻧﮕﻠﺴﻲ در ﺑﺎﻻﺗﺮﻳﻦ رده ﺑﺎﺷﺪ ،را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.
ﺗﺎﺑﻊ Sumدر sqlﻣﺠﻤﻮع ﻣﻘﺎدﻳﺮ اﻋﺪاد در ﻳﻚ ﻓﻴﻠﺪ را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .
ﺗﺎﺑﻊ )( Sumﺑﺎﻳﺪ ﺑﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻛﻪ داده آﻧﻬﺎ از ﻧﻮع ﻋﺪدي اﺳﺖ ،ﺑﻪ ﻛﺎر رود.
ﺗﺎﺑﻊ UCaseدرsql
ﺗﺎﺑﻊ lcaseدرsql
ﺗﺎﺑﻊ midﺑﺮاي اﺳﺘﺨﺮاج ﻛﺎراﻛﺘﺮ از ﻓﻴﻠﺪ ﻣﺘﻨﻲ ،از ﻛﺎراﻛﺘﺮ ﺗﻌﻴﻴﻦ ﺷﺪه ﺗﺎ ﭼﻨﺪ ﻛﺎراﻛﺘﺮ ﺑﻌﺪ ﻛﻪ ﺗﻌﻴﻴﻦ ﻣﻴﻜﻨﻴﻢ ،
ﺑﻜﺎر ﻣﻴﺮود.
ﻧﻜﺘﻪ :ﻣﻘﺪار ﺗﻌﺪاد ﻛﺎراﻛﺘﺮ ) ( lenghtدر دﺳﺘﻮر midاﺳﻜﻴﻮال ،اﺧﺘﻴﺎري اﺳﺖ و در ﺻﻮرت ﻧﺰاﺷﺘﻦ اﻳﻦ
ﻣﻘﺪار ،ﺑﺮش و اﺳﺘﺨﺮاج ﻛﺎراﻛﺘﺮ از ﻧﻘﻄﻪ ﺷﺮوع ﺗﺎ آﺧﺮ رﺷﺘﻪ ،اﻧﺠﺎم ﻣﻴﮕﻴﺮد.
ﺗﺎﺑﻊ roundدر sqlﺑﺮاي( roundروﻧﺪ ﻛﺮدن( ﻛﺮدن ﻳﻚ ﻣﻘﺪار ﻋﺪدي ﺑﻪ ﺗﻌﺪاد اﻋﺸﺎر ﻣﺸﺨﺺ اﺳﺘﻔﺎده
ﻣﻴﺸﻮد .ﻧﺎم ﺳﺘﻮن و ﺗﻌﺪاد رﻗﻢ اﻋﺸﺎر را داﺧﻞ ﭘﺮاﻧﺘﺰ اﻳﻦ دﺳﺘﻮر ﺗﻌﻴﻴﻦ ﻣﻴﻜﻨﻴﻢ.
ﺗﺎﺑﻊ Nowدرsql
ﺑﺎ ﺗﺎﺑﻊ isNullدر اﺳﻜﻴﻮال ﻣﻴﺘﻮان ﺗﻌﻴﻴﻦ ﻛﺮد ﻛﻪ در ﺻﻮرﺗﻲ ﻛﻪ ﻣﻘﺪار ﻳﻚ ﻓﻴﻠﺪ از رﻛﻮرد ﺑﺮاﺑﺮ ﻣﻘﺪار
NULLﺑﻮد ،ﺧﺮوﺟﻲ ﺑﻪ ﺟﺎي ﻣﻘﺪار ، NUllﭼﻪ ﻣﻘﺪار دﻳﮕﺮي ﺷﻮد.
ﺑﻪ اﻳﻦ ﺻﻮرت ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ ﻣﻴﮕﻮﻳﺪ اﮔﺮ Nullﺑﻮد ﺧﺮوﺟﻲ ﭼﻪ ﺷﻮد.
)SELECT ISNULL(column_name,value
FROM table_name
ﻣﺜﺎل :اﺳﺘﻔﺎده از اﻳﻦ ﺗﺎﺑﻊ ﻣﻬﻢ در ﻓﻴﻠﺪﻫﺎي ﺗﺮﻛﻴﺒﻲ ﻳﺎ ﻣﺤﺎﺳﺒﺎﺗﻲ ﺑﺴﻴﺎر زﻳﺎد اﺳﺖ:
))SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0
FROM Products
ﻧﻜﺘﻪ ﻣﻬﻢ :در ﻣﺜﺎل ﺑﺎﻻ در ﺻﻮرﺗﻲ ﻛﻪ ISNULL UnitsOnOrder,0را ﻗﺮار ﻧﺪﻫﻴﻢ و
ﻣﺴﺘﻘﻴﻤﺎ UnitsOnOrderرا ﻗﺮار دﻫﻴﻢ ،ﻣﻤﻜﻦ اﺳﺖ در ﺻﻮرت Nullﺑﻮدن ﻳﻜﻲ از ﻣﻘﺎدﻳﺮ اﻳﻦ ﻓﻴﻠﺪ در
رﻛﻮردﻫﺎي ﺟﺪول ﻣﺤﺼﻮﻻت ،ﺑﺎ ارور ﻣﻮاﺟﻪ ﺷﻮﻳﻢ.
ﻧﻜﺘﻪ :ﻳﻜﻲ از ﺗﻮاﺑﻊ ﺑﺴﻴﺎر ﻛﺎرﺑﺮدي ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﺎ ﻧﺎدﻳﺪه ﮔﺮﻓﺘﻦ آن و ارﺟﺎع ﻛﺎر اﻳﻦ ﺗﺎﺑﻊ ﺑﻪ ﺑﺨﺶ ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎﺷﻮن از ﻛﺎراﻳﻲ ﺳﻴﺴﺘﻢ ﻣﻴﻜﺎﻫﻨﺪ ،ﺗﺎﺑﻊ و دﺳﺘﻮر isNullدر اﺳﻜﻴﻮال ﻣﻲ ﺑﺎﺷﺪ.