You are on page 1of 58

‫ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﺣﻤﻦ ﺍﻟﺮﺣﻴﻢ‬

SQL ‫ﻣﻘﺪﻣﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﺎﺳﺘﺨﺪام‬

INTRODUCTION TO DATABSE
USING SQL

‫ھﺬا اﻟﻜﺘﺎب ﻣﻠﻚ ﻟﻠﺠﻤﯿﻊ وﻟﻜﻦ ﺑﺸﺮط اﻟﺪﻋﺎء ﻟﻲ ﻓﻲ ﻇﮭﺮ اﻟﻐﯿﺐ‬

PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com


‫إھﺪاء‬
‫إﻟﻲ أﺻﺪﻗﺎﺋﻲ اﻷﻋﺰاء اﻟﻤﮭﻨﺪس إﺑﺮاھﯿﻢ دروﯾﺶ اﻟﻤﺤﺎﺿﺮ ﺑﺠﺎﻣﻌﺔ اﻟﻤﻠﻚ ﺧﺎﻟﺪ‬
‫وأﺧﻲ ﻋﺎدل اﻟﺸﮭﺮي ﻣﺸﺮف ﻣﺠﻤﻮﻋﺔ أوراﻛﻞ اﻟﻌﺮﺑﯿﺔ‬
‫ﻓﮭﻢ ﻣﻦ ﻋﻠﻤﻨﻲ واﺳﺘﻔﺪت ﻣﻨﮭﻢ ﺑﻌﺪ اﷲ‬

‫ﻣﺤﺘﻮﯾﺎت اﻟﻜﺘﺎب‪:‬‬
‫ص‬ ‫ﻣﻘﺪﻣﺔ و أﻧﻮاع اﻟﺒﯿﺎﻧﺎت‬ ‫م‬

‫أﻧﻮاع ﺟﻤﻞ ‪SQL‬‬ ‫‪١‬‬

‫ﺗﻌﺮﯾﻒ أﻧﻮاع اﻟﻌﻼﻗﺎت‬ ‫‪٢‬‬

‫ﻃﺮﯾﻘﺔ ﻛﺘﺎﺑﺔ ﺟﻤﻞ ‪ SQL‬داﺧﻞ اﻷﻛﺴﺲ‬ ‫‪٣‬‬

‫ﺟﻤﻠﺔ ‪INSERT‬‬ ‫‪٤‬‬

‫ﺟﻤﻠﺔ ‪DROP‬‬ ‫‪٥‬‬

‫ﺟﻤﻠﺔ ‪ALTER‬‬ ‫‪٦‬‬

‫ﺟﻤﻠﺔ ‪INSERT‬‬ ‫‪٧‬‬

‫ﺟﻤﻠﺔ ‪DELETE‬‬ ‫‪٨‬‬

‫ﺟﻤﻠﺔ ‪UPDATE‬‬ ‫‪٩‬‬

‫ﺟﻤﻠﺔ ‪SELECT‬‬ ‫‪١٠‬‬

‫ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم واﻟﻌﻤﻠﯿﺎت‬ ‫‪١١‬‬

‫ﺗﺮﺗﯿﺐ اﻟﺼﻔﻮف ودوال اﻟﺘﺠﻤﯿﻊ‬ ‫‪١٢‬‬

‫اﻟﺪوال اﻟﺠﺎھﺰة ﻓﻲ ﻟﻐﺔ ‪SQL‬‬ ‫‪١٣‬‬

‫اﻻﺳﺘﻌﻼم ﻋﻦ ﻋﺪة ﺟﺪاول‬ ‫‪١٤‬‬

‫‪٢‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻷوﻟﻲ‬

‫ﻣﻘﺪﻣﺔ‬
‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ‬

‫ھﺬا اﻟﻌﻤﻞ ﻋﺒﺎرة ﻋﻦ ﻣﺠﮭﻮد ﻓﺮدي وﻛﻞ ﻋﻤﻞ ﯾﺤﺘﻤﻞ اﻟﺼﻮاب واﻟﺨﻄﺎء ﻓﻔﻲ ﺣﺎﻟﺔ‬

‫وﺟﻮد اﻟﺨﻄﺎء أﺗﻤﻨﻲ ﺗﺼﺤﯿﺤﮫ أو أﺑﻼﻏﻲ ﺑﺬﻟﻚ وﻟﻜﻞ ﻋﻤﻞ ﻣﺘﻄﻠﺒﺎت وﻗﺪ اﺳﺘﺨﺪﻣﺖ‬

‫اﻷﻛﺴﺲ ﻟﻮﺟﻮده ﻋﻨﺪ ﻣﻌﻈﻢ اﻟﻨﺎس وﻟﻜﻞ ﻋﻤﻞ أھﺪاف وھﺪﻓﻨﺎ ﻣﻦ اﻟﻌﻤﻞ ھﻮ ﺗﻌﻠﯿﻢ‬

‫‪SQL‬‬

‫ﻣﺎذا ﺗﻌﻨﻲ ﻛﻠﻤﺔ ‪: SQL‬ﻋﺒﺎرة ﻋﻦ ﺗﻌﻠﯿﻤﺎت ﺑﺮﻣﺠﯿﺔ ﺗﺴﺘﺨﺪم ﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﺳﻮاء ﻛﺎﻧﺖ‬
‫اﻟﻌﻤﻠﯿﺔ إﻧﺸﺎء ﺟﺪول أو ﺗﻌﺪﯾﻞ أ وﺣﺬف أو اﺳﺘﻌﻼم‬

‫‪STRUCTURED QUERY LANGUAGE‬‬


‫ﯾﻮﺟﺪ ﺛﻼث أﻗﺴﺎم ﻟﻠﻐﺔ ‪SQL‬‬

‫‪ -١‬ﻟﻐﺔ ﺗﻌﺮﯾﻒ اﻟﺒﯿﺎﻧﺎت ‪DDL‬‬


‫"‪"DATA DEFINITION LANGUAGE‬‬
‫وﺗﺴﺘﺨﺪم ﻻ ﻧﺸﺎء اﻟﺠﺪاول واﻟﻔﮭﺎرس واﻟﻮاﺟﮭﺎت‬

‫‪ -٢‬ﻟﻐﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ‪DML‬‬


‫"‪"DATA MANIPULATION LANGUAGE‬‬
‫وﺗﺴﺘﺨﺪم ﺑﻐﺮض اﻻﺳﺘﻌﻼم وﺗﺤﺪﯾﺚ اﻟﺒﯿﺎﻧﺎت‪.‬‬

‫‪ -٣‬ﻟﻐﺔ اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﺒﯿﺎﻧﺎت ‪DCL‬‬


‫"‪"DATA CONTROL LANGUAGE‬‬
‫وﺗﺴﺘﺨﺪم ﺑﻐﺮض اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﻌﻤﻠﯿﺎت ‪ TRANSACTION‬وﺣﻘﻮق اﻟﻤﺴﺘﺨﺪﻣﯿﻦ‬

‫‪٣‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﯾﻮﺿﺢ اﻟﺠﺪول اﻟﺘﺎﻟﻲ أﻧﻮاع ﺟﻤﻞ ‪SQL‬‬

‫ﺟﻤﻠﺔ ‪SQL‬‬ ‫ﻧﻮع ﺟﻤﻠﺔ ‪SQL‬‬


‫‪- CREATE TABLE‬‬ ‫ﺗﻌﺮﯾﻒ ‪DDL‬‬
‫‪- CREATE VIEW‬‬
‫‪- CREATE INDEX‬‬
‫‪- ALTER TABLE‬‬
‫‪-SELECT‬‬ ‫ﺗﻌﺎﻣﻞ ‪DML‬‬
‫‪-UPDATE‬‬
‫‪-DELETE‬‬
‫‪-INSERT‬‬

‫‪-COMMIT‬‬ ‫ﺗﺤﻜﻢ ‪DCL‬‬


‫‪-ROLLBACK‬‬
‫‪-GRANT‬‬
‫‪-REVOKE‬‬

‫ﺳﻮف ﻧﺘﻌﺎﻣﻞ ﻓﻲ ھﺬا اﻟﻤﻨﮭﺞ ﻣﻊ اﻟﻤﻘﺪﻣﺎت وﻓﻲ ﻣﻨﺎھﺞ ﻗﺎدﻣﺔ ﺳﻮف ﻧﻘﻮم ﺑﺘﻌﺎﻣﻞ ﻣﻊ‬
‫اﻟﻤﺸﺎھﺪ واﻟﻔﮭﺎرس وأﯾﻀﺎ ﻧﺘﻌﺎﻣﻞ ﻣﻊ ‪ DCL‬وﻟﻜﻦ ﺳﻮف ﻧﻘﻮم ب اﺳﺘﺨﺪام ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت‬
‫أﺧﺮي ﻣﺜﻞ ‪ ORACLE‬وﻟﻜﻦ أﻻن ﻻﺑﺪ ﻣﻦ إﺗﻘﺎن اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺪروس اﻟﻘﺎدﻣﺔ‬
‫ﺑﻌﺪ إن ﻋﺮﻓﻨﺎ أﻗﺴﺎم ‪ SQL‬ﻧﻨﺘﻘﻞ إﻟﻲ ﻣﻮﺿﻮع ﻣﮭﻢ ﺟﺪا ﻻﺑﺪ ﻣﻦ ﻣﻌﺮﻓﺘﻨﺎ ﻷﻧﻮاع اﻟﺒﯿﺎﻧﺎت‬
‫اﻟﻤﺴﺘﺨﺪﻣﺔ واﻟﻤﺸﮭﻮرة ﻓﻲ ‪ SQL‬ﺷﺎھﺪ اﻟﺠﺪول ‪...‬‬

‫‪٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫أﻧﻮاع اﻟﺒﯿﺎﻧﺎت اﻷﺳﺎﺳﯿﺔ اﻟﻘﯿﺎﺳﯿﺔ ﻓﻲ ‪SQL‬‬

‫)‪(SQL STANDARD TYPES‬‬

‫اﻟﻮﺻﻒ‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻘﯿﺎﺳﯿﺔ‬

‫ﯾﻤﺜﻞ ﺣﻘﻞ ﻧﺺ وﯾﺤﺪد اﻟﻤﺴﺘﺨﺪم ﻃﻮل اﻟﻨﺺ ﻣﻊ اﻟﻌﻠﻢ إن أﻗﺼﻲ ﻗﯿﻤﺔ‬ ‫)‪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‬‬

‫ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻗﺪ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ ﺑﻌﺾ وأھﻢ أﻧﻮاع اﻟﺒﯿﺎﻧﺎت واﻟﺘﻲ ﺳﻮف ﻧﺴﺘﺨﺪﻣﮭﺎ‬
‫ﻣﻊ اﻟﺠﺪاول اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻤﻼﺣﻈﺔ أﻧﮭﺎ ﻟﯿﺴﺖ ﻛﻞ أﻧﻮاع اﻟﺒﯿﺎﻧﺎت وإﻧﻤﺎ اﻷﻛﺜﺮ اﺳﺘﺨﺪاﻣﺎ‪-‬‬

‫‪٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷﺟﻨﺒﻲ *‬ ‫* اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ واﻟﻤﻔﺘﺎح‬
‫اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ )"‪(PRIMARY KEY "PK‬‬

‫ﯾﻌﺮف اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﻟﻠﺠﺪول ﺑﺄﻧﮫ ﻋﺎﻣﻮد ﻓﻲ اﻟﺠﺪول ﯾﺤﺘﻮي ﻋﻠﻲ ﻗﯿﻢ ﻓﺮﯾﺪة )ﻻ ﺗﺘﻜﺮر(‬

‫ﻓﻮاﺋﺪ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ‪:‬‬


‫‪ -١‬ﯾﻮﻓﺮ وﺳﯿﻠﺔ ﻟﺘﻤﯿﯿﺰ ﺻﻔﻮف اﻟﺠﺪول وﺑﺬﻟﻚ ﯾﻤﻜﻦ ﺗﺤﺪﯾﺪ ﺻﻒ ﻣﻌﯿﻦ ﻓﻲ اﻟﺠﺪول ﺑﻤﻌﺮﻓﺔ‬
‫ﻗﯿﻤﺔ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ‬

‫وﯾﻤﺜﻞ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﺑﻮﺿﻊ ﺧﻂ ﺗﺤﺖ اﻟﻌﺎﻣﻮد ﻃﺒﻌﺎ ذﻟﻚ ﯾﺘﻢ ﻋﻨﺪ ﺗﺼﻤﯿﻢ اﻟﺠﺪاول ﻋﻠﻲ اﻟﻮرق‬
‫ﻣﺜﺎل ﻧﺮﯾﺪ إﻧﺸﺎء ﺟﺪول ﻟﻄﻼب‬
‫)رﻗﻢ اﻟﻄﺎﻟﺐ ‪ ،‬اﺳﻢ اﻟﻄﺎﻟﺐ ‪،‬ﻋﻤﺮ اﻟﻄﺎﻟﺐ(‬
‫رﻗﻢ اﻟﻄﺎﻟﺐ ھﻮ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ واﻟﺴﺒﺐ اﻧﮫ ﻣﻦ اﻟﻤﺴﺘﺤﯿﻞ وﺟﻮد ﻃﺎﻟﺒﯿﻦ أو أﻛﺜﺮ ﻟﺪﯾﮭﻢ‬
‫ﻧﻔﺲ اﻟﺮﻗﻢ ﻛﻞ ﻃﺎﻟﺐ ﯾﺨﺘﻠﻒ رﻗﻤﮫ ﻋﻦ اﻷﺧﺮ داﺧﻞ اﻟﺠﺎﻣﻌﺔ أو اﻟﻜﻠﯿﺔ اﻟﻮاﺣﺪة‬

‫اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ )"‪(FOREIGN KEY"KEY‬‬

‫ﯾﻌﺮف اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ ﺑﺄﻧﮫ ﻋﻤﻮد أو أﻛﺜﺮ ﻓﻲ اﻟﺠﺪول ﯾﺸﯿﺮ إﻟﻲ ﻣﻔﺘﺎح أﺳﺎﺳﻲ ﻓﻲ ﺟﺪول‬
‫أﺧﺮ‬

‫ﻓﻮاﺋﺪ اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ‪:‬‬


‫‪ -١‬ﯾﻮﻓﺮ اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ وﺳﯿﻠﺔ إﻟﻲ ﻟﺮﺑﻂ ﺟﺪوﻟﯿﻦ أو أﻛﺜﺮ ﺑﺤﯿﺚ اﻧﮫ ﯾﻤﻜﻦ ﺗﺤﺪﯾﺪ ﺻﻒ‬
‫ﻣﻌﯿﻦ ﻓﻲ اﻟﺠﺪول ﺑﻤﻌﺮﻓﺔ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ‬

‫ﻣﺜﺎل‬
‫ﺟﺪول اﻟﻤﺪرﺳﯿﻦ‬
‫)رﻗﻢ اﻟﻤﺪرس‪ ،‬اﺳﻢ اﻟﻤﺪرس‪،‬اﻟﮭﺎﺗﻒ(‬

‫)رﻗﻢ اﻟﻤﻘﺮر‪،‬اﺳﻢ اﻟﻤﻘﺮر‪،‬ﻋﺪد اﻟﺴﺎﻋﺎت‪،‬رﻗﻢ اﻟﻤﺪرس(‬ ‫ﺟﺪول اﻟﻤﻘﺮر‬

‫ﻻﺣﻆ رﻗﻢ اﻟﻤﺪرس ﻓﻲ ﺟﺪول اﻟﻤﺪرﺳﯿﻦ ورﻗﻢ اﻟﻤﺪرس ﻓﻲ ﺟﺪول اﻟﻤﻘﺮر ﻟﻮﺑﺤﺜﻨﺎ ﻋﻦ اﻟﻤﺪرس‬
‫اﻟﺬي ﯾﺪرس ﻣﺜﻼ ﻣﺎدة اﻟﺮﯾﺎﺿﯿﺎت ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ ﺑﯿﺎﻧﺎت اﻟﻤﺪرس واﻟﻤﻘﺮر‬

‫ﻣﻼﺣﻈﺔ ﯾﻮﺟﺪ أﻛﺜﺮ ﻣﻦ ﻃﺮﯾﻘﺔ ﻟﺘﻤﺜﯿﻞ اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ ﻋﻠﻲ اﻟﻮرق وﻟﻜﻦ ﯾﮭﻤﻨﺎ ﻣﻌﺮﻓﺔ‬
‫أﻧﻮاع اﻟﻤﻔﺎﺗﯿﺢ وأﺗﻤﻨﻰ أن أﻛﻮن وﻓﻘﺖ ﻓﻲ اﻟﺸﺮح‬

‫‪٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


-‫ ﺃﻧﻮﺍﻉ ﺍﻟﻌﻼﻗﺎﺕ‬-

  


 
     
1:1 ONE-TO-ONE  
1:N ONE-TO-MANY  
M:N MANY-TO-MAN  


(ONE TO ONE)
‫ﻣﺜﺎل‬
:‫اﻟﻌﻼﻗﺔ ﺑﯿﻦ ﺟﺪول اﻟﻘﺴﻢ واﻟﻤﺪﯾﺮ )ﻣﺪﯾﺮ اﻟﻘﺴﻢ( ھﻲ ﻣﻦ ﻧﻮع واﺣﺪ إﻟﻲ واﺣﺪ وھﺬا ﯾﻌﻨﻲ‬
‫ ﻟﻜﻞ ﻗﺴﻢ ﻣﺪﯾﺮ واﺣﺪ‬-١
‫ ﻛﻞ ﻣﺪﯾﺮ ﯾﺪﯾﺮ ﻗﺴﻢ واﺣﺪ‬-٢
‫ﻃﺮﯾﻘﺔ اﻟﺮﺑﻂ ﺑﯿﻦ ﺟﺪوﻟﯿﻦ‬

PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com


‫‪-٢‬ﻋﻼﻗﺔ واﺣﺪ إﻟﻲ ﻛﺜﯿﺮ )"‪(ONE-TO-MANY "I:N‬‬
‫ﻣﻼﺣﻈﺔ ‪ :‬ھﺬه اﻟﻄﺮﯾﻘﺔ ﻣﻦ أﻛﺜﺮ اﻟﻄﺮق اﺳﺘﺨﺪام‬

‫ﻣﺜﺎل‬
‫ﺟﺪول اﻟﻤﺪرﺳﯿﻦ‬
‫)رﻗﻢ اﻟﻤﺪرس‪ ،‬اﺳﻢ اﻟﻤﺪرس‪،‬اﻟﮭﺎﺗﻒ(‬

‫)رﻗﻢ اﻟﻤﻘﺮر‪،‬اﺳﻢ اﻟﻤﻘﺮر‪،‬ﻋﺪد اﻟﺴﺎﻋﺎت‪،‬رﻗﻢ اﻟﻤﺪرس(‬ ‫ﺟﺪول اﻟﻤﻘﺮر‬

‫اﻧﻈﺮ اﻟﺮﺳﻢ‬

‫ﻻﺣﻆ ﻓﻲ ھﺬا اﻟﻤﺜﺎل ‪:‬‬


‫‪ -١‬اﻟﻤﻘﺮر اﻟﻮاﺣﺪ ﯾﺘﻢ ﺗﺪرﯾﺴﮫ ﺑﻮاﺳﻄﺔ ﻣﺪرس واﺣﺪ ﻓﻘﻂ‬
‫‪ -٢‬اﻟﻤﺪرس اﻟﻮاﺣﺪ ﯾﻤﻜﻨﮫ ﻣﻦ ﺗﺪرﯾﺲ أﻛﺜﺮ ﻣﻦ ﻣﻘﺮر‬
‫اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ )‪(PK‬‬
‫ﻟﺠﺪول اﻟﻤﺪرﺳﯿﻦ ھﻮ رﻗﻢ اﻟﻤﺪرس‬
‫ﻟﺠﺪول اﻟﻤﻘﺮر ھﻮ رﻗﻢ اﻟﻤﻘﺮر‬
‫اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ)‪(FK‬‬
‫ﻟﺠﺪول اﻟﻤﺪرﺳﯿﻦ ﻻ ﯾﻮﺟﺪ‬
‫ﺟﺪول اﻟﻤﻘﺮر ﯾﺤﺘﻮي ﻋﻠﻲ ﻣﻔﺘﺎح أﺟﻨﺒﻲ ھﻮ رﻗﻢ اﻟﻤﺪرس‬
‫ﻣﻼﺣﻈﺔ‪:‬‬
‫اﻟﺴﮭﻢ ﯾﺒﺪأ ﻋﻨﺪ اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ ﻓﻲ ﺟﺪول اﻟﻤﻘﺮر وﯾﺸﯿﺮ إﻟﻲ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﻓﻲ ﺟﺪول اﻟﻤﺪرس‬

‫‪٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪-٣‬ﻋﻼﻗﺔ ﻛﺜﯿﺮ إﻟﻲ ﻛﺜﯿﺮ )"‪(MANY-TO-MANY "M:N‬‬

‫ﻟﺪﯾﻨﺎ ‪٣‬ﺟﺪاول اﻟﺠﺪول اﻷول اﻟﻄﻼب )رﻗﻢ اﻟﻄﺎﻟﺐ‪،‬اﺳﻢ اﻟﻄﺎﻟﺐ‪،‬اﻟﺘﺨﺼﺺ(‬


‫اﻟﺠﺪول اﻟﻮﺳﯿﻂ اﻟﺘﺴﺠﯿﻞ )رﻗﻢ اﻟﺘﺴﺠﯿﻞ‪،‬رﻗﻢ اﻟﻄﺎﻟﺐ‪،‬رﻗﻢ اﻟﻤﻘﺮر‪ ،‬اﻟﺪرﺟﺔ(‬
‫اﻟﺠﺪول اﻟﺜﺎﻧﻲ اﻟﻤﻘﺮر )رﻗﻢ اﻟﻤﻘﺮر‪،‬اﺳﻢ اﻟﻤﻘﺮر‪،‬ﻋﺪدا ﻟﺴﺎﻋﺎت‪،‬رﻗﻢ اﻟﻤﺪرس(‬

‫ﻻﺣﻆ اﻷﺗﻲ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‬


‫‪ -‬اﻟﻤﻘﺮر اﻟﻮاﺣﺪ ﯾﻤﻜﻦ إن ﯾﺴﺠﻞ ﻓﯿﮫ أﻛﺜﺮ ﻣﻦ ﻃﺎﻟﺐ‬
‫‪ -‬اﻟﻄﺎﻟﺐ ﯾﻤﻜﻦ إن ﯾﺴﺠﻞ أﻛﺜﺮ ﻣﻦ ﻣﻘﺮر‬
‫ﻛﻤﺎ ﺗﺮي ﻓﻲ ﻋﻼﻗﺔ ﻛﺜﯿﺮ إﻟﻲ ﻛﺜﯿﺮ ﻻ ﯾﻤﻜﻦ إن ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﺟﺪوﻟﯿﻦ ﻣﺒﺎﺷﺮة)اﻟﻄﻼب‪،‬واﻟﻤﻘﺮر( ﻓﻠﺬﻟﻚ ﺗﺤﺘﺎج إﻟﻲ ﺟﺪول وﺳﯿﻂ‬
‫اﻟﺠﺪول اﻟﻮﺳﯿﻂ ﻟﺪﯾﻨﺎ ﻓﻲ ھﺬا اﻟﻤﺜﺎل )اﻟﺘﺴﺠﯿﻞ( أﺻﺒﺢ ﻟﺪﯾﻨﺎ ‪ ٣‬ﺟﺪاول‬
‫اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ )‪(PK‬‬
‫ﻟﺠﺪول اﻟﻄﻼب ھﻮ رﻗﻢ اﻟﻄﺎﻟﺐ‬
‫ﻟﺠﺪول اﻟﻤﻘﺮر ھﻮ رﻗﻢ اﻟﻤﻘﺮر‬
‫ﻟﺠﺪول اﻟﺘﺴﺠﯿﻞ ھﻮ رﻗﻢ اﻟﺘﺴﺠﯿﻞ‬
‫اﻟﻤﻔﺘﺎح اﻷﺟﻨﺒﻲ)‪(FK‬‬
‫ﺟﺪول اﻟﻄﺎﻟﺐ ﻻ ﯾﻮﺟﺪ‬
‫ﺟﺪول اﻟﻤﻘﺮر ھﻮ رﻗﻢ اﻟﻤﺪرس وﻗﺪ ﺗﻢ رﺑﻄﮫ ﻣﻊ ﺟﺪول اﻟﻤﺪرﺳﯿﻦ ﻓﻲ ﻋﻼﻗﺔ واﺣﺪ إﻟﻲ ﻛﺜﯿﺮ‬
‫ﺟﺪول اﻟﺘﺴﺠﯿﻞ ﯾﻮﺟﺪ ‪ ٢‬ﻣﻔﺘﺎح أﺟﻨﺒﻲ ھﻮ رﻗﻢ اﻟﻄﺎﻟﺐ ورﻗﻢ اﻟﻤﻘﺮر وﺗﻢ رﺑﻂ رﻗﻢ اﻟﻄﺎﻟﺐ ﻣﻦ ﺟﺪول اﻟﺘﺴﺠﯿﻞ ﺑﺮﻗﻢ اﻟﻄﺎﻟﺐ ﻣﻦ‬
‫ﺟﺪول اﻟﻄﻼب وﺗﻢ رﺑﻂ رﻗﻢ اﻟﻤﻘﺮر ﻣﻦ ﺟﺪول اﻟﺘﺴﺠﯿﻞ ﺑﺮﻗﻢ اﻟﻤﻘﺮر ﻣﻦ ﺟﺪول اﻟﻤﻘﺮر‬

‫" أﺗﻤﻨﻲ إن أﻛﻮن وﻓﻘﺖ ﻓﻲ ﺗﻮﺻﯿﻞ اﻟﻤﻌﻠﻮﻣﺔ"‬

‫‪٩‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻟﺜﺎﻧﯿﺔ‬

‫‪STRUCTURED QUERY LANGUAGE‬‬


‫ﺧﻼل ھﺬه اﻟﻮﺣﺪة ﺳﻮف ﻧﺒﺪأ ﺑﺸﻜﻞ ﺣﻘﯿﻘﻲ ﻓﻲ ‪ SQL‬وﺳﻮف ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟﺘﻌﻠﯿﻤﺎت‬

‫"‪"DATA DEFINITION LANGUAGE‬‬


‫‪DDL‬‬

‫ﺳﻮف ﻧﺒﺪأ ﺑﺎﻟﻘﺴﻢ اﻷول ﻣﻦ ‪ SQL‬وھﻮ ‪ DDL‬ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻲ‬


‫‪ -١‬ﺟﻤﻠﺔ ‪CREATE‬‬
‫‪ -٢‬ﺟﻤﻠﺔ ‪DROP‬‬
‫‪ -٣‬ﺟﻤﻠﺔ ‪ALTER‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت ‪ SQL‬ﻻ ﺗﺨﺘﻠﻒ ﻓﻲ ﻃﺮﯾﻘﺔ ﻛﺘﺎﺑﺘﮭﺎ‬
‫ﻧﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﮭﺎ ﻓﻲ اﻻوراﻛﻞ و‪ MY SQL‬و أﻛﺴﺲ‬
‫و ‪ MS SQL SERVER‬و ‪ DB2‬وھﻨﺎ اﺳﺘﺨﺪﻣﺖ‬
‫اﻻﻛﺴﯿﺲ ﻟﺘﻮﻓﺮه ﻟﺪي اﻟﺠﻤﯿﻊ ھﺬا ھﻮ اﻟﺴﺒﺐ‬

‫‪١٠‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪ -١‬أﻧﻮاع ﺟﻤﻠﺔ ‪CREATE‬‬

‫ﻓﻲ ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت ‪ SQL‬ﯾﻮﺟﺪ ﺛﻼث أﻧﻮاع ﻣﻦ ﺟﻤﻠﺔ ‪ CREATE‬أو ﺛﻼث وﺳﺎﺋﻞ‬
‫أﻧﻈﺮ اﻟﺠﺪول‪.‬‬

‫اﻟﺠﻤﻠﺔ‬ ‫ھﺪف اﻟﺠﻤﻠﺔ‬


‫‪CREATE TABLE‬‬ ‫أﻧﺸﺎء ﺟﺪول ﻓﺎرغ)ﺑﺪون ﺻﻔﻮف(‬
‫‪CREATE VIEW‬‬ ‫أﻧﺸﺎء واﺟﮭﺔ ﻣﻦ ﺑﻌﺾ اﻷﻋﻤﺪة ﻟﺤﺠﺐ ﺑﻌﺾ‬
‫اﻟﻤﻌﻠﻮﻣﺎت ﻓﻤﺜﻼ )اﻟﻤﺪﯾﺮ ﻟﺪﯾﺔ ﻛﺎﻣﻞ اﻟﺼﻼﺣﯿﺎت‬
‫ﺑﯿﻨﻤﺎ ﻣﺪﺧﻞ اﻟﺒﯿﺎﻧﺎت ﻟﻘﺴﻢ اﻟﻤﻮﻇﻔﯿﻦ ﻟﯿﺲ ﻟﮫ‬
‫اﻟﺤﻖ ﻓﻲ ﻣﺸﺎھﺪة ﺑﯿﺎﻧﺎت ﻗﺴﻢ اﻟﻤﺤﺎﺳﺒﺔ(‬
‫ﺗﻘﺮﯾﺒﺎ ھﻲ ﺗﺸﺒﮫ اﻟﺼﻼﺣﯿﺎت‬
‫‪CREATE INDEX‬‬ ‫إﻧﺸﺎء ﻓﮭﺮس ﻟﺒﻌﺾ اﻷﻋﻤﺪة)واﻟﺴﺒﺐ ﯾﻌﻮد‬
‫ﻟﺮﻓﻊ ﺳﺮﻋﺔ اﻟﺒﺤﺚ(‬

‫ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻧﻼﺣﻆ إن ﺟﻤﻠﺔ ‪ CREATE‬ﯾﺘﺒﻌﮭﺎ ﺛﻼث ﻋﻤﻠﯿﺎت وﻟﻜﻦ اﻟﺬي‬

‫ﺳﻮف ﻧﺘﻌﻠﻤﮫ ﺧﻼ ل ھﺬه اﻟﻔﺘﺮة ھﻮ ‪ CREATE TABLE‬وﻓﻲ اﻟﻜﺘﺎب اﻟﻘﺎدم إن ﺷﺎء اﷲ‬

‫ﺳﻮف ﻧﺘﻌﻠﻢ اﻟﺒﺎﻗﻲ ‪.‬‬


‫وأﻻن أول ﺣﺎﺟﺔ ﻧﺘﻌﻠﻤﮭﺎ ﻃﺮﯾﻘﺔ ﻓﺘﺢ اﻷﻛﺴﺲ وﻣﻜﺎن ﻛﺘﺎﺑﺔ ﻛﻮد ‪SQL‬‬
‫راح ﻧﺸﺮح ﺑﺼﻮر‪.‬‬
‫‪ -١‬ﺷﻐﻞ اﻷﻛﺴﺲ وأﻧﺸﺊ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺪﯾﺪة وﺳﻤﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ب أي أﺳﻢ أﻧﺖ ﻋﺎوزه‬

‫‪١١‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ اﺿﻐﻂ ﻋﻠﻲ اﻟﻜﺎﺋﻦ اﺳﺘﻌﻼﻣﺎت‬-٢

‫ اﺧﺘﺮ ﺟﺪﯾﺪ‬-٣

١٢

PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com


‫ اﺧﺘﺮ ﻃﺮﯾﻘﺔ ﻋﺮض اﻟﺘﺼﻤﯿﻢ‬-٤

‫ اﺿﻐﻂ ﻋﻠﻲ ﻣﻮاﻓﻖ‬-٥

‫اﺿﻐﻂ ھﻨﺎ‬

١٣

PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com


‫‪ -٦‬ﻇﮭﺮت ﻟﻚ اﻟﺸﺎﺷﺔ اﻟﺴﺎﺑﻘﺔ‬
‫ﻟﻮ ﺗﻜﺮﻣﺖ أﺿﻐﻂ ﻋﻠﻲ اﻷﻣﺮ إﻏﻼق‬

‫‪-٧‬أﻻن ﻣﻦ ﺷﺮﯾﻂ اﻻداوات ﻓﻲ اﻻﻋﻠﻲ أﺿﻐﻂ ﻋﻠﻲ اﺳﺘﻌﻼم‬

‫‪-٨‬أﺿﻐﻂ ﻋﻠﻲ ﺧﺎص ب ‪SQL‬‬

‫‪ -٩‬أﺿﻐﻂ ﻋﻠﻲ ﺗﻌﺮﯾﻒ اﻟﺒﯿﺎﻧﺎت‬

‫‪١٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪ -١٠‬ﺳﻮف ﺗﻈﮭﺮ ﻟﻚ اﻟﺸﺎﺷﺔ اﻟﻘﺎدﻣﺔ وھﻲ ﻣﻜﺎن ﻛﺘﺎﺑﺔ ﺗﻌﻠﯿﻤﺎت ‪SQL‬‬

‫أﻻن ﺗﻌﻠﻤﻨﺎ ﻃﺮﯾﻘﺔ ﻓﺘﺢ ﻣﺤﺮر ‪ SQL‬داﺧﻞ اﻷﻛﺴﺲ " إﻟﻒ ﻣﺒﺮوك "‬

‫‪١٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪-----------------------------------------------------------------------------------------‬‬
‫‪------------------------------------------------------------------------------------------‬‬
‫أﻻن ﻧﺘﻌﺮف ﻋﻠﻲ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺠﻤﻠﺔ ‪CREATE TABLE‬‬

‫اﺳﻢ اﻟﺠﺪول‬
‫ﻛﻠﻤﺔ ﻣﻔﺘﺎح\ ﻣﺤﺠﻮزة‬

‫‪CREATE TABLE TABLE_NAME‬‬


‫(‬
‫‪COLUMN_NAME 1 DATA_TYPE1 [CONSTRAINT],‬‬
‫‪COLUMN_NAME 2 DATA_TYPE2 [CONSTRAINT],‬‬
‫‪COLUMN_NAME 3 DATA_TYPE3 [CONSTRAINT],‬‬
‫;)‬

‫أﺳﻤﺎء اﻷﻋﻤﺪة‬ ‫ﻧﻮع ﺑﯿﺎﻧﺎت اﻟﻌﻤﻮد‬ ‫اﻟﻘﯿﺪ أن وﺟﺪ‬


‫وﺳﻮف ﻧﺘﻌﻠﻢ‬
‫أﻧﻮاع اﻟﻘﯿﻮد‬
‫ﻻﺣﻘﺎ‬

‫أﻻن ﻧﺮﯾﺪ أﻧﺸﺎء ﺟﺪول ﺧﺎص ﺑﺎﻟﻄﻼب اﻧﻈﺮ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﺒﯿﻦ ﺧﺼﺎﺋﺺ اﻟﺠﺪول اﻟﻤﺮاد‬
‫أﻧﺸﺎؤه‬
‫اﻟﻘﯿﺪ‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬ ‫اﺳﻢ اﻟﻌﺎﻣﻮد ‪COLUMN NAME‬‬
‫‪CONSTRAINTS DATA_TYPE‬‬ ‫ﺑﺎﻟﻌﺮﺑﻲ‬
‫‪PK‬‬ ‫)‪Char(10‬‬ ‫‪STUDENT_NO‬‬ ‫رﻗﻢ اﻟﻄﺎﻟﺐ‬
‫‪NOT NULL‬‬ ‫)‪VARCHR(20‬‬ ‫اﺳﻢ اﻟﻄﺎﻟﺐ ‪STUDENT_NAME‬‬
‫ﻻﯾﻮﺟﺪ‬ ‫)‪VARCHR(10‬‬ ‫‪MAJOR‬‬ ‫اﻟﺘﺨﺼﺺ‬
‫ﻻﯾﻮﺟﺪ‬ ‫‪integer‬‬ ‫‪GPA‬‬ ‫اﻟﻤﻌﺪل‬
‫اﻟﺘﺮاﻛﻤﻲ‬

‫ﻣﻼﺣﻈﺎت ﻣﮭﻤﺔ ‪:‬‬

‫‪ -١‬ﻻﺣﻆ ﻓﻲ أن اﻟﺼﻒ اﻷول وھﻮ رﻗﻢ اﻟﻄﺎﻟﺐ ﻋﻤﻮد اﻟﻘﯿﺪ)‪ (CONSTRAINTS‬وﺟﻮد‬


‫ﻛﻠﻤﺔ )‪ (PK‬ﻣﻌﻨﻲ ذﻟﻚ أن اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ ﻟﻠﺠﺪول ھﻮ رﻗﻢ اﻟﻄﺎﻟﺐ )راﺟﻊ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻲ‬

‫واﻷﺟﻨﺒﻲ(‪.‬‬
‫‪ -٢‬ﻓﻲ اﻟﺼﻒ اﻟﺜﺎﻧﻲ وھﻮ أﺳﻢ اﻟﻄﺎﻟﺐ وﺿﻌﻨﺎ ﻗﯿﺪ وھﻮ ‪ NOT NULL‬ﻣﻌﻨﻲ ذﻟﻚ اﻧﮫ‬
‫ﯾﺠﺐ إدﺧﺎل ﻗﯿﻤﮫ ﻻﯾﻘﺒﻞ ﻗﯿﻤﮫ ﻓﺎرﻏﺔ‪.‬‬

‫‪ -٣‬اﻟﺼﻒ اﻟﺜﺎﻟﺚ واﻟﺮاﺑﻊ ﻻﯾﻮﺟﺪ ﻋﻠﯿﮭﺎ ﻗﯿﻮد‬

‫أﻻن ﺷﺎھﺪ ﻣﻌﻲ ﻃﺮﯾﻘﺔ ﻛﺘﺎﺑﺔ أﻣﺮ ‪ SQL‬داﺧﻞ اﻻﻛﺴﯿﺲ وﺗﻨﻔﯿﺬھﺎ‬

‫‪١٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻗﻢ ﺑﻔﺘﺢ اﻻﻛﺴﯿﺲ ﺑﻄﺮﯾﻘﺔ اﻟﺘﻲ ﻋﻠﻤﻨﺎھﺎ ﺳﺎﺑﻘﺎ‬
‫اﻧﻈﺮ اﻟﺼﻮرة‬

‫ﺑﻌﺪ ذﻟﻚ‬

‫أﺿﻐﻂ ھﻨﺎ ﻟﺘﻨﻔﯿﺬ اﻷﻣﺮ‬

‫‪١٧‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫وأﻻن ﺗﺸﺎھﺪ اﻟﻨﺘﯿﺠﺔ‬

‫ﻧﻼﺣﻆ وﺟﻮد ﺟﺪول اﻟﻄﺎﻟﺐ أﻻن ﻗﻢ ﺑﻔﺘﺤﺔ وأﻧﻈﺮ إﻟﻲ اﻟﺘﻔﺎﺻﯿﻞ‬

‫)‪CONSTRAINT PK_STUDENT PRIMARY KEY (student_no‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻻﺑﺪ إن‬


‫أﺳﻢ اﻟﻌﺎﻣﻮد‬
‫ﺗﻜﺘﺐ‬
‫اﻟﻤﻘﺎﺑﻞ ﻟﻠﻘﯿﺪ‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﺗﺴﺘﺨﺪم‬ ‫‪-‬‬


‫ﻟﺒﺪء ﻛﺘﺎﺑﺔ ﺟﻤﻠﺔ اﻟﻘﯿﺪ‬ ‫‪-‬ﻛﻠﻤﺔ اﺧﺘﯿﺎرﯾﺔ ﻓﻲ ﺑﻌﺾ ﻟﺒﺮاﻣﺞ ﻣﺜﻞ‬
‫أﻛﺴﺲ ﻻﺑﺪ ﻣﻦ ﻛﺘﺎﺑﺘﮭﺎ وﯾﻔﻀﻞ إﻧﺎ ﺗﺒﺪأ‬
‫ﺑﺤﺮﻓﻲ ‪PK‬‬

‫"" ﻣﻦ ھﻨﺎ ﻧﻘﻮل أﻧﻨﺎ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ ‪ CREATE TABLE‬وأي ﻣﺜﺎل أﺧﺮ ﻧﻔﺲ اﻟﻄﺮﯾﻘﺔ‬

‫‪١٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪ -‬ﺟﻤﻠﺔ إﻟﻐﺎء أو ﺣﺬف اﻟﺠﺪول ‪DROP TABLE‬‬
‫ﺗﻮﻓﺮ ‪ SQL‬ﺟﻤﻠﺔ ﺧﺎﺻﺔ ﻟﺤﺬف ﺟﺪول ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ھﺬه اﻟﺠﻤﻠﺔ ھﻲ ﺟﻤﻠﺔ ‪DROP TABLE‬‬

‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺠﻤﻠﺔ ‪DROP TABLE‬‬

‫; ‪DROP TABLE TABLE_NAME‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة‬

‫اﺳﻢ‬
‫اﻟﺠﺪول‬
‫اﻧﻈﺮ اﻟﺼﻮرة اﻟﺘﺎﻟﻲ‬

‫ﺑﻌﺪ ذﻟﻚ‬

‫‪١٩‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﺿﻐﻂ ھﻨﺎ‬

‫ﺳﻮف ﯾﻨﻔﺬ اﻷﻣﺮ وﯾﺘﻢ ﺣﺬف اﻟﺠﺪول ‪STUDENT‬‬

‫ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ اﻟﺤﺬف وﺟﻤﯿﻊ اﻷﻣﺜﻠﺔ ﺗﻨﻄﺒﻖ ﻋﻠﯿﮭﺎ ﻧﻔﺲ اﻟﻌﻤﻠﯿﺔ‬
‫‪---------------------------------------------------------------------------------------------------‬‬
‫‪-------------------------------------------------------‬‬

‫ﺟﻤﻠﺔ ‪ALTER TABLE‬‬

‫ﻟﻮ أردﻧﺎ ﺗﺒﺪﯾﻞ ﺧﺼﺎﺋﺺ ﺣﻘﻞ ﻣﻌﯿﻦ وﻗﺪ ﺗﻢ أﻧﺸﺎء اﻟﺠﺪول ﻓﻤﺎ اﻟﻌﻤﻞ ھﻞ ﻧﻌﯿﺪ أﻧﺸﺎء اﻟﺠﺪول ﻣﻦ‬
‫ﺟﺪﯾﺪ إﺟﺎﺑﺔ ﻏﯿﺮ ﻣﻨﻄﻘﯿﺔ ﻓﻠﺬﻟﻚ وﺟﺪت ﺗﻌﻠﯿﻤﺔ ‪ALTER‬‬

‫ﻣﺜﺎل‪١‬‬

‫ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ ﺣﻘﻞ داﺧﻞ ﺟﺪول ﻓﻤﺜﻼ ﺣﻘﻞ اﻟﻤﻌﺪل ﻧﺮﯾﺪ ﺗﺤﻮﯾﻠﮫ ﻣﻦ ﻋﺪد ﺻﺤﯿﺢ إﻟﻲ ﻋﺪد‬
‫ﻋﺸﺮي أﻻن ﻧﺴﺘﺨﺪم ‪ALTER‬‬

‫ﻣﺜﺎل‪٢‬‬

‫ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ إﺿﺎﻓﺔ ﺣﻘﻞ داﺧﻞ ﺟﺪول ﻓﻤﺜﻼ ﻧﺮﯾﺪ إﺿﺎﻓﺔ ﺣﻘﻞ ﻟﻠﻌﻤﺮ إﻟﻲ ﺟﺪول اﻟﻄﺎﻟﺐ‬
‫أﻻن ﻧﺴﺘﺨﺪم ‪ALTER‬‬

‫‪٢٠‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺗﻌﻠﯿﻤﯿﺔ ‪ ALTER‬ﺗﻨﻘﺴﻢ أﻟﻲ ‪ ٣‬أﻗﺴﺎم اﻧﻈﺮ اﻟﺠﺪول‬
‫اﻟﮭﺪف‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬
‫إﺿﺎﻓﺔ ﺣﻘﻞ ﺟﺪﯾﺪ أﻟﻲ اﻟﺠﺪول‬ ‫‪ADD‬‬
‫ﺗﻌﺪﯾﻞ ﺧﺼﺎﺋﺺ ﺣﻘﻞ ﻣﻮﺟﻮد داﺧﻞ اﻟﺠﺪول‬ ‫‪MOIFY‬‬
‫ﺗﻐﯿﺮ اﺳﻢ اﻟﺠﺪول‬ ‫‪RENAME‬‬

‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺠﻤﻠﺔ ‪ ALTER‬ﻣﻊ ‪ADD‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬


‫ﺗﻐﯿﺮ اﻟﺠﺪول‬

‫اﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد ﺗﻌﺪﯾﻠﮫ‬

‫‪ALTER TABLE TABLE_NAME‬‬


‫;‪ADD NEW _COLUMN_NAME DATA_TYPE‬‬

‫ﻧﻮع ﺑﯿﺎن اﻟﻌﻤﻮد‬


‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ إﺿﺎﻓﺔ‬
‫أﺳﻢ‬
‫ﻋﻤﻮد‬
‫اﻟﻌﻤﻮد‬

‫ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ‬
‫ﻧﺮﯾﺪ أﺿﺎﻓﮫ ﻋﻤﻮد اﻟﻌﻤﺮ ﻋﻠﻲ ﺟﺪول اﻟﻄﺎﻟﺐ أﻻن ﻧﺄﺧﺬ ﻣﻮاﺻﻔﺎت اﻟﻌﻤﻮد وھﻲ‬
‫‪COLUMN_NAME‬‬ ‫‪DATA_TYPE‬‬
‫‪AGE‬‬ ‫‪INTEGER‬‬

‫رأﯾﻨﺎ ﻓﻲ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﺧﺼﺎﺋﺺ اﻟﻌﻤﻮد أﻻن ﻧﻜﺘﺐ ﺗﻌﻠﯿﻤﯿﺔ ‪SQL‬‬

‫‪ALTER TABLE STUDENT‬‬


‫;‪ADD AGE INT‬‬

‫ﺗﺴﺘﻄﯿﻊ ﻛﺘﺎﺑﺔ ھﺬا اﻟﻜﻮد داﺧﻞ أي ﻣﺤﺮر ‪SQL‬‬

‫‪٢١‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺠﻤﻠﺔ ‪ ALTER‬ﻣﻊ ‪MOIFY‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬


‫ﺗﻐﯿﺮ اﻟﺠﺪول‬

‫اﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد ﺗﻌﺪﯾﻠﮫ‬

‫‪ALTER TABLE TABLE_NAME‬‬


‫;‪MODIFY COLUMN_NAME NEW_DATA_TYPE‬‬

‫ﻧﻮع ﺑﯿﺎن اﻟﻌﻤﻮد اﻟﺠﺪﯾﺪ اﻟﻤﺮاد ﺗﻌﺪﯾﻠﮫ‬


‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ إﺿﺎﻓﺔ‬
‫ﻋﻤﻮد‬ ‫أﺳﻢ‬
‫اﻟﻌﻤﻮد‬
‫اﻟﻤﺮاد‬
‫ﺗﻌﺪﯾﻠﮫ‬

‫ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ‬
‫ﻟﻮ أردﻧﺎ ﺗﻌﺪﯾﻞ ﻋﻤﻮد اﻟﻤﻌﺪل ﻓﻲ ﺟﺪول اﻟﻄﺎﻟﺐ وﺗﺤﻮﯾﻠﮫ ﻣﻦ ﻋﺪد ﺻﺤﯿﺢ إﻟﻲ ﻋﺪد ﻋﺸﺮي‬
‫أﻧﻈﺮ اﻟﺠﺪول‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﺑﻌﺪ اﻟﺘﻌﺪﯾﻞ‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻗﺒﻞ اﻟﺘﻌﺪﯾﻞ‬ ‫اﺳﻢ اﻟﻌﻤﻮد‬
‫)‪DECIMAL(4.2‬‬ ‫‪INTEGER‬‬ ‫‪GPA‬‬

‫رأﯾﻨﺎ ﻓﻲ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﺧﺼﺎﺋﺺ اﻟﻌﻤﻮد أﻻن ﻧﻜﺘﺐ ﺗﻌﻠﯿﻤﯿﺔ ‪SQL‬‬

‫‪ALTER TABLE STUDENT‬‬


‫;)‪MODIFY GPA DECIMAL(4.2‬‬

‫‪٢٢‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬ ‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺠﻤﻠﺔ ‪ ALTER‬ﻣﻊ ‪RENAME‬‬
‫ﺗﻐﯿﺮ اﻟﺠﺪول‬

‫‪ALTER TABLE TABLE_NAME‬‬


‫;‪RENAME TO NEW_TABLE_NAME‬‬

‫أﺳﻢ اﻟﺠﺪول‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬


‫ﺗﻐﯿﺮ أﺳﻢ ﺟﺪول‬

‫أﺳﻢ اﻟﺠﺪول اﻟﺠﺪﯾﺪ‬

‫ﻣﺜﺎل ﺗﻄﺒﯿﻘﻲ‬
‫ﻧﺮﯾﺪ ﺗﻐﯿﺮ اﺳﻢ ﺟﺪول اﻟﻄﺎﻟﺐ إﻟﻲ ﺟﺪول اﻟﻄﻼب‬

‫اﺳﻢ اﻟﺠﺪول اﻟﺠﺪﯾﺪ‬ ‫اﺳﻢ اﻟﺠﺪول‬


‫‪STUDENTS‬‬ ‫‪STUDENT‬‬

‫;‪ALTER TABLE STUDENT REANAME TO STUDENTS‬‬

‫ﺑﺤﻤﺪ اﷲ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﻮﺣﺪة اﻟﺜﺎﻧﯿﺔ أﺗﻤﻨﻲ إن أﻛﻮن ﻗﺪﻣﺖ ﺷﺊ ﻣﻔﯿﺪ ﻟﻠﺠﻤﯿﻊ‬
‫ﻣﻼﺣﻈﺔ ﺟﻤﻠﺔ ‪ MODIFY‬ﻻﺗﻌﻤﻞ ﻣﻊ ﺑﻌﺾ إﺻﺪارات اﻷﻛﺴﺲ ﺣﺴﺐ ﻋﻠﻤﻲ‬
‫ﻣﻼﺣﻈﺔ ﺟﻤﻠﺔ ‪ REANAME‬ﻻﺗﻌﻤﻞ ﻣﻊ ﺑﻌﺾ إﺻﺪارات اﻷﻛﺴﺲ ﺣﺴﺐ ﻋﻠﻤﻲ‬

‫‪٢٣‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻟﺜﺎﻟﺜﺔ‬

‫‪DATA MANIPULATION LANGUGEAGE‬‬


‫‪DML‬‬
‫ﻟﻐﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت‬

‫ﻟﻐﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ‪ DML‬ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺳﺎﺑﻘﺎ ﺗﻨﻘﺴﻢ إﻟﻲ أرﺑﻌﺔ أﻗﺴﺎم‬

‫اﻟﺠﻤﻠﺔ‬ ‫اﻟﮭﺪف ﻣﻦ اﻟﺠﻤﻠﺔ‬


‫‪SELECT‬‬ ‫اﺧﺘﯿﺎر ﺑﯿﺎﻧﺎت ﺟﺪول‬
‫‪UPDATE‬‬ ‫ﺗﺤﺪﯾﺚ ﺑﯿﺎﻧﺎت ﺟﺪول‬
‫‪DELETE‬‬ ‫ﺣﺬف ﺑﯿﺎﻧﺎت ﺟﺪول‬
‫‪INSERT‬‬ ‫إﺿﺎﻓﺔ ﺑﯿﺎﻧﺎت ا ﻟﻲ ﺟﺪول‬

‫ﺳﻮف ﻧﺘﻌﻠﻢ ﺟﻤﻞ ‪ DML‬ﻛﺎﻣﻠﺔ وﻟﻜﻦ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺠﻤﻠﺔ ‪ SELECT‬ﺳﻮف ﻧﻀﻊ ﻟﮭﺎ وﺣﺪة ﻛﺎﻣﻠﺔ وﻣﺴﺘﻘﻠﺔ‬
‫واﻟﺴﺒﺐ أن ﺟﻤﻠﺔ ‪ SELECT‬ﺗﺘﻌﺎﻣﻞ ﻣﻊ دوال وﻏﯿﺮ ذﻟﻚ ﻓﻠﺬﻟﻚ ﺳﻮف ﯾﻜﻮن اﻟﻮﺣﺪة اﻟﺮاﺑﻌﺔ ﻋﻦ ﺟﻤﻠﺔ‬
‫‪.SELECT‬‬

‫‪....‬أﻻن ﻧﺮﯾﺪ إﺿﺎﻓﺔ ﺑﯿﺎﻧﺎت إﻟﻲ ﺟﺪول اﻟﻄﺎﻟﺐ ﻣﻦ اﻟﻤﻨﻄﻘﻲ واﻟﻔﺎﺋﺪة اﻷوﻟﻲ ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ھﻮ ﺗﺨﺰﯾﻦ‬
‫اﻟﺒﯿﺎﻧﺎت أذن ﻻ ﺑﺪ ﻣﻦ وﺟﻮد ﺗﻌﻠﯿﻤﺔ ﺧﺎﺻﺔ ﺑﺎﻹدﺧﺎل )ﺻﺢ(‬
‫ﺑﻌﺪ اﻟﻤﻘﺪﻣﺔ اﻟﺴﺎﺑﻘﺔ ﻣﺎھﻲ ﺗﻌﻠﯿﻤﯿﺔ اﻹدﺧﺎل أو اﻹﺿﺎﻓﺔ وﻛﯿﻒ ﺗﻜﺘﺐ ؟‬
‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬ ‫اﻹﺟﺎﺑﺔ‬
‫اﻹﺿﺎﻓﺔ‬ ‫ﺗﻌﻠﯿﻤﯿﺔ اﻹﺿﺎﻓﺔ ھﻲ ‪INSERT‬‬
‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ‬
‫أﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد اﻹﺿﺎﻓﺔ ﻋﻠﯿﺔ‬

‫‪INSERT INTO TABLE _NAME‬‬


‫;)‪VALUES (COLUMN_1_VALUE, COLUMN_2_VALUE , COLUMN_3_VALUE‬‬

‫ﻗﯿﻤﺔ اﻟﻌﻤﻮد اﻟﺜﺎﻧﻲ‬

‫ﺑﺪاﯾﺔ اﻟﻘﻮس )ﻻ ﺑﺪ ﻣﻦ ﻛﺘﺎﺑﺘﮭﺎ(‬


‫ﻧﮭﺎﯾﺔ اﻟﻘﻮس‬
‫ﻛﻠﻤﺔ‬
‫ﻣﺤﺠﻮزة‬

‫ﻗﯿﻤﺔ اﻟﻌﻤﻮد اﻷول‬

‫‪٢٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل ﻋﻤﻠﻲ ‪:‬‬

‫ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ﺟﺪول اﻟﻄﻼب ﺑﻜﺎﻣﻞ ﺧﺼﺎﺋﺼﮫ ﻧﺮﯾﺪ أﺿﺎﻓﮫ ﺳﺠﻞ ﻋﻠﻲ اﻟﺠﺪول‬

‫ﺑﯿﺎﻧﺎت اﻟﺴﺠﻞ اﻟﻤﺮاد‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬ ‫‪COLUMN NAME‬‬ ‫اﺳﻢ اﻟﻌﺎﻣﻮد‬


‫أﺿﺎﻓﺘﮫ‬ ‫‪DATA_TYPE‬‬ ‫ﺑﺎﻟﻌﺮﺑﻲ‬
‫‪١٣‬‬ ‫)‪Char(10‬‬ ‫‪STUDENT_NO‬‬ ‫رﻗﻢ اﻟﻄﺎﻟﺐ‬
‫‪MOHMMAD‬‬ ‫)‪VARCHR(20‬‬ ‫‪STUDENT_NAME‬‬ ‫اﺳﻢ اﻟﻄﺎﻟﺐ‬
‫‪SICNCE‬‬ ‫)‪VARCHR(10‬‬ ‫‪MAJOR‬‬ ‫اﻟﺘﺨﺼﺺ‬
‫‪٤‬‬ ‫‪INTEGER‬‬ ‫‪GPA‬‬ ‫اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ‬

‫أﻧﻈﺮ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬


‫‪INSERT INTO STUDENT VALUES‬‬
‫)‪(13,'MOHMMAD','SICENCE',4‬‬

‫ﺻﺪﯾﻘﻲ ﻻﺑﺪ إن ﺗﻨﺘﺒﮫ إﻟﻲ ﺷﺊ ﻣﮭﻢ ﻋﻨﺪ إﺿﺎﻓﺔ ﻛﻠﻤﺔ ﻣﺜﻞ ‪MOHMMAD‬‬
‫ﻻﺑﺪ ﻣﻦ إﺿﺎﻓﺘﮭﺎ داﺧﻞ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس ' ‪ ' HERE‬ﺑﻤﻌﻨﻲ ﺣﻘﻞ ﺗﻜﻮن ﺧﺎﺻﯿﺘﮫ‬
‫ﺣﺮوف ﻻﺑﺪ أن ﺗﻮﺿﻊ داﺧﻞ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس وھﺬه اﻟﻄﺮﯾﻘﺔ اﻟﺼﺤﯿﺤﺔ‪.‬‬

‫ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻲ ﻓﻲ ﺗﻌﻠﯿﻤﺔ ‪INSERT‬‬


‫ﻻن دﻋﻨﺎ ﻧﻔﻜﺮ ﻟﺪﯾﻨﺎ ﺟﺪول أﺳﻤﮫ ‪ TEST‬وﻟﮫ اﻟﺨﺼﺎﺋﺺ اﻟﺘﺎﻟﯿﺔ ﻛﻤﺎ ﻓﻲ اﻟﺠﺪول‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬ ‫‪COLUMN_NAME‬‬ ‫اﺳﻢ اﻟﺠﺪول ﺑﺎﻟﻌﺮﺑﻲ‬
‫‪DATA_TYPE‬‬
‫‪AUTONUMBER‬‬ ‫‪ID‬‬ ‫اﻟﺮﻗﻢ اﻟﺘﺴﻠﺴﻠﻲ‬
‫)‪VARCHAR(20‬‬ ‫‪NAME‬‬ ‫اﻻﺳﻢ‬

‫ﻧﺮﯾﺪ أن ﻧﻀﯿﻒ ﺳﺠﻞ إﻟﻲ اﻟﺠﺪول ﺑﺎﺳﺘﺨﺪام ﺗﻌﻠﯿﻤﺔ ‪ INSERT‬وﻧﻼﺣﻆ وﺟﻮد اﻟﻌﻤﻮد ‪ ID‬ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﯿﮫ‬
‫)‪ (AUTONUMBER‬ﻣﺎ ھﻮ اﻟﻌﻤﻞ أﻻن ﯾﺎﺻﺪﯾﻘﻲ ﻛﯿﻒ ﺗﺘﻢ اﻹﺿﺎﻓﺔ ؟‬

‫‪INSERT INTO TEST VALUES‬‬


‫;)'‪(1,'ALI‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻟﺴﺎﺑﻘﺔ ﻗﺪ ﺗﻌﻤﻞ ﻓﻲ ﺑﻌﺾ ﻣﺤﺮرات ‪ SQL‬وﻟﻜﻦ ﻣﻦ ﺣﯿﺚ اﻟﻤﻨﻄﻖ ﻏﯿﺮ ﺻﺤﯿﺤﺔ ﻟﻤﺎذا ؟‬
‫اﻟﺴﺒﺐ ﯾﻌﻮد إﻟﻲ أﻧﻨﺎ أﻋﻄﯿﻨﺎ اﻟﻌﻤﻮد ‪ ID‬ﺧﺎﺻﯿﺔ ‪ AUTONUMBER‬ﺑﻤﻌﻨﻲ إن أي ﻋﻤﻠﯿﺔ إﺿﺎﻓﺔ‬
‫ﻓﺄن اﻟﺠﺪول ﺳﻮف ﯾﻌﻄﯿﻨﺎ ﻗﯿﻤﺔ ﻣﺘﺴﻠﺴﻠﺔ وﻣﺮﺗﺒﺔ ﻟﻜﻞ ﺳﺠﻞ ﻓﺒﻤﺠﺮد إﺿﺎﻓﺔ ﺳﺠﻞ ﺳﻮف ﻧﺤﺼﻞ ﻣﻦ ﻗﺎﻋﺪة‬
‫اﻟﺒﯿﺎﻧﺎت ﻋﻠﻲ ﺗﺮﻗﯿﻢ اوﺗﺎﻣﺎﺗﯿﻜﻲ ﻟﻠﻌﻤﻮد أو اﻟﺤﻘﻞ ‪ ID‬أذن ﻧﻜﺘﺐ اﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ‬

‫;)'‪INSERT INTO TEST (NAME) VALUES ('MOHMMAD‬‬

‫‪٢٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﻦ ﺧﻼل اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ أﯾﻀﺎ ﻧﺴﺘﻄﯿﻊ أن ﻧﻀﯿﻒ ﺑﯿﺎﻧﺎت ﻣﺤﺪدة إﻟﻲ اﻟﺠﺪول‬
‫وﻟﻜﻦ ﺑﺸﺮوط أن ﯾﻜﻮن اﻟﺤﻘﻞ ﻟﯿﺲ ﻣﻔﺘﺎح أﺳﺎﺳﻲ وﯾﻘﺒﻞ ﻗﯿﻤﺔ ﻓﺎرﻏﺔ‬

‫ﻣﺜﺎل‬
‫ﻣﻦ ﺧﻼ ل اﻟﺠﺪول اﻟﺘﺎﻟﻲ‬

‫اﻟﻘﯿﺪ‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬ ‫‪COLUMN NAME‬‬ ‫اﺳﻢ اﻟﻌﺎﻣﻮد‬


‫‪CONSTRAINTS‬‬ ‫‪DATA_TYPE‬‬ ‫ﺑﺎﻟﻌﺮﺑﻲ‬
‫‪PK‬‬ ‫)‪Char(10‬‬ ‫‪STUDENT_NO‬‬ ‫رﻗﻢ اﻟﻄﺎﻟﺐ‬
‫‪NOT NULL‬‬ ‫)‪VARCHR(20‬‬ ‫‪STUDENT_NAME‬‬ ‫اﺳﻢ اﻟﻄﺎﻟﺐ‬
‫ﻻﯾﻮﺟﺪ‬ ‫)‪VARCHR(10‬‬ ‫‪MAJOR‬‬ ‫اﻟﺘﺨﺼﺺ‬
‫ﻻﯾﻮﺟﺪ‬ ‫‪integer‬‬ ‫‪GPA‬‬ ‫اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ‬

‫ﻧﺮﯾﺪ إﺿﺎﻓﺔ ﺳﺠﻞ ﻃﺎﻟﺐ إﻟﻲ اﻟﺠﺪول وﻟﯿﻜﻦ‬


‫ﺑﯿﺎﻧﺎت اﻟﺴﺠﻞ اﻟﻤﺮاد‬ ‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬ ‫‪COLUMN NAME‬‬ ‫اﺳﻢ اﻟﻌﺎﻣﻮد‬
‫أﺿﺎﻓﺘﮫ‬ ‫‪DATA_TYPE‬‬ ‫ﺑﺎﻟﻌﺮﺑﻲ‬
‫‪٥٦٧‬‬ ‫)‪Char(10‬‬ ‫‪STUDENT_NO‬‬ ‫رﻗﻢ اﻟﻄﺎﻟﺐ‬
‫‪AHMAD‬‬ ‫)‪VARCHR(20‬‬ ‫‪STUDENT_NAME‬‬ ‫اﺳﻢ اﻟﻄﺎﻟﺐ‬
‫‪COMPUTER‬‬ ‫)‪VARCHR(10‬‬ ‫‪MAJOR‬‬ ‫اﻟﺘﺨﺼﺺ‬
‫ﻗﯿﻤﺔ ﻓﺎرﻏﺔ‬ ‫‪INTEGER‬‬ ‫‪GPA‬‬ ‫اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ‬
‫ﻻﻧﺮﯾﺪ إﺿﺎﻓﺔ ھﻨﺎ‬

‫ﻃﺒﻌﺎ وﻣﻦ اﻟﻤﻮﻛﺪ أﻧﻨﺎ ﺳﻮف ﻧﻀﯿﻒ إﻟﻲ ﺟﺪول ﺳﺠﻞ ﯾﺤﻤﻞ رﻗﻢ اﻟﻄﺎﻟﺐ و اﺳﻢ اﻟﻄﺎﻟﺐ واﻟﺴﺒﺐ اﻟﻘﯿﻮد اﻟﻤﻮﺟﻮدة‬
‫ﻋﻠﻲ اﻟﻌﺎﻣﻮد أو اﻟﺤﻘﻞ وأﻣﺎ اﻟﺘﺨﺼﺺ واﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻓﮭﻲ ﺗﻘﺒﻞ ﻗﯿﻢ ﻓﺎرﻏﺔ‬
‫أﻻن ﻧﺘﻌﺮف ﻋﻠﻲ اﻟﺼﯿﻐﺔ‬

‫‪INSERT INTO STUDENT‬‬


‫;)'‪VALUES( 567, ' AHMAD ', ' COMPUTER‬‬

‫اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﺳﻮف ﺗﻈﮭﺮ رﺳﺎﻟﺔ ﺧﻄﺎء‬

‫واﻟﺴﺒﺐ ﯾﻮﺟﺪ ﻟﺪي أرﺑﻊ أﻋﻤﺪة أو ﺣﻘﻮل وأﻧﺎ أدﺧﻠﺖ ﺛﻼﺛﺔ أﻋﻤﺪة أو ﺣﻘﻮل‬

‫‪٢٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫أذن ﻣﺎھﻮ اﻟﺤﻞ ﯾﺎ ﺻﺪﯾﻘﻲ ؟‬
.........................................................................................................................‫دﻋﻨﻲ أﻓﻜﺮ‬
‫اﻟﺤﻞ ﻣﻮﺟﻮد ﯾﺎ ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ‬
‫أﻧﻈﺮ اﻟﺼﯿﻐﺔ اﻟﻘﺎدﻣﺔ‬
INSERT INTO STUDENT (STUDENT_NO,STUDENT_NAME,MAJOR)
VALUES (567,'AHMAD','COMPUTER');

 
 

 

INSERT INTO STUDENT (STUDENT_NAME,MAJOR,STUDENT_NO)
VALUES ('AHMAD','COMPUTER',567);



‫أﺗﻤﻨﻲ إن ﺗﻜﻮن اﻟﻤﻌﻠﻮﻣﺔ ﻗﺪ وﺻﻠﺖ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎ ﺑﻖ ﺑﺪأت أﻧﺎ ﺑﺎﻟﺨﻄﺎء ﺛﻢ ﺑﺎﻟﺼﻮاب ﻟﻜﻲ ﻻﺗﻘﻊ ﻓﻲ اﻟﺨﻄﺎء‬
.‫ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ‬

‫ وأﺗﻤﻨﻰ اﻟﺘﻮﻓﯿﻖ ﻟﻜﻢ وأن ﯾﻜﻮن اﻟﺸﺮح واﻓﻲ‬INSERT ‫أﻻن وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ‬
-------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
--------------------------------------------------------------------------

٢٧

PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com


‫ﺟﻤﻠﺔ ‪DELETE‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ اﻟﺤﺬف‬ ‫ﺗﺴﺘﺨﺪم وﺑﺸﻜﻞ ﺧﺎص ﻟﺤﺬف ﺻﻒ ﻣﻦ ﺟﺪول‬

‫أﻻن ﻧﻨﻈﺮ أﻟﻲ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﮭﺎ‬

‫‪DELETE FROM TABLE_NAME‬‬


‫;‪WHERE CONDITION‬‬

‫أﺳﻢ اﻟﺠﺪول‬
‫ﺷﺮط اﻟﺤﺬف‬ ‫اﻟﻤﺮاد اﻟﺤﺬف‬
‫ﻣﻨﮫ‬

‫أﻻن ﺑﻌﺪ اﻟﺘﻌﺮف ﻋﻠﻲ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻠﺠﻤﻠﺔ ﻧﺒﺪأ ﺑﻤﺜﺎل‬


‫ﻟﻮ أردﻧﺎ ﺣﺬف ﺻﻒ ﻣﻦ ﺟﺪول اﻟﻄﺎﻟﺐ ﻧﺴﺄل ﺳﺆال أي ﺻﻒ ﻧﻘﻮل اﻟﺼﻒ اﻟﺬي رﻗﻢ اﻟﻄﺎﻟﺐ ﻓﯿﮫ ﯾﺴﺎوي ‪٥٦٧‬‬
‫)ھﻨﺎ ﻧﻘﻄﺔ ﺷﺮط اﻟﺤﺬف ( ﺣﻠﻮ اﻟﻜﻼم‬
‫أﻻن ﻧﻄﺒﻖ ﻋﻤﻠﻲ‬
‫;'‪DELETE FROM STUDENT WHERE STUDENT_NO='567‬‬

‫ﻣﻼﺣﻈﺔ‬

‫ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ إذا ﻛﺎﻧﺖ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻧﻮع ﺣﺮﻓﻲ ﻻﺑﺪ إن ﺗﻮﺿﻊ ﺑﯿﻦ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس‬

‫ﻛﺬﻟﻚ ﺗﺴﺘﻄﯿﻊ إن ﺗﺤﺬف ﺻﻔﻮف ﻣﺘﻌﺪدة ﻓﻤﺜﻼ ﻧﺮﯾﺪ ﺣﺬف ﻛﻞ اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺨﺼﺼﮭﻢ رﯾﺎﺿﯿﺎت‬
‫)ﻗﺎﺗﻞ اﷲ اﻟﺮﯾﺎﺿﯿﺎت( ﺗﻀﻊ اﻟﺸﺮط اﻟﺘﺨﺼﺺ ﯾﺴﺎوي اﻟﺮﯾﺎﺿﯿﺎت‬
‫أﻻن وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ ‪ DELETE‬وأﺗﻤﻨﻰ اﻟﺘﻮﻓﯿﻖ ﻟﻜﻢ وأن ﯾﻜﻮن اﻟﺸﺮح واﻓﻲ‬

‫‪------------------------------------------------------------‬‬

‫‪٢٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺟﻤﻠﺔ ‪UPDATE‬‬

‫ﺟﻤﻠﺔ ‪UPDATE‬‬

‫ﺗﮭﺪف إﻟﻲ ﺗﻌﺪﯾﻞ ﺑﯿﺎﻧﺎت ﺳﺠﻞ ﻣﺤﺪد وﺗﺤﺪﯾﺜﮫ‬

‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ‬
‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﺑﺪاﯾﺔ‬
‫اﻟﺘﺤﺪﯾﺚ‬ ‫أﺳﻢ اﻟﺠﺪول‬

‫‪UPDATE TABLE_NAME‬‬
‫‪SET COLUMN_NAME=NEW VALUE‬‬
‫;‪WHERE CONDITION‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة‬
‫ﺑﺪاﯾﺔ اﻟﺸﺮط‬ ‫ﺷﺮط ﺗﺤﺪﯾﺪ‬
‫اﻟﺼﻒ‬ ‫اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة‬
‫ﻟﻠﻌﺎﻣﻮد‬
‫أﺳﻢ اﻟﻌﺎﻣﻮد اﻟﻤﺮاد ﺗﻌﺪﯾﻠﮫ‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ھﺪﻓﮭﺎ‬


‫ﺗﺤﺪﯾﺪ اﻟﻌﺎﻣﻮد‬

‫أﻻن ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﺳﻮف ﻧﺒﺪأ ﺑﻤﺜﺎل ﻋﻤﻠﻲ‬

‫‪٢٩‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪١‬‬

‫ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻟﻄﺎﻟﺐ رﻗﻢ ‪ ١٠٠‬وﻧﻀﻊ ﻟﮫ ﻣﻌﺪل ﺗﺮاﻛﻤﻲ ‪٤،٩‬‬

‫‪UPDATE STUDENT‬‬
‫‪SET GPA = 4.9‬‬
‫;'‪WHERE STUDENT_NO = '100‬‬

‫ﻻﺣﻆ ﻋﻼﻣﺘﻲ اﻻﻗﺘﺒﺎس واﻟﺴﺒﺐ اﻟﻨﻮع أذا ھﻮ ﻣﻦ ﻧﻮع ﺣﺮﻓﻲ ﻻﺑﺪ ﻣﻦ ﻛﺘﺎﺑﺘﮭﺎ وإذا ﻛﺎن ﻣﻦ رﻗﻤﻲ ﻻ ﺗﻜﺘﺘﺐ‬

‫ﻣﺜﺎل‪٢‬‬

‫ﻧﺮﯾﺪ ﺗﻌﺪﯾﻞ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ ﻟﺠﻤﯿﻊ ﻃﻼب ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت ﺑﺤﯿﺚ ﺟﻤﯿﻊ ﻃﻼب ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت ﻧﻀﯿﻒ إﻟﯿﮭﻢ‬
‫درﺟﺔ واﺣﺪة ﻓﻲ اﻟﻤﻌﺪل اﻟﺘﺮاﻛﻤﻲ؟‬
‫‪UPDATE STUDENT‬‬
‫‪SET GPA=GPA+1‬‬
‫;'‪WHERE MAJOR='MATH‬‬

‫وﺗﺴﺘﻄﯿﻊ أﯾﻀﺎ ﺗﻌﺪﯾﻞ أﻛﺜﺮ ﻣﻦ ﻋﻤﻮد ﺳﻮف أﺿﻊ اﻟﺼﯿﻐﺔ ﻓﻘﻂ‬


‫‪UPDATE TABLE_NAME‬‬
‫‪SET COLUMN_NAME=NEW VALUE, COLUMN_NAME2=NEW VALUE2‬‬
‫;‪WHERE CONDITION‬‬

‫ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ ﺟﻤﻠﺔ ‪ UPDATE‬أﺗﻤﻨﻲ ﻟﻜﻢ اﻟﺘﻮﻓﯿﻖ وأن ﯾﻜﻮن ﺷﺮح واﻓﻲ وﻣﻤﺘﻊ‬

‫‪٣٠‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻟﺮاﺑﻌﺔ‬

‫ﺟﻤﻠﺔ ‪SELECT‬‬
‫ﻣﻦ أھﻢ اﻟﻤﻮاﺿﯿﻊ وﻗﺪ وﺿﻌﺖ ﻟﮭﺎ ﺑﺎب ﻛﺎﻣﻞ ووﺿﻌﺘﮫ ﻓﻲ اﻷﺧﯿﺮ ﻣﻊ اﻟﻌﻠﻢ أن ﺑﻌﺾ اﻟﻜﺘﺐ ﺗﺒﺪأ ﺑﺠﻤﻠﺔ‬
‫‪ SELECT‬وذﻟﻚ ﯾﻌﻮد ﻟﺴﺒﺐ أن اﻟﻤﻮﺿﻮع ﻣﮭﻢ ﺟﺪا) وﻟﻜﻦ أﻧﺎ أﻗﻮل ﺧﺎﻟﻒ ﺗﻌﺮف( ﻧﺤﻦ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻲ‬
‫ﻣﻌﻈﻢ ﺟﻤﻞ ‪ SQL‬وأن ﺷﺎء اﷲ ﻣﻦ ﺧﻼل ھﺬا اﻟﻜﻮرس ﺗﺼﺒﺢ ﻣﺤﺘﺮف ‪ SQL‬ھﺪف ھﺬه اﻟﺠﻤﻠﺔ‬
‫ھﻮ اﺳﺘﺨﺮاج اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت‬

‫ﻣﻜﻮﻧﺎت ﺟﻤﻠﺔ ‪SELECT‬‬

‫ﺗﺘﻜﻮن ﺟﻤﻠﺔ ‪ SELECT‬ﻣﻦ ﺛﻼث ﻋﻨﺎ ﺻﺮ ﻣﮭﻤﺔ‬

‫‪SELECT‬‬
‫ھﺬه اﻟﻜﻠﻤﺔ ﻣﻌﻨﺎھﺎ اﺧﺘﺮ اﻷﻋﻤﺪة )إﺟﺒﺎري(‬
‫‪FROM‬‬
‫ھﺬه اﻟﻜﻠﻤﺔ ﻣﻌﻨﺎھﺎ اﺧﺘﺮ ﻣﻦ ﺟﺪول أو أﻛﺜﺮ)إﺟﺒﺎري(‬
‫‪WHERE‬‬

‫ھﺬه اﻟﻜﻠﻤﺔ ﻣﻌﻨﺎھﺎ ﺷﺮوط أو ﺣﯿﺚ )اﺧﺘﯿﺎري(‬

‫ﻻﺣﻈﻨﺎ ﻓﯿﻤﺎ ﺳﺒﻖ ﻣﻜﻮﻧﺎت أو ﻋﻨﺎﺻﺮ ﺟﻤﻠﺔ ‪ SELECT‬وﻧﻼﺣﻆ أﻧﺎ ھﻨﺎﻟﻚ ﻋﻨﺎﺻﺮ إﺟﺒﺎرﯾﺔ و أﺧﺮي اﺧﺘﯿﺎرﯾﺔ‬

‫ﻣﺜﺎل‪١‬‬
‫ﻟﻮ أردﻧﺎ اﺧﺘﯿﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﻼب ﻣﻦ ﺟﺪول اﻟﻄﺎﻟﺐ اﻟﺴﺎﺑﻖ ذﻛﺮه ﻣﺎ اﻟﻌﻤﻞ ؟‬

‫أﻧﻈﺮ اﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ‬

‫;‪SELECT * FROM TABLE_NAME‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻟﺘﺤﺪﯾﺪ اﻷﻋﻤﺪة‬

‫ﻋﺒﺎرة ﻋﻦ‬
‫رﻣﺰ ﯾﺪل ﻋﻠﻲ‬ ‫أﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد‬
‫اﺧﺘﯿﺎر ﺟﻤﯿﻊ‬ ‫اﻻﺧﺘﯿﺎر ﻣﻨﮫ‬
‫اﻷﻋﻤﺪة‬

‫ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻻﺣﻆ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﻧﺮﯾﺪ ﺗﻄﺒﯿﻘﮭﺎ ﻋﻠﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻣﺎ اﻟﻌﻤﻞ؟‬
‫اﻟﺤﻞ ھﻮ‬
‫;‪SELECT * FROM STUDENT‬‬

‫‪٣١‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺑﻜﻞ ﯾﺴﺮ وﺳﮭﻮﻟﺔ ﺳﻮف ﺗﻈﮭﺮ ﻟﻨﺎ اﻟﻨﺘﯿﺠﺔ اﻟﺘﺎﻟﯿﺔ‬

‫ﺳﻮف ﺗﻼﺣﻆ إﻧﻨﺎ ﺣﺼﻠﻨﺎ ﻋﻲ ﻛﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﺪول ‪ STUDENT‬وﻟﻜﻦ ﻟﻢ ﻧﺴﺘﺨﺪم اﻟﺸﺮط‬
‫‪ WHERE‬ﻷﻧﻨﺎ ﻟﻢ ﻧﺤﺘﺎج إﻟﯿﮭﺎ‬
‫‪.‬‬

‫ﻣﺜﺎل‪٢‬‬

‫وأﻻن ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻣﺤﺪده ﺑﻤﻌﻨﻲ أرﯾﺪ ﻓﻘﻂ أﺳﻢ اﻟﻄﺎﻟﺐ وﻣﻌﺪﻟﺔ اﻟﺘﺮاﻛﻤﻲ ﻣﺎ اﻟﺤﻞ ؟‬

‫اﻟﺤﻞ ھﻮ‪ :‬ﺑﺪل ﻣﻦ ﻛﺘﺎﺑﺔ اﻟﺮﻣﺰ ) * ( ﻧﻜﺘﺐ أﺳﻤﺎء اﻷﻋﻤﺪة اﻟﻤﺮاد اﺧﺘﯿﺎرھﺎ ‪.‬‬

‫;‪SELECT STUDENT_NAME, GPA FROM STUDENT‬‬

‫ﺳﻮف ﺗﻈﮭﺮ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‪.‬‬

‫ﻣﺜﺎل‪٣‬‬

‫وأﻻن ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻃﺎﻟﺐ ﻣﺤﺪد ﺑﻤﻌﻨﻲ ﻟﺪﯾﻨﺎ اﻟﻄﺎﻟﺐ رﻗﻢ ‪ ٩٩‬ﻧﺮﯾﺪ أﻇﮭﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎﺗﮫ ﻣﺎ اﻟﺤﻞ؟‬
‫اﻟﺤﻞ ھﻮ‪ :‬اﺳﺘﺨﺪام ﺗﻌﻠﯿﻤﯿﺔ ‪WHERE‬‬

‫;'‪SELECT * FROM STUDENT WHERE STUDENT_NO =' 99‬‬

‫اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة ﻻﺣﻆ وﺿﻌﻨﺎ ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس ﻻن رﻗﻢ اﻟﻄﺎﻟﺐ ﻟﺪﯾﻨﺎ ﺣﺮﻓﻲ إﻣﺎ إذا ﻛﺎن رﻗﻤﻲ ﻻﻧﺤﺘﺎج أﻟﻲ‬
‫ﻋﻼﻣﺘﻲ اﻗﺘﺒﺎس‬

‫‪٣٢‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺗﻤﺎرﯾﻦ ﻋﻠﻲ ﺟﻤﻠﺔ ‪SELECT‬‬

‫ھﺬا ﺗﻤﺮﯾﻦ ﺗﻘﻮم ﺑﺘﻄﺒﯿﻘﯿﺔ أﻧﺖ ﺑﻨﻔﺴﻚ‬

‫ﺗﻤﺮﯾﻦ‪١‬‬

‫اﻟﺴﻮال ‪ ::‬ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ أﺳﻤﺎء اﻟﻄﻼب وﻣﻌﺪﻻﺗﮭﻢ اﻟﺬﯾﻦ ﻓﻲ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت؟‬

‫ﺗﻤﺮﯾﻦ‪٢‬‬
‫اﻟﺴﻮال‪ ::‬ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﻼب اﻟﺬﯾﻦ ﯾﺪرﺳﻮن ﻓﻲ ﻗﺴﻢ اﻟﺤﺎﺳﺐ؟‬

‫ﻓﻲ اﻟﺠﺰء اﻟﺴﺎﺑﻖ ﺗﻢ ﺷﺮح ﻣﺒﺎدئ ﻋﻦ ﺟﻤﻠﺔ ‪ SELECT‬وﺳﻮف ﻧﺘﻌﻤﻖ ﻓﻲ اﻟﻘﺎدم‬

‫‪-------------------------------------------------------------------------------------------------------‬‬

‫ﺍﻷﺳﻤﺎﺀ ﺍﻟﻤﺴﺘﻌﺎﺭﺓ ﻭﺗﻐﻴﻴﺮ ﻋﻨﺎﻭﻳﻦ ﺍﻷﻋﻤﺪﺓ )‪(ALIAS‬‬


‫ﻟﻘﺪ ﻻﺣﻈﻨﺎ ﻓﻲ اﻷﻣﺜﻠﺔ اﻟﺴﺎﺑﻘﺔ ﯾﺘﻢ ﻋﺮض أﺳﻤﺎء اﻷﻋﻤﺪة ﻛﻤﺎ ھﻲ ﻣﻌﺮﻓﺔ ﻓﻲ ﺟﻤﻠﺔ ‪CREATE TABLE‬‬
‫أﻻن ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻧﺮﯾﺪ إن ﻧﻌﺮض اﺳﻢ اﻟﻄﺎﻟﺐ ﺑﺎﻟﻌﺮﺑﻲ ﺑﻌﺪ ﺗﻨﻔﯿﺬ ﺟﻤﻠﺔ ‪ SELECT‬ﻣﺎ اﻟﺤﻞ ؟‬
‫ﻣﻼﺣﻈﺔ ‪ :‬ﻻﺑﺪ اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﺗﻜﻮن داﺧﻞ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ‬

‫اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر ‪ ALIAS‬ﯾﻈﮭﺮ ﻓﻲ ﻧﺘﯿﺠﺔ اﻻﺳﺘﻌﻼم ﻛﺎﺳﻢ ﺑﺪﯾﻞ ﻟﻌﺎﻣﻮد‬


‫ﺑﺪﻻ ﻣﻦ اﺳﻢ اﻟﻌﺎﻣﻮد اﻟﻤﻌﺮف ﻋﻨﺪ أﻧﺸﺎء اﻟﺠﺪول‬

‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ‬

‫اﻟﻨﺘﯿﺠﺔ‬

‫‪٣٣‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪-------------------------------------------------------------------------------------------------------‬‬
‫‪-------------------------------------‬‬
‫اﺳﺘﺨﺪام ﺟﻤﻠﺔ ‪ SELECT DISTINCT‬ﻟﻠﺘﺨﻠﺺ ﻣﻦ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻜﺮرة‬

‫ﻣﻦ اﻟﻄﺒﯿﻌﻲ ﺟﺪا أن ﺗﻜﺮر ﺑﻌﺾ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻞ اﻷﺳﻤﺎء واﻟﺘﺨﺼﺼﺎت‬

‫ﻣﺜﺎل ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﺎﻟﺐ اﻟﺴﺎﺑﻖ ذﻛﺮه ﯾﻮﺟﺪ ﻋﻤﻮد أﺳﻤﮫ اﻟﺘﺨﺼﺺ )‪(major‬‬

‫وأﻻن ﻧﺮﯾﺪ إن ﻧﺴﺘﻌﻠﻢ ﻋﻦ اﻟﺘﺨﺼﺼﺎت اﻟﻤﻮﺟﻮدة ﻟﺪﯾﻨﺎ ﺳﻮف ﻧﺴﺘﺨﺪم ﺟﻤﻠﺔ ‪ SELECT‬اﻟﻤﻌﺘﺎدة‬

‫;‪SELECT MAJOR FROM STUDENT‬‬

‫اﻟﻨﺘﯿﺠﺔ ‪ ::‬أﻧﻈﺮ اﻟﺼﻮرة‬

‫ﻧﻼﺣﻆ ﻣﻦ اﻟﺼﻮرة اﻟﺴﺎﺑﻘﺔ أن ھﻨﺎﻟﻚ ﺗﺨﺼﺼﺎت ﺗﻜﺮرت أﻛﺜﺮ ﻣﻦ ﻣﺮة ﺑﻤﻌﻨﻲ ﻧﺮﯾﺪ أن ﻻ ﺗﺘﻜﺮر اﻟﺘﺨﺼﺼﺎت‬
‫ﯾﻜﺘﺐ اﻟﺘﺨﺼﺺ ﻣﺮة واﺣﺪة ﻓﻘﻂ‪.‬‬
‫ﻣﺎ اﻟﻌﻤﻞ وﻣﺎھﻮ اﻟﺤﻞ ؟‬
‫دﻋﻨﻲ أﻓﻜﺮ‪....................................‬‬
‫ﻻﺗﻘﻠﻖ اﻟﺤﻞ ﻣﻮﺟﻮد وھﻮ اﺳﺘﺨﺪام ﺟﻤﻠﺔ ‪ DISTINCT‬ﻣﻊ ﺟﻤﻠﺔ ‪ SELECT‬ﻛﯿﻒ ﯾﺘﻢ ذﻟﻚ‬

‫‪٣٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫;‪SELECT DISTINCT MAJOR FROM STUDENT‬‬

‫اﻟﻨﺘﯿﺠﺔ أﻧﻈﺮ اﻟﺼﻮرة‬

‫ھﻞ ﻻﺣﻈﺖ اﻟﻔﺮق ﯾﺎ ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ أﺗﻤﻨﻲ أن ﺗﻜﻮن اﻟﺼﻮرة وﺻﻠﺖ اﻟﻔﻜﺮة‬
‫‪-------------------------------------------------------------------------------------------------------‬‬
‫‪-------------------------------------------------------------------------------------------------------‬‬

‫اﻟﻮﺣﺪة اﻟﺨﺎﻣﺴﺔ‬

‫ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم ‪ : SELECT‬اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ وﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ وﻣﻌﺎﻣﻼت اﻟﻤﻨﻄﻖ‬


‫‪WORKING WITH ARITHMETIC,COMPARISON AND LOGIC OPERATORS‬‬

‫ﺳﻮف ﻧﻘﺴﻢ ھﺬه اﻟﻮﺣﺪة إﻟﻲ ﺛﻼث ﻣﺤﺎﺿﺮات ﻛﺘﺎﻟﻲ‬

‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ‬
‫‪ -١‬أﺳﺘﺨﺪم اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ﻓﻲ ‪SQL‬‬

‫‪COMPARISON OPERATORS‬‬ ‫‪ -٢‬ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ‬

‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‬
‫‪ -١‬ﻣﻌﺎﻣﻼت اﻟﻤﻨﻄﻖ ‪AND , OR ,NOT‬‬

‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ‬
‫‪ -١‬ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ ‪MATCHING OPERATORS‬‬

‫‪ -٢‬ﻣﻌﺎﻣﻞ ‪IN‬‬

‫‪ -٣‬ﺗﻄﺒﯿﻖ ﻣﻌﺎﻣﻞ ‪ BETWEEN‬ﻋﻠﻲ اﻷﻋﻤﺪة ﻣﻦ ﻧﻮع ﺣﺮف ‪.CHAR‬‬

‫‪ -٤‬ﻣﻌﺎﻣﻞ ‪LIKE‬‬

‫‪ -٥‬ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ )‪ ( %‬ﻣﻊ ﻣﻌﺎﻣﻞ ‪. LIKE‬‬

‫‪ -٦‬رﻣﺰ اﻟﺘﺴﻄﯿﺮ أﺳﻔﻞ اﻟﺴﻄﺮ )_(‬

‫‪٣٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ‬

‫اﻟﺪرس اﻷول ‪ :‬اﺳﺘﺨﺪام اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ﻓﻲ ‪ARITHMETIC OPERATIONS IN SQL‬‬

‫ﯾﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻵﺗﯿﺔ ﻣﻊ ﻟﻐﺔ ‪SQL‬‬


‫‪ (١‬اﻟﻀﺮب )*(‬
‫‪ (٢‬اﻟﻘﺴﻤﺔ )‪(/‬‬
‫‪ (٣‬اﻟﺠﻤﻊ )‪(+‬‬
‫‪ (٤‬اﻟﻄﺮح )‪(-‬‬

‫أﺳﺒﻘﯿﺔ اﻟﻤﻌﺎﻣﻼت ‪OPERATORS PRECEDENCE‬‬


‫ﻣﻦ اﻟﻤﻌﻠﻮم إن ﻟﻠﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ﺗﺮﺗﯿﺐ ﻣﻦ اﻟﻤﮭﻢ ﻣﻌﺮﻓﺔ اﻟﺘﺮﺗﯿﺐ زﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﻘﺎدم ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻲ‬
‫ذﻟﻚ‬
‫اﻷﺳﺒﻘﯿﺔ‬ ‫وﺻﻒ اﻟﻤﻌﺎﻣﻞ‬ ‫رﻣﺰ اﻟﻤﻌﺎﻣﻞ‬
‫اﻷول‬ ‫أﻗﻮاس‬ ‫)(‬
‫اﻟﺜﺎﻧﻲ‬ ‫اﻟﻀﺮب واﻟﻘﺴﻤﺔ‬ ‫*و‪/‬‬
‫اﻟﺜﺎﻟﺚ‬ ‫اﻟﺠﻤﻊ واﻟﻄﺮح‬ ‫‪+‬و‪-‬‬

‫ﻣﺜﺎل ‪ :‬ﻟﺪﯾﻨﺎ اﻟﻤﻌﺎدﻟﺔ‬


‫‪(2X*Y)/9+10‬‬

‫ﺳﻮف ﯾﻘﻮم ﻣﺤﺮر ‪ SQL‬أوﻻ ﺑﺘﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻞ اﻷﻗﻮاس ﺛﻢ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ ﺛﻢ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ‬
‫ھﺬا اﻟﻤﻘﺼﻮد ب أﺳﺒﻘﯿﺔ اﻟﻤﻌﺎﻣﻼت ‪.‬‬

‫ﻣﺜﺎل ﻟﺪﯾﻨﺎ ﺟﺪول ﻣﻮﻇﻔﯿﻦ )‪(EMP‬ﯾﺤﺘﻮي ﻋﻠﻲ‬


‫ﺧﺼﺎﺋﺺ اﻟﻌﺎﻣﻮد‬ ‫‪NAME_COLUMN‬‬ ‫اﺳﻢ اﻟﻌﺎﻣﻮد ﺑﺎﻟﻌﺮﺑﻲ‬
‫)‪CHAR(10‬‬ ‫‪ID_EMP‬‬ ‫رﻗﻢ اﻟﻤﻮﻇﻒ‬
‫)‪VARCHAR(30‬‬ ‫‪NAME_EMP‬‬ ‫اﺳﻢ اﻟﻤﻮﻇﻒ‬
‫‪INT‬‬ ‫‪SALARY‬‬ ‫اﻟﺮاﺗﺐ‬

‫ﻧﺮﯾﺪ أن ﻧﻘﻮم ﺑﻌﻤﻠﯿﺔ زﯾﺎدة ﻟﻜﻞ اﻟﻤﻮﻇﻔﯿﻦ اﻟﻤﻮﺟﻮدون داﺧﻞ اﻟﺸﺮﻛﺔ ﻣﻘﺪار اﻟﺰﯾﺎدة ‪ %٥٠‬ﻣﻦ اﻟﺮاﺗﺐ‬
‫)ﻋﻠﻲ ﻓﻜﺮة إﻧﺎ ﻛﺮﯾﻢ ﺟﺪا( أﻻن ﻧﺄﺧﺬ ﺻﯿﻐﺔ اﻟﻤﻌﺎدﻟﺔ‬
‫‪(SALARY * 50)/100+SALARY‬‬

‫أﻻن ﯾﺎﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻧﺮﯾﺪ إن ﻧﻌﺮف ﻛﯿﻒ ﻧﻜﺘﺐ اﻟﻤﻌﺎدﻟﺔ داﺧﻞ ‪SQL‬‬

‫;‪SELECT (SALARY * 50)/100+SALARY FROM EMP‬‬

‫ﻧﺸﺎھﺪ اﻟﻨﺘﯿﺠﺔ ﻓﻲ اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ‬

‫‪٣٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫وأﻻن ﻧﺮﯾﺪ أن ﻧﻈﮭﺮ اﺳﻢ اﻟﻤﻮﻇﻒ وراﺗﺒﮫ ﻗﺒﻞ اﻟﺘﻌﺪﯾﻞ وﻣﻦ ﺛﻢ راﺗﺒﮫ ﺑﻌﺪ اﻟﺘﻌﺪﯾﻞ‬

‫‪Select NAME_EMP, SALARY , (SALARY * 50)/100+SALARY AS‬‬


‫;‪'SALARY _AFTER_INCRASE' FROM EMP‬‬

‫ﻻﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ اﻻﺳﻢ اﻟﻤﺴﺘﻌﺎر وأﻻن أﻧﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫وﺗﺴﺘﻄﯿﻊ ﻛﺘﺎﺑﺔ ﺟﻤﯿﻊ اﻟﻤﻌﺎدﻻت اﻟﺘﻲ ﺗﺮﻏﺐ ﻓﯿﮭﺎ أﺗﻤﻨﻲ ﻟﻚ اﻟﺘﻮﻓﯿﻖ وﺑﺬﻟﻚ ﻧﻜﻮن أﻧﮭﯿﻨﺎ ﻣﻦ اﻟﺪرس اﻷول‬

‫‪-------------------------------------------------------------------------------------------------------‬‬
‫اﻟﺪرس اﻟﺜﺎﻧﻲ ‪:‬‬
‫ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ ‪COMPARISON OPERATORS‬‬

‫ﻋﻨﺪﻣﺎ ﻧﺴﺘﺨﺪم ﻛﻠﻤﺔ ‪ WHERE‬ﺿﻤﻦ ﺟﻤﻠﺔ ‪ SELECT‬ﺗﻘﻮم ﻏﺎﻟﺒﺎ ﺑﻤﻘﺎرﻧﺔ ﻗﯿﻤﺔ ﻋﺎﻣﻮد ﻣﺎ ﻣﻊ ﻗﯿﻤﺔ‬
‫ﻣﻌﻄﺎة أو ﻣﻊ ﻋﺎﻣﻮد أﺧﺮ وﺳﻮف ﻧﺒﯿﻦ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ اﻟﺘﻲ ﯾﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﮭﺎ‪.‬‬

‫اﻟﻮﺻﻒ‬ ‫ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﺔ‬


‫ﯾﺴﺎوي‬ ‫=‬
‫أﻛﺒﺮ ﻣﻦ‬ ‫>‬
‫أﻛﺒﺮ ﻣﻦ أو ﯾﺴﺎوي‬ ‫=>‬
‫أﺻﻐﺮ ﻣﻦ‬ ‫<‬
‫أﺻﻐﺮ ﻣﻦ أو ﯾﺴﺎوي‬ ‫=<‬
‫ﻻ ﯾﺴﺎوي‬ ‫=!‪<>,‬‬
‫ﻣﻼﺣﻈﺔ ‪ :‬ﻟﻘﺪ ﺗﻌﻠﻤﻨﺎ ﻓﯿﻤﺎ ﺳﺒﻖ أﺳﺒﻘﯿﺔ اﻟﻤﻌﺎﻣﻼت‬

‫‪٣٧‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‬

‫ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه ﻧﺮﯾﺪ أن ﻧﻘﻮم ﺑﻌﻤﻞ أﺳﺘﻌﻼم ﺣﻮل ﺑﯿﺎﻧﺎت ﺟﻤﯿﻊ اﻟﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ راﺗﺒﮭﻢ أﻗﻞ‬
‫ﻣﻦ أوﯾﺴﺎوي‪٥٠٠٠‬رﯾﺎل ﻣﺎﻟﺤﻞ؟‬
‫اﻟﺤﻞ ‪ :‬اﻟﺸﺮط ھﻮ اﻟﺮاﺗﺐ أﻗﻞ أ وﯾﺴﺎوي ‪ ٥٠٠٠‬رﯾﺎل اﻵن ﻧﻜﺘﺐ ﻋﺒﺎرة ‪SQL‬‬

‫;‪SELECT * FROM EMP WHERE SALARY <= 5000‬‬

‫ﺷﺎھﺪ اﻟﻨﺘﯿﺠﺔ‬

‫)ﻗﺎﺗﻞ اﷲ اﻟﺮﯾﺎﺿﯿﺎت (‬ ‫ﺗﻤﺮﯾﻦ‪ : ١‬ﻗﻢ ﺑﺈﻧﺸﺎء اﺳﺘﻌﻼم ﻋﻦ اﻟﻄﻼب اﻟﺬﯾﻦ ﻻﯾﺪرﺳﻮن ﻓﻲ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت‬
‫ﺗﻤﺮﯾﻦ ‪ :٢‬ﻗﻢ ﺑﺈﻧﺸﺎء اﺳﺘﻌﻼم ﻟﻠﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ رواﺗﺒﮭﻢ اﻛﺒﺮ ﻣﻦ ‪ ٥٠٠٠‬رﯾﺎل‬

‫ھﺬه ﻣﺠﻤﻮﻋﺔ ﺗﻤﺎرﯾﻦ أﺗﻤﻨﻲ إن ﺗﻘﻮم ﺑﻌﻤﻠﮭﺎ وأﻻن ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﺪرس اﻟﺜﺎﻧﻲ واﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ‬
‫‪------------------------------------------------------------------------------------------------------‬‬

‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‬

‫ﻣﻌﺎﻣﻼت اﻟﻤﻨﻄﻖ ‪AND , OR ,NOT‬‬


‫أﻻن ﺳﻮف ﻧﻘﻮم ﺑﺠﻮﻟﺔ ﺳﺮﯾﻌﺔ ﻋﻦ اﻟﻤﻌﺎﻣﻼت اﻟﺴﺎﺑﻘﺔ وﺑﻌﺪ ذﻟﻚ ﺳﻮف ﻧﺸﺮح ﻛﻞ ﻣﻌﺎﻣﻞ ﻋﻠﻲ ﺣﺪه‬
‫اﻟﻮﺻﻒ‬ ‫اﻟﻤﻌﺎﻣﻞ اﻟﻤﻨﻄﻘﻲ‬
‫و‬ ‫‪AND‬‬
‫أو‬ ‫‪OR‬‬
‫ﻟﯿﺲ‬ ‫‪NOT‬‬

‫أﻻن ﺳﻮف ﻧﺪﺧﻞ ﻓﻲ ﺷﺮح اﻟﻤﻌﺎﻣﻼت وﻟﻜﻦ ﺑﻄﺮﯾﻘﺔ أﺻﺤﺎب اﻟﺮﯾﺎﺿﯿﺎت‬


‫ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﻘﺎدم ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻲ ﺧﺼﺎﺋﺺ اﻟﻤﻌﺎﻣﻼت‬
‫‪P‬‬ ‫‪Q‬‬ ‫‪P AND Q‬‬ ‫‪P OR Q‬‬ ‫‪NOT P‬‬
‫‪TRUE‬‬ ‫‪TRUE‬‬ ‫‪TRUE‬‬ ‫‪TRUE‬‬ ‫‪FALSE‬‬
‫‪TRUR‬‬ ‫‪FALSE‬‬ ‫‪FALSE‬‬ ‫‪TRUE‬‬ ‫‪FALSE‬‬
‫‪FALSE‬‬ ‫‪TRUE‬‬ ‫‪FALSE‬‬ ‫‪TRUE‬‬ ‫‪TRUE‬‬
‫‪FALSE‬‬ ‫‪FALSE‬‬ ‫‪FALSE‬‬ ‫‪FALSE‬‬ ‫‪TRUE‬‬

‫ﻻﺣﻆ ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ ‪ AND‬ﯾﻜﻮن ﺻﺤﯿﺢ اذاﻛﺎن اﻟﻄﺮﻓﯿﻦ ﺻﺤﯿﺤﺔ‬
‫ﻻﺣﻆ ﻣﻦ ﺧﻼل اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ ‪ OR‬ﯾﻜﻮن ﺻﺤﯿﺢ إذا ﻛﺎن أﺣﺪ اﻟﻄﺮﻓﯿﻦ ﺻﺤﯿﺤﺔ‬
‫ﻻﺣﻆ ﻣﻦ اﻟﺠﺪول اﻟﺴﺎﺑﻖ إن اﻟﻤﻌﺎﻣﻞ ‪ NOT‬ﻋﺒﺎرة ﻋﻦ ﻧﻔﻲ إذا ﻛﺎن ‪ P‬ﺻﺤﯿﺢ ﻣﻊ ‪ NOT‬ﯾﻜﻮن ‪FALSE‬‬

‫‪٣٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﻌﺎﻣﻞ اﻟﻤﻨﻄﻖ ‪AND‬‬

‫ﺗﺄﺧﺬ ﺑﻨﯿﺔ ﺟﻤﻠﺔ ‪ SELECT‬ﻣﻊ ﻣﻌﺎﻣﻞ اﻟﻤﻨﻄﻖ ‪ AND‬اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ‬

‫‪SELECT COLUMN 1,COLUMN2 FROM TABLE_NAME‬‬


‫;‪WHERE CONDITION1 AND CONDITION2‬‬

‫اﻟﺸﺮط اﻷول‬ ‫اﻟﺸﺮط اﻟﺜﺎﻧﻲ‬

‫اﻟﻤﻌﺎﻣﻞ‬
‫‪AND‬‬

‫ﻣﺜﺎل ‪:‬ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻣﻮﻇﻒ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه ﺑﺸﺮط أن ﯾﻜﻮن رﻗﻢ اﻟﻤﻮﻇﻒ ‪١٢‬‬
‫و راﺗﺒﮫ ‪ ١٠٠٠٠‬رﯾﺎل ؟‬
‫ﻻﺣﻆ إن اﻟﻤﻌﺎﻣﻞ ھﻮ) و( ‪ AND‬ﻣﻌﻨﻲ ذﻟﻚ ﻻﺑﺪ ﻣﻦ ﺗﺤﻘﻖ اﻟﺸﺮﻃﯿﻦ وھﻮ رﻗﻢ اﻟﻤﻮﻇﻒ ‪ ١٢‬وراﺗﺒﮫ‪.١٠٠٠٠‬‬
‫أﻻن ﻧﻜﺘﺐ ﺻﯿﻐﮫ اﻻﺳﺘﻌﻼم‪.‬‬

‫‪SELECT * FROM EMP‬‬


‫;‪WHERE ID_EMP='12' AND SALARY=10000‬‬

‫ﻻﺣﻆ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫وﺗﺴﺘﻄﯿﻊ أن ﺗﺠﻌﻞ ھﻨﺎﻟﻚ أﻛﺜﺮ ﻣﻦ ﺷﺮط وﺷﺮﻃﯿﻦ ﺣﺴﺐ اﺣﺘﯿﺎﺟﺎﺗﻚ اﻟﻌﻤﻠﯿﺔ‬

‫ﻣﻌﺎﻣﻞ اﻟﻤﻨﻄﻖ ‪OR‬‬

‫ﯾﺴﺘﺨﺪم اﻟﻤﻌﺎﻣﻞ ‪ OR‬إذا ﻛﺎن أﺣﺪ اﻟﺸﺮﻃﯿﻦ ﺻﺤﯿﺢ‬


‫اﻧﻈﺮ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺬﻟﻚ‬

‫‪SELECT COLUMN 1,COLUMN2 FROM TABLE_NAME‬‬


‫;‪WHERE CONDITION1 OR CONDITION2‬‬

‫اﻟﺸﺮط اﻷول‬ ‫اﻟﺸﺮط اﻟﺜﺎﻧﻲ‬

‫اﻟﻤﻌﺎﻣﻞ ‪OR‬‬

‫‪٣٩‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل ‪:‬ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﺑﯿﺎﻧﺎت ﻣﻮﻇﻒ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه ﺑﺸﺮط أن ﯾﻜﻮن رﻗﻢ اﻟﻤﻮﻇﻒ ‪١٢‬‬
‫أو راﺗﺒﮫ ‪ ١٠٠٠٠‬رﯾﺎل ؟‬
‫ﻻﺣﻆ إن اﻟﻤﻌﺎﻣﻞ ھﻮ)أ و( ‪ OR‬ﻣﻌﻨﻲ ذﻟﻚ ﻻﺑﺪ ﻣﻦ ﺗﺤﻘﻖ اﺣﺪ اﻟﺸﺮﻃﯿﻦ وھﻮ رﻗﻢ اﻟﻤﻮﻇﻒ ‪ ١٢‬وراﺗﺒﮫ‪.١٠٠٠٠‬‬
‫أﻻن ﻧﻜﺘﺐ ﺻﯿﻐﮫ اﻻﺳﺘﻌﻼم‪.‬‬

‫‪SELECT * FROM EMP‬‬


‫;‪WHERE ID_EMP='12' OR SALARY=10000‬‬

‫ﻣﻌﻨﻲ ﻣﺎ ﺳﺒﻖ أذا ﺗﺤﻘﻖ اﻟﺸﺮﻃﯿﻦ ﺳﻮف ﯾﻈﮭﺮ اﻟﻨﺘﯿﺠﺔ اﻟﺘﺎﻟﯿﺔ‬

‫أﻻن ﻟﺪﯾﻨﺎ ﺳﻮال ﻣﮭﻢ ﻧﻔﺘﺮض اﻧﮫ ﻻﯾﻮﺟﺪ اﻟﻤﻮﻇﻒ رﻗﻢ ‪ ١٢‬وﻟﻜﻦ ھﻨﺎﻟﻚ ﻣﻮﻇﻔﯿﻦ رواﺗﺒﮭﻢ ‪١٠٠٠٠‬رﯾﺎل‬
‫أﻧﻈﺮ اﻟﺼﻮرة‬

‫ھﻞ ﯾﻮﺟﺪ ﻓﺮق ﺑﯿﻦ اﻟﻨﺘﺎﺋﺞ اﻟﺴﺎﺑﻘﺔ )ﻻ( ھﺬا ھﺪف اﻟﻤﻌﺎﻣﻞ ‪OR‬‬

‫ﻣﻌﺎﻣﻞ اﻟﻤﻨﻄﻖ ‪NOT‬‬

‫ﺗﺄﺧﺬ ﺟﻤﻠﺔ ‪ SELECT‬ﻣﻊ اﻟﻤﻌﺎﻣﻞ اﻟﻤﻨﻄﻘﻲ ‪ NOT‬اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ‬

‫‪SELECT COLUMN 1,COLUMN2 FROM TABLE_NAME‬‬


‫;‪WHERE NOT CONDITION1‬‬

‫ﻣﻌﺎﻣﻞ ﻣﻨﻄﻘﻲ‬

‫اﻟﺸﺮط‬

‫‪٤٠‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل ‪ :‬ﻧﺮﯾﺪ ﻋﺮض ﺑﯿﺎﻧﺎت ﺟﻤﯿﻊ اﻟﻤﻮﻇﻔﯿﻦ ﻣﺎﻋﺪا اﻟﺬي راﺗﺒﮫ ﯾﺴﺎوي ‪١٠٠٠٠‬رﯾﺎل؟‬
‫أﻻن ﻛﺘﺎﺑﺔ اﻻﺳﺘﻌﻼم‬

‫‪SELECT * FROM EMP‬‬


‫;‪WHERE NOT SALARY=10000‬‬

‫أﻧﻈﺮ اﻟﻨﺘﯿﺠﺔ‬

‫دور اﻟﻤﻌﺎﻣﻞ ‪ NOT‬ھﻮ اﻟﻨﻔﻲ أو اﻟﻌﻜﺲ‬

‫اﻟﺤﻤﺪ ﷲ ﻟﻘﺪ ﺗﻢ اﻻﻧﺘﮭﺎء ﻣﻦ اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‬

‫‪٤١‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ‬

‫‪MATCHING OPERATORS‬‬
‫ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ )اﻟﺘﻮاﻓﻖ(‬

‫ﻟﻘﺪ ﺗﻌﻠﻤﻨﺎ ﻓﯿﻤﺎ ﺳﺒﻖ اﻟﻤﻌﺎﻣﻼت اﻟﺤﺴﺎﺑﯿﺔ واﻟﻤﻨﻄﻘﯿﺔ أﻻن ﻧﺮﯾﺪ ﺗﻌﻠﻢ اﻟﻤﻌﺎﻣﻼت اﻟﺮﺑﻂ أو اﻟﺘﻮاﻓﻖ‬
‫ﺳﻨﺪرس ﻓﻲ ھﺬه اﻟﻤﺤﺎﺿﺮة ﺛﻼث أﻧﻮاع ﻣﻦ ﻣﻌﺎﻣﻼت اﻟﺮﺑﻂ أو اﻟﺘﻮاﻓﻖ‬

‫‪ -١‬ﻣﻌﺎﻣﻞ ‪IN‬‬
‫‪ -٢‬ﻣﻌﺎﻣﻞ ‪BETWEEN‬‬
‫‪ -٣‬ﻣﻌﺎﻣﻞ ‪LIKE‬‬
‫ﺳﻮف ﻧﻘﺴﻢ ھﺬه اﻟﻤﺤﺎﺿﺮة إﻟﻲ ﺛﻼث دروس‬

‫ﻣﻌﺎﻣﻞ ‪IN‬‬

‫ﺳﻮف ﻧﻘﻮم ﺑﺸﺮح ﻣﺜﺎل ﻣﺒﺎﺷﺮ‬

‫ﻣﺜﺎل‪ :‬ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﻟﻠﺤﺼﻮل ﻋﻠﻲ أﺳﻤﺎء اﻟﻄﻼب وﺗﺨﺼﺼﺎﺗﮭﻢ وﻣﻌﺪﻻﺗﮭﻢ وذﻟﻚ ﻟﻄﻼب‬
‫اﻟﻤﺘﺨﺼﺼﯿﻦ ﻓﻲ ﻗﺴﻤﻲ اﻟﺤﺎﺳﺐ واﻟﺮﯾﺎﺿﯿﺎت؟‬

‫أﻻن ﻧﻜﺘﺐ ﺻﯿﻐﺔ اﺳﺘﻌﻼم ‪SQL‬‬

‫‪SELECT STUDENT_NAME,MAJOR,GPA‬‬
‫;)'‪WHERE MAJOR IN ('COMPUTER','MATH‬‬

‫ﻣﻦ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﻧﻨﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻣﺎذا ﺗﻼﺣﻆ ﻧﻼﺣﻆ إن ﻋﻤﻠﯿﺔ اﻻﺧﺘﯿﺎر ﻣﻦ اﻟﺠﺪول ﺗﻤﺖ ﻋﻠﻲ اﻟﻄﻼب اﻟﻤﺘﺨﺼﺼﯿﻦ ﻓﻲ ﻗﺴﻢ‬
‫اﻟﺮﯾﺎﺿﯿﺎت واﻟﺤﺎﺳﺐ ﻟﻤﺎذا ﻻن اﻟﺸﺮط ﯾﻘﻮل ﻃﻼب اﻟﺬﯾﻦ داﺧﻞ ﻗﺴﻢ اﻟﺮﯾﺎﺿﯿﺎت واﻟﺤﺎﺳﺐ ﻓﻘﻂ‬

‫ﺗﺪرﯾﺐ ‪ :‬ﻛﻤﺎ ﺑﻜﺘﺎﺑﺔ اﻻﺳﺘﻌﻼم اﻟﺴﺎﺑﻖ ﻣﻊ ﻣﺮاﻋﺎة اﺳﺘﺒﺪال ﻛﻠﻤﺔ ‪ IN‬ﺑﻜﻠﻤﺔ ‪OR‬‬
‫ﻟﺘﺼﺒﺢ اﻟﺼﯿﻐﺔ‬
‫‪SELECT STUDENT_NAME,MAJOR,GPA‬‬
‫;)'‪WHERE MAJOR='COMPUTER'OR MAJOR= 'MATH‬‬

‫ﺳﻮف ﺗﻼﺣﻆ إن اﻟﻨﺘﯿﺠﺔ واﺣﺪة‬

‫‪٤٢‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﻌﺎﻣﻞ ‪BETWEEN‬‬

‫ﯾﺘﻢ اﻟﻌﻤﻞ ﻣﻊ اﻟﻤﻌﺎﻣﻞ ‪ BETWEEN‬ﻟﺘﺤﺪﯾﺪ ﻧﻄﺎق)‪ (RANGE‬ﺳﻮف ﻧﺸﺎھﺪ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ‬

‫‪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‬ﻓﻘﻂ ﺳﻮف أﻋﻄﯿﻚ اﻟﺼﯿﻐﺔ وﻓﻜﺮ ﻓﻲ ﻣﺎﯾﺤﺪث‬

‫‪SELECT STUDENT_NAME, MAJOR, GPA‬‬


‫‪FROM STUDENT‬‬
‫;‪WHERE GPA >= 3 AND GPA <= 4‬‬

‫ﺳﻮف ﯾﻜﻮن اﻟﻨﺎﺗﺞ ﻧﻔﺲ اﻟﻨﺎﺗﺞ اﻟﺴﺎﺑﻖ‬

‫ﻣﻼﺣﻈﺔ أذا ﻃﺒﻖ اﻟﻤﻌﺎﻣﻞ اﻟﺴﺎﺑﻖ ﻋﻠﻲ ﺣﺮوف ﻻﺑﺪ ﻣﻦ اﺳﺘﺨﺪام ﻋﻼﻣﺘﻲ اﻻﻗﺘﺒﺎس‬

‫‪٤٣‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﻌﺎﻣﻞ ‪LIKE‬‬

‫ھﺬا اﻟﻤﻌﺎﻣﻞ ﯾﺴﺘﺨﺪم ﻣﻊ اﻻﻋﻤﺪة ﻣﻦ ‪ CHAR‬أو اﻟﺤﺮﻓﻲ‬


‫ﺳﻮف ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟﺼﯿﻎ اﻟﻌﺎﻣﺔ ﻟﻠﻤﻌﺎﻣﻞ ‪ LIKE‬وﺑﻌﺪ ذﻟﻚ ﺳﻮف ﻧﺸﺮﺣﮭﺎ‬
‫‪SELECT COLUMN1,COLUMN2‬‬
‫‪FROM TABLE_NAME‬‬
‫;'‪WHERE COLUMN_NAME LIKE 'PATTERN‬‬

‫ﻛﻠﻤﺔ ﻣﻔﺘﺎح ﻟﺘﺤﺪﯾﺪ اﻟﻨﻤﻂ‬


‫ﻧﻤﻂ اﻟﻨﺺ اﻟﻤﻄﻠﻮب‬

‫ﻻﺣﻈﻨﺎ ﻓﻲ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ وﺟﻮد ﻛﻠﻤﺔ ﻧﻤﻂ ﻣﺎذا ﺗﻌﻨﻲ وﻣﺎ أﻧﻮاﻋﮭﺎ أن وﺟﺪ ﻟﮭﺎ أﻧﻮاع؟‬
‫ﻧﻤﻂ ﺗﻌﻨﻲ ﻃﺮﯾﻘﺔ اﻟﺒﺤﺚ ﻓﻤﺜﻼ ﻧﺮﯾﺪ اﻟﺒﺤﺚ ﺑﺎ ﻟﺤﺮف اﻷول ﻣﻦ اﻟﻜﻠﻤﺔ أو اﻟﺤﺮف اﻷﺧﯿﺮ‬
‫أو ﺣﺮف داﺧﻞ ﺟﻤﻠﺔ ‪.‬ﻻﺗﻘﻠﻖ ﺳﻮف ﻧﺸﺮح ﻣﺎﺳﺒﻖ ﺑﺘﻔﺼﯿﻞ‬
‫أﻣﺎ ﻋﻦ أﻧﻮاع اﻟﻨﻤﻂ )‪ (PATTERN‬ﻓﯿﻮﺟﺪ ﻧﻮﻋﯿﻦ ﻣﮭﻤﺔ‬
‫‪ – ١‬ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ ) ‪ (%‬وﻓﻲ اﻷﻛﺴﺲ ﻓﻘﻂ ﻧﺴﺘﺨﺪم )*( ﺑﺪﻻ ﻣﻦ ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ‬
‫‪ -٢‬ﻋﻼﻣﺔ أو رﻣﺰ اﻟﺘﺴﻄﯿﺮ أﺳﻔﻞ اﻟﺴﻄﺮ)_(‬

‫ﻋﻼﻣﺔ اﻟﻨﺴﺒﺔ اﻟﻤﺌﻮﯾﺔ )‪ (%‬ﻣﻊ ﻣﻌﺎﻣﻞ ‪LIKE‬‬

‫ﺳﻮف ﻧﺒﺪأ ﺑﺄﺧﺬ ﻣﺜﺎل ﻣﺒﺎﺷﺮ‬

‫ﻣﺜﺎل ‪١‬‬
‫ﻧﺮﯾﺪ اﻟﺒﺤﺚ ﻋﻦ اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺒﺪأ أﺳﻤﺎﺋﮭﻢ ﺑﺎﻟﺤﺮف ‪ H‬ﻣﻦ ﺟﺪول اﻟﻄﺎﻟﺐ ﻣﻊ أﻇﮭﺎر ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ؟‬

‫‪SELECT * FROM STUDENT‬‬


‫;'*‪WHERE STUDENT_NAME LIKE 'H‬‬

‫ھﻞ ﻻﺣﻈﺖ اﻟﺼﯿﻐﺔ أﻻن ﻧﻨﻈﺮ إﻟﻲ اﻟﻨﺎﺗﺞ‬

‫ﻻﺣﻆ اﻟﻨﺎﺗﺞ وﻟﻜﻦ ھﻨﺎﻟﻚ ﺑﻌﺾ ﻧﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﻔﺮق ﺑﯿﻦ اﻟﺤﺮف اﻟﺼﻐﯿﺮ واﻟﺤﺮف اﻟﻜﺒﯿﺮ‬
‫ﯾﻜﻮن ﻟﺪﯾﮭﺎ إﺣﺴﺎس وﺗﻔﺮﯾﻖ ﺑﯿﻦ اﻟﺤﺮوف اﻟﺼﻐﯿﺮة واﻟﻜﺒﯿﺮة ‪.‬‬

‫‪٤٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل ‪٢‬‬

‫ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﺳﺘﻌﻼم ﯾﻈﮭﺮ ﺟﻤﯿﻊ اﻟﺘﺨﺼﺼﺎت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﺤﺮف ‪ R‬؟‬

‫;'‪SELECT MAJOR FROM STUDENT WHERE MAJOR LIKE '*R‬‬

‫أﻻن ﯾﺎ ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﻧﻨﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ‬

‫أﺗﻮﻗﻊ إن اﻟﻌﻤﻠﯿﺔ ﻣﻔﮭﻮﻣﺔ أﻻن‬

‫ﻣﺜﺎل ‪٣‬‬

‫ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﺳﺘﻌﻼم ﯾﻘﻮم ﺑﺎﻟﺒﺤﺚ ﻋﻦ أﺳﻤﺎء اﻟﻄﻼب اﻟﺬﯾﻦ ﺗﺤﺘﻮي أﺳﻤﺎﺋﮭﻢ ﻋﻠﻲ اﻟﺤﺮف ‪ H‬ﻣﻊ أﻇﮭﺎر ﺟﻤﯿﻊ‬
‫ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ؟‬

‫‪SELECT * FROM STUDENT‬‬


‫;'*‪WHERE STUDENT_NAME LIKE '*H‬‬

‫ﻧﻼﺣﻆ اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫ھﻞ ﻻﺣﻈﺖ أﻻن ﯾﺎﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ أي اﺳﻢ ﯾﺤﺘﻮي ﻋﻠﻲ ‪ H‬ﻇﮭﺮ ﻓﻲ اﻻﺳﺘﻌﻼم‪.‬‬

‫وﺑﺬﻟﻚ ﻧﻜﻮن اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻻﺳﺘﻌﻼم ﻣﻊ ‪ LIKE‬ﺑﺎﺳﺘﺨﺪام ) ‪ (%‬أو ﻓﻲ اﻻﻛﺴﯿﺲ ) *( ‪.‬‬

‫‪٤٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﺳﺘﺨﺪام ‪ LIKR‬ﻣﻊ رﻣﺰ ) _ (‬

‫ﻣﻼﺣﻈﺔ ‪ :‬ﻗﺒﻞ اﻟﺒﺪء ﻓﻲ ﻣﻌﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﺴﺘﺨﺪم ) _ ( ﻛﻤﺎ ھﻲ وﻟﻜﻦ ﻓﻲ اﻻﻛﺴﯿﺲ ﺗﺴﺘﺨﺪم ) ? (‬
‫وأﻻن ﻣﺎھﻮ دور اﻟﺮﻣﺰ ) _ ( ﻧﻔﺘﺮض إن ﻟﺪﯾﻨﺎ ﻃﺎﻟﺒﯿﻦ اﻷول اﺳﻤﮫ ﺣﺎﺗﻢ واﻟﺜﺎﻧﻲ اﺳﻤﮫ ﺣﺎﺗﻢ وﻣﻦ اﻟﻤﻌﻠﻮم‬
‫إﻧﻨﺎ ﻋﻨﺪﻣﺎ ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ اﻻﺳﻤﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﺑﺎﻻﻧﻜﻠﯿﺰي ﺳﻮف ﯾﻜﺘﺐ ﻛﻞ ﺷﺨﺺ اﻻﺳﻢ وﻟﻜﻦ ﻣﻦ اﻟﻤﻤﻜﻦ إن ﯾﺨﺘﻠﻒ‬
‫اﻹﻣﻼء ﺷﺨﺺ ﯾﻀﯿﻒ ﺣﺮف وﺷﺨﺺ أﺧﺮ ﯾﺤﺬف ﺣﺮف أﻟﻲ آﺧﺮة أﻧﻨﻲ أﻋﻠﻢ اﻟﻔﻜﺮة ﻟﻢ ﺗﺼﻞ إﻟﻲ أﻻن وﻟﻜﻦ‬
‫ﻧﺄﺧﺬ ﻣﺜﺎل؟‬

‫أﻧﻈﺮ اﻟﺼﯿﻐﺔ‬
‫‪SELECT STUDENT_NAME FROM STUDENT‬‬
‫;'‪WHERE STUDENT_NAME LIKE 'HAT?M‬‬

‫أﻻن اﻧﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ‬

‫ﻻﺣﻈﺖ اﻟﻨﺎﺗﺞ ھﻨﺎﻟﻚ ﺷﺨﺺ ﻛﺘﺐ أﺳﻢ ﺣﺎﺗﻢ ‪ HATEM‬واﻷﺧﺮ ﻛﺘﺒﺔ ‪ HATIM‬ﻓﻲ اﻟﺼﯿﻎ اﻟﺴﺎﺑﻘﺔ ﻛﻨﻨﺎ‬

‫ﻧﺒﺤﺚ ﻋﻦ ﺣﺮف داﺧﻞ اﻟﻜﻠﻤﺔ ورأﯾﻨﺎ اﻟﺘﺮﺗﯿﺐ ﻟﻠﺤﺮف واﻟﺒﺎب واﺳﻊ ﻟﺘﻔﻜﯿﺮ ﻓﻲ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ وﻟﻜﻦ ﺳﻮف‬

‫أدﻋﮭﺎ ﻟﻚ ﻟﻜﻲ ﺗﻔﻜﺮ ﺑﺮاﺣﺘﻚ؟‬

‫وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ اﻧﺘﮭﯿﻨﺎ ﻣﻦ اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ‬

‫‪٤٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻟﺴﺎدﺳﺔ‬

‫ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم ‪ :‬ﺗﺮﺗﯿﺐ اﻟﺼﻔﻮف ‪ORDER BY‬‬


‫دوال اﻟﺘﺠﻤﯿﻊ ‪AGGREGTE FUNCTION‬‬
‫اﻟﺘﺠﻤﯿﻊ ‪GROUP BY ,HAVING‬‬
‫اﻟﺪوال اﻟﺠﺎھﺰة ﻓﻲ ﻟﻐﺔ ‪BUILT- IN FUNCTIONS : SQL‬‬

‫ﺳﻮف ﻧﻘﺴﻢ ھﺬا اﻟﻔﺼﻞ إﻟﻲ ﻣﺤﺎﺿﺮات‬


‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ ‪:‬‬
‫‪ - ١‬ﺗﺮﺗﯿﺐ ﺻﻔﻮف اﻻﺳﺘﻌﻼم‬
‫‪ -٢‬دوال اﻟﺘﺠﻤﯿﻊ‬

‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ ‪:‬‬


‫‪GROUP BY - ١‬‬
‫‪HAVING -٢‬‬

‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ ‪:‬‬


‫‪BUILT – IN FUNCTIONS‬‬ ‫‪-١‬‬
‫‪BULIT –IN FUNCTIONS :NUMERIC‬‬ ‫‪-٢‬‬
‫‪BULIT – IN FUNCTION: CHARACTER‬‬ ‫‪-٣‬‬

‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ‬

‫اﻟﺪرس اﻷول‪ :‬ﺗﺮﺗﯿﺐ ﺻﻔﻮف اﻻﺳﺘﻌﻼم ‪ORDER BY‬‬

‫ﻓﻲ اﻟﺴﺎﺑﻖ ﻛﻨﺎ ﻧﺴﺘﺨﺪم ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم ﻣﺜﻞ‬


‫;‪SELECT * FROM STUDENT‬‬
‫وﻛﺎﻧﺖ ﺗﻈﮭﺮ ﻟﻨﺎ اﻟﻨﺘﺎﺋﺞ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫أﻻن ﻧﺮﯾﺪ ﺗﺮﺗﯿﺐ اﻟﻄﻼب ﺣﺴﺐ أرﻗﺎﻣﮭﻢ ﺗﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي ﻣﺎ اﻟﺤﻞ؟‬

‫‪٤٧‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺤﻞ‪ :‬ﯾﻮﺟﺪ ﻃﺮﯾﻘﺔ ﻓﻲ ‪ SQL‬ﺗﺪﻋﻲ ‪ORDER BY‬‬
‫ﻛﯿﻒ ﯾﺘﻢ ﻛﺘﺎﺑﺘﮭﺎ‬

‫ﻣﺜﺎل ‪١‬‬

‫ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻧﺮﯾﺪ ﺗﺮﺗﯿﺒﮫ ﺗﺼﺎﻋﺪﯾﺎ ﻃﺒﻌﺎ ﺑﺎﺳﺘﺨﺪام رﻗﻢ اﻟﻄﺎﻟﺐ ﺣﯿﺚ اﻟﻄﺎﻟﺐ رﻗﻢ ‪ ١٠‬ﯾﻜﻮن أول ﺳﺠﻞ‬
‫وﺑﻌﺪ ذﻟﻚ اﻟﻄﺎﻟﺐ رﻗﻢ ‪ ١٢‬وھﻜﺬا ﻧﺒﺪأ ﻣﻦ اﺻﻐﺮ رﻗﻢ وﯾﻨﺘﮭﻲ ﻋﻨﺪ اﻛﺒﺮ رﻗﻢ؟‬

‫أﻧﻈﺮ أﻟﻲ اﻟﺼﯿﻐﺔ ‪:‬‬

‫;‪SELECT * FROM STUDENT ORDER BY STUDENT_NO‬‬

‫ﻧﻨﻈﺮ إﻟﻲ اﻟﻨﺎﺗﺞ‪:‬‬

‫ھﻞ ﻻﺣﻈﺖ اﻟﺼﻮرة ﻗﺎرن اﻟﺼﻮرة ھﺬه ﻣﻊ اﻟﺼﻮرة اﻟﺴﺎﺑﻘﺔ ﺗﺠﺪ ھﻨﺎ أن اﻟﺼﻮرة ﻣﺮﺗﺒﺔ ﺣﺴﺐ اﻷرﻗﺎم ﻛﻤﺎ ﻃﻠﺒﻨﺎ‬

‫ﻣﻼﺣﻈﺔ ‪ :‬اﻟﺘﺮﺗﯿﺐ اﻻﻓﺘﺮاﺿﻲ ھﻮ ﺗﺼﺎﻋﺪي وﺗﺴﺘﻄﯿﻊ أﯾﻀﺎ اﻟﺘﺮﺗﯿﺐ ﺑﺎﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ﻋﻤﻮد‬

‫أﯾﻀﺎ ﻣﻊ ‪ ORDER BY‬ﺗﺴﺘﻄﯿﻊ أن ﺗﺤﺪد ھﻞ اﻟﺘﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي أو ﺗﻨﺎزﻟﻲ‬

‫أﻣﺎ ﺑﺎﺳﺘﺨﺪام ‪ ASC‬ﻟﺘﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي أو ‪ DESC‬ﻟﺘﺮﺗﯿﺐ ﺗﻨﺎزﻟﻲ ﺳﻮف ﻧﻜﺘﺐ اﻟﺼﯿﻎ ﻓﻘﻂ‬

‫;‪SELECT * FROM STUDENT ORDER BY STUDENT_NO ASC‬‬


‫ﻧﻮن‬

‫;‪SELECT * FROM STUDENT ORDER BY STUDENT_NO DESC‬‬

‫‪٤٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺪرس اﻟﺜﺎﻧﻲ ‪ :‬دوال اﻟﺘﺠﻤﯿﻊ ‪AGGREGTE FUNCTION‬‬

‫ھﺪف داﻟﺔ اﻟﺘﺠﻤﯿﻊ‬ ‫دوال اﻟﺘﺠﻤﯿﻊ اﻷﻛﺜﺮ اﺳﺘﺨﺪام ﻓﻲ ‪SQL‬‬


‫ﺗﻘﻮم ﺑﻌﻤﻞ ﺗﻌﺪاد ﻟﺼﻔﻮف‬ ‫‪COUNT‬‬
‫ﻣﺘﻮﺳﻂ ﻗﯿﻤﺔ ﻋﺎﻣﻮد‬ ‫‪AVG‬‬
‫اﻟﻘﯿﻤﺔ اﻟﻌﻈﻤﻲ ﻓﻲ ﻋﺎﻣﻮد‬ ‫‪MAX‬‬
‫اﻟﻘﯿﻤﺔ اﻟﺼﻐﺮى ﻟﻌﺎﻣﻮد‬ ‫‪MIN‬‬
‫ﻣﺠﻤﻮع اﻟﻘﯿﻢ ﻟﻌﺎﻣﻮد‬ ‫‪SUM‬‬
‫اﻻﻧﺤﺮاف اﻟﻤﻌﯿﺎري ﻟﻌﺎﻣﻮد‬ ‫‪STEDF‬‬

‫ﻟﻘﺪ ﻻﺣﻈﻨﺎ اﻟﺠﺪول اﻟﺴﺎﺑﻖ وﺳﻮف ﻧﺄﺧﺬ ﻋﻠﻲ ﻛﻞ داﻟﺔ ﺗﺠﻤﯿﻊ ﻣﺜﺎل‬
‫ﻣﺜﺎل‪١‬‬

‫ﻧﺮﯾﺪ ﻣﻌﺮﻓﺔ ﻋﺪد اﻟﺴﺠﻼت أو اﻟﺼﻔﻮف اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﺪول اﻟﻄﻼب ؟‬

‫;‪SELECT COUNT (*) FROM STUDENT‬‬

‫ﻣﻦ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ ﻋﺪد اﻟﺴﺠﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﺪول‬
‫ﻣﺜﺎل‪٢‬‬
‫أﻻن ﻧﺮﯾﺪ أن ﻧﺤﺼﻞ ﻋﻠﻲ ﻣﺘﻮﺳﻂ اﻟﻤﻌﺪﻻت اﻟﺘﺮاﻛﻤﯿﺔ ﻟﻄﻼب ؟‬

‫;‪SELECT AVG(GPA) FROM STUDENT‬‬

‫ﻣﻦ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ ﺳﻮف ﯾﻈﮭﺮ ﻟﻨﺎ اﻟﻤﺘﻮﺳﻂ ﻟﻤﻌﺪﻻت اﻟﻄﻼب ﺟﻤﯿﻌﺎ‪.‬‬
‫ﻣﻼﺣﻈﺔ ﻣﻤﻜﻦ ﺗﺴﺘﺨﺪم اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﻣﻊ اﻟﺪوال اﻟﺘﺠﻤﯿﻌﯿﺔ ﻣﺜﺎل‬
‫;‪SELECT AVG(GPA) AS 'AVERAGE GPA' FROM STUDENT‬‬
‫ﻣﺜﺎل ‪٣‬‬
‫أﻻن ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ أﻋﻠﻲ ﻣﻌﺪل ﻣﻮﺟﻮد ﻓﻲ ﺟﺪول اﻟﻄﻼب ؟‬
‫;‪SELECT MAX (GPA) FROM STUDENT‬‬

‫ﻣﺜﺎل ‪٤‬‬

‫ﻧﺮﯾﺪ إن ﻧﻌﻜﺲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺮﯾﺪ اﻟﺤﺼﻮل ﻋﻠﻲ اﻗﻞ ﻣﻌﺪل ﻣﻮﺟﻮد ﻓﻲ ﺟﺪول اﻟﻄﻼب ؟‬
‫;‪SELECT MIN (GPA) FROM STUDENT‬‬

‫ﻧﺮﯾﺪ ﻣﺠﻤﻮع اﻟﻤﻌﺪﻻت اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﺪول اﻟﻄﻼب )ﻃﺒﻌﺎ ھﺬا ﻣﺜﺎل ﺗﺴﺘﻄﯿﻊ إن ﺗﺴﺨﺪﻣﺔ ﻛﯿﻔﻤﺎ ﺗﺮﯾﺪ(؟‬
‫ﻣﺜﺎل ‪٥‬‬
‫; ‪SELECT SUM (GPA) FROM STUDENT‬‬

‫ﻟﻘﺪ ﺗﻢ اﻟﺤﻤﺪ ﷲ أﻧﺠﺎز اﻟﺪرس اﻟﺜﺎﻧﻲ وإﻧﻨﻲ أﻋﻠﻢ أﻧﻨﻲ اﺧﺘﺼﺮت وﻟﻜﻦ ھﺬا اﻟﻤﻔﮭﻮم اﻷﺳﺎﺳﻲ وﺗﺴﺘﻄﯿﻊ‬
‫ﻋﻤﻞ ﻛﻞ اﻷﻓﻜﺎر اﻟﺴﺎﺑﻘﺔ ‪.‬‬

‫‪٤٩‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‬

‫اﻟﺪرس اﻷول ‪GROUP BY :‬‬


‫ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﺎﻟﺐ وﯾﻮﺟﺪ ﻓﯿﮫ ﻋﺪد ﻣﻦ اﻟﺘﺨﺼﺼﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻧﺮﯾﺪ ﻣﻌﺮﻓﺔ ﻋﺪد ﻃﻼب ﻛﻞ ﺗﺨﺼﺺ‬
‫ھﺬا ھﻮ اﻟﻤﻘﺼﻮد ب ‪ GROUP BY‬ﻋﻤﻠﯿﺔ ﺗﺼﻨﯿﻒ وﺗﻮزﯾﻊ ﻣﺠﻤﻮﻋﺎت‪.‬‬
‫ﺳﻮف ﻧﺸﺎھﺪ ﻣﺜﺎل‬

‫)*( ‪SELECT MAJOR AS ' MAJOR SPECIALTY ' ,COUNT‬‬


‫'‪AS 'OF STUDENT‬‬
‫‪FROM STUDENT‬‬
‫;‪GROUP BY MAJOR‬‬

‫ﻧﺸﺎھﺪ اﻟﻨﺎﺗﺞ أﻻن‬

‫ھﻞ ﻻﺣﻈﺖ إﻋﻄﺎﻧﻲ اﻷﻗﺴﺎم وﻋﺪد اﻟﻄﻼب ﻓﻲ ﻛﻞ ﻗﺴﻢ‬


‫اﻟﺪرس اﻟﺜﺎﻧﻲ ‪HAVING :‬‬

‫ﻣﻦ وﺟﮭﺔ ﻧﻈﺮي اﻟﺨﺎﺻﺔ أن ‪ HAVING‬ﺗﻘﻮم ﺑﺪور اﻟﺸﺮط ﻓﻔﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ‬
‫ﻟﺪﯾﻨﺎ ﺟﺪول اﻟﻄﺎﻟﺐ وﯾﻮﺟﺪ ﻓﯿﮫ ﻋﺪد ﻣﻦ اﻟﺘﺨﺼﺼﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻧﺮﯾﺪ ﻣﻌﺮﻓﺔ ﻋﺪد ﻃﻼب ﻛﻞ ﺗﺨﺼﺺ ﺑﺸﺮط‬
‫إن ﯾﻜﻮن ﻋﺪد ﻃﻼب اﻟﺘﺨﺼﺺ أﻛﺜﺮ ﻣﻦ ‪ ٣‬؟‬
‫)*( ‪SELECT MAJOR AS ' MAJOR SPECIALTY ' ,COUNT‬‬
‫'‪AS 'OF STUDENT‬‬
‫‪FROM STUDENT‬‬
‫‪GROUP BY MAJOR‬‬
‫;‪HAVING COUNT (*) >3‬‬

‫ﻧﺸﺎھﺪ اﻟﻨﺘﯿﺠﺔ‬

‫ھﻞ ﻻﺣﻈﺖ إﻋﻄﺎﻧﻲ اﻷﻗﺴﺎم وﻋﺪد اﻟﻄﻼب ﻓﻲ ﻛﻞ ﻗﺴﻢ ﻋﺪد ﻃﻼﺑﮫ أﻛﺜﺮ ﻣﻦ ‪٣‬‬

‫وﷲ اﻟﺤﻤﺪ ﺗﻢ أﻧﺠﺎز اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‬

‫‪٥٠‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ‬

‫اﻟﺪوال اﻟﺠﺎھﺰة ﻓﻲ ﻟﻐﺔ ‪BUILT-IN FUNCTIONS :SQL‬‬


‫ﻗﻢ ﺑﻌﻤﻞ أﻧﺸﺎء ﺟﺪول وھﻮ ﺟﺪول درﺟﺎت اﻟﺤﺮارة )‪.(TEMPERTUER‬وھﻮا ﻟﺬي ﻧﺘﻌﺎﻣﻞ ﻣﻌﮫ ﻓﻲ‬
‫اﻟﻤﺤﺎﺿﺮة واﻟﺪروس اﻟﻘﺎدﻣﺔ‪.‬‬
‫ﻣﻼﺣﻈﺎت‬ ‫‪ COULMN_NAME‬ﺧﺼﺎﺋﺺ اﻟﻌﺎﻣﻮد‬ ‫أﺳﻢ اﻟﻌﺎﻣﻮد ﺑﺎﻟﻌﺮﺑﻲ‬
‫)‪CHAR(3‬‬ ‫‪DAY‬‬ ‫اﻟﯿﻮم‬
‫‪DOUBLE‬‬ ‫‪MIN_TEMP‬‬ ‫اﻟﺪرﺟﺔ اﻟﻌﻈﻤﻲ‬
‫‪DOUBLE‬‬ ‫‪MAX_TEMP‬‬ ‫اﻟﺪرﺟﺔ اﻟﺼﻐﺮى‬
‫‪INTEGER‬‬ ‫‪I_MIN_TEMP‬‬ ‫اﻟﺪرﺟﺔ اﻟﻌﻈﻤﻲ ﻋﺪد ﺻﺤﯿﺢ‬
‫‪INTEGER‬‬ ‫‪I_MAX_TEMP‬‬ ‫اﻟﺪرﺟﺔ اﻟﺼﻐﺮى ﻋﺪد ﺻﺤﯿﺢ‬
‫أﻻن ﺳﻮف ﻧﺴﺘﻌﺮض ﺑﯿﺎﻧﺎت ﺟﺪول ‪TEMPERTUER‬‬
‫;‪SELECT * FROM TEMPERTUER‬‬
‫ﺗﻜﻮن اﻟﻨﺘﯿﺠﺔ ﻛﻤﺎ ﯾﻠﻲ‬

‫ﺳﻮف ﻧﻘﺴﻢ ھﺬه اﻟﻤﺤﺎﺿﺮة إﻟﻲ أﻗﺴﺎم‪.‬‬


‫اﻟﻘﺴﻢ اﻷول وھﻮ اﻟﺪوال اﻟﻌﺪدﯾﺔ وﺳﻮف ﻧﺄﺧﺬ ‪ ٤‬دوال وھﻲ اﻟﻤﺸﮭﻮرة واﻷﻛﺜﺮ اﺳﺘﺨﺪام‬
‫‪ - ١‬داﻟﺔ اﻟﻘﯿﻤﺔ اﻟﻤﻄﻠﻘﺔ )‪ABS(N‬‬
‫اﻟﻘﯿﻤﺔ اﻟﻄﻠﻘﺔ ﻣﻌﻨﺎھﺎ ﻋﻨﺪ أھﻞ اﻟﺮﯾﺎﺿﯿﺎت ھﻮ أﺧﺬ ﻛﻞ ﻗﯿﻤﺔ وﺗﺤﻮﯾﻠﮭﺎ إﻟﻲ ﻗﯿﻤﺔ ﻣﻮﺟﺒﺔ ﻓﻲ ﺣﺎﻟﺔ ﻛﺎﻧﺖ ﻗﯿﻤﺔ ﺳﺎﻟﺒﺔ‬
‫أﻣﺎ أذا ﻛﺎﻧﺖ ﻣﻮﺟﺒﺔ ﻓﺘﺒﻘﻲ ﻛﻤﺎ ھﻲ ‪ .‬وأﻻن ﻧﺄﺧﺬ ﻣﺜﺎل ‪ MIN_TEMP‬ﯾﻮﺟﺪ ﺑﮭﺎ ﻗﯿﻤﺔ ﻣﻮﺟﺒﺔ وﺳﺎﻟﺒﺔ‬

‫'‪SELECT MIN_TEMP ,ABS(MIN_TEMP) AS ' ABSOULTE‬‬


‫;‪FROM TEMPERTUER‬‬

‫اﻟﻨﺘﯿﺠﺔ‬

‫ھﻞ ﻻﺣﻈﺖ ﻛﻞ ﻗﯿﻤﺔ ﺳﺎﻟﺒﺔ أﺻﺒﺤﺖ ﻣﻮﺟﺒﺔ‪.‬‬

‫‪ -٢‬داﻟﺔ اﻟﺘﻘﺮﯾﺐ )]‪ROUND(M,[N‬‬


‫‪).‬اﻟﻔﻜﺮة ﻟﻢ ﺗﺼﻞ أﻋﻠﻢ ذﻟﻚ وﻟﻜﻦ ﻧﺄﺧﺬ ﻣﺜﺎل(‬ ‫ﺗﻌﺘﺒﺮ ھﺬه اﻟﺪاﻟﺔ اﻟﻘﯿﻤﺔ اﻟﻤﻘﺮﺑﺔ ﺑﺪﻗﺔ ‪ N‬ﻟﻠﻌﺪد اﻟﻤﺪﺧﻞ ‪M‬‬

‫;‪SELECT MAX_TEMP/3 FROM TEMPERTUER‬‬

‫ﻧﻨﻈﺮ إﻟﻲ اﻟﻨﺘﯿﺠﺔ‬

‫ﻻﺣﻆ اﻹﻋﺪاد ﻣﺎذا ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ ﻧﺮﯾﺪ أن ﯾﻜﻮن ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ رﻗﻤﯿﻦ أو ﺣﺴﺐ اﺣﺘﯿﺎﺟﻚ ﻣﺎ اﻟﻌﻤﻞ أﻻن؟‬
‫ھﻨﺎ ﯾﺄﺗﻲ اﻟﮭﺪف ﻣﻦ داﻟﺔ اﻟﺘﻘﺮﯾﺐ ھﺬا ھﻮ ﻣﻜﺎن ﻋﻤﻠﮭﺎ اﻧﻈﺮ ﻣﻌﻲ أﻻن‪.‬‬

‫‪٥١‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪SELECT ROUND( MAX_TEMP/3 ,2) FROM‬‬
‫;‪TEMPERTUER‬‬

‫ل‬
‫ھﻨﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ اﺳﻢ اﻟﻌﺎﻣﻮد وإذا أردت‬
‫ﻋﻤﻞ ﻋﻤﻠﯿﺎت ﺣﺴﺎﺑﯿﺔ ﻋﻠﻲ اﻟﻌﺎﻣﻮد‬ ‫ھﻨﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ اﻹﻋﺪاد‬
‫ﺗﺴﺘﻄﯿﻊ‬ ‫ﻣﺎﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ‬

‫ﻻﺣﻆ اﻟﻨﺎﺗﺞ‬

‫أﺗﻤﻨﻲ أن ﺗﻜﻮن اﻟﺼﻮرة ﻗﺪ اﺗﻀﺤﺖ أﻻن ‪.‬‬

‫‪ -٣‬داﻟﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ )‪MOD(M,N‬‬


‫ﺗﻌﯿﺪ ھﺬه اﻟﺪاﻟﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﻌﺪد ‪ M‬ﻋﻠﻲ اﻟﻌﺪد ‪N‬‬
‫ﻧﺄﺧﺬ أﻣﺜﻠﺔ ﻋﻠﻲ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ‬
‫‪ ١٧‬ﺗﻘﺴﯿﻢ ‪ ٣‬ﯾﻜﻮن اﻟﻨﺎﺗﺞ ‪ ٥‬وأﻻن ‪ ٥‬ﺿﺮب ‪ ٣‬ﯾﻜﻮن اﻟﻨﺎﺗﺞ ‪ ١٥‬ﻛﻢ اﻟﺒﺎﻗﻲ ﻣﻦ ‪ ١٧‬اﻟﺒﺎﻗﻲ‪٢‬‬ ‫‪-١‬‬
‫اﻋﻠﻢ أﻧﻚ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪام اﻵﻟﺔ اﻟﺤﺎﺳﺒﺔ وﺗﺨﺮج اﻟﻨﺎﺗﺞ ﻣﺒﺎﺷﺮة دون ﺑﺎﻗﻲ ﻗﺴﻤﺔ‬
‫دﻋﻨﺎ ﻧﺄﺧﺬ ﻣﺜﺎل ‪SQL‬‬
‫;‪SELECT I_MAX_TEMP MOD(4) FROM TEMPERTUER‬‬

‫اﻟﻨﺎﺗﺞ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬

‫‪ – ٤‬داﻟﺔ اﻟﺠﺬر أﻟﺘﺮﺑﯿﻌﻲ )‪SQR(M‬‬


‫ھﺬه اﻟﺪاﻟﺔ واﺿﺤﺔ ﺟﺪا ﺳﻮف أﻃﺒﻖ ﻣﺜﺎل و أﻋﻄﯿﻚ اﻟﻨﺎﺗﺞ‬

‫ﺳﺴﺲ‬
‫'‪SELECT I_MAX_TEMP, SQR(I_MAX_TEMP) AS ' THE ROOT‬‬
‫;‪FROM TEMPERTUER‬‬

‫وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ ﺗﻢ اﻻﻧﺘﮭﺎء ﻣﻦ اﻟﻘﺴﻢ اﻷول ﻣﻦ اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ ﻓﻲ ھﺬه اﻟﻮﺣﺪة‬

‫‪٥٢‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ‪ :‬وھﻮ اﻟﺪوال اﻟﺤﺮﻓﯿﺔ وﺳﻮف ﻧﺄﺧﺬ ‪ ٣‬دوال وھﻲ اﻟﻤﺸﮭﻮرة واﻷﻛﺜﺮ اﺳﺘﺨﺪام‬
‫‪ -١‬داﻟﺔ ﺗﺤﻮﯾﻞ اﻟﺤﺮوف إﻟﻲ ﺣﺮوف ﻛﺒﯿﺮة )(‪UPPER‬‬
‫أﺗﻮﻗﻊ أﻧﮭﺎ ﻣﻦ اﻻﺳﻢ واﺿﺤﺔ ﺟﺪا ﺳﻮف ﻧﺄﺧﺬ ﻃﺮﯾﻘﺔ ﻛﺘﺎﺑﺔ اﻻﺳﺘﻌﻼم واﻟﻨﺎﺗﺞ ﻷﻧﮭﺎ ﻻ ﺗﺤﺘﺎج إﻟﻲ ﺷﺮح‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﻓﻲ اﻻﻛﺴﯿﺲ ﺗﻜﺘﺐ )(‪UCASE‬‬
‫‪SELECT MAJOR, UCASE(MAJOR) AS 'UPPERCASE' FROM‬‬
‫;‪STUDENT‬‬

‫‪ -٢‬داﻟﺔ ﺗﺤﻮﯾﻞ اﻟﺤﺮوف إﻟﻲ ﺣﺮوف ﺻﻐﯿﺮة ) (‪LOWER‬‬


‫ﺗﻜﺘﺐ ﻣﺜﻞ داﻟﺔ )( ‪ UPPER‬وﻟﻜﻦ ﻧﺴﺘﺒﺪل )(‪ UPPER‬ب )(‪LOWER‬‬
‫ﻣﻼﺣﻈﺔ ‪ :‬ﻓﻲ اﻻﻛﺴﯿﺲ ﺗﻜﺘﺐ )(‪. LCASE‬‬
‫‪SELECT MAJOR, LCASE(MAJOR) AS 'LOWERCASE' FROM‬‬
‫;‪STUDENT‬‬

‫‪٥٣‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪ -٣‬داﻟﺔ اﺳﺘﺒﺪال اﻟﺤﺮوف )‪REPLACE(STR,SEARCH_STR,REPLACE_STR‬‬

‫'**** ‪SELECT MAJOR, REPLACE (MAJOR ,'M','****') AS 'M TO‬‬


‫;‪FROM STUDENT‬‬

‫ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻓﻲ اﻟﺬاﻛﺮة‬

‫ھﻨﺎ أﺳﻢ اﻟﻌﻤﻮد اﻟﻤﺮاد اﻟﺘﻐﯿﯿﺮ ﻋﻠﯿﺔ‬

‫ھﻨﺎ ﯾﺘﻢ اﻟﺒﺤﺚ ﻋﻦ ﺣﺮف ‪ M‬داﺧﻞ اﻟﻜﻠﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ‬


‫ﻋﻤﻮد ‪MAJOR‬‬
‫اﻟﺠﻤﻠﺔ اﻟﺠﺪﯾﺪة اﻟﺘﻲ ﺗﻮﺿﻊ ﺑﺪل ﺣﺮف ‪M‬‬

‫اﻟﻨﺎﺗﺞ‬

‫وﷲ اﻟﺤﻤﺪ ﻟﻘﺪ ﺗﻢ أﻧﺠﺎز اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻟﺜﺔ واﻟﻮﺣﺪة اﻟﺴﺎدﺳﺔ‬


‫أﺳﺎل اﷲ اﻟﻌﻠﻲ اﻟﻘﺪﯾﺮ أن ﯾﻜﻮن اﻟﺸﺮح واﺿﺢ وﻣﯿﺴﺮ ﻟﻠﺠﻤﯿﻊ وﯾﺴﺘﻔﯿﺪ ﻣﻨﮫ ﻣﻦ ﯾﺮﯾﺪ‬

‫‪٥٤‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻮﺣﺪة اﻟﺴﺎﺑﻌﺔ‬

‫اﻻﺳﺘﻌﻼم ﻣﻦ ﻋﺪة ﺟﺪاول‬


‫‪MULTI_TABLE QUERY‬‬

‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ ‪ :‬رﺑﻂ اﻟﺠﺪاول‬


‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‪ :‬اﻻﺳﺘﻌﻼم ﻣﻦ ﻋﺪة ﺟﺪاول واﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ‬

‫اﻟﻤﺤﺎﺿﺮة اﻷوﻟﻲ ‪ :‬رﺑﻂ اﻟﺠﺪاول‬


‫ﺻﺪﯾﻘﻲ اﻟﻌﺰﯾﺰ ﺳﻮف أﺷﺮح رﺑﻂ اﻟﺠﺪاول ﺑﻄﺮﯾﻘﺔ اﻟﻤﺜﺎل ﻛﻤﺎ ﺳﺒﻖ ﻓﻲ ھﺬا اﻟﻤﻨﮭﺞ ‪.‬‬
‫دﻋﻨﺎ ﻧﻔﻜﺮ أرﯾﺪ أﻧﺸﺎء ﺟﺪوﻟﯿﻦ اﻷول ھﻮ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ واﻟﺜﺎﻧﻲ ھﻮ ﺟﺪول اﻷﻗﺴﺎم‬
‫ﯾﻮﺟﺪ ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦ راﺑﻂ ﻛﯿﻒ؟‬
‫ﻛﻞ ﻣﻮﻇﻒ ﯾﻨﺘﻤﻲ إﻟﻲ ﻗﺴﻢ ﻣﺤﺪد ﻣﻌﻨﻲ ذﻟﻚ أن اﻟﻤﻮﻇﻒ ﯾﻌﻤﻞ ﻓﻲ ﻗﺴﻢ واﺣﺪ ﻣﻦ اﻟﻤﺴﺘﺤﯿﻞ واﻟﻨﺎدر ﺟﺪا‬
‫أن ﯾﻜﻮن ھﻨﺎﻟﻚ ﻣﻮﻇﻒ ﯾﻌﻤﻞ ﻓﻲ أﻛﺜﺮ ﻣﻦ ﻗﺴﻢ ‪ .‬ﻓﻲ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ ﻣﻤﻜﻦ وأﻛﯿﺪ أن اﻟﻤﻮﻇﻔﯿﻦ ﺗﺨﺘﻠﻒ‬
‫أﻗﺴﺎﻣﮭﻢ ﻓﻤﺜﻼ ﻣﺤﻤﺪ ﻓﻲ ﻗﺴﻢ اﻟﻤﺎﻟﯿﺔ وﺧﺎﻟﺪ ﻓﻲ ﻗﺴﻢ اﻟﺤﺎﺳﺐ إﻟﻲ أﺧﺮ اﻟﻜﻼم ‪.‬‬
‫ﻧﺴﺘﻨﺘﺞ ﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ إن ﻋﻼﻗﺔ ﺟﺪول اﻷﻗﺴﺎم ﺑﺠﺪول اﻟﻤﻮﻇﻔﯿﻦ ھﻲ واﺣﺪ إﻟﻲ‬
‫ﻛﺜﯿﺮ)‪(ON_TO_MANY‬وﻗﺪ ﺗﻌﻠﻤﻨﺎ ذﻟﻚ ﻓﻲ درس اﻟﻌﻼﻗﺎت وأﻧﻮاﻋﮭﺎ ﺻﺢ اﻟﻜﻼم‪.‬‬
‫أﻻن دﻋﻨﺎ ﻧﺼﻤﻢ اﻟﺠﺪاول وﻧﺒﺪأ ﺑﺠﺪول اﻷﻗﺴﺎم‪.‬‬

‫وأﻻن ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ ‪:‬‬

‫ﻻﺣﻆ اﻟﻤﻔﺎﺗﯿﺢ اﻷﺳﺎﺳﯿﺔ واﻷﺟﻨﺒﯿﺔ ﻓﺎﻟﺮﺑﻂ ﯾﻜﻤﻦ ﺳﺮه ﻓﻲ اﻟﻤﻔﺎﺗﯿﺢ‪.‬‬


‫ﻣﺒﺮوك ﻟﻘﺪ أﻧﺸﺌﺖ ﺟﺪوﻟﯿﻦ ﺑﯿﻨﮭﻤﺎ ﻋﻼﻗﺔ واﺣﺪ إﻟﻲ ﻛﺜﯿﺮ‪.‬‬
‫ﻧﺸﺎھﺪ ﺗﺼﻤﯿﻢ اﻟﻌﻼﻗﺎت أذھﺐ إﻟﻲ أدوات ﻓﻲ اﻷﻛﺴﺲ ﺛﻢ ﻗﻢ ﺑﺎﺧﺘﯿﺎر ﻋﻼﻗﺎت ﺳﻮف ﺗﺸﺎھﺪ اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ‬

‫‪٥٥‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺤﺎﺿﺮة اﻟﺜﺎﻧﯿﺔ‪ :‬اﻻﺳﺘﻌﻼم ﻣﻦ ﻋﺪة ﺟﺪاول واﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ‬
‫اﻟﺮﺑﻂ اﻟﻤﺘﺴﺎوي "اﻟﺪاﺧﻠﻲ " ﺑﯿﻦ اﻟﺠﺪاول ‪EQUI_JOIN or INNER JOIN‬‬
‫ﯾﻤﻜﻦ ﺗﻄﺒﯿﻖ اﻟﺮﺑﻂ اﻟﻤﺘﺴﺎوي ﺑﯿﻦ ﺟﺪوﻟﯿﻦ أو أﻛﺜﺮ ‪ .‬ﻋﻨﺪ اﺳﺘﺨﺪام اﻟﺮﺑﻂ اﻟﻤﺘﺴﺎوي ﺑﯿﻦ ﺟﺪوﻟﯿﻦ ﯾﺘﻢ‬
‫اﻧﺘﻘﺎء اﻷﻋﻤﺪة ﻣﻦ ﻛﻼ اﻟﺠﺪوﻟﯿﻦ ﻣﻊ اﻟﺮﺑﻂ ﺑﯿﻨﮭﻤﺎ ﻣﻦ ﺧﻼل ﻋﺎﻣﻮد ﻣﺎ ﻣﻮﺟﻮد ﻓﻲ ﻛﻼ اﻟﺠﺪوﻟﯿﻦ ﯾﺘﻀﻤﻦ‬
‫ﻗﯿﻢ ﻣﺘﺴﺎوﯾﺔ‪.‬ھﺬا اﻟﺮﺑﻂ ﯾﺘﻢ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻔﺎﺗﯿﺢ اﻟﺮﺋﯿﺴﯿﺔ واﻷﺟﻨﺒﯿﺔ اﻟﻤﻌﺮﻓﺔ ﻟﻠﺠﺪوﻟﯿﻦ‪.‬‬

‫ﻣﺜﺎل‪.‬‬
‫أﻛﺘﺐ اﺳﺘﻌﻼم ﺑﻠﻐﺔ ‪ SQL‬ﯾﺒﯿﻦ ﻗﺎﺋﻤﺔ ﺑﺄﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ وأﺳﻤﺎء اﻷﻗﺴﺎم اﻟﺘﻲ ﯾﻌﻤﻠﻮا ﺑﮭﺎ‪.‬‬
‫ﻻﻧﺴﺘﻄﯿﻊ اﻟﺤﺼﻮل ﻋﻠﻲ اﻻﺳﺘﻌﻼم اﻟﺴﺎﺑﻖ ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﯿﻦ ﻓﻘﻂ ﺑﻞ ﻣﻦ ﺟﺪول اﻷﻗﺴﺎم أﯾﻀﺎ‪.‬‬
‫أﻻن ﻧﻨﻈﺮ إﻟﻲ اﻟﺼﯿﻐﺔ‪.‬‬
‫‪SELECT first_name ,DEPT_NAME‬‬
‫‪FROM EMPLOYEE,DEPARTMENT‬‬
‫;‪WHERE EMPLOYEE.DEP_ID = DEPARTMENT.DEPT_ID‬‬

‫ھﺬه اﻟﻨﺘﯿﺠﺔ‬

‫أﻧﻨﻲ أﻋﻠﻢ ﻓﻲ اﻟﺪروس اﻷﺧﯿﺮة ﻟﻢ أﻗﻢ ﺑﺸﺮح واﻓﻲ ﻛﻤﺎ ﻓﻲ اﻟﺴﺎﺑﻖ وﻟﻜﻦ أﻻن أﻧﺖ أﺻﺒﺤﺖ ﻗﺎدر‬
‫ﻋﻠﻲ ﻓﮭﻢ اﻟﺼﯿﻎ ﻟﻮﺣﺪك ‪.‬‬

‫‪٥٦‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﺳﺘﺨﺪام اﻟﻤﺮادف ﻟﺘﻌﺮﯾﻒ اﻟﺠﺪول‬

‫ﻟﺪﯾﻨﺎ ﺟﺪوﻟﯿﻦ ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﺪل ﻣﻦ ﻛﺘﺎﺑﺔ أﺳﻢ اﻟﺠﺪول ﻛﻞ ﻣﺮه أﺳﺘﻄﯿﻊ أن أﻋﻄﻲ اﻟﺠﺪول أﺳﻢ ﺑﺪﯾﻞ‬
‫أو ﻣﺮادف ﻟﮫ ﻛﯿﻒ ﻧﻨﻈﺮ اﻟﻲ اﻟﺼﯿﻐﮫ‪.‬‬

‫‪SELECT first_name ,DEPT_NAME‬‬


‫‪FROM EMPLOYEE E, DEPARTMENT D‬‬
‫;‪WHERE E.DEP_ID = D.DEPT_ID‬‬

‫اﻟﻨﺘﯿﺠﺔ‬
‫اﻻﺳﻢ اﻟﻤﺮادف‬

‫ھﻞ ﻻﺣﻈﺖ أﻻن اﻟﮭﺪف ﻣﻦ اﻻﺳﻢ اﻟﻤﺮادف‬


‫ﻣﻤﻜﻦ أن ﻧﺴﺘﺨﺪم ﻣﻌﺎﻣﻼت ‪ AND ,OR,NOT‬ﻣﻊ اﻻﺳﺘﻌﻼم ﻣﻦ ﻋﺪة ﺟﺪاول‬
‫ﻣﺜﺎل ‪ :‬أﻛﺘﺐ اﺳﺘﻌﻼم ﺑﻠﻐﺔ ‪ SQL‬ﯾﺒﯿﻦ ﻗﺎﺋﻤﺔ ﺑﺄﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ اﻟﻤﻮﺟﻮدﯾﻦ ﻓﻲ ﻗﺴﻢ اﻟﺪﻋﻢ اﻟﻔﻨﻲ؟‬
‫'‪SELECT first_name, DEPT_NAME AS 'DEPARTMENT‬‬
‫‪FROM EMPLOYEE E, DEPARTMENT D‬‬
‫=‪WHERE E.DEP_ID = D.DEPT_ID AND D.DEPT_NAME‬‬
‫'اﻟﺪﻋﻢ اﻟﻔﻨﻲ'‬
‫اﻟﻨﺎﺗﺞ‪:‬‬

‫‪٥٧‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ‬

‫ﻣﻌﻨﻲ اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ ھﻮ ﺗﻀﻤﯿﻦ اﺳﺘﻌﻼم داﺧﻞ اﺳﺘﻌﻼم وﻧﺴﺘﻄﯿﻊ ﻧﻘﺴﻢ اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ إﻟﻲ‬
‫ﻗﺴﻤﯿﻦ داﺧﻠﻲ وﺧﺎرﺟﻲ‪.‬‬

‫‪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‬ﻻ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ‪.‬‬

‫‪٥٨‬‬

‫‪PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com‬‬

You might also like