Professional Documents
Culture Documents
11 Viewsch
11 Viewsch
Creating Views
إﻧﺸﺎء ) (Views
اﻷهﺪاف
ﺑﻌﺪ إآﻤﺎل هﺬا اﻟﺪرس ،ﻳﺠﺐ أن ﺗﻜﻮن ﻗﺎدر إن ﺷﺎء اﷲ ﻋﻠﻲ ﻋﻤﻞ اﻟﺘﺎﻟﻲ :
-اﻣﻜﺎﻧﻴﺔ ﺗﻌﺮﻳﻒ) .( view
-اﻟﻘﺪرة ﻋﻠﻰ إﻧﺸﺎء وﺗﻌﺪﻳﻞ ). (View
-اﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت ﻣﻦ ال ).(View
-إدﺧﺎل وﺣﺬف وﺗﻌﺪﻳﻞ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ).(View
-اﻣﻜﺎﻧﻴﺔ اﺳﺘﺨﺪام ).(Inline View
-اﻣﻜﺎﻧﻴﺔ اﺳﺘﺨﺪام ) .( TOP-N
Viewهــﻰ ﻋﺒــﺎرة ﻋــﻦ ﻧﺎﻓــﺬة ﺗﻄــﻞ ﻋﻠــﻲ ﺟــﺰء ﻣﺤــﺪد ﻣــﻦ اﻟﺠــﺪول دون ﺑﻘﻴــﺔ ﺑﻴﺎﻧــﺎت
اﻟﺠﺪول View ) .ﻓﻰ اﻟﺮﺳﻤﺔ اﻟﺴﺎﺑﻘﺔ هﻲ اﻟﺒﺎرزة ﻣﻦ اﻟﺠﺪول(.
ﺣﻴــﺚ ﺗــﺴﻤﺢ ﺑﺎﺳــﺘﺮﺟﺎع ﺟــﺰء ﻣﻌــﻴﻦ ﻣــﻦ اﻟﺠــﺪول ﻳــﺘﻢ ﺗﺤﺪﻳــﺪﻩ ﻋﻨــﺪ إﻧــﺸﺎء View
وﺗﺴﺘﺨﺪم
ﻟﻜﻲ ﻳﺘﻢ ﻣﻨﻊ ﺑﻌﺾ اﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ اﻟﺘﻌﺮف ﻋﻠﻲ آﻞ ﺑﻴﺎﻧﺎت اﻟﺠﺪول.
آﻤﺎ ﺗﺴﺘﺨﺪم ﻟﻌﻤﻞ Viewﻣﻦ أآﺜﺮ ﻣﻦ ﺟﺪول ﻳﺘﻢ اﺳـﺘﺨﺪاﻣﻬﺎ ﻟﺘـﺴﻬﻴﻞ اﻻﺳـﺘﻌﻼﻣﺎت
اﻟﻤﻌﻘﺪة.
هﻨﺎك ﻧﻮﻋﺎن ﻣﻦ : View
اﻧﺸﺎء View
;Describe empvu80
ﻣﻼﺣﻈﺎت:
• اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ ﻳﻤﻜﻦ أن ﻳﺤﺘﻮي ﻋﻠﻲ ﺟﻤﻠﺔ SELECTﻣﻌﻘﺪة وﻳﻤﻜﻦ ان
ﺗﺘﻀﻤﻦ رﺑﻂ ﺑﻴﻦ ﺟﺪوﻟﻴﻦ او اﺳﺘﺨﺪام . Group Function
• اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ SubQueryﻻ ﻳﻤﻜﻦ أن ﻳﺤﺘﻮي ﻋﻠﻲ ﻓﻘﺮة ORDER BY
اﻻ ﻓﻰ ﺣﺎﻟﺔ واﺣﺪة وهﻰ . TOP_TEN
• إذا ﻟﻢ ﺗﺤﺪد أﺳﻢ Constraintﻟﻞ Viewﻣﻊ ، WITH CHECK OPTIONﻳﻘﻮم
اﻻوراآﻞ ﺑﺎﻋﻄﺎﺋﺔ اﺳﻢ اﻓﺘﺮاﺿﻰ ﺑﺼﻴﻐﺔ .sys-cn
• ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﻓﻘﺮة OR REPLACEآﻲ ﻳﺘﻢ ﺗﻐﻴﻴﺮال Viewﺑﺪون ﺣﺬﻓﻬﺎ،
وﺑﻬﺬة اﻟﻔﻘﺮة ﻳﺘﻢ إﻋﺎدة إﻧﺸﺎء ال . View
وﻓﻰ هﺬة اﻟﻄﺮﻳﻘﺔ ﻧﻘﻮم ﺑﺎﻋﻄﺎء اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر ) ( Aliasآﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻣﻦ
ﻗﺒﻞ وذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ آﺘﺎﺑﺔ اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر ﺑﻌﺪ اﺳﻢ اﻟﻌﻤﻮد .
اﻟﻤﺜﺎل ﻳﺤﺘﻮي ﻋﻠﻲ رﻗﻢ اﻟﻤﻮﻇﻒ ) (EMPLOYEE_IDﺑﺎﺳﻢ ﻣﺴﺘﻌﺎر ، ID_NUMBER
اﻻﺳﻢ ) (LAST_NAMEﺑﺎﺳﻢ ﻣﺴﺘﻌﺎر ، NAMEواﻟﺮاﺗﺐ اﻟﺴﻨﻮي ) (SALARYﺑﺎﺳﻢ
ﻣﺴﺘﻌﺎر . ANN_SALARY
ﻣﺜﺎل ﻋﻠﻰ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ:
ﻓﻰ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر ﺑﻌﺪ أﻣﺮ CREATEوﻗﺒﻞ
اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ . SubQueryوﻻﺣﻆ ان ﻋﺪد اﻻﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﻻﺑﺪ ان ﻳﻜﻮن
ﻣﺴﺎوى ﻟﻌﺪد اﻻﻋﻤﺪة ﻓﻰ . SubQuery
Modifying a View
ﺗﻌﺪﻳﻞ الView
ﻣﻊ اﻟﻔﻘﺮة OR REPLACEﻳﺘﻢ اﻧﺸﺎء ال Viewﺣﺘﻰ إذا آﺎﻧﺖ ﻣﻮﺟﻮدة.وﺑﺬﻟﻚ ﻳﺘﻢ •
ﺗﺒﺪﻳﻞ ال Viewاﻟﻘﺪﻳﻤﺔ ﺑﺎﻟﺠﺪﻳﺪة .وهﺬا ﻳﻌﻨﻲ اﻣﻜﺎﻧﻴﺔ ﺗﻌﺪﻳﻞ Viewﺑﺪون ﺣﺬﻓﻬﺎ
ﺛﻢ اﻧﺸﺎﺋﻬﺎ ﻣﻦ ﺟﺪﻳﺪ .
ﻣﻠﺤﻮﻇﺔ :
ﻋﻨﺪ ﺗﺨﺼﻴﺺ اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﻓﻲ ﻓﻘﺮة CREATE VIEWﺗﺬآﺮ أن
اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﺗﻜﻮن ﺑﻨﻔﺲ اﻟﻌﺪد واﻟﺘﺮﺗﻴﺐ ﻓﻲ . SubQuery
Complex View
إﻧﺸﺎء Viewﻣﻌﻘﺪة
ﻣﺜﺎل:
ﻋﻨﺪ اﺳﺘﺨﺪام اﻟﻘﻴﺪ With Check Optionﻓﺄي ﻣﺤﺎوﻟﺔ ﻟﺘﻐﻴﻴﺮ رﻗﻢ اﻟﻘﺴﻢ ﻷي •
ﺻﻒ ﻓﻲ ال Viewﺳﻮف ﺗﻔﺸﻞ ﻷن اﻟﻘﻴﺪ ﺳﻮف ﻳﻨﺘﻬﻚ.
واﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ﻳﺤﺎول ﺗﻐﻴﺮ رﻗﻢ اﻻدارة ﻣﻦ 20اﻟﻰ رﻗﻢ 10
ﻳﻤﻜﻨﻚ اﻟﺘﺄآﺪ ﻣﻦ أن ﻋﻤﻠﻴﺎت DMLﻟﻦ ﺗﺤﺪث وذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺿﺎﻓﺔ ﻓﻘﺮة •
WITH READ ONLYﻟﻞ. View
أي ﻣﺤﺎوﻟﺔ ﻻﺟﺮاء اى ﻋﻤﻠﻴﺔ DMLﻋﻠﻲ أي ﺻﻒ ﺑﺎل Viewﺳﻮف ﻳﻨﺘﺞ •
ﻋﻨﻬﺎ Errorوذﻟﻚ ﻋﻨﺪ اﺳﺘﺨﺪام ﻓﻘﺮة . WITH READ ONLY
ﺣﺬف الView
ﻓﻔﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﺮﻳﺪ ﻋﺮض اﺳﻢ اﻟﻤﻮﻇﻒ و ﻣﺮﺗﺒﺔ و رﻗﻢ ﻗﺴﻤﺔ واﻋﻠﻰ ﻣﺮﺗﺐ
ﺑﻜﻞ ﻗﺴﻢ.
*ﻳﺘﻢ اﺳﺘﺨﻼص آﻼ ﻣﻦ اﺳﻢ اﻟﻤﻮﻇﻒ و ﻣﺮﺗﺒﺔ و رﻗﻢ اﻟﻘﺴﻢ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ
وﺗﻢ اﻋﻄﺎء ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ اﺳﻢ ﻣﺴﺘﻌﺎر ) . ( a
ﻻﺣﻆ ﻻﺑﺪ اﻋﻄﺎء اﺳﻢ ﻣﺴﺘﻌﺎر ﻟﺠﻤﻠﺔ Selectاﻟﺼﻐﻴﺮة ﺣﻴﺚ ﻳﺘﻢ اﻋﺘﺒﺎرهﺎ آﺠﺪول
ﻳﺘﻢ اﺳﺘﺨﻼص اﻻﻋﻤﺪة ﻣﻨﺔ ﻟﺘﺨﺪم ﺟﻤﻠﺔ Selectاﻟﻜﺒﻴﺮة.
وﻻﺑﺪ ﻣﻦ اﻋﻄﺎء اﺳﻢ ﻣﺴﺘﻌﺎر ﻟﻼﻋﻤﺪة ﺑﺠﻤﻠﺔ Selectاﻟﺼﻐﻴﺮة ﺣﺘﻰ ﺗﺘﻤﻜﻦ ﻣﻦ
اﺳﺘﺨﺪام ﺗﻠﻚ اﻟﻌﻤﻮد ﻓﻰ ﺟﻤﻠﺔ Selectاﻟﻜﺒﻴﺮة.
ﻻﺣﻆ ان ﻋﻤﻮد Rownumﻟﻴﺲ ﺧﺎص ﺑﺠﺪول ﻣﻌﻴﻦ ﻓﻰ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت وﻟﻜﻨﺔ ﺧﺎص
ﺑﺎﻻوراآﻞ وﻳﺴﺘﺨﺪم ﻟﺘﺮﺗﻴﺐ اﻟﺼﻔﻮف اﻟﻈﺎهﺮة ﺑﺎﻻرﻗﺎم.
اﻟﻬﺪف ﻣﻦ اﺳﺘﺨﺪام Top_nاﺳﺘﺨﻼص ﺑﻴﺎﻧﺎت ﻣﺮﺗﺒﺔ ﻣﻦ SubQueryﻟﻜﻰ ﻳﻤﻜﻦ
اﺳﺘﺨﺪاﻣﻬﺎ ﺑﺸﺮط ﻣﻌﻴﻦ ﻓﻰ . OuterQuery
وﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺗﻢ ﻋﺮض اﻻﺳﻢ واﻟﻤﺮﺗﺐ ﻟﻠﻤﻮﻇﻔﻴﻦ وﻟﻜﻦ ﺑﺪون اﻣﻜﺎﻧﻴﺔ ﻣﻌﺮﻓﺔ
اآﺒﺮ ارﺑﻊ ﻣﺮﺗﺒﺎت.ﺣﻴﺚ اﻧﺔ ﻳﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺘﺮﺗﻴﺐ اﻻﻓﺘﺮاﺿﻰ وهﻮ ﺗﺮﺗﻴﺐ اﻟﺒﻴﺎﻧﺎت ﺗﻨﺎزﻟﻰ.