Professional Documents
Culture Documents
اﻷهﺪاف
ﺑﻌﺪ إآﻤﺎلِ هﺬا اﻟﺪرسِ ،أﻧﺖ ﻳﺠِﺐ أَن ﺗﻜﻮن ﻗﺎدر إِﻟﻰ ﻋﻤﻞ اﻟﺘﺎﻟﻲ:
.1اﻟﻘﺪرة ﻋﻠﻰ ﺗﻨﻔﻴﺬﺟﻤﻠﺔ .SELECT
.2اﻟﻔﺮق ﺑﻴﻦ SQL*PLUSو iSQL* plus
هﺪف اﻟﺪرسِ
أَن ﺗﺴﺘﺨﻠﺺَ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎتِ ،ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺳﺘﺨﺪام ﺟﻤﻠﺔ . SELECT
وﻳﻤﻜﻦ ان ﺗﺤﺪد اﻷﻋﻤﺪة او اﻟﺼﻔﻮف اﻟﺘﻲ ﺳﻮف ﺗﻌﺮض.
و ﻳﻤﻜﻦ أَن ﺗﻨﺸﺊ ﺟﻤﻞ SELECTأآﺜﺮ ﻣﻦ ﻣﺮة.
هﺬا اﻟﺪّرسِ ﻳَﻐﻄّﻲ أﻳﻀﺎ iSQL*Plusﺣﻴﺚ ﺗﻨﻔﺬ ﺟﻤﻞ . Sql
ﻣﻼﺣﻆ iSQL* plus :ﻳﻌﺘﺒﺮ ﻣﻜﺎن ﺟﺪﻳﺪ ﻟﻜﺘﺎﺑﺔ اﻟﻜﻮد ﺑﺪاﺧﻠﺔ وذﻟﻚ ﻓﻰ اﻷﺻﺪار
.ORACLE 9iذﻟﻚ ﺑﺎﻷﺿﺎﻓﺔ اﻟﻰ اﻟﻤﻜﺎن اﻟﻘﺪﻳﻢ .SQL*PLUS
ن ﺗَﺘﻀﻤّﻦَ اﻟﺘّﺎﻟﻲ:
ﻣﻦ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ ،ﺟﻤﻠﺔ SELECTﻳﻤﻜﻦ أَ ْ
ﻓﻲ اﻟﻤﺜﺎل ﺗﻢ ﻋﺮض آﻞ اﻟﺼﻔﻮف ﺑﺎﻟﺠﺪول وذﻟﻚ ﻷن أﻣﺮ SELECTﻟﻢ ﻳﺘﺒﻌﻪ ﺷﺮط ﺗﺤﺪﻳﺪ
ﻋﺪد اﻟﺼﻔﻮف.
SELECT اﺳﺘﺨﺪام أواﻣﺮ SQL
وهﻮ ﻳﺴﺘﻌﺮض ﺑﻴﺎﻧﺎت اﻟﺠﺪول وﺗﺸﻴﺮ اﻟﻨﺠﻤﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ * اﻟﻰ إﻇﻬﺎر ﺟﻤﻴﻊ أﻋﻤﺪة
اﻟﺠﺪول ﺛﻢ ﻧﻜﺘﺐ أﻣﺮ FROMﻳﻠﻴﻪ أﺳﻢ اﻟﺠﺪول اﻟﺬي ﻳﺮاد اﻻﺳﺘﻌﻼم ﻋﻦ ﺑﻴﺎﻧﺎﺗﻪ وﺑﻌﺪ
اﻧﺘﻬﺎء اﻷﻣﺮ ﻳﺘﻢ وﺿﻊ ;
ﻻﺣﻆ أن أواﻣﺮ SQLﺗﻄﻠﺐ آﺘﺎﺑﺔ ﻓﺼﻠﺔ ﻣﻨﻘﻮﻃﺔ) ; ( ﻓﻲ ﺁﺧﺮ اﻷﻣﺮ وهﻨﺎ ﺳﻴﺘﻢ اﺳﺘﻌﺮاض
ﺟﻤﻴﻊ ﺑﻴﺎﻧﺎت أﻋﻤﺪة اﻟﺠﺪول ﻣﻠﺤﻮﻇﺔ أواﻣﺮ SQLﻻ ﺗﺨﺘﺼﺮ ﻣﺜﻞ آﺘﺎﺑﺔ . SELأﻧﺖَ ﻳُﻤﻜ ُ
ﻦ
ن ﺗَﻌْﺮضَ آﻞ أﻋﻤﺪةِ اﻟﺠﺪول ﺑﻜﺘﺎﺑﺔ اﻟﻜﻠﻤﺔ اﻟﺮﺋﻴﺴﻴﺔ SELECTوﻳﻠﻴﻬﺎ ﺑﻨﺠﻤﺔِ)*(
أَ ْ
ﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺠﺪ أن ﺟﺪول اﻻﻗﺴﺎم ﻳَﺤﺘﻮي ﻋﻠﻲ أرﺑﻌﺔ أﻋﻤﺪةَ وهﻢ:
DEPARTMENT_ID , DEPARTMENT_NAME, MANAGER_ID , LOCATION_ID .
وﻳﻤﻜﻦ ان ﻧﺨﺘﺎر ﻋﺪد ﻣﺤﺪد ﻣﻦ اﻻﻋﻤﺪة ﻓﻘﻂ ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ آﺘﺎﺑﺔ اﺳﻤﺎء اﻻﻋﻤﺪة اﻟﻤﺮاد
ﻋﺮﺿﻬﺎ ﺑﻌﺪ آﻠﻤﺔ SELECTووﺿﻊ (,) comaﺑﻴﻦ آﻞ ﻋﻤﻮد آﻤﺎ ﻓﻰ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ:
وﻻﺣﻆ ان ﺗﺮﺗﻴﺐ ﻇﻬﻮر اﻻﻋﻤﺪة ﻳﻜﻮن ﻋﻠﻰ اﺳﺎس ﺗﺮﺗﻴﺐ ﺗﻠﻚ اﻻﻋﻤﺪة ﻓﻰ ﺟﻤﻠﺔ
. SELECT
ﻓﺎﻟﻔﺮق ﺑﻴﻦ اﻟﻤﺜﺎﻟﻴﻦ ﺣﻴﺚ اﻷول آﺎن SELECTﺑﻌﺪهﺎ department_idوﻋﺮﺿﺖ أوﻻ
ﻳﺴﺎرا ﻓﻲ اﻟﺠﺪول ﻋﻜﺲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ﺣﻴﺚ ﺟﺎءت ﻓﻲ اﻟﺘﺮﺗﻴﺐ اﻟﺜﺎﻧﻲ .
:sql*plus
.1ﻋﻨﺎوﻳﻦ اﻟﺤﺮوف و اﻟﺘﻮارﻳﺦ ﻟﺮأس اﻟﻌﻤﻮد ﺗﻈﻬﺮ ﻳﺴﺎرا .
.2ﻋﻨﺎوﻳﻦ رأس اﻟﻌﻤﻮد ﻟﻸرﻗﺎم ﺗﻈﻬﺮ ﻳﻤﻴﻨﺎ.
.3ﺗﻌﺮض اﻟﻌﻨﺎوﻳﻦ ﺑﺤﺮوف آﺒﻴﺮة
SELECT ename, date, sal
FROM emp ;
ENAM DATE SAL
KING 17-JUN-87 1500
:iSQL*Plus
* ﻋﻨﻮان اﻟﻌﻤﻮد ﻳﻮﺿﻊ ﻓﻲ اﻟﻤﻨﺘﺼﻒ.
• ﻋﺮض اﻟﻌﻨﻮان )ﻓﻲ أﻋﻠﻰ اﻟﺼﻔﺤﺔ( ﺑﺤﺮوف آﺒﻴﺮة وﻓﻰ اﻟﻮﺳﻂ.
اﻟﻮﺻﻒ اﻟﻌﻤﻠﻴﺔ
اﻹﺿﺎﻓﺔ +
اﻟﻄﺮح -
اﻟﻀﺮب *
اﻟﻘﺴﻤﺔ /
اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ
أﺳﺒﻘﻴﺔ اﻟﻌﺎﻣﻞ:
اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﻌﺮض )اﻻﺳﻢ اﻷﺧﻴﺮِ ،اﻟﻤﺮﺗﺐ ،اﻟﻤﺮﺗﺐ*.(100+12
اﺳﺘﺨﺪام اﻷﻗﻮاس
اﺳﺘﺨﺪام اﻷﻗﻮاس:
ﻣﺜﺎل اﺧﺮ
Nullهﻲ ﻗﻴﻤﺔ ﻏﻴﺮ ﻣﺘﺎﺣﺔ ﻏﻴﺮ ﻣﺤﺪدة ﻏﻴﺮ ﻣﻌﺮوﻓﺔ وﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻻﺟﺮاء اى •
ﻋﻤﻠﻴﺔ
ﺣﺴﺎﺑﻴﺔ ﻋﻠﻴﻬﺎ.
Nullﻟﻴﺴﺖ ﻣﺴﺎوﻳﺔ ﺻﻔﺮ أو ﻣﺴﺎﻓﺔ. •
ﻗﻴﻢ Null
اى ﺧﻠﻴﺔ ﻓﻰ اﻟﺠﺪول ﻓﺎرﻏﺔ ﺗَﻜُﻮن . NULL
Nullﻗﻴﻤﺔ ﻏﻴﺮ ﻣﺘﺎﺣﺔ ﻏﻴﺮ ﻣﺤﺪدة ﻏﻴﺮ ﻣﻌﺮوﻓﺔ وﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻻﺟﺮاء ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ ﻋﻠﻴﻬﺎ.
Nullﻻ ﺗﺴﺎوى ﺻَﻔّ ْﺮ أو ﻣﺴﺎﻓﺔ ﻓﺎرﻏﺔ .ﺣﻴﺚ ان اﻟﺼَﻔّ ْﺮ ﻋﺪدُ ،واﻟﻔﺮاغ ﻳﻌﺘﺒﺮ ﺣﺮف.
ن ﺗَﺤﺘﻮي ﻋﻠﻰ . nullﻦ أَ ْ
أي ﻧﻮع ﻣﻦِ اﻟﺒﻴﺎﻧﺎتِ ﻳُﻤﻜ ُ
ﻋﻠﻰ أﻳﺔ ﺣﺎل ،ﻳﻤﻜﻦ وﺿﻊ ﺑﻌﺾ اﻟﻘﻴﻮد ﻋﻠـﻰ اﻟﺠـﺪول ﻣﺜـﻞ NOT NULLو PRIMARY
KEY
وهﺬا ﻳﻌﻨﻰ ﻋﺪم اﻣﻜﺎﻧﻴﺔ أﺣﺘﻮاء اﻟﻌﻤﻮد . NULL
ذﻟﻚ آﻤﺎ ﺳﻮف ﻧﺮى ﻓﻴﻤﺎ ﺑﻌﺪ.
ﻻﺣﻆ ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ان اﻟـﺬي ﻟﺪﻳـﻪ ﻋﻤﻮﻟـﻪ هـﻮ ﻣـﺪﻳﺮ ﻣﺒﻴﻌـﺎتِ أو ﻣﻨـﺪوب اﻟﻤﺒﻴﻌـﺎت
وﺑﺎﻗﻰ اﻟﻤﻮﻇﻔﻮن ﻟﻴﺲ ﻟﺪﻳﻬﻢ ﻧﺴﺒﺔ ﻋﻤﻮﻻت ﻟﺬﻟﻚ ﻗﻴﻢ اﻟﻌﻤﻮﻟﺔ ﻋﻨﺪهﻢ . null
ﻣﻠﺤﻮﻇﺔ:
ﺢ اﻟﻨﺘﻴﺠﺔ ﺧﻄﺄ .واﻳﻀﺎ ﻋﻨﺪﻣﺎ ﺗﺤﺎول
ن ﺗﻘﺴﻢ أي رﻗﻢ ﻋﻠﻲ ﺻﻔﺮ ،ﺗُﺼﺒ ُ ل أَ ْ
ﻋﻨﺪﻣﺎ ﺗُﺤﺎو ُ
اﺟﺮاء اى
ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﻋﻠﻰ ، Nullﻓﺘﻜﻮن اﻟﻨّﺘﻴﺠﺔ . NULL
ﻞ ﻋَﻠﻰ أي ﻋﻤﻮﻟﺔ وﻟﻜﻨﺔ ﻳﺤﺼﻞ ﻋﻠﻰ ﻣﻦ اﻟﻤﺜﺎلِ اﻟﺴﺎﺑﻖ ﻻﺣﻆ ان ) ِ(KINGﻻ ﻳَﺤﺼَ ُ
ﻣﺮﺗﺐ.وﻣﻊ ذﻟﻚ اﻟﻨّﺘﻴﺠﺔ اﺻﺒﺤﺖ ُNullﻓﻰ اﻟﺨﻠﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺔ و هﺬا ﻳﺆآﺪ ان اﺟﺮاء اى
ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﻋﻠﻰ NULLﺗﺆدى اﻟﻰ .NULL
وهﻲ ﺗﺴﺘﺨﺪم ﻟﻜﻲ ﻧﻀﻢ ﻋﻤﻮدﻳﻦ ﻓﻰ ﻋﻤﻮد واﺣﺪ ﻓﻴﺘﻢ اﺳﺘﺨﺪام ﻋﻼﻣﺔ || آﻲ ﺗﻠﺼﻖ
اﻷﻋﻤﺪة.
Example
ﺗﻢ دﻣﺞ ﻋﻤﻮد اﺳﻢ اﻟﻤﻮﻇﻒ ﻣﻊ وﻇﻴﻔﺘﺔ ﻓﻰ ﻋﻤﻮد واﺣﺪ وﺳﻤﻰ . Employees
ﻧﻼﺣﻆ ﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ان اﻻﺳﻢ اﻻول واﻟﺜﺎﻧﻰ اﺻﺒﺤﺎ ﻣﻌﺎ ﺗﺤﺖ اﺳﻢ name of
employee
)أي أﻧﻚ ﻋﻨﺪ اﻟﺮﻏﺒﺔ ﻓﻲ وﺿﻊ ﺣﺮوف ﺑﻴﻦ ﻋﻤﻮدﻳﻦ ﻳﺮاد ﻟﺼﻘﻬﻤﺎ ﻓﺄﻧﻨﺎ ﻧﻜﺘﺐ هﺬﻩ اﻟﺤﺮوف
ﺑﻴﻦ ﻋﻼﻣﺘﻴﻦ ﺗﻨﺼﻴﺺ ﻣﻔﺮدﺗﻴﻦ )|| ‘ ( || ‘ ..وﻟﻮ أرﻗﺎم ﻓﻼ ﺗﻮﺿﻊ ﺑﻴﻦ ﺷﺊ.
ﻲ ﺗُﺰﻳﻞَ اﻟﺼﻔﻮف اﻟﻤﺘﻜﺮرة ﻳﺠﺐ وﺿﻊ آﻠﻤﺔ DISTINCTﻗﺒﻞ اﺳﻢ اﻟﻌﻤﻮد اﻟﻤﺮاد ازاﻟﺔ
ﻟﻜ ْ
اﻟﺘﻜﺮار ﻣﻨﺔ ﻓﻔﻰ اﻟﻤﺜﺎلِ اﻟﺴﺎﺑﻖ،ﺟﺪول اﻟﻤﻮﻇﻔﻮن اﻟﻔﻌﻠﻲ ﻳﺘﻜﻮن ﻣﻦ 20ﺻﻒ ﻟﻜﻨﺔ ﻇﻬﺮ
ﺑﺪون ﺗﻜﺮارات ﺑﻌﺪ اﺳﺘﺨﺪام آﻠﻤﺔ . DISTINCT
Example:
SELECT DISTINCT department_id
;FROM employees
اﻟﻔﺮق ﺑﻴﻦ ISQL*PLUSو SQL
SQL*PLUSهﻲ أواﻣﺮ ﺛﺎﺑﺘﺔ ﻣﺘﻌﺎرف ﻋﻠﻴﻬﺎ و ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت .
SQL Isql*Plus
ﺗﺎﺗﻰ ﺑﺎﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻋﻠﻰ SERVERﻣﺒﺎﺷﺮة ﺗﺎﺗﻰ ﺑﺎﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻋﻠﻰ SERVERﺑﻄﺮﻳﻘﺔ
ﺑﻤﻌﻨﻰ اﻧﺔ ﻻﺑﺪ ﻣﻦ وﺟﻮد ﻗﻮاﻋﺪ ﺑﻴﺎﻧﺎت ﻏﻴﺮ ﻣﺒﺎﺷﺮة .ﺑﻤﻌﻨﻰ ﻋﺪم وﺟﻮد ﻗﺎﻋﺪ
ﻋﻠﻰ ﻧﻔﺲ اﻟﺠﻬﺎز . ﺑﻴﺎﻧﺎت ﻋﻠﻰ ﻧﻔﺲ اﻟﺠﻬﺎز.
ﻻ ﻳﻤﻜﻨﻚ ﻣﻦ ﻣﻦ اﺳﺘﺨﺪام ﺗﻠﻚ اﻟﻌﻼﻣﺔ. ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﻋﻼﻣﺔ ) (--ﻟﻜﻰ ﻳﻤﻜﻨﻚ
ﻣﻦ اﻳﻘﺎف اﻟﻜﻮد اﻟﺬى ﻋﻠﻰ ﻧﻔﺲ اﻟﺴﻄﺮ.
ﻳﻤﻜﻨﻚ ﻣﻦ ﺗﻌﺪﻳﻞ اﻟﻜﻮد اذا ﺣﺪث ﺑﺔ ﺧﻄﺄ ﻳﻤﻜﻨﻚ ﻣﻦ ﺗﻌﺪﻳﻞ اﻟﻜﻮد اذا ﺣﺪث ﺑﺔ ﺧﻄﺄ
ﻋﻦ ﻃﺮﻳﻖ آﺘﺎﺑﺔ EDﺛﻢ اﺿﻐﻂ ENTER ﺑﺴﻬﻮﻟﺔ.
ﻓﺘﻈﻬﺮ ﻟﺔ NOT PADﻳﺘﻢ ﻋﻤﻞ ﺗﻌﺪﻳﻞ
اﻟﻜﻮد ﺑﺪاﺧﻠﻬﺎ.
و ﺑﻬﺬا اﻷﻣﺮ ﻳﻈﻬﺮ ﻟﻨﺎ أﺳﻢ اﻟﻌﻤﻮد و أﻧﻮاع اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﺔ ،وأﻳﻀﺎ اﻣﻜﺎﻧﻴﺔ اﺣﺘﻮاء
اﻟﻌﻤﻮد
ﻋﻠﻰ ﺑﻴﺎﻧﺎت او اﺣﺘﻮاﺋﻬﺎ ﻋﻠﻰ . NULL
ﺗﻔﺴﻴﺮ إﻧﺸﺎء اﻟﺠﺪول: