Professional Documents
Culture Documents
INTRODUCTION TO DATABSE
USING SQL
ﻣﺤﺘﻮﯾﺎت اﻟﻜﺘﺎب:
ص ﻣﻘﺪﻣﺔ و أﻧﻮاع اﻟﺒﯿﺎﻧﺎت م
٢
ﻣﻘﺪﻣﺔ
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ
ھﺬا اﻟﻌﻤﻞ ﻋﺒﺎرة ﻋﻦ ﻣﺠﮭﻮد ﻓﺮدي وﻛﻞ ﻋﻤﻞ ﯾﺤﺘﻤﻞ اﻟﺼﻮاب واﻟﺨﻄﺎء ﻓﻔﻲ ﺣﺎﻟﺔ
وﺟﻮد اﻟﺨﻄﺎء أﺗﻤﻨﻲ ﺗﺼﺤﯿﺤﮫ أو أﺑﻼﻏﻲ ﺑﺬﻟﻚ وﻟﻜﻞ ﻋﻤﻞ ﻣﺘﻄﻠﺒﺎت وﻗﺪ اﺳﺘﺨﺪﻣﺖ
اﻷﻛﺴﺲ ﻟﻮﺟﻮده ﻋﻨﺪ ﻣﻌﻈﻢ اﻟﻨﺎس وﻟﻜﻞ ﻋﻤﻞ أھﺪاف وھﺪﻓﻨﺎ ﻣﻦ اﻟﻌﻤﻞ ھﻮ ﺗﻌﻠﯿﻢ
SQL
ﻣﺎذا ﺗﻌﻨﻲ ﻛﻠﻤﺔ : SQLﻋﺒﺎرة ﻋﻦ ﺗﻌﻠﯿﻤﺎت ﺑﺮﻣﺠﯿﺔ ﺗﺴﺘﺨﺪم ﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﺳﻮاء ﻛﺎﻧﺖ
اﻟﻌﻤﻠﯿﺔ إﻧﺸﺎء ﺟﺪول أو ﺗﻌﺪﯾﻞ أ وﺣﺬف أو اﺳﺘﻌﻼم
٣
ﺳﻮف ﻧﺘﻌﺎﻣﻞ ﻓﻲ ھﺬا اﻟﻤﻨﮭﺞ ﻣﻊ اﻟﻤﻘﺪﻣﺎت وﻓﻲ ﻣﻨﺎھﺞ ﻗﺎدﻣﺔ ﺳﻮف ﻧﻘﻮم ﺑﺘﻌﺎﻣﻞ ﻣﻊ
اﻟﻤﺸﺎھﺪ واﻟﻔﮭﺎرس وأﯾﻀﺎ ﻧﺘﻌﺎﻣﻞ ﻣﻊ DCLوﻟﻜﻦ ﺳﻮف ﻧﻘﻮم ب اﺳﺘﺨﺪام ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت
أﺧﺮي ﻣﺜﻞ ORACLEوﻟﻜﻦ أﻻن ﻻﺑﺪ ﻣﻦ إﺗﻘﺎن اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺪروس اﻟﻘﺎدﻣﺔ
ﺑﻌﺪ إن ﻋﺮﻓﻨﺎ أﻗﺴﺎم SQLﻧﻨﺘﻘﻞ إﻟﻲ ﻣﻮﺿﻮع ﻣﮭﻢ ﺟﺪا ﻻﺑﺪ ﻣﻦ ﻣﻌﺮﻓﺘﻨﺎ ﻷﻧﻮاع اﻟﺒﯿﺎﻧﺎت
اﻟﻤﺴﺘﺨﺪﻣﺔ واﻟﻤﺸﮭﻮرة ﻓﻲ SQLﺷﺎھﺪ اﻟﺠﺪول ...
٤
ﯾﻤﺜﻞ ﺣﻘﻞ ﻧﺺ وﯾﺤﺪد اﻟﻤﺴﺘﺨﺪم ﻃﻮل اﻟﻨﺺ ﻣﻊ اﻟﻌﻠﻢ إن أﻗﺼﻲ ﻗﯿﻤﺔ )CHAR(L
ھﻲ ٢٥٥وﯾﺴﻤﻲ أﯾﻀﺎ ﻓﻲ ﺑﻌﺾ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت TEXTﻣﻦ
اﻟﺤﺮف Lﺗﺴﺘﻄﯿﻊ وﺿﻊ ﻃﻮل اﻟﻨﺺ ﻣﺜﺎل ) CHAR(10ﻣﻌﻨﻲ ذﻟﻚ
ﻧﺺ ﻃﻮﻟﮫ ﻋﺸﺮ أﺣﺮف
ﻣﺜﻞ CHARوﻟﻜﻦ ھﻨﺎ ﻣﯿﺰة ﻣﺜﻼ ﻛﺘﺒﺖ )VARCHAR(100 )VARCHAR(L
وأدﺧﻠﺖ ﻧﺺ ﻃﻮﻟﮫ ٣٠ھﻨﺎ ﯾﺘﻢ اﺳﺘﺨﺪام ٣٠ﺣﺮف وﯾﺴﺘﻐﻨﻲ ﻋﻦ
اﻟﺒﺎﻗﻲ وھﻲ ٧٠ﺑﻤﻌﻨﻲ ﯾﺘﻢ ﺣﺠﺰ ٣٠ﺣﺮف ﻓﻲ اﻟﺬاﻛﺮة ﻓﻘﻂ
ﯾﻤﺜﻞ ﺣﻘﻞ ﻋﺪد ﻋﺸﺮي وﺗﺴﺘﺨﺪم Pﻓﻲ ﺗﺤﺪﯾﺪ ﻗﯿﻤﺔ اﻹﻋﺪاد اﻟﻌﺸﺮﯾﺔ )FLOAT(P
ﯾﻤﺜﻞ ﺣﻘﻞ ﻋﺪد ﻋﺸﺮي ﻃﻮﻟﮫ Wواﻟﺠﺰء اﻟﻌﺸﺮي R )DCIMAL(W,R
ﻣﺜﺎل )DCIMAL(5,3
12345,103
ﻣﺎ ﻗﺒﻞ اﻟﻔﺎﺻﻠﺔ ھﻮ W
وﻣﺎ ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ R
ﯾﻤﺜﻞ ﺣﻘﻞ ﻋﺪد ﺻﺤﯿﺢ INTEGER
ﯾﻤﺜﻞ اﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ DATE/TIME
ﯾﻤﺜﻞ ﺣﻘﻞ ﻣﻨﻄﻘﻲ ﻣﺜﻞ YES/NOأو TRUE/FALSE BOOLEAN
AUTONUMBERﻋﺪد ﺻﺤﯿﺢ ﯾﻘﻮم اﻟﻨﻈﺎم ﺑﺘﺮﻗﯿﻤﮫ وﯾﺴﺘﺨﺪم ﻋﺎدة ﻣﻊ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ
ﯾﻤﺜﻞ ﺣﻘﻞ ﻋﻤﻠﺔ CURRENCY
ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻗﺪ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ ﺑﻌﺾ وأھﻢ أﻧﻮاع اﻟﺒﯿﺎﻧﺎت واﻟﺘﻲ ﺳﻮف ﻧﺴﺘﺨﺪﻣﮭﺎ
ﻣﻊ اﻟﺠﺪاول اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻤﻼﺣﻈﺔ أﻧﮭﺎ ﻟﯿﺴﺖ ﻛﻞ أﻧﻮاع اﻟﺒﯿﺎﻧﺎت وإﻧﻤﺎ اﻷﻛﺜﺮ اﺳﺘﺨﺪاﻣﺎ-
٥
ﯾﻌﺮف اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﻟﻠﺠﺪول ﺑﺄﻧﮫ ﻋﺎﻣﻮد ﻓﻲ اﻟﺠﺪول ﯾﺤﺘﻮي ﻋﻠﻲ ﻗﯿﻢ ﻓﺮﯾﺪة )ﻻ ﺗﺘﻜﺮر(
وﯾﻤﺜﻞ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﺑﻮﺿﻊ ﺧﻂ ﺗﺤﺖ اﻟﻌﺎﻣﻮد ﻃﺒﻌﺎ ذﻟﻚ ﯾﺘﻢ ﻋﻨﺪ ﺗﺼﻤﯿﻢ اﻟﺠﺪاول ﻋﻠﻲ اﻟﻮرق
ﻣﺜﺎل ﻧﺮﯾﺪ إﻧﺸﺎء ﺟﺪول ﻟﻄﻼب
)رﻗﻢ اﻟﻄﺎﻟﺐ ،اﺳﻢ اﻟﻄﺎﻟﺐ ،ﻋﻤﺮ اﻟﻄﺎﻟﺐ(
رﻗﻢ اﻟﻄﺎﻟﺐ ھﻮ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ واﻟﺴﺒﺐ اﻧﮫ ﻣﻦ اﻟﻤﺴﺘﺤﯿﻞ وﺟﻮد ﻃﺎﻟﺒﯿﻦ أو أﻛﺜﺮ ﻟﺪﯾﮭﻢ
ﻧﻔﺲ اﻟﺮﻗﻢ ﻛﻞ ﻃﺎﻟﺐ ﯾﺨﺘﻠﻒ رﻗﻤﮫ ﻋﻦ اﻷﺧﺮ داﺧﻞ اﻟﺠﺎﻣﻌﺔ أو اﻟﻜﻠﯿﺔ اﻟﻮاﺣﺪة
ﯾﻌﺮف اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ ﺑﺄﻧﮫ ﻋﻤﻮد أو أﻛﺜﺮ ﻓﻲ اﻟﺠﺪول ﯾﺸﯿﺮ إﻟﻲ ﻣﻔﺘﺎح أﺳﺎﺳﻲ ﻓﻲ ﺟﺪول
أﺧﺮ
ﻣﺜﺎل
ﺟﺪول اﻟﻤﺪرﺳﯿﻦ
)رﻗﻢ اﻟﻤﺪرس ،اﺳﻢ اﻟﻤﺪرس،اﻟﮭﺎﺗﻒ(
ﻻﺣﻆ رﻗﻢ اﻟﻤﺪرس ﻓﻲ ﺟﺪول اﻟﻤﺪرﺳﯿﻦ ورﻗﻢ اﻟﻤﺪرس ﻓﻲ ﺟﺪول اﻟﻤﻘﺮر ﻟﻮﺑﺤﺜﻨﺎ ﻋﻦ اﻟﻤﺪرس
اﻟﺬي ﯾﺪرس ﻣﺜﻼ ﻣﺎدة اﻟﺮﯾﺎﺿﯿﺎت ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ ﺑﯿﺎﻧﺎت اﻟﻤﺪرس واﻟﻤﻘﺮر
ﻣﻼﺣﻈﺔ ﯾﻮﺟﺪ أﻛﺜﺮ ﻣﻦ ﻃﺮﯾﻘﺔ ﻟﺘﻤﺜﯿﻞ اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ ﻋﻠﻲ اﻟﻮرق وﻟﻜﻦ ﯾﮭﻤﻨﺎ ﻣﻌﺮﻓﺔ
أﻧﻮاع اﻟﻤﻔﺎﺗﯿﺢ وأﺗﻤﻨﻰ أن أﻛﻮن وﻓﻘﺖ ﻓﻲ اﻟﺸﺮح
٦
1:1 ONE-TO-ONE
1:N ONE-TO-MANY
M:N MANY-TO-MAN
(ONE TO ONE)
ﻣﺜﺎل
:اﻟﻌﻼﻗﺔ ﺑﯿﻦ ﺟﺪول اﻟﻘﺴﻢ واﻟﻤﺪﯾﺮ )ﻣﺪﯾﺮ اﻟﻘﺴﻢ( ھﻲ ﻣﻦ ﻧﻮع واﺣﺪ إﻟﻲ واﺣﺪ وھﺬا ﯾﻌﻨﻲ
ﻟﻜﻞ ﻗﺴﻢ ﻣﺪﯾﺮ واﺣﺪ-١
ﻛﻞ ﻣﺪﯾﺮ ﯾﺪﯾﺮ ﻗﺴﻢ واﺣﺪ-٢
ﻃﺮﯾﻘﺔ اﻟﺮﺑﻂ ﺑﯿﻦ ﺟﺪوﻟﯿﻦ
ﻣﺜﺎل
ﺟﺪول اﻟﻤﺪرﺳﯿﻦ
)رﻗﻢ اﻟﻤﺪرس ،اﺳﻢ اﻟﻤﺪرس،اﻟﮭﺎﺗﻒ(
اﻧﻈﺮ اﻟﺮﺳﻢ
٨
٩
ﻣﻼﺣﻈﺔ:
ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت SQLﻻ ﺗﺨﺘﻠﻒ ﻓﻲ ﻃﺮﯾﻘﺔ ﻛﺘﺎﺑﺘﮭﺎ
ﻧﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﮭﺎ ﻓﻲ اﻻوراﻛﻞ و MY SQLو أﻛﺴﺲ
و MS SQL SERVERو DB2وھﻨﺎ اﺳﺘﺨﺪﻣﺖ
اﻻﻛﺴﯿﺲ ﻟﺘﻮﻓﺮه ﻟﺪي اﻟﺠﻤﯿﻊ ھﺬا ھﻮ اﻟﺴﺒﺐ
١٠
ﻓﻲ ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت SQLﯾﻮﺟﺪ ﺛﻼث أﻧﻮاع ﻣﻦ ﺟﻤﻠﺔ CREATEأو ﺛﻼث وﺳﺎﺋﻞ
أﻧﻈﺮ اﻟﺠﺪول.
ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻧﻼﺣﻆ إن ﺟﻤﻠﺔ CREATEﯾﺘﺒﻌﮭﺎ ﺛﻼث ﻋﻤﻠﯿﺎت وﻟﻜﻦ اﻟﺬي
ﺳﻮف ﻧﺘﻌﻠﻤﮫ ﺧﻼ ل ھﺬه اﻟﻔﺘﺮة ھﻮ CREATE TABLEوﻓﻲ اﻟﻜﺘﺎب اﻟﻘﺎدم إن ﺷﺎء اﷲ
١١
اﺧﺘﺮ ﺟﺪﯾﺪ-٣
١٢
اﺿﻐﻂ ھﻨﺎ
١٣
١٤
أﻻن ﺗﻌﻠﻤﻨﺎ ﻃﺮﯾﻘﺔ ﻓﺘﺢ ﻣﺤﺮر SQLداﺧﻞ اﻷﻛﺴﺲ " إﻟﻒ ﻣﺒﺮوك "
١٥
اﺳﻢ اﻟﺠﺪول
ﻛﻠﻤﺔ ﻣﻔﺘﺎح\ ﻣﺤﺠﻮزة
أﻻن ﻧﺮﯾﺪ أﻧﺸﺎء ﺟﺪول ﺧﺎص ﺑﺎﻟﻄﻼب اﻧﻈﺮ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﺒﯿﻦ ﺧﺼﺎﺋﺺ اﻟﺠﺪول اﻟﻤﺮاد
أﻧﺸﺎؤه
اﻟﻘﯿﺪ ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﺳﻢ اﻟﻌﺎﻣﻮد COLUMN NAME
CONSTRAINTS DATA_TYPE ﺑﺎﻟﻌﺮﺑﻲ
PK )Char(10 STUDENT_NO رﻗﻢ اﻟﻄﺎﻟﺐ
NOT NULL )VARCHR(20 اﺳﻢ اﻟﻄﺎﻟﺐ STUDENT_NAME
ﻻﯾﻮﺟﺪ )VARCHR(10 MAJOR اﻟﺘﺨﺼﺺ
ﻻﯾﻮﺟﺪ integer GPA اﻟﻤﻌﺪل
اﻟﺘﺮاﻛﻤﻲ
واﻷﺟﻨﺒﻲ(.
-٢ﻓﻲ اﻟﺼﻒ اﻟﺜﺎﻧﻲ وھﻮ أﺳﻢ اﻟﻄﺎﻟﺐ وﺿﻌﻨﺎ ﻗﯿﺪ وھﻮ NOT NULLﻣﻌﻨﻲ ذﻟﻚ اﻧﮫ
ﯾﺠﺐ إدﺧﺎل ﻗﯿﻤﮫ ﻻﯾﻘﺒﻞ ﻗﯿﻤﮫ ﻓﺎرﻏﺔ.
١٦
ﺑﻌﺪ ذﻟﻚ
١٧
"" ﻣﻦ ھﻨﺎ ﻧﻘﻮل أﻧﻨﺎ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ CREATE TABLEوأي ﻣﺜﺎل أﺧﺮ ﻧﻔﺲ اﻟﻄﺮﯾﻘﺔ
١٨
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة
اﺳﻢ
اﻟﺠﺪول
اﻧﻈﺮ اﻟﺼﻮرة اﻟﺘﺎﻟﻲ
ﺑﻌﺪ ذﻟﻚ
١٩
ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ اﻟﺤﺬف وﺟﻤﯿﻊ اﻷﻣﺜﻠﺔ ﺗﻨﻄﺒﻖ ﻋﻠﯿﮭﺎ ﻧﻔﺲ اﻟﻌﻤﻠﯿﺔ
---------------------------------------------------------------------------------------------------
-------------------------------------------------------
ﻟﻮ أردﻧﺎ ﺗﺒﺪﯾﻞ ﺧﺼﺎﺋﺺ ﺣﻘﻞ ﻣﻌﯿﻦ وﻗﺪ ﺗﻢ أﻧﺸﺎء اﻟﺠﺪول ﻓﻤﺎ اﻟﻌﻤﻞ ھﻞ ﻧﻌﯿﺪ أﻧﺸﺎء اﻟﺠﺪول ﻣﻦ
ﺟﺪﯾﺪ إﺟﺎﺑﺔ ﻏﯿﺮ ﻣﻨﻄﻘﯿﺔ ﻓﻠﺬﻟﻚ وﺟﺪت ﺗﻌﻠﯿﻤﺔ ALTER
ﻣﺜﺎل١
ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ ﺣﻘﻞ داﺧﻞ ﺟﺪول ﻓﻤﺜﻼ ﺣﻘﻞ اﻟﻤﻌﺪل ﻧﺮﯾﺪ ﺗﺤﻮﯾﻠﮫ ﻣﻦ ﻋﺪد ﺻﺤﯿﺢ إﻟﻲ ﻋﺪد
ﻋﺸﺮي أﻻن ﻧﺴﺘﺨﺪم ALTER
ﻣﺜﺎل٢
ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ إﺿﺎﻓﺔ ﺣﻘﻞ داﺧﻞ ﺟﺪول ﻓﻤﺜﻼ ﻧﺮﯾﺪ إﺿﺎﻓﺔ ﺣﻘﻞ ﻟﻠﻌﻤﺮ إﻟﻲ ﺟﺪول اﻟﻄﺎﻟﺐ
أﻻن ﻧﺴﺘﺨﺪم ALTER
٢٠
ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ
ﻧﺮﯾﺪ أﺿﺎﻓﮫ ﻋﻤﻮد اﻟﻌﻤﺮ ﻋﻠﻲ ﺟﺪول اﻟﻄﺎﻟﺐ أﻻن ﻧﺄﺧﺬ ﻣﻮاﺻﻔﺎت اﻟﻌﻤﻮد وھﻲ
COLUMN_NAME DATA_TYPE
AGE INTEGER
٢١
ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ
ﻟﻮ أردﻧﺎ ﺗﻌﺪﯾﻞ ﻋﻤﻮد اﻟﻤﻌﺪل ﻓﻲ ﺟﺪول اﻟﻄﺎﻟﺐ وﺗﺤﻮﯾﻠﮫ ﻣﻦ ﻋﺪد ﺻﺤﯿﺢ إﻟﻲ ﻋﺪد ﻋﺸﺮي
أﻧﻈﺮ اﻟﺠﺪول
ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﺑﻌﺪ اﻟﺘﻌﺪﯾﻞ ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻗﺒﻞ اﻟﺘﻌﺪﯾﻞ اﺳﻢ اﻟﻌﻤﻮد
)DECIMAL(4.2 INTEGER GPA
٢٢
أﺳﻢ اﻟﺠﺪول
ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ
ﻧﺮﯾﺪ ﺗﻐﯿﺮ اﺳﻢ ﺟﺪول اﻟﻄﺎﻟﺐ إﻟﻲ ﺟﺪول اﻟﻄﻼب
ﺑﺤﻤﺪ اﷲ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﻮﺣﺪة اﻟﺜﺎﻧﯿﺔ أﺗﻤﻨﻲ إن أﻛﻮن ﻗﺪﻣﺖ ﺷﺊ ﻣﻔﯿﺪ ﻟﻠﺠﻤﯿﻊ
ﻣﻼﺣﻈﺔ ﺟﻤﻠﺔ MODIFYﻻﺗﻌﻤﻞ ﻣﻊ ﺑﻌﺾ إﺻﺪارات اﻷﻛﺴﺲ ﺣﺴﺐ ﻋﻠﻤﻲ
ﻣﻼﺣﻈﺔ ﺟﻤﻠﺔ REANAMEﻻﺗﻌﻤﻞ ﻣﻊ ﺑﻌﺾ إﺻﺪارات اﻷﻛﺴﺲ ﺣﺴﺐ ﻋﻠﻤﻲ
٢٣
ﻟﻐﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت DMLﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺳﺎﺑﻘﺎ ﺗﻨﻘﺴﻢ إﻟﻲ أرﺑﻌﺔ أﻗﺴﺎم
ﺳﻮف ﻧﺘﻌﻠﻢ ﺟﻤﻞ DMLﻛﺎﻣﻠﺔ وﻟﻜﻦ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺠﻤﻠﺔ SELECTﺳﻮف ﻧﻀﻊ ﻟﮭﺎ وﺣﺪة ﻛﺎﻣﻠﺔ وﻣﺴﺘﻘﻠﺔ
واﻟﺴﺒﺐ أن ﺟﻤﻠﺔ SELECTﺗﺘﻌﺎﻣﻞ ﻣﻊ دوال وﻏﯿﺮ ذﻟﻚ ﻓﻠﺬﻟﻚ ﺳﻮف ﯾﻜﻮن اﻟﻮﺣﺪة اﻟﺮاﺑﻌﺔ ﻋﻦ ﺟﻤﻠﺔ
.SELECT
....أﻻن ﻧﺮﯾﺪ إﺿﺎﻓﺔ ﺑﯿﺎﻧﺎت إﻟﻲ ﺟﺪول اﻟﻄﺎﻟﺐ ﻣﻦ اﻟﻤﻨﻄﻘﻲ واﻟﻔﺎﺋﺪة اﻷوﻟﻲ ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ھﻮ ﺗﺨﺰﯾﻦ
اﻟﺒﯿﺎﻧﺎت أذن ﻻ ﺑﺪ ﻣﻦ وﺟﻮد ﺗﻌﻠﯿﻤﺔ ﺧﺎﺻﺔ ﺑﺎﻹدﺧﺎل )ﺻﺢ(
ﺑﻌﺪ اﻟﻤﻘﺪﻣﺔ اﻟﺴﺎﺑﻘﺔ ﻣﺎھﻲ ﺗﻌﻠﯿﻤﯿﺔ اﻹدﺧﺎل أو اﻹﺿﺎﻓﺔ وﻛﯿﻒ ﺗﻜﺘﺐ ؟
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ اﻹﺟﺎﺑﺔ
اﻹﺿﺎﻓﺔ ﺗﻌﻠﯿﻤﯿﺔ اﻹﺿﺎﻓﺔ ھﻲ INSERT
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
أﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد اﻹﺿﺎﻓﺔ ﻋﻠﯿﺔ
٢٤
ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ﺟﺪول اﻟﻄﻼب ﺑﻜﺎﻣﻞ ﺧﺼﺎﺋﺼﮫ ﻧﺮﯾﺪ أﺿﺎﻓﮫ ﺳﺠﻞ ﻋﻠﻲ اﻟﺠﺪول
ﺻﺪﯾﻘﻲ ﻻﺑﺪ إن ﺗﻨﺘﺒﮫ إﻟﻲ ﺷﺊ ﻣﮭﻢ ﻋﻨﺪ إﺿﺎﻓﺔ ﻛﻠﻤﺔ ﻣﺜﻞ MOHMMAD
ﻻﺑﺪ ﻣﻦ إﺿﺎﻓﺘﮭﺎ داﺧﻞ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس ' ' HEREﺑﻤﻌﻨﻲ ﺣﻘﻞ ﺗﻜﻮن ﺧﺎﺻﯿﺘﮫ
ﺣﺮوف ﻻﺑﺪ أن ﺗﻮﺿﻊ داﺧﻞ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس وھﺬه اﻟﻄﺮﯾﻘﺔ اﻟﺼﺤﯿﺤﺔ.
ﻧﺮﯾﺪ أن ﻧﻀﯿﻒ ﺳﺠﻞ إﻟﻲ اﻟﺠﺪول ﺑﺎﺳﺘﺨﺪام ﺗﻌﻠﯿﻤﺔ INSERTوﻧﻼﺣﻆ وﺟﻮد اﻟﻌﻤﻮد IDﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﯿﮫ
) (AUTONUMBERﻣﺎ ھﻮ اﻟﻌﻤﻞ أﻻن ﯾﺎﺻﺪﯾﻘﻲ ﻛﯿﻒ ﺗﺘﻢ اﻹﺿﺎﻓﺔ ؟
اﻟﻄﺮﯾﻘﺔ اﻟﺴﺎﺑﻘﺔ ﻗﺪ ﺗﻌﻤﻞ ﻓﻲ ﺑﻌﺾ ﻣﺤﺮرات SQLوﻟﻜﻦ ﻣﻦ ﺣﯿﺚ اﻟﻤﻨﻄﻖ ﻏﯿﺮ ﺻﺤﯿﺤﺔ ﻟﻤﺎذا ؟
اﻟﺴﺒﺐ ﯾﻌﻮد إﻟﻲ أﻧﻨﺎ أﻋﻄﯿﻨﺎ اﻟﻌﻤﻮد IDﺧﺎﺻﯿﺔ AUTONUMBERﺑﻤﻌﻨﻲ إن أي ﻋﻤﻠﯿﺔ إﺿﺎﻓﺔ
ﻓﺄن اﻟﺠﺪول ﺳﻮف ﯾﻌﻄﯿﻨﺎ ﻗﯿﻤﺔ ﻣﺘﺴﻠﺴﻠﺔ وﻣﺮﺗﺒﺔ ﻟﻜﻞ ﺳﺠﻞ ﻓﺒﻤﺠﺮد إﺿﺎﻓﺔ ﺳﺠﻞ ﺳﻮف ﻧﺤﺼﻞ ﻣﻦ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت ﻋﻠﻲ ﺗﺮﻗﯿﻢ اوﺗﺎﻣﺎﺗﯿﻜﻲ ﻟﻠﻌﻤﻮد أو اﻟﺤﻘﻞ IDأذن ﻧﻜﺘﺐ اﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ
٢٥
ﻣﺜﺎل
ﻣﻦ ﺧﻼ ل اﻟﺠﺪول اﻟﺘﺎﻟﻲ
ﻃﺒﻌﺎ وﻣﻦ اﻟﻤﻮﻛﺪ أﻧﻨﺎ ﺳﻮف ﻧﻀﯿﻒ إﻟﻲ ﺟﺪول ﺳﺠﻞ ﯾﺤﻤﻞ رﻗﻢ اﻟﻄﺎﻟﺐ و اﺳﻢ اﻟﻄﺎﻟﺐ واﻟﺴﺒﺐ اﻟﻘﯿﻮد اﻟﻤﻮﺟﻮدة
ﻋﻠﻲ اﻟﻌﺎﻣﻮد أو اﻟﺤﻘﻞ وأﻣﺎ اﻟﺘﺨﺼﺺ واﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻓﮭﻲ ﺗﻘﺒﻞ ﻗﯿﻢ ﻓﺎرﻏﺔ
أﻻن ﻧﺘﻌﺮف ﻋﻠﻲ اﻟﺼﯿﻐﺔ
واﻟﺴﺒﺐ ﯾﻮﺟﺪ ﻟﺪي أرﺑﻊ أﻋﻤﺪة أو ﺣﻘﻮل وأﻧﺎ أدﺧﻠﺖ ﺛﻼﺛﺔ أﻋﻤﺪة أو ﺣﻘﻮل
٢٦
INSERT INTO STUDENT (STUDENT_NAME,MAJOR,STUDENT_NO)
VALUES ('AHMAD','COMPUTER',567);
أﺗﻤﻨﻲ إن ﺗﻜﻮن اﻟﻤﻌﻠﻮﻣﺔ ﻗﺪ وﺻﻠﺖ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎ ﺑﻖ ﺑﺪأت أﻧﺎ ﺑﺎﻟﺨﻄﺎء ﺛﻢ ﺑﺎﻟﺼﻮاب ﻟﻜﻲ ﻻﺗﻘﻊ ﻓﻲ اﻟﺨﻄﺎء
.ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ
وأﺗﻤﻨﻰ اﻟﺘﻮﻓﯿﻖ ﻟﻜﻢ وأن ﯾﻜﻮن اﻟﺸﺮح واﻓﻲINSERT أﻻن وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ
-------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
--------------------------------------------------------------------------
٢٧
أﺳﻢ اﻟﺠﺪول
ﺷﺮط اﻟﺤﺬف اﻟﻤﺮاد اﻟﺤﺬف
ﻣﻨﮫ
ﻣﻼﺣﻈﺔ
ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ إذا ﻛﺎﻧﺖ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻧﻮع ﺣﺮﻓﻲ ﻻﺑﺪ إن ﺗﻮﺿﻊ ﺑﯿﻦ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس
ﻛﺬﻟﻚ ﺗﺴﺘﻄﯿﻊ إن ﺗﺤﺬف ﺻﻔﻮف ﻣﺘﻌﺪدة ﻓﻤﺜﻼ ﻧﺮﯾﺪ ﺣﺬف ﻛﻞ اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺨﺼﺼﮭﻢ رﯾﺎﺿﯿﺎت
)ﻗﺎﺗﻞ اﷲ اﻟﺮﯾﺎﺿﯿﺎت( ﺗﻀﻊ اﻟﺸﺮط اﻟﺘﺨﺼﺺ ﯾﺴﺎوي اﻟﺮﯾﺎﺿﯿﺎت
أﻻن وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ DELETEوأﺗﻤﻨﻰ اﻟﺘﻮﻓﯿﻖ ﻟﻜﻢ وأن ﯾﻜﻮن اﻟﺸﺮح واﻓﻲ
------------------------------------------------------------
٢٨
ﺟﻤﻠﺔ UPDATE
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﺑﺪاﯾﺔ
اﻟﺘﺤﺪﯾﺚ أﺳﻢ اﻟﺠﺪول
UPDATE TABLE_NAME
SET COLUMN_NAME=NEW VALUE
;WHERE CONDITION
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة
ﺑﺪاﯾﺔ اﻟﺸﺮط ﺷﺮط ﺗﺤﺪﯾﺪ
اﻟﺼﻒ اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة
ﻟﻠﻌﺎﻣﻮد
أﺳﻢ اﻟﻌﺎﻣﻮد اﻟﻤﺮاد ﺗﻌﺪﯾﻠﮫ
٢٩
ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻟﻄﺎﻟﺐ رﻗﻢ ١٠٠وﻧﻀﻊ ﻟﮫ ﻣﻌﺪل ﺗﺮاﻛﻤﻲ ٤،٩
UPDATE STUDENT
SET GPA = 4.9
;'WHERE STUDENT_NO = '100
ﻻﺣﻆ ﻋﻼﻣﺘﻲ اﻻﻗﺘﺒﺎس واﻟﺴﺒﺐ اﻟﻨﻮع أذا ھﻮ ﻣﻦ ﻧﻮع ﺣﺮﻓﻲ ﻻﺑﺪ ﻣﻦ ﻛﺘﺎﺑﺘﮭﺎ وإذا ﻛﺎن ﻣﻦ رﻗﻤﻲ ﻻ ﺗﻜﺘﺘﺐ
ﻣﺜﺎل٢
ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻟﺠﻤﯿﻊ ﻃﻼب ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت ﺑﺤﯿﺚ ﺟﻤﯿﻊ ﻃﻼب ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت ﻧﻀﯿﻒ إﻟﯿﮭﻢ
درﺟﺔ واﺣﺪة ﻓﻲ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ؟
UPDATE STUDENT
SET GPA=GPA+1
;'WHERE MAJOR='MATH
ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ UPDATEأﺗﻤﻨﻲ ﻟﻜﻢ اﻟﺘﻮﻓﯿﻖ وأن ﯾﻜﻮن ﺷﺮح واﻓﻲ وﻣﻤﺘﻊ
٣٠
ﺟﻤﻠﺔ SELECT
ﻣﻦ أھﻢ اﻟﻤﻮاﺿﯿﻊ وﻗﺪ وﺿﻌﺖ ﻟﮭﺎ ﺑﺎب ﻛﺎﻣﻞ ووﺿﻌﺘﮫ ﻓﻲ اﻷﺧﯿﺮ ﻣﻊ اﻟﻌﻠﻢ أن ﺑﻌﺾ اﻟﻜﺘﺐ ﺗﺒﺪأ ﺑﺠﻤﻠﺔ
SELECTوذﻟﻚ ﯾﻌﻮد ﻟﺴﺒﺐ أن اﻟﻤﻮﺿﻮع ﻣﮭﻢ ﺟﺪا) وﻟﻜﻦ أﻧﺎ أﻗﻮل ﺧﺎﻟﻒ ﺗﻌﺮف( ﻧﺤﻦ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ
ﻣﻌﻈﻢ ﺟﻤﻞ SQLوأن ﺷﺎء اﷲ ﻣﻦ ﺧﻼل ھﺬا اﻟﻜﻮرس ﺗﺼﺒﺢ ﻣﺤﺘﺮف SQLھﺪف ھﺬه اﻟﺠﻤﻠﺔ
ھﻮ اﺳﺘﺨﺮاج اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
SELECT
ھﺬه اﻟﻜﻠﻤﺔ ﻣﻌﻨﺎھﺎ اﺧﺘﺮ اﻷﻋﻤﺪة )إﺟﺒﺎري(
FROM
ھﺬه اﻟﻜﻠﻤﺔ ﻣﻌﻨﺎھﺎ اﺧﺘﺮ ﻣﻦ ﺟﺪول أو أﻛﺜﺮ)إﺟﺒﺎري(
WHERE
ﻻﺣﻈﻨﺎ ﻓﯿﻤﺎ ﺳﺒﻖ ﻣﻜﻮﻧﺎت أو ﻋﻨﺎﺻﺮ ﺟﻤﻠﺔ SELECTوﻧﻼﺣﻆ أﻧﺎ ھﻨﺎﻟﻚ ﻋﻨﺎﺻﺮ إﺟﺒﺎرﯾﺔ و أﺧﺮي اﺧﺘﯿﺎرﯾﺔ
ﻣﺜﺎل١
ﻟﻮ أردﻧﺎ اﺧﺘﯿﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﻼب ﻣﻦ ﺟﺪول اﻟﻄﺎﻟﺐ اﻟﺴﺎﺑﻖ ذﻛﺮه ﻣﺎ اﻟﻌﻤﻞ ؟
ﻋﺒﺎرة ﻋﻦ
رﻣﺰ ﯾﺪل ﻋﻠﻲ أﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد
اﺧﺘﯿﺎر ﺟﻤﯿﻊ اﻻﺧﺘﯿﺎر ﻣﻨﮫ
اﻷﻋﻤﺪة
ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻻﺣﻆ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﻧﺮﯾﺪ ﺗﻄﺒﯿﻘﮭﺎ ﻋﻠﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻣﺎ اﻟﻌﻤﻞ؟
اﻟﺤﻞ ھﻮ
;SELECT * FROM STUDENT
٣١
ﺳﻮف ﺗﻼﺣﻆ إﻧﻨﺎ ﺣﺼﻠﻨﺎ ﻋﻲ ﻛﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﺪول STUDENTوﻟﻜﻦ ﻟﻢ ﻧﺴﺘﺨﺪم اﻟﺸﺮط
WHEREﻷﻧﻨﺎ ﻟﻢ ﻧﺤﺘﺎج إﻟﯿﮭﺎ
.
ﻣﺜﺎل٢
وأﻻن ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻣﺤﺪده ﺑﻤﻌﻨﻲ أرﯾﺪ ﻓﻘﻂ أﺳﻢ اﻟﻄﺎﻟﺐ وﻣﻌﺪﻟﺔ اﻟﺘﺮاﻛﻤﻲ ﻣﺎ اﻟﺤﻞ ؟
اﻟﺤﻞ ھﻮ :ﺑﺪل ﻣﻦ ﻛﺘﺎﺑﺔ اﻟﺮﻣﺰ ) * ( ﻧﻜﺘﺐ أﺳﻤﺎء اﻷﻋﻤﺪة اﻟﻤﺮاد اﺧﺘﯿﺎرھﺎ .
ﻣﺜﺎل٣
وأﻻن ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻃﺎﻟﺐ ﻣﺤﺪد ﺑﻤﻌﻨﻲ ﻟﺪﯾﻨﺎ اﻟﻄﺎﻟﺐ رﻗﻢ ٩٩ﻧﺮﯾﺪ أﻇﮭﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎﺗﮫ ﻣﺎ اﻟﺤﻞ؟
اﻟﺤﻞ ھﻮ :اﺳﺘﺨﺪام ﺗﻌﻠﯿﻤﯿﺔ WHERE
اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة ﻻﺣﻆ وﺿﻌﻨﺎ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس ﻻن رﻗﻢ اﻟﻄﺎﻟﺐ ﻟﺪﯾﻨﺎ ﺣﺮﻓﻲ إﻣﺎ إذا ﻛﺎن رﻗﻤﻲ ﻻﻧﺤﺘﺎج أﻟﻲ
ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس
٣٢
ﺗﻤﺮﯾﻦ١
اﻟﺴﻮال ::ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ أﺳﻤﺎء اﻟﻄﻼب وﻣﻌﺪﻻﺗﮭﻢ اﻟﺬﯾﻦ ﻓﻲ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت؟
ﺗﻤﺮﯾﻦ٢
اﻟﺴﻮال ::ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﻼب اﻟﺬﯾﻦ ﯾﺪرﺳﻮن ﻓﻲ ﻗﺴﻢ اﻟﺤﺎﺳﺐ؟
-------------------------------------------------------------------------------------------------------
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
اﻟﻨﺘﯿﺠﺔ
٣٣
ﻣﺜﺎل ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﺎﻟﺐ اﻟﺴﺎﺑﻖ ذﻛﺮه ﯾﻮﺟﺪ ﻋﻤﻮد أﺳﻤﮫ اﻟﺘﺨﺼﺺ )(major
وأﻻن ﻧﺮﯾﺪ إن ﻧﺴﺘﻌﻠﻢ ﻋﻦ اﻟﺘﺨﺼﺼﺎت اﻟﻤﻮﺟﻮدة ﻟﺪﯾﻨﺎ ﺳﻮف ﻧﺴﺘﺨﺪم ﺟﻤﻠﺔ SELECTاﻟﻤﻌﺘﺎدة
ﻧﻼﺣﻆ ﻣﻦ اﻟﺼﻮرة اﻟﺴﺎﺑﻘﺔ أن ھﻨﺎﻟﻚ ﺗﺨﺼﺼﺎت ﺗﻜﺮرت أﻛﺜﺮ ﻣﻦ ﻣﺮة ﺑﻤﻌﻨﻲ ﻧﺮﯾﺪ أن ﻻ ﺗﺘﻜﺮر اﻟﺘﺨﺼﺼﺎت
ﯾﻜﺘﺐ اﻟﺘﺨﺼﺺ ﻣﺮة واﺣﺪة ﻓﻘﻂ.
ﻣﺎ اﻟﻌﻤﻞ وﻣﺎھﻮ اﻟﺤﻞ ؟
دﻋﻨﻲ أﻓﻜﺮ....................................
ﻻﺗﻘﻠﻖ اﻟﺤﻞ ﻣﻮﺟﻮد وھﻮ اﺳﺘﺨﺪام ﺟﻤﻠﺔ DISTINCTﻣﻊ ﺟﻤﻠﺔ SELECTﻛﯿﻒ ﯾﺘﻢ ذﻟﻚ
٣٤
ھﻞ ﻻﺣﻈﺖ اﻟﻔﺮق ﯾﺎ ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ أﺗﻤﻨﻲ أن ﺗﻜﻮن اﻟﺼﻮرة وﺻﻠﺖ اﻟﻔﻜﺮة
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
اﻟﻮﺣﺪة اﻟﺨﺎﻣﺴﺔ
اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ
-١أﺳﺘﺨﺪم اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ﻓﻲ SQL
اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ
-١ﻣﻌﺎﻣﻼت اﻟﻤﻨﻄﻖ AND , OR ,NOT
اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ
-١ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ MATCHING OPERATORS
-٢ﻣﻌﺎﻣﻞ IN
-٤ﻣﻌﺎﻣﻞ LIKE
٣٥
ﺳﻮف ﯾﻘﻮم ﻣﺤﺮر SQLأوﻻ ﺑﺘﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻞ اﻷﻗﻮاس ﺛﻢ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ ﺛﻢ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ
ھﺬا اﻟﻤﻘﺼﻮد ب أﺳﺒﻘﯿﺔ اﻟﻤﻌﺎﻣﻼت .
ﻧﺮﯾﺪ أن ﻧﻘﻮم ﺑﻌﻤﻠﯿﺔ زﯾﺎدة ﻟﻜﻞ اﻟﻤﻮﻇﻔﯿﻦ اﻟﻤﻮﺟﻮدون داﺧﻞ اﻟﺸﺮﻛﺔ ﻣﻘﺪار اﻟﺰﯾﺎدة %٥٠ﻣﻦ اﻟﺮاﺗﺐ
)ﻋﻠﻲ ﻓﻜﺮة إﻧﺎ ﻛﺮﯾﻢ ﺟﺪا( أﻻن ﻧﺄﺧﺬ ﺻﯿﻐﺔ اﻟﻤﻌﺎدﻟﺔ
(SALARY * 50)/100+SALARY
أﻻن ﯾﺎﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻧﺮﯾﺪ إن ﻧﻌﺮف ﻛﯿﻒ ﻧﻜﺘﺐ اﻟﻤﻌﺎدﻟﺔ داﺧﻞ SQL
٣٦
ﻻﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر وأﻻن أﻧﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة
وﺗﺴﺘﻄﯿﻊ ﻛﺘﺎﺑﺔ ﺟﻤﯿﻊ اﻟﻤﻌﺎدﻻت اﻟﺘﻲ ﺗﺮﻏﺐ ﻓﯿﮭﺎ أﺗﻤﻨﻲ ﻟﻚ اﻟﺘﻮﻓﯿﻖ وﺑﺬﻟﻚ ﻧﻜﻮن أﻧﮭﯿﻨﺎ ﻣﻦ اﻟﺪرس اﻷول
-------------------------------------------------------------------------------------------------------
اﻟﺪرس اﻟﺜﺎﻧﻲ :
ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ COMPARISON OPERATORS
ﻋﻨﺪﻣﺎ ﻧﺴﺘﺨﺪم ﻛﻠﻤﺔ WHEREﺿﻤﻦ ﺟﻤﻠﺔ SELECTﺗﻘﻮم ﻏﺎﻟﺒﺎ ﺑﻤﻘﺎرﻧﺔ ﻗﯿﻤﺔ ﻋﺎﻣﻮد ﻣﺎ ﻣﻊ ﻗﯿﻤﺔ
ﻣﻌﻄﺎة أو ﻣﻊ ﻋﺎﻣﻮد أﺧﺮ وﺳﻮف ﻧﺒﯿﻦ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ اﻟﺘﻲ ﯾﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﮭﺎ.
٣٧
ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه ﻧﺮﯾﺪ أن ﻧﻘﻮم ﺑﻌﻤﻞ أﺳﺘﻌﻼم ﺣﻮل ﺑﯿﺎﻧﺎت ﺟﻤﯿﻊ اﻟﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ راﺗﺒﮭﻢ أﻗﻞ
ﻣﻦ أوﯾﺴﺎوي٥٠٠٠رﯾﺎل ﻣﺎﻟﺤﻞ؟
اﻟﺤﻞ :اﻟﺸﺮط ھﻮ اﻟﺮاﺗﺐ أﻗﻞ أ وﯾﺴﺎوي ٥٠٠٠رﯾﺎل اﻵن ﻧﻜﺘﺐ ﻋﺒﺎرة SQL
ﺷﺎھﺪ اﻟﻨﺘﯿﺠﺔ
)ﻗﺎﺗﻞ اﷲ اﻟﺮﯾﺎﺿﯿﺎت ( ﺗﻤﺮﯾﻦ : ١ﻗﻢ ﺑﺈﻧﺸﺎء اﺳﺘﻌﻼم ﻋﻦ اﻟﻄﻼب اﻟﺬﯾﻦ ﻻﯾﺪرﺳﻮن ﻓﻲ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت
ﺗﻤﺮﯾﻦ :٢ﻗﻢ ﺑﺈﻧﺸﺎء اﺳﺘﻌﻼم ﻟﻠﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ رواﺗﺒﮭﻢ اﻛﺒﺮ ﻣﻦ ٥٠٠٠رﯾﺎل
ھﺬه ﻣﺠﻤﻮﻋﺔ ﺗﻤﺎرﯾﻦ أﺗﻤﻨﻲ إن ﺗﻘﻮم ﺑﻌﻤﻠﮭﺎ وأﻻن ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﺪرس اﻟﺜﺎﻧﻲ واﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ
------------------------------------------------------------------------------------------------------
اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ
ﻻﺣﻆ ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ ANDﯾﻜﻮن ﺻﺤﯿﺢ اذاﻛﺎن اﻟﻄﺮﻓﯿﻦ ﺻﺤﯿﺤﺔ
ﻻﺣﻆ ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ ORﯾﻜﻮن ﺻﺤﯿﺢ إذا ﻛﺎن أﺣﺪ اﻟﻄﺮﻓﯿﻦ ﺻﺤﯿﺤﺔ
ﻻﺣﻆ ﻣﻦ اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ NOTﻋﺒﺎرة ﻋﻦ ﻧﻔﻲ إذا ﻛﺎن Pﺻﺤﯿﺢ ﻣﻊ NOTﯾﻜﻮن FALSE
٣٨
اﻟﻤﻌﺎﻣﻞ
AND
ﻣﺜﺎل :ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻣﻮﻇﻒ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه ﺑﺸﺮط أن ﯾﻜﻮن رﻗﻢ اﻟﻤﻮﻇﻒ ١٢
و راﺗﺒﮫ ١٠٠٠٠رﯾﺎل ؟
ﻻﺣﻆ إن اﻟﻤﻌﺎﻣﻞ ھﻮ) و( ANDﻣﻌﻨﻲ ذﻟﻚ ﻻﺑﺪ ﻣﻦ ﺗﺤﻘﻖ اﻟﺸﺮﻃﯿﻦ وھﻮ رﻗﻢ اﻟﻤﻮﻇﻒ ١٢وراﺗﺒﮫ.١٠٠٠٠
أﻻن ﻧﻜﺘﺐ ﺻﯿﻐﮫ اﻻﺳﺘﻌﻼم.
اﻟﻤﻌﺎﻣﻞ OR
٣٩
أﻻن ﻟﺪﯾﻨﺎ ﺳﻮال ﻣﮭﻢ ﻧﻔﺘﺮض اﻧﮫ ﻻﯾﻮﺟﺪ اﻟﻤﻮﻇﻒ رﻗﻢ ١٢وﻟﻜﻦ ھﻨﺎﻟﻚ ﻣﻮﻇﻔﯿﻦ رواﺗﺒﮭﻢ ١٠٠٠٠رﯾﺎل
أﻧﻈﺮ اﻟﺼﻮرة
ھﻞ ﯾﻮﺟﺪ ﻓﺮق ﺑﯿﻦ اﻟﻨﺘﺎﺋﺞ اﻟﺴﺎﺑﻘﺔ )ﻻ( ھﺬا ھﺪف اﻟﻤﻌﺎﻣﻞ OR
ﻣﻌﺎﻣﻞ ﻣﻨﻄﻘﻲ
اﻟﺸﺮط
٤٠
أﻧﻈﺮ اﻟﻨﺘﯿﺠﺔ
٤١
MATCHING OPERATORS
ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ )اﻟﺘﻮاﻓﻖ(
ﻟﻘﺪ ﺗﻌﻠﻤﻨﺎ ﻓﯿﻤﺎ ﺳﺒﻖ اﻟﻤﻌﺎﻣﻼت اﻟﺤﺴﺎﺑﯿﺔ واﻟﻤﻨﻄﻘﯿﺔ أﻻن ﻧﺮﯾﺪ ﺗﻌﻠﻢ اﻟﻤﻌﺎﻣﻼت اﻟﺮﺑﻂ أو اﻟﺘﻮاﻓﻖ
ﺳﻨﺪرس ﻓﻲ ھﺬه اﻟﻤﺤﺎﺿﺮة ﺛﻼث أﻧﻮاع ﻣﻦ ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ أو اﻟﺘﻮاﻓﻖ
-١ﻣﻌﺎﻣﻞ IN
-٢ﻣﻌﺎﻣﻞ BETWEEN
-٣ﻣﻌﺎﻣﻞ LIKE
ﺳﻮف ﻧﻘﺴﻢ ھﺬه اﻟﻤﺤﺎﺿﺮة إﻟﻲ ﺛﻼث دروس
ﻣﻌﺎﻣﻞ IN
ﻣﺜﺎل :ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﻟﻠﺤﺼﻮل ﻋﻠﻲ أﺳﻤﺎء اﻟﻄﻼب وﺗﺨﺼﺼﺎﺗﮭﻢ وﻣﻌﺪﻻﺗﮭﻢ وذﻟﻚ ﻟﻄﻼب
اﻟﻤﺘﺨﺼﺼﯿﻦ ﻓﻲ ﻗﺴﻤﻲ اﻟﺤﺎﺳﺐ واﻟﺮﯾﺎﺿﯿﺎت؟
SELECT STUDENT_NAME,MAJOR,GPA
;)'WHERE MAJOR IN ('COMPUTER','MATH
ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻣﺎذا ﺗﻼﺣﻆ ﻧﻼﺣﻆ إن ﻋﻤﻠﯿﺔ اﻻﺧﺘﯿﺎر ﻣﻦ اﻟﺠﺪول ﺗﻤﺖ ﻋﻠﻲ اﻟﻄﻼب اﻟﻤﺘﺨﺼﺼﯿﻦ ﻓﻲ ﻗﺴﻢ
اﻟﺮﯾﺎﺿﯿﺎت واﻟﺤﺎﺳﺐ ﻟﻤﺎذا ﻻن اﻟﺸﺮط ﯾﻘﻮل ﻃﻼب اﻟﺬﯾﻦ داﺧﻞ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت واﻟﺤﺎﺳﺐ ﻓﻘﻂ
ﺗﺪرﯾﺐ :ﻛﻤﺎ ﺑﻜﺘﺎﺑﺔ اﻻﺳﺘﻌﻼم اﻟﺴﺎﺑﻖ ﻣﻊ ﻣﺮاﻋﺎة اﺳﺘﺒﺪال ﻛﻠﻤﺔ INﺑﻜﻠﻤﺔ OR
ﻟﺘﺼﺒﺢ اﻟﺼﯿﻐﺔ
SELECT STUDENT_NAME,MAJOR,GPA
;)'WHERE MAJOR='COMPUTER'OR MAJOR= 'MATH
٤٢
SELECT COLUMN1,COLUMNN2
FROM TABLE_NAME
;WHERE COLUMN_NAME BETWEEN LOWVALUE AND HIGHVALUE
ﻋﺒﺎرة ﻋﻦ اﻟﺤﺪ
اﻻدﻧﻲ
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻟﺘﺤﺪﯾﺪ اﻟﺤﺪ اﻻدﻧﻲ )ﺣﯿﺚ ﯾﺒﺪأ
اﻟﺤﺪ اﻻدﻧﻲ ﻣﻦ ﺑﻌﺪ ھﺬه اﻟﻜﻠﻤﺔ(
ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻟﺘﺤﺪﯾﺪ اﻟﺤﺪ اﻻدﻧﻲ
)ﺣﯿﺚ ﯾﺒﺪأ اﻟﺤﺪ اﻻدﻧﻲ ﻣﻦ ﺑﻌﺪ ھﺬه
اﻟﻜﻠﻤﺔ(
وأﻻن ﯾﺎ ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ دﻋﻨﺎ ﻧﻔﻜﺮ ﻗﻠﯿﻼ ﻻﺣﻆ ﺗﺮﺗﯿﺐ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﻻﺑﺪ أن ﺗﻠﺘﺰم ﺑﺎﻟﺼﯿﻐﺔ وﺗﺮﺗﯿﺒﮭﺎ ﻧﺄﺧﺬ
ﻣﺜﺎل ﻟﺘﻮﺿﯿﺢ اﻟﻔﻜﺮة.
ﻣﺜﺎل :ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﻼب وﻧﺮﯾﺪ ﻋﻤﻞ اﺳﺘﻌﻼم ﻟﻠﺤﺼﻮل ﻋﻠﻲ أﺳﻤﺎء اﻟﻄﻠﺒﺔ وﺗﺨﺼﺼﺎﺗﮭﻢ واﻟﻤﻌﺪل اﻟﺬﯾﻦ
ﻣﻌﺪﻻﺗﮭﻢ
اﻟﺘﺮاﻛﻤﯿﺔ ﺑﯿﻦ ٣و ٤؟
ﻻﺣﻆ اﻟﺸﺮط اﻟﻄﻼب اﻟﺬﯾﻦ ﻣﻌﺪﻻﺗﮭﻢ ﺑﯿﻦ ٣و ٤
ﺑﻤﻌﻨﻲ أن اﻟﺤﺪ اﻻدﻧﻲ ھﻮ ٣واﻟﺤﺪ اﻻﻋﻠﻲ ھﻮ ٤
وأﻻن ھﻞ وﺿﺤﺖ اﻟﺼﻮرة دﻋﻨﺎ ﻧﻄﺒﻖ اﻟﻤﺜﺎل ﻋﻤﻠﯿﺎ اﻧﻈﺮ إﻟﻲ اﻟﺼﯿﻐﺔ
SELECT STUDENT_NAME, MAJOR, GPA
FROM STUDENT
;WHERE GPA BETWEEN 3 AND 4
أﻧﻈﺮ اﻟﻨﺘﯿﺠﺔ
أﻻن ﻧﺮﯾﺪ ﻧﻄﺒﻖ ﻣﺎﺳﺒﻖ ﺑﺎﺳﺘﺨﺪام ANDﻓﻘﻂ ﺳﻮف أﻋﻄﯿﻚ اﻟﺼﯿﻐﺔ وﻓﻜﺮ ﻓﻲ ﻣﺎﯾﺤﺪث
ﻣﻼﺣﻈﺔ أذا ﻃﺒﻖ اﻟﻤﻌﺎﻣﻞ اﻟﺴﺎﺑﻖ ﻋﻠﻲ ﺣﺮوف ﻻﺑﺪ ﻣﻦ اﺳﺘﺨﺪام ﻋﻼﻣﺘﻲ اﻻﻗﺘﺒﺎس
٤٣
ﻻﺣﻈﻨﺎ ﻓﻲ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ وﺟﻮد ﻛﻠﻤﺔ ﻧﻤﻂ ﻣﺎذا ﺗﻌﻨﻲ وﻣﺎ أﻧﻮاﻋﮭﺎ أن وﺟﺪ ﻟﮭﺎ أﻧﻮاع؟
ﻧﻤﻂ ﺗﻌﻨﻲ ﻃﺮﯾﻘﺔ اﻟﺒﺤﺚ ﻓﻤﺜﻼ ﻧﺮﯾﺪ اﻟﺒﺤﺚ ﺑﺎ ﻟﺤﺮف اﻷول ﻣﻦ اﻟﻜﻠﻤﺔ أو اﻟﺤﺮف اﻷﺧﯿﺮ
أو ﺣﺮف داﺧﻞ ﺟﻤﻠﺔ .ﻻﺗﻘﻠﻖ ﺳﻮف ﻧﺸﺮح ﻣﺎﺳﺒﻖ ﺑﺘﻔﺼﯿﻞ
أﻣﺎ ﻋﻦ أﻧﻮاع اﻟﻨﻤﻂ ) (PATTERNﻓﯿﻮﺟﺪ ﻧﻮﻋﯿﻦ ﻣﮭﻤﺔ
– ١ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ ) (%وﻓﻲ اﻷﻛﺴﺲ ﻓﻘﻂ ﻧﺴﺘﺨﺪم )*( ﺑﺪﻻ ﻣﻦ ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ
-٢ﻋﻼﻣﺔ أو رﻣﺰ اﻟﺘﺴﻄﯿﺮ أﺳﻔﻞ اﻟﺴﻄﺮ)_(
ﻣﺜﺎل ١
ﻧﺮﯾﺪ اﻟﺒﺤﺚ ﻋﻦ اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺒﺪأ أﺳﻤﺎﺋﮭﻢ ﺑﺎﻟﺤﺮف Hﻣﻦ ﺟﺪول اﻟﻄﺎﻟﺐ ﻣﻊ أﻇﮭﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ؟
ﻻﺣﻆ اﻟﻨﺎﺗﺞ وﻟﻜﻦ ھﻨﺎﻟﻚ ﺑﻌﺾ ﻧﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﻔﺮق ﺑﯿﻦ اﻟﺤﺮف اﻟﺼﻐﯿﺮ واﻟﺤﺮف اﻟﻜﺒﯿﺮ
ﯾﻜﻮن ﻟﺪﯾﮭﺎ إﺣﺴﺎس وﺗﻔﺮﯾﻖ ﺑﯿﻦ اﻟﺤﺮوف اﻟﺼﻐﯿﺮة واﻟﻜﺒﯿﺮة .
٤٤
ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﺳﺘﻌﻼم ﯾﻈﮭﺮ ﺟﻤﯿﻊ اﻟﺘﺨﺼﺼﺎت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﺤﺮف R؟
ﻣﺜﺎل ٣
ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﺳﺘﻌﻼم ﯾﻘﻮم ﺑﺎﻟﺒﺤﺚ ﻋﻦ أﺳﻤﺎء اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺤﺘﻮي أﺳﻤﺎﺋﮭﻢ ﻋﻠﻲ اﻟﺤﺮف Hﻣﻊ أﻇﮭﺎر ﺟﻤﯿﻊ
ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ؟
ھﻞ ﻻﺣﻈﺖ أﻻن ﯾﺎﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ أي اﺳﻢ ﯾﺤﺘﻮي ﻋﻠﻲ Hﻇﮭﺮ ﻓﻲ اﻻﺳﺘﻌﻼم.
٤٥
ﻣﻼﺣﻈﺔ :ﻗﺒﻞ اﻟﺒﺪء ﻓﻲ ﻣﻌﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﺴﺘﺨﺪم ) _ ( ﻛﻤﺎ ھﻲ وﻟﻜﻦ ﻓﻲ اﻻﻛﺴﯿﺲ ﺗﺴﺘﺨﺪم ) ? (
وأﻻن ﻣﺎھﻮ دور اﻟﺮﻣﺰ ) _ ( ﻧﻔﺘﺮض إن ﻟﺪﯾﻨﺎ ﻃﺎﻟﺒﯿﻦ اﻷول اﺳﻤﮫ ﺣﺎﺗﻢ واﻟﺜﺎﻧﻲ اﺳﻤﮫ ﺣﺎﺗﻢ وﻣﻦ اﻟﻤﻌﻠﻮم
إﻧﻨﺎ ﻋﻨﺪﻣﺎ ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﻻﺳﻤﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﺑﺎﻻﻧﻜﻠﯿﺰي ﺳﻮف ﯾﻜﺘﺐ ﻛﻞ ﺷﺨﺺ اﻻﺳﻢ وﻟﻜﻦ ﻣﻦ اﻟﻤﻤﻜﻦ إن ﯾﺨﺘﻠﻒ
اﻹﻣﻼء ﺷﺨﺺ ﯾﻀﯿﻒ ﺣﺮف وﺷﺨﺺ أﺧﺮ ﯾﺤﺬف ﺣﺮف أﻟﻲ آﺧﺮة أﻧﻨﻲ أﻋﻠﻢ اﻟﻔﻜﺮة ﻟﻢ ﺗﺼﻞ إﻟﻲ أﻻن وﻟﻜﻦ
ﻧﺄﺧﺬ ﻣﺜﺎل؟
أﻧﻈﺮ اﻟﺼﯿﻐﺔ
SELECT STUDENT_NAME FROM STUDENT
;'WHERE STUDENT_NAME LIKE 'HAT?M
ﻻﺣﻈﺖ اﻟﻨﺎﺗﺞ ھﻨﺎﻟﻚ ﺷﺨﺺ ﻛﺘﺐ أﺳﻢ ﺣﺎﺗﻢ HATEMواﻷﺧﺮ ﻛﺘﺒﺔ HATIMﻓﻲ اﻟﺼﯿﻎ اﻟﺴﺎﺑﻘﺔ ﻛﻨﻨﺎ
ﻧﺒﺤﺚ ﻋﻦ ﺣﺮف داﺧﻞ اﻟﻜﻠﻤﺔ ورأﯾﻨﺎ اﻟﺘﺮﺗﯿﺐ ﻟﻠﺤﺮف واﻟﺒﺎب واﺳﻊ ﻟﺘﻔﻜﯿﺮ ﻓﻲ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ وﻟﻜﻦ ﺳﻮف
٤٦
اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ
٤٧
ﻣﺜﺎل ١
ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻧﺮﯾﺪ ﺗﺮﺗﯿﺒﮫ ﺗﺼﺎﻋﺪﯾﺎ ﻃﺒﻌﺎ ﺑﺎﺳﺘﺨﺪام رﻗﻢ اﻟﻄﺎﻟﺐ ﺣﯿﺚ اﻟﻄﺎﻟﺐ رﻗﻢ ١٠ﯾﻜﻮن أول ﺳﺠﻞ
وﺑﻌﺪ ذﻟﻚ اﻟﻄﺎﻟﺐ رﻗﻢ ١٢وھﻜﺬا ﻧﺒﺪأ ﻣﻦ اﺻﻐﺮ رﻗﻢ وﯾﻨﺘﮭﻲ ﻋﻨﺪ اﻛﺒﺮ رﻗﻢ؟
ھﻞ ﻻﺣﻈﺖ اﻟﺼﻮرة ﻗﺎرن اﻟﺼﻮرة ھﺬه ﻣﻊ اﻟﺼﻮرة اﻟﺴﺎﺑﻘﺔ ﺗﺠﺪ ھﻨﺎ أن اﻟﺼﻮرة ﻣﺮﺗﺒﺔ ﺣﺴﺐ اﻷرﻗﺎم ﻛﻤﺎ ﻃﻠﺒﻨﺎ
ﻣﻼﺣﻈﺔ :اﻟﺘﺮﺗﯿﺐ اﻻﻓﺘﺮاﺿﻲ ھﻮ ﺗﺼﺎﻋﺪي وﺗﺴﺘﻄﯿﻊ أﯾﻀﺎ اﻟﺘﺮﺗﯿﺐ ﺑﺎﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ﻋﻤﻮد
أﻣﺎ ﺑﺎﺳﺘﺨﺪام ASCﻟﺘﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي أو DESCﻟﺘﺮﺗﯿﺐ ﺗﻨﺎزﻟﻲ ﺳﻮف ﻧﻜﺘﺐ اﻟﺼﯿﻎ ﻓﻘﻂ
٤٨
ﻟﻘﺪ ﻻﺣﻈﻨﺎ اﻟﺠﺪول اﻟﺴﺎﺑﻖ وﺳﻮف ﻧﺄﺧﺬ ﻋﻠﻲ ﻛﻞ داﻟﺔ ﺗﺠﻤﯿﻊ ﻣﺜﺎل
ﻣﺜﺎل١
ﻣﻦ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ ﻋﺪد اﻟﺴﺠﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﺪول
ﻣﺜﺎل٢
أﻻن ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﻣﺘﻮﺳﻂ اﻟﻤﻌﺪﻻت اﻟﺘﺮاﻛﻤﯿﺔ ﻟﻄﻼب ؟
ﻣﻦ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ اﻟﻤﺘﻮﺳﻂ ﻟﻤﻌﺪﻻت اﻟﻄﻼب ﺟﻤﯿﻌﺎ.
ﻣﻼﺣﻈﺔ ﻣﻤﻜﻦ ﺗﺴﺘﺨﺪم اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﻣﻊ اﻟﺪوال اﻟﺘﺠﻤﯿﻌﯿﺔ ﻣﺜﺎل
;SELECT AVG(GPA) AS 'AVERAGE GPA' FROM STUDENT
ﻣﺜﺎل ٣
أﻻن ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ أﻋﻠﻲ ﻣﻌﺪل ﻣﻮﺟﻮد ﻓﻲ ﺟﺪول اﻟﻄﻼب ؟
;SELECT MAX (GPA) FROM STUDENT
ﻣﺜﺎل ٤
ﻧﺮﯾﺪ إن ﻧﻌﻜﺲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ اﻗﻞ ﻣﻌﺪل ﻣﻮﺟﻮد ﻓﻲ ﺟﺪول اﻟﻄﻼب ؟
;SELECT MIN (GPA) FROM STUDENT
ﻧﺮﯾﺪ ﻣﺠﻤﻮع اﻟﻤﻌﺪﻻت اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﺪول اﻟﻄﻼب )ﻃﺒﻌﺎ ھﺬا ﻣﺜﺎل ﺗﺴﺘﻄﯿﻊ إن ﺗﺴﺨﺪﻣﺔ ﻛﯿﻔﻤﺎ ﺗﺮﯾﺪ(؟
ﻣﺜﺎل ٥
; SELECT SUM (GPA) FROM STUDENT
ﻟﻘﺪ ﺗﻢ اﻟﺤﻤﺪ ﷲ أﻧﺠﺎز اﻟﺪرس اﻟﺜﺎﻧﻲ وإﻧﻨﻲ أﻋﻠﻢ أﻧﻨﻲ اﺧﺘﺼﺮت وﻟﻜﻦ ھﺬا اﻟﻤﻔﮭﻮم اﻷﺳﺎﺳﻲ وﺗﺴﺘﻄﯿﻊ
ﻋﻤﻞ ﻛﻞ اﻷﻓﻜﺎر اﻟﺴﺎﺑﻘﺔ .
٤٩
ﻣﻦ وﺟﮭﺔ ﻧﻈﺮي اﻟﺨﺎﺻﺔ أن HAVINGﺗﻘﻮم ﺑﺪور اﻟﺸﺮط ﻓﻔﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ
ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﺎﻟﺐ وﯾﻮﺟﺪ ﻓﯿﮫ ﻋﺪد ﻣﻦ اﻟﺘﺨﺼﺼﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻧﺮﯾﺪ ﻣﻌﺮﻓﺔ ﻋﺪد ﻃﻼب ﻛﻞ ﺗﺨﺼﺺ ﺑﺸﺮط
إن ﯾﻜﻮن ﻋﺪد ﻃﻼب اﻟﺘﺨﺼﺺ أﻛﺜﺮ ﻣﻦ ٣؟
)*( SELECT MAJOR AS ' MAJOR SPECIALTY ' ,COUNT
'AS 'OF STUDENT
FROM STUDENT
GROUP BY MAJOR
;HAVING COUNT (*) >3
ﻧﺸﺎھﺪ اﻟﻨﺘﯿﺠﺔ
ھﻞ ﻻﺣﻈﺖ إﻋﻄﺎﻧﻲ اﻷﻗﺴﺎم وﻋﺪد اﻟﻄﻼب ﻓﻲ ﻛﻞ ﻗﺴﻢ ﻋﺪد ﻃﻼﺑﮫ أﻛﺜﺮ ﻣﻦ ٣
٥٠
اﻟﻨﺘﯿﺠﺔ
ﻻﺣﻆ اﻹﻋﺪاد ﻣﺎذا ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ ﻧﺮﯾﺪ أن ﯾﻜﻮن ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ رﻗﻤﯿﻦ أو ﺣﺴﺐ اﺣﺘﯿﺎﺟﻚ ﻣﺎ اﻟﻌﻤﻞ أﻻن؟
ھﻨﺎ ﯾﺄﺗﻲ اﻟﮭﺪف ﻣﻦ داﻟﺔ اﻟﺘﻘﺮﯾﺐ ھﺬا ھﻮ ﻣﻜﺎن ﻋﻤﻠﮭﺎ اﻧﻈﺮ ﻣﻌﻲ أﻻن.
٥١
ل
ھﻨﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ اﺳﻢ اﻟﻌﺎﻣﻮد وإذا أردت
ﻋﻤﻞ ﻋﻤﻠﯿﺎت ﺣﺴﺎﺑﯿﺔ ﻋﻠﻲ اﻟﻌﺎﻣﻮد ھﻨﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ اﻹﻋﺪاد
ﺗﺴﺘﻄﯿﻊ ﻣﺎﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ
ﻻﺣﻆ اﻟﻨﺎﺗﺞ
ﺳﺴﺲ
'SELECT I_MAX_TEMP, SQR(I_MAX_TEMP) AS ' THE ROOT
;FROM TEMPERTUER
وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ ﺗﻢ اﻻﻧﺘﮭﺎء ﻣﻦ اﻟﻘﺴﻢ اﻷول ﻣﻦ اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ ﻓﻲ ھﺬه اﻟﻮﺣﺪة
٥٢
٥٣
اﻟﻨﺎﺗﺞ
٥٤
٥٥
ﻣﺜﺎل.
أﻛﺘﺐ اﺳﺘﻌﻼم ﺑﻠﻐﺔ SQLﯾﺒﯿﻦ ﻗﺎﺋﻤﺔ ﺑﺄﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ وأﺳﻤﺎء اﻷﻗﺴﺎم اﻟﺘﻲ ﯾﻌﻤﻠﻮا ﺑﮭﺎ.
ﻻﻧﺴﺘﻄﯿﻊ اﻟﺤﺼﻮل ﻋﻠﻲ اﻻﺳﺘﻌﻼم اﻟﺴﺎﺑﻖ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ ﻓﻘﻂ ﺑﻞ ﻣﻦ ﺟﺪول اﻷﻗﺴﺎم أﯾﻀﺎ.
أﻻن ﻧﻨﻈﺮ إﻟﻲ اﻟﺼﯿﻐﺔ.
SELECT first_name ,DEPT_NAME
FROM EMPLOYEE,DEPARTMENT
;WHERE EMPLOYEE.DEP_ID = DEPARTMENT.DEPT_ID
ھﺬه اﻟﻨﺘﯿﺠﺔ
أﻧﻨﻲ أﻋﻠﻢ ﻓﻲ اﻟﺪروس اﻷﺧﯿﺮة ﻟﻢ أﻗﻢ ﺑﺸﺮح واﻓﻲ ﻛﻤﺎ ﻓﻲ اﻟﺴﺎﺑﻖ وﻟﻜﻦ أﻻن أﻧﺖ أﺻﺒﺤﺖ ﻗﺎدر
ﻋﻠﻲ ﻓﮭﻢ اﻟﺼﯿﻎ ﻟﻮﺣﺪك .
٥٦
ﻟﺪﯾﻨﺎ ﺟﺪوﻟﯿﻦ ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﺪل ﻣﻦ ﻛﺘﺎﺑﺔ أﺳﻢ اﻟﺠﺪول ﻛﻞ ﻣﺮه أﺳﺘﻄﯿﻊ أن أﻋﻄﻲ اﻟﺠﺪول أﺳﻢ ﺑﺪﯾﻞ
أو ﻣﺮادف ﻟﮫ ﻛﯿﻒ ﻧﻨﻈﺮ اﻟﻲ اﻟﺼﯿﻐﮫ.
اﻟﻨﺘﯿﺠﺔ
اﻻﺳﻢ اﻟﻤﺮادف
٥٧
ﻣﻌﻨﻲ اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ ھﻮ ﺗﻀﻤﯿﻦ اﺳﺘﻌﻼم داﺧﻞ اﺳﺘﻌﻼم وﻧﺴﺘﻄﯿﻊ ﻧﻘﺴﻢ اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ إﻟﻲ
ﻗﺴﻤﯿﻦ داﺧﻠﻲ وﺧﺎرﺟﻲ.
SELECT COLUMN1,COLUMN2,……..
FROM TABLE1
اﻻﺳﺘﻌﻼم اﻟﺨﺎرﺟﻲ OUTER QUERY
= WHERE TABLE1.COLUMN
(SELECT COLUMN
FROM TABL2
;)WHERE COLUMN =VALUE اﻻﺳﺘﻌﻼم اﻟﺪاﺧﻠﻲ SUBQUERY
أﻻن ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ اﻟﺘﻘﺴﯿﻢ ﻧﻄﺒﻖ ﻣﺜﺎل .أﻛﺘﺐ اﺳﺘﻌﻼم ﺑﻠﻐﺔ SQLﯾﺒﯿﻦ ﻗﺎﺋﻤﺔ ﺑﺄﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ اﻟﻤﻮﺟﻮدﯾﻦ ﻓﻲ ﻗﺴﻢ اﻟﺪﻋﻢ اﻟﻔﻨﻲ؟
SELECT first_name FROM EMPLOYEE E
= WHERE E.DEP_ID
(SELECT DEPT_ID
FROM DEPARTMENT D
= WHERE D.DEPT_NAME
'اﻟﺪﻋﻢ اﻟﻔﻨﻲ'
;)
اﻟﻨﺎﺗﺞ
وﷲ اﻟﺤﻤﺪ واﻟﺸﻜﺮ واﻟﺜﻨﺎء اﻟﺤﻤﺪ ﷲ ﻛﺜﯿﺮا واﷲ أﻛﺒﺮ وِأﺷﮭﺪ أن ﻻ اﻟﮫ إﻻ اﷲ وأن ﻣﺤﻤﺪ ﻋﺒﺪه ورﺳﻮﻟﮫ
اﻟﻠﮭﻢ ﺻﻠﻲ وﺳﻠﻢ ﻋﻠﻲ ﻣﺤﻤﺪ وال ﻣﺤﻤﺪ .
ﻟﻘﺪ ﺗﻢ اﻻﻧﺘﮭﺎء ﻣﻦ ھﺬا اﻟﻜﺘﺎب أﺗﻤﻨﻲ أن أﻛﻮن ﻗﺪﻣﺖ ﻣﺎدة ﻋﻠﻤﯿﺔ ﺟﯿﺪة وﻧﺎﻓﻌﺔ ﻟﻠﺠﻤﯿﻊ أﺗﻤﻨﻲ أن ﯾﺠﺪ ﻣﻦ ﯾﺒﺤﺚ ﻋﻦ اﻟﻤﻌﻠﻮﻣﺔ ﻓﻲ
ﻛﺘﺎﺑﻲ ھﺬا ﻣﺎ ﯾﺮﯾﺪ .
اﻟﻘﺎدم ﺑﺄذن اﷲ ھﻮ ﻛﺘﺎب ﻋﻦ PL_SQLوﻛﺘﺎب أﺧﺮ ﻋﻦ ADO.NETوﻓﯿﺠﻮال دوت ﻧﺖ.
أﺗﻤﻨﻲ أن ﺗﺮﺳﻠﻮا أراﺋﻜﻢ ﻋﻠﻲ ﺑﺮﯾﺪي اﻻﻟﻜﺘﺮوﻧﻲ وذﻟﻚ ﻟﻜﻲ ﻷﻧﻘﻊ ﻓﻲ اﻷﺧﻄﺎء ﻟﻦ ﻛﻞ ﻋﻤﻞ ﯾﻮﺟﺪ ﺑﮫ ﺧﻄﺎء
أﺧﻮﻛﻢ :أﺣﻤﺪ اﻟﺸﮭﺮي
MAJED1423@HOTMAIL.COM
ﺟﻮال
00966568654224
ﻣﻼﺣﻈﺔ ﺑﻌﺾ ﻣﺤﺮرات SQLﻻ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ.
٥٨