You are on page 1of 32

‫اوﻻ وﻗﺒﻞ اﻟﺒﺪء ﻓﻰ اﻟﺸﺮح اود ان اذﻛﺮ ﻣﺼﺪر اﻟﺸﺮح ﻟﻸﻣﺎﻧﻪ ھﺬه‬

‫اﻟﺪروس ﻣﻨﻘﻮﻟﻪ ﻋﻦ ﻣﻮﻗﻊ‬


‫‪WWW.W3Schools.COM‬‬
‫وﻟﻘﺪ ﻗﻤﺖ اﻧﺎ ﻓﻘﻂ ﺑﺘﺮﺟﻤﺘﮫﺎ وﺗﻮﺿﯿﺢ وﺗﻌﺪﻳﻞ ﺑﻌﺾ اﻟﻨﻘﺎط اﻟﺼﻐﯿﺮه ﺑﮫﺎ‬

‫ﺳﯿﻜﻮن ھﺬا اﻟﺸﺮح ﻋﺒﺎره ﻋﻦ ﻣﺮﺟﻊ ﺷﺎﻣﻞ ﻟﺠﻤﻞ ‪SQL‬‬

‫اوﻻ ﻣﻘﺪﻣﻪ ﻓﻰ ‪: SQL‬‬

‫ھﻰ ﻟﻐﻪ ﻗﯿﺎﺳﯿﻪ ﻣﻦ ﻟﻐﺎت اﻟﺤﺎﺳﺐ ﻟﺪﺧﻮل وﻣﻌﺎﻟﺠﻪ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬

‫ﻣﺎ ھﻰ ‪Structured Query Language : SQL‬‬

‫ﻟﻐﻪ ﺑﻨﺎء اﻷﺳﺘﻌﻼﻣﺎت اﻟﮫﯿﻜﻠﯿﻪ )ﻳﻌﻨﻰ ھﻰ اﻟﺘﺮﺟﻤﻪ ﺣﺮﻓﯿﻪ ﺷﻮﻳﻪ(‬

‫ھﻰ ﻟﻐﻪ ﻗﯿﺎﺳﯿﻪ ﻣﻦ ﻟﻐﺎت اﻟﺤﺎﺳﺐ اﻟﺨﺎﺻﻪ ﺑﻤﻌﮫﺪ ‪ANSI‬‬ ‫‪-١‬‬


‫ﺗﻤﻜﻨﻚ ﻣﻦ اﻟﺪﺧﻮل ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ ‫‪-٢‬‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ إﺳﺘﺨﺮاج اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﻘﺎﻋﺪه‬ ‫‪-٣‬‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ إﺿﺎﻓﻪ ﺑﯿﺎﻧﺎت إﻟﻰ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت‬ ‫‪-٤‬‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ ﻣﻦ ﺣﺬف ﺑﯿﺎﻧﺎت ﻣﻦ اﻟﻘﺎﻋﺪه‬ ‫‪-٥‬‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ ﺗﻌﺪﻳﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺴﺠﻠﻪ‬ ‫‪-٦‬‬
‫أﺧﯿﺮا ھﻰ ﻟﻐﻪ ﺳﮫﻠﻪ اﻟﺘﻌﻠﻢ واﻟﻔﮫﻢ‬ ‫‪-٧‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪١‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫ﻟﻐﻪ ‪ SQL‬ھﻰ ﻟﻐﻪ ﻗﯿﺎﺳﯿﻪ ‪:‬‬
‫ھﻰ ﻟﻐﻪ ﻣﻦ اﻟﻠﻐﺎت اﻟﻘﯿﺎﺳﯿﻪ اﻟﺨﺎﺻﻪ ﺑﻤﻌﮫﺪ‬
‫)‪ANSI (American National Standards Institute‬‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ دﺧﻮل وﻣﻌﺎﻟﺠﻪ ﻧﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ‪Database System‬‬
‫ﺟﻤﻞ ‪ SQL‬ﺗﻌﻤﻞ ﻣﻊ ﺑﺮاﻣﺞ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻞ ‪:‬‬

‫‪Ms-Access, Ms-SQL Server, DB2, Oracle, etc.‬‬

‫ﺗﻨﻘﺴﻢ ﻟﻐﻪ ‪ SQL‬إﻟﻰ ﻗﺴﻤﯿﻦ ‪:‬‬

‫)‪1- SQL Data Manipulation Language (DML‬‬

‫ھﻮ اﻟﻘﺴﻢ اﻟﻤﺴﺌﻮل ﻋﻦ ‪ :‬ﻣﻌﺎﻟﺠﻪ اﻟﺒﯿﺎﻧﺎت‬

‫‪ : Select -١‬إﺳﺘﺨﺮاج اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت‬


‫‪ : INSERT INTO -٢‬إﺿﺎﻓﻪ ﺑﯿﺎﻧﺎت ﺟﺪﻳﺪه‬
‫‪ : Update -٣‬اﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺴﺠﻠﻪ‬
‫‪ : Delete -٤‬ﺣﺬف اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﻘﺎﻋﺪه‬

‫)‪2- Data Definition Language (DDL‬‬


‫ھﻮ اﻟﻘﺴﻢ اﻟﻤﺴﺌﻮل ﻋﻦ ‪ :‬ﺗﻌﺮﻳﻒ اﻟﺒﯿﺎﻧﺎت‬

‫‪ : Create Database -١‬ﻷﻧﺸﺎء ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت ﺟﺪﻳﺪه‬


‫‪ : Create Table -٢‬ﻷﻧﺸﺎء ﺟﺪول داﺧﻞ ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت‬
‫‪ : ALTER TABLE -٣‬ﻟﻠﺘﻌﺪﻳﻞ ﻓﻰ اﻟﺠﺪول‬
‫‪ : DROP TABLE -٤‬ﻟﺤﺬف اﻟﺠﺪول ﻣﻦ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت‬
‫‪ : CREATE INDEX-٥‬ﻷﻧﺸﺎء ﻣﻔﺘﺎح ﻟﻠﺒﺤﺚ‬
‫‪ : DROP INDEX -٦‬ﻟﺤﺬف ﻣﻔﺘﺎح اﻟﺒﺤﺚ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
Select ‫أوﻻ ﺟﻤﻠﻪ‬

‫ﺗﺴﺘﺨﺪم ﻓﻰ إﺳﺘﺨﺮاج ﺑﯿﺎﻧﺎت ﻣﻦ داﺧﻞ اﻟﺠﺪول ﺣﺴﺐ اﻟﻤﻄﻠﻮب‬


Syntax :‫ﺗﻜﺘﺐ اﻟﺠﻤﻠﮫ ﻛﺎﻟﺘﺎﻟﻰ‬
SELECT column_name(s)
FROM table_name

‫ ﻏﯿﺮ ﺣﺴﺎﺳﻪ ﻟﺤﺎﻟﻪ اﻟﺤﺮوف‬SQL ‫ ﺟﻤﻞ‬: ‫ﻣﻼﺣﻈﻪ ھﺎﻣﻪ‬


SELECT = select ‫ﻻ ﻳﻮﺟﺪ ﻓﺮق‬

: ‫ﻣﺜﺎل ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬


The database table "Persons":

LastName FirstName Address City


Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

(FirstName , LastName) ‫ﻧﺮﻳﺪ أﺧﺘﯿﺎر اﻷﺳﻢ اﻷول و اﻷﺳﻢ اﻷﺧﯿﺮ‬


: ‫ﺗﻜﺘﺐ اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬

SELECT LastName,FirstName FROM Persons

: ‫وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻰ‬


Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

: ‫ﻷﺧﺘﯿﺎر ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ﺗﻜﺘﺐ ﻛﺎﻟﺘﺎﻟﻰ‬

SELECT * FROM Persons

: ‫وﺗﻜﻮن اﻟﻨﺘﯿﺠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬


Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٣ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﻣﻼﺣﻈﻪ ھﺎﻣﻪ ‪ :‬ﺑﻌﺾ ﻧﻈﻢ إداره ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﺘﻄﻠﺐ وﺟﻮد ) ; (‬
‫ﻓﻰ ﻧﮫﺎﻳﻪ ﺟﻤﻠﻪ ‪ SQL‬وھﺬا ﻻن ﺑﻌﺾ اﻟﻨﻈﻢ ﺗﺪﻋﻢ ﺗﻨﻔﯿﺬ أﻛﺜﺮ ﻣﻦ‬
‫ﺟﻤﻠﻪ ﻓﻰ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬
‫ﻣﻦ اﻟﻨﻈﻢ اﻟﺘﻰ ﻻ ﺗﺤﺘﺎج إﻟﻰ ) ; ( ‪. Ms-Access – Ms-Sql server‬‬
‫ام ﻣﻦ اﻟﻨﻈﻢ اﻟﺘﻰ ﺗﺤﺘﺎج إﻟﻰ ) ; ( ‪. Oracle‬‬

‫اﻷن ﻧﻨﺪرج ﻟﺠﻤﻠﻪ أﺧﺮى او إﺿﺎﻓﻪ ﻟﺠﻤﻠﻪ ‪SELECT‬‬


‫وھﻰ ﺟﻤﻠﻪ ‪SELECT DISTINCT‬‬

‫إﺿﺎﻓﻪ ﻛﻠﻤﻪ ‪ DISTINCT‬ﻟﻠﺠﻤﻠﻪ ﺗﻤﻜﻨﻚ ﻣﻦ اﻟﻌﺮض اﻟﻘﯿﻢ ﺑﺪون‬


‫ﺗﻜﺮار )ﻳﻌﻨﻰ ﻟﻮ اﻟﺠﺪول ﻓﯿﻪ ﺑﯿﺎن ﻣﺘﻜﺮر اﻛﺘﺮ ﻣﻦ ﻣﺮه ﺑﺘﻌﺮﺿﻪ‬
‫ﻣﺮه واﺣﺪه ﺑﺲ( ‪.‬‬

‫ﻣﺜﺎل ‪ :‬ﻋﻠﻰ أﺳﺘﺨﺪام ‪ DISTINCT‬وﻋﺪم أﺳﺘﺨﺪاﻣﮫﺎ‬


‫‪SELECT Company FROM Orders‬‬

‫‪"Orders" table‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬
‫‪Trio‬‬ ‫‪4678‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬
‫‪Sega‬‬
‫‪W3Schools‬‬
‫‪Trio‬‬
‫‪W3Schools‬‬

‫ھﻨﺎ واﺿﺢ اﻟﻔﺮق ﻋﻨﺪ أﺳﺘﺨﺪام ‪DISTINCT‬‬


‫‪SELECT DISTINCT Company FROM Orders‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬
‫‪Sega‬‬
‫‪W3Schools‬‬
‫‪Trio‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٤‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫اﻻن ﻧﻨﺘﻘﻞ ﻟﺠﺰء اﺧﺮ اﻻ وھﻮ اﺳﺘﺨﺪام اﻟﺸﺮط‬
WHERE ‫اﺳﺘﺨﺪام ﻋﺒﺎره‬

‫ وﺗﺤﺘﻮى ﻋﻠﻰ اﻟﺸﺮط اﻟﻤﻄﻠﻮب‬Select ‫ﺗﺄﺗﻰ ﺑﻌﺪ ﺟﻤﻠﻪ‬


: ‫وﻳﻜﻮن ﺑﻨﺎﺋﮫﺎ ﺑﮫﺬا اﻟﺸﻜﻞ‬
Syntax
SELECT column FROM table
WHERE column operator value

: ‫ ﻳﻤﻜﻨﻨﺎ أﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻼت اﻷﺗﯿﻪ‬Where ‫ﻣﻊ ﺟﻤﻠﻪ‬


‫اﻟﻮﺻﻒ‬ ‫اﻟﻤﻌﺎﻣﻞ‬
‫ﻳﺴﺎوى‬ =
‫ﻻ ﻳﺴﺎوى‬ <>
‫أﻛﺒﺮ ﻣﻦ‬ >
‫أﺻﻐﺮ ﻣﻦ‬ <
‫أﻛﺒﺮ ﻣﻦ او ﻳﺴﺎوى‬ >=
‫اﺻﻐﺮ ﻣﻦ او ﻳﺴﺎوى‬ <=
‫ﻳﻜﻮن اﻟﺸﺮط ﺑﯿﻦ ﻗﯿﻤﺘﯿﻦ‬ Between
‫ﻟﻠﺒﺤﺚ ﻋﻦ ﻛﻠﻤﺎت ﻣﺘﺸﺎﺑﮫﻪ‬ LIKE

<>‫ اﻟﻤﻌﺎﻣﻞ‬SQL ‫ ﻓﻰ ﺑﻌﺾ اﻷﺻﺪارات ﻣﻦ‬: ‫ﻣﻼﺣﻈﻪ ھﺎﻣﻪ‬


!= ‫ﻳﻜﺘﺐ ھﻜﺬا‬
Where ‫ﻣﺜﺎل ﻋﻠﻰ أﺳﺘﺨﺪام ﻋﺒﺎره‬
SELECT * FROM Persons
WHERE City='Sandnes'

"Persons" table

LastName FirstName Address City Year


Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960

Result ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City Year


Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٥ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﻣﻼﺣﻈﻪ ھﺎﻣﻪ ‪ :‬ﻋﻠﻰ أﺳﺘﺨﺪام ﻋﻼﻣﻪ اﻟﺘﻨﺼﯿﺺ ﻣﻊ اﻟﺠﻤﻠﻪ ) ' (‬
‫ﻳﺠﺐ أﺳﺘﺨﺪام ﻋﻼﻣﻪ ﺗﻨﺼﯿﺺ ﻣﻔﺮده ﻣﻊ اﻟﻘﯿﻢ اﻟﻨﺼﯿﻪ ﻣﺜﻞ‬
‫اﻷﺳﻤﺎء اﻣﺎ ﺑﺎﻟﻨﺴﺒﻪ ﻟﻠﺒﯿﺎﻧﺎت اﻟﺮﻗﻤﯿﻪ ﺗﻜﺘﺒﻪ ﻣﻦ دون ﻋﻼﻣﺎت ‪.‬‬
‫ﻣﺜﺎل ﻋﻠﻰ ذﻟﻚ ‪:‬‬
‫ﻟﻠﺒﯿﺎﻧﺎت اﻟﻨﺼﯿﻪ ‪For text values:‬‬

‫ﻃﺮﯾﻘﻪ ﺻﺤﯿﺤﻪ ‪This is correct:‬‬


‫'‪SELECT * FROM Persons WHERE FirstName='Tove‬‬
‫ﻃﺮﯾﻘﻪ ﺧﺎﻃﺌﻪ ‪This is wrong:‬‬
‫‪SELECT * FROM Persons WHERE FirstName=Tove‬‬

‫ﻟﻠﺒﯿﺎﻧﺎت اﻟﺮﻗﻤﯿﻪ ‪For numeric values:‬‬

‫ﻃﺮﯾﻘﻪ ﺻﺤﯿﺤﻪ ‪This is correct:‬‬


‫‪SELECT * FROM Persons WHERE Year>1965‬‬
‫ﻃﺮﯾﻘﻪ ﺧﺎﻃﺌﻪ ‪This is wrong:‬‬
‫'‪SELECT * FROM Persons WHERE Year>'1965‬‬

‫اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ ‪ Like‬ﻓﻰ اﻟﺸﺮط‬


‫ﺗﺴﺘﺨﺪم ﻓﻰ ﺗﺤﺪﻳﺪ اﻟﺒﺤﺚ ﺑﻜﻠﻤﻪ ﻣﻌﯿﻨﻪ ﻣﺜﺎل اﻟﺒﺤﺚ ﻋﻦ ﻛﻞ‬
‫اﻷﺳﻤﺎء اﻟﻤﻮﺟﻮد ﺑﮫﺎ ﺣﺮف او ﻛﻠﻤﻪ ﻣﻌﯿﻨﻪ ‪.‬‬
‫ﺑﻨﺎﺋﮫﺎ ﺑﮫﺬا اﻟﺸﻜﻞ ‪Syntax‬‬
‫‪SELECT column FROM table‬‬
‫‪WHERE column LIKE pattern‬‬

‫ﺗﺴﺘﺨﺪم ﻋﻼﻣﻪ ) ‪ ( %‬ﻟﺘﺤﺪﻳﺪ ﻋﺪد اﻟﺤﺮوف ﻗﺒﻞ و ﺑﻌﺪ‬


‫اﻟﻜﻠﻤﻪ او اﻟﺤﺮف اﻟﺬى ﻧﺒﺤﺚ ﺑﻪ ﻣﺜﺎل ‪:‬‬
‫ﻓﻰ ھﺬه اﻟﺤﺎﻟﻪ ﺳﻮف ﺗﻈﮫﺮ اﺳﻤﺎء اﻷﺷﺨﺎص اﻟﺘﻰ ﺗﺒﺪا ﺑﺤﺮف ‪ A‬ﺛﻢ ﻳﺄﺗﻰ ﺑﻌﺪھﺎ اى ﻋﺪد ﻣﻦ اﻟﺤﺮوف‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE FirstName LIKE 'a%‬‬

‫ﻓﻰ ھﺬه اﻟﺤﺎﻟﻪ ﺳﻮف ﺗﻈﮫﺮ اﺳﻤﺎء اﻷﺷﺨﺎص اﻟﺘﻰ ﺗﻨﺘﮫﻰ ﺑﺤﺮف ‪ A‬وﻳﻜﻮن ﻗﺒﻠﮫﺎ اى ﻋﺪد ﻣﻦ اﻟﺤﺮوف‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE FirstName LIKE '%a‬‬

‫ﻓﻰ ھﺬه اﻟﺤﺎﻟﻪ ﺳﻮف ﺗﻈﮫﺮ اﺳﻤﺎء اﻷﺷﺨﺎص اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﺣﺮف ‪ A‬ﻓﻰ أى ﻣﻮﺿﻮع ﻓﻰ اﻷﺳﻢ‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE FirstName LIKE '%la%‬‬

‫وﺳﻮف ﻧﻨﺪرج إﻟﯿﻪ ﻓﯿﻤﺎ ﺑﻌﺪ‪.‬‬ ‫‪Between‬‬ ‫ﺑﻘﻰ ﻟﻨﺎ اﻟﺠﺰء اﻟﺨﺎص ﺑـ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٦‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫اﻻن ﻧﻨﺘﻘﻞ ﻟﺠﺰء ﺟﺪﻳﺪ اﻻ وھﻮ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت‬
‫ﻳﻮﺟﺪ ﻟﺪﻳﻨﺎ ﺛﻼﺛﻪ ﺗﻌﺎﻣﻼت ﻣﻊ اﻟﺒﯿﺎﻧﺎت‬
UPDATE : ‫ﺗﻌﺪﻳﻞ‬-٢ INSERT INTO : ‫ إﺿﺎﻓﻪ‬-١
DELETE : ‫ ﺣﺬف‬-٣
INSERT INTO : ‫اوﻻ إﺻﺎﻓﻪ ﺻﻒ ﻟﻠﺠﺪول‬
: ‫ﻳﻜﻮن ﺑﻨﺎﺋﮫﺎ ﻛﺎﻟﺘﺎﻟﻰ‬
Syntax
INSERT INTO table_name
VALUES (value1, value2,....)

‫وﻳﻤﻜﻨﻚ اﻳﻀﺎ ﺗﺤﺪﻳﺪ اﻟﺤﻘﻮل اﻟﻤﻄﻠﻮب إﺿﺎﻓﺘﮫﺎ ﻓﻘﻂ وﺗﻜﻮن‬


: ‫ﻛﺎﻟﺘﺎﻟﻰ‬
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)

: ‫ﻣﺜﺎل إﺿﺎﻓﻪ ﺻﻒ ﺟﺪﻳﺪ ﻟﻠﺠﺪول اﻟﺘﺎﻟﻰ‬


This "Persons" table:

LastName FirstName Address City


Pettersen Kari Storgt 20 Stavanger

INSERT INTO Persons


VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

: ‫اﻟﻨﺘﯿﺠﻪ ﺗﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ‬


LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes

: ‫ﻹﺿﺎﻓﻪ ﺑﯿﺎﻧﺎت ﻓﻰ أﻋﻤﺪه )ﺣﻘﻮل( ﻣﺤﺪده ﻓﻘﻂ ﺗﻜﺘﺐ ﻛﺎﻟﺘﺎﻟﻰ‬


INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')

: ‫ﺗﻜﻮن اﻟﻨﺘﯿﺠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬


LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes
Rasmussen Storgt 67

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٧ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
UPDATE : ‫ﺛﺎﻧﯿﺎ اﻟﺘﻌﺪﻳﻞ ﻓﻰ اﻟﺠﺪول‬

: ‫ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬


Syntax
UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value

: ‫ﻣﺜﺎل ﻋﻠﻰ اﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ اﻟﺠﺪول اﻟﺤﺎﻟﻰ‬


Person:

LastName FirstName Address City


Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67

: ‫ﻹﺿﺎﻓﻪ اﻷﺳﻢ اﻷول ﻓﻰ اﻟﺼﻒ اﻟﺜﺎﻧﻰ‬


UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67

: ‫ﻹﺿﺎﻓﻪ أﺳﻢ اﻟﻤﺪﻳﻨﻪ وﺗﻐﯿﺮ اﻟﻌﻨﻮان‬

‫ﺗﻌﺪﻳﻞ أﻛﺜﺮ ﻣﻦ ﻋﻤﻮد ﻓﻰ ﻧﻔﺲ اﻟﻮﻗﺖ‬


UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٨ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
DELETE : ‫ﺛﺎﻟﺜﺎ اﻟﺤﺬف ﻣﻦ اﻟﺠﺪول‬

: ‫ﺗﺴﺘﺨﺪم ﻓﻰ ﺣﺬف اﻟﺼﻔﻮف ﻣﻦ اﻟﺠﺪول وﺑﻨﺎﺋﮫﺎ ﻛﺎﻟﺘﺎﻟﻰ‬


Syntax
DELETE FROM table_name
WHERE column_name = some_value

: ‫ﻣﺜﺎل ﻋﻠﻰ ﺣﺬف ﺻﻒ ﻣﻦ اﻟﺠﺪول‬


Person:

LastName FirstName Address City


Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

‫ﻟﺤﺬف اﻟﺼﻒ‬
DELETE FROM Person WHERE LastName = 'Rasmussen'

Result :‫اﻟﻨﺘﯿﺤﻪ‬

LastName FirstName Address City


Nilsen Fred Kirkegt 56 Stavanger

‫ﻟﺤﺬف ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ) اﻟﺼﻔﻮف ( ﻣﻦ اﻟﺠﺪول‬

: ‫ﺗﺴﺘﺨﺪم اﻟﺠﻤﻠﻪ اﻟﺘﺎﻟﯿﻪ‬


DELETE FROM table_name
or
DELETE * FROM table_name

‫ﺗﻢ ﺑﺤﻤﺪ اﷲ ﺗﻌﺎﻟﻰ اﻟﺠﺰء اﻷول ﻣﻦ اﻟﺪرس واﻟﺨﺎص‬


SQL Data Manipulation Language (DML) ‫ﺑـ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٩ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﻓﻰ ھﺬه اﻟﻤﺮﺣﻠﻪ ﻣﻦ اﻟﺸﺮح ﺳﻮف ﻧﺒﺪأ ﻓﻰ اﻟﺘﻌﺎﻣﻞ‬
‫ﺑﻤﺮوﻧﻪ أﻛﺜﺮ ﻣﻊ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓﺎت ﻟﻤﺎ ﺗﻢ‬
‫ﺷﺮﺣﻪ ﻓﻰ اﻟﺠﺰء اﻷول ﻣﻦ اﻟﺪرس ﻋﻦ ﻃﺮﻳﻖ ﺟﻤﻞ ‪SQL‬‬

‫ﻋﺒﺎره ‪Order By :‬‬


‫ﺗﺴﺘﺨﺪم ﻟﺘﺮﺗﯿﺐ اﻟﻨﺎﺗﺞ ﻣﻦ اﻷﺳﺘﻌﻼم ﺣﺴﺐ ﺣﻘﻞ ﻣﺤﺪد‬
‫ﻣﺜﺎل ﻋﻠﻰ اﻟﺘﺮﻳﺐ ‪:‬‬
‫‪Orders:‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪ABC Shop‬‬ ‫‪5678‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬

‫ﺳﻨﻘﻮم ﺑﺘﻨﻔﯿﺬ ﺟﻤﻠﻪ اﻷﺳﺘﻌﻼم اﻟﺘﺎﻟﯿﻪ ‪:‬‬


‫‪SELECT Company, OrderNumber FROM Orders‬‬
‫‪ORDER BY Company‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪ABC Shop‬‬ ‫‪5678‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬

‫ﻧﻼﺣﻆ ان اﻟﺒﯿﺎﻧﺎت ﻇﮫﺮت ﻓﻰ ﺗﺮﺗﯿﺐ ﺣﺴﺐ ﺣﻘﻞ‪Company‬‬

‫إذا اردﻧﺎ اﻟﺘﺮﺗﯿﺐ ﺑﺄﻛﺜﺮ ﻣﻦ ﺣﻘﻞ ﺗﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬


‫‪SELECT Company, OrderNumber FROM Orders‬‬
‫‪ORDER BY Company, OrderNumber‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪ABC Shop‬‬ ‫‪5678‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪١٠‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫ﻣﺎذا ﻟﻮ اردﻧﺎ ﻋﻜﺲ اﻟﺘﺮﺗﯿﺐ ﻛﯿﻒ ﻳﺘﻢ ذﻟﻚ‬

‫ﻣﺜﺎل ‪:‬‬
‫‪SELECT Company, OrderNumber FROM Orders‬‬
‫‪ORDER BY Company DESC‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪ABC Shop‬‬ ‫‪5678‬‬

‫ﻓﻰ ﺣﺎﻟﻪ اﻧﻨﺎ ﻧﺮﻳﺪ أﺳﺘﺨﺪام اﻟﻄﺮﻳﻘﺘﯿﻦ ﻛﯿﻒ ﻳﺘﻢ ذﻟﻚ‬

‫ﻣﺜﺎل ‪:‬‬
‫ﻳﻤﻜﻦ ﻋﻤﻞ ذﻟﻚ ﺑﻄﺮﻳﻘﺘﯿﻦ‬

‫اﻟﻄﺮﻳﻘﻪ اﻷوﻟﻰ ‪:‬‬


‫‪SELECT Company, OrderNumber FROM Orders‬‬
‫‪ORDER BY Company DESC, OrderNumber ASC‬‬

‫اﻣﺎ اﻟﻄﺮﻳﻘﻪ اﻟﺜﺎﻧﯿﻪ ھﻰ ﻛﺘﺎﺑﻪ اﻟﺤﻘﻮل اﻟﻤﻄﻠﻮب ﺗﺮﺗﯿﺒﮫﺎ‬


‫ﺗﺼﺎﻋﺪﻳﺎ اوﻻ ﺛﻢ اﻟﺤﻘﻮل اﻟﻤﻄﻠﻮب ﺗﺮﺗﯿﺒﮫﺎ ﺗﻨﺎزﻟﯿﺎ‬

‫ﻣﺜﺎل ‪:‬‬
‫‪SELECT Company, OrderNumber FROM Orders‬‬
‫‪ORDER BY OrderNumber , Company DESC‬‬

‫وﻓﻰ اى ﻣﻦ اﻟﻄﺮﻳﻘﺘﯿﻦ ﺗﻜﻮن اﻟﻨﺘﯿﺠﻪ واﺣﺪه‬


‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪Company‬‬ ‫‪OrderNumber‬‬
‫‪W3Schools‬‬ ‫‪2312‬‬
‫‪W3Schools‬‬ ‫‪6798‬‬
‫‪Sega‬‬ ‫‪3412‬‬
‫‪ABC Shop‬‬ ‫‪5678‬‬

‫اﻷن ﻧﻨﺘﻘﻞ ﻟﻤﻌﺎﻣﻼت ﺟﺪﻳﺪه‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪١١‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
And – Or ‫اﻟﻤﻌﺎﻣﻠﯿﻦ‬
‫ﻳﺴﺘﺨﺪم ھﺬﻳﻦ اﻟﻤﻌﺎﻣﻠﯿﻦ ﻓﻰ رﺑﻂ ﺷﺮﻃﯿﻦ او أﻛﺜﺮ‬

‫ ﻳﻘﻮم ﺑﻌﺮض اﻟﻨﺘﺎﺋﺞ ﻓﻰ ﺣﺎﻟﻪ ﺗﺤﻘﻖ‬AND ‫ اﻟﻤﻌﺎﻣﻞ‬-


‫ﺟﻤﯿﻊ اﻟﺸﺮوط‬
‫ ﻳﻘﻮم ﺑﻌﺮض اﻟﻨﺘﺎﺋﺞ ﻓﻰ ﺣﺎﻟﻪ ﺗﺤﻘﻖ اى‬OR ‫ اﻟﻤﻌﺎﻣﻞ‬-
‫ﺷﺮط ﻣﻦ اﻟﺸﺮوط‬
‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل‬
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

: AND ‫أﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ‬


SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Svendson Tove Borgvn 23 Sandnes

: OR ‫أﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ‬
SELECT * FROM Persons
WHERE firstname='Tove'
OR lastname='Svendson'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

: ‫أﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻠﯿﻦ ﻣﻌﺎ‬


SELECT * FROM Persons WHERE
(FirstName='Tove' OR FirstName='Stephen')
AND LastName='Svendson'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٢ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
IN ‫اﻟﻤﻌﺎﻣﻞ‬

‫ﻟﻪ ﻋﺪه أﺳﺘﺨﺪاﻣﺎت ﻣﻨﮫﺎ اﻧﻪ ﻳﻤﻜﻨﻚ ﺗﺤﺪﻳﺪ اﻟﻘﯿﻤﻪ اﻟﻤﺮاد‬


‫ﻋﺮﺿﮫﺎ إذا ﻛﻨﺖ ﻣﺘﺄﻛﺪ ﻣﻦ وﺟﻮدھﺎ ﻓﻰ أﺣﺪ اﻟﺤﻘﻮل‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT column_name FROM table_name
WHERE column_name IN (value1,value2,..)

‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل‬


LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

SELECT * FROM Persons


WHERE LastName IN ('Hansen','Pettersen')

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Hansen Ola Timoteivn 10 Sandnes
Pettersen Kari Storgt 20 Stavanger

‫وﻳﻤﻜﻦ أﻳﻀﺎ أﺳﺘﺨﺪاﻣﻪ ﻓﻰ رﺑﻂ أﻛﺜﺮ ﻣﻦ أﺳﺘﻌﻼم ﻣﻌﺎ‬


SELECT * FROM table1_name
WHERE FirstName in (SELECT * FROM table2_name)

‫ﻓﻰ ھﺬا اﻟﻤﺜﺎل ﻗﻤﻨﺎ ﺑﻌﺮض ﺟﻤﯿﻊ اﻟﻘﯿﻢ ﻣﻦ اﻟﺠﺪول اﻷول‬


‫ﻣﻮﺟﻮد‬FirstName ‫ ﺑﺸﺮط ان ﻳﻜﻮن اﻟﺤﻘﻞ‬Table1_name
table2_name ‫ﻓﻰ اﻟﺠﺪول اﻟﺜﺎﻧﻰ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٣ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
BETWEEN ... AND ‫اﻟﻤﻌﺎﻣﻞ‬
‫ﻳﺴﺘﺨﺪم ﻟﻌﺮض ﻣﺠﻤﻮﻋﻪ ﺑﯿﺎﻧﺎت ﺑﯿﻦ ﻗﯿﻤﺘﯿﻦ ﻧﺼﻮص أو‬
‫أرﻗﺎم أو ﺗﺎرﻳﺦ‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2

‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل‬


LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

‫ﻋﺮض اﻟﺒﯿﺎﻧﺎت اﻟﻤﻮﺟﻮده ﺑﯿﻦ اﻟﻘﯿﻤﺘﯿﻦ‬


SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes

‫ﻋﺮض اﻟﺒﯿﺎﻧﺎت اﻟﻐﯿﺮ ﻣﻮﺟﻮده ﺑﯿﻦ اﻟﻘﯿﻤﺘﯿﻦ‬


SELECT * FROM Persons WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

‫ﺗﺴﺘﺨﺪم ﻧﻔﺲ اﻟﻄﺮﻳﻘﻪ ﻣﻊ اﻷرﻗﺎم واﻟﺘﻮارﻳﺦ ﻣﻊ ﻣﺮاﻋﺎه‬


. (#) ‫ان اﻟﺘﻮارﻳﺦ ﻻ ﺗﻜﻮن ﺑﯿﻦ ﻋﻼﻣﺘﻰ ) ' ( ﺑﻞ ﻳﺴﺘﺨﺪم‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٤ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
Alias ‫اﻷﺳﻢ اﻟﻤﺴﺘﻌﺎر‬

‫ﻳﺴﺘﺨﺪم ﻓﻰ ﺗﻐﯿﯿﺮ اﺳﻢ اﻟﺠﺪول او اﻟﺤﻘﻞ ﻋﻨﺪ ﻋﺮﺿﻪ‬


AS ‫ﻧﺴﺘﺨﺪﻣﻪ ﻋﻦ ﻃﺮﻳﻖ ﻛﻠﻤﻪ‬

: ‫اﻟﺒﻨﺎء ﻓﻰ ﺣﺎﻟﻪ اﻟﺠﺪول‬


SELECT column FROM table as Table Alias

: ‫اﻟﺒﻨﺎء ﻓﻰ ﺣﺎﻟﻪ اﻟﺤﻘﻞ‬


SELECT column AS column_alias FROM table

‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل‬


This table (Persons):

LastName FirstName Address City


Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

SELECT LastName AS Family, FirstName AS Name


FROM Persons

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

(‫ﻧﻼﺣﻆ أﺳﻤﺎء اﻟﺤﻘﻮل ) اﻷﻋﻤﺪه‬

Family Name
Hansen Ola
Svendson Tove
Pettersen Kari

SELECT LastName, FirstName


FROM Persons AS Employees

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Table Employees: ‫ﻧﻼﺣﻆ ان اﺳﻢ اﻟﺠﺪول‬

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٥ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫اﻟﺮﺑﻂ ‪JOIN‬‬

‫ﻣﻮﺿﻮع ﻣﻦ اھﻢ ﻣﻮاﺿﯿﻊ ‪ SQL‬ھﻮ اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺠﺪاول اﻟﺬى‬


‫ﻳﺴﮫﻞ ﻛﺜﯿﺮ ﻓﻰ ﻋﺮض اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﺠﺪاول اﻟﺘﻰ ﺗﺤﺘﻮى‬
‫ﻋﻠﻰ ﻋﻼﻗﻪ ﻣﺜﻞ اﻟﻤﻮﻇﻒ و اﻟﻘﺴﻢ ‪.‬‬

‫ﻓﻰ ﺑﻌﺾ اﻷﺣﯿﺎن ﻧﺤﺘﺎج إﻟﻰ ﻋﺮض ﺑﯿﺎﻧﺎت ﻣﻦ ﺟﺪوﻟﯿﻦ او‬


‫أﻛﺜﺮ ﻟﺠﻌﻞ اﻟﻨﺘﯿﺠﻪ ﻛﺎﻣﻠﻪ ﻳﺠﺐ اﻧﺸﺎء ﻋﻼﻗﻪ ‪.‬‬

‫اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺠﺪاو ﻳﺘﻢ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﻔﺘﺎح اﻷﺳﺎﺳﻰ‬


‫)‪ (Primary Key‬اﻟﺤﻘﻞ اﻟﺬى ﻳﻜﻮن ﻣﻔﺘﺎح اﺳﺎﺳﻰ ﻻ‬
‫ﻳﻤﻜﻦ ﺗﻜﺮار اﻟﺒﯿﺎﻧﺎت ﺑﺪاﺧﻠﻪ ‪.‬‬

‫ﻓﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ ﺣﻘﻞ )‪ (Employee_ID‬ھﻮ ﺣﻘﻞ ﻣﻔﺘﺎح‬


‫اﺳﺎﺳﻰ اﻟﺨﺎص ﺑﺠﺪول اﻟﻤﻮﻇﻔﯿﻦ ‪.‬‬

‫اﻣﺎ ﻓﻰ ﺟﺪول اﻟﺜﺎﻧﻰ اﻟﺤﻘﻞ )‪ (Order_ID‬ھﻮ ﺣﻘﻞ اﻟﻤﻔﺘﺎح‬


‫اﻻﺳﺎﺳﻰ ﻟﻠﺠﺪول وﻓﯿﻪ اﻳﻀﺎ ﻣﻔﺘﺎح ﺧﺎرﺟﻰ وھﻮ ﺣﻘﻞ‬
‫)‪.(Employee_ID‬‬
‫اﻟﺠﺪول اﻷول ‪Employees:‬‬

‫‪Employee_ID‬‬ ‫‪Name‬‬
‫‪01‬‬ ‫‪Hansen, Ola‬‬
‫‪02‬‬ ‫‪Svendson, Tove‬‬
‫‪03‬‬ ‫‪Svendson, Stephen‬‬
‫‪04‬‬ ‫‪Pettersen, Kari‬‬

‫اﻟﺠﺪول اﻟﺜﺎﻧﻰ ‪Orders:‬‬

‫‪Prod_ID‬‬ ‫‪Product‬‬ ‫‪Employee_ID‬‬


‫‪234‬‬ ‫‪Printer‬‬ ‫‪01‬‬
‫‪657‬‬ ‫‪Table‬‬ ‫‪03‬‬
‫‪865‬‬ ‫‪Chair‬‬ ‫‪03‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪١٦‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫ ﻧﺮﻳﺪ ان ﻧﻌﺮف ﻣﻦ ﻃﻠﺐ ﻣﻨﺘﺞ وﻣﺎ ھﻮ اﻟﻤﻨﺘﺞ‬: ‫ﻣﺜﺎل‬
SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.Employee_ID=Orders.Employee_ID

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

(Printer) ‫ ﻧﺮﻳﺪ ان ﻧﻌﺮف ﻣﻦ ﻃﻠﺐ اﻟﻤﻨﺘﺞ‬: ‫ﻣﺜﺎل‬


SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.Employee_ID=Orders.Employee_ID
AND Orders.Product='Printer'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name
Hansen, Ola

: INNER JOIN ‫ﻣﺜﺎل ﻋﻠﻰ اﺳﺘﺨﺪام‬


: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT field1, field2, field3
FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

: ‫ﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﻪ ﻋﻠﻰ اﻟﻤﺜﺎل‬


SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

‫ ﺑﻌﺮض ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت‬INNER JOIN ‫ﺗﻘﻮم اﻟﺠﻤﻠﻪ‬


‫اﻟﻤﺸﺘﺮﻛﻪ ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٧ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
: LEFT JOIN ‫ﻣﺜﺎل ﻋﻠﻰ أﺳﺘﺨﺪام‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT field1, field2, field3
FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

: ‫ﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﻪ ﻋﻠﻰ اﻟﻤﺜﺎل‬


SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name Product
Hansen, Ola Printer
Svendson, Tove
Svendson, Stephen Table
Svendson, Stephen Chair
Pettersen, Kari

‫ ﺑﻌﺮض ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﺠﺪول‬LEFT JOIN ‫ﺗﻘﻮم اﻟﺠﻤﻠﻪ‬


‫ ﺣﺘﻰ ﻟﻮ ﻟﻢ ﺗﻮﺟﺪ ﻓﻰ اﻟﺠﺪول اﻟﺜﺎﻧﻰ‬Employee ‫اﻷول‬
: RIGHT JOIN ‫ﻣﺜﺎل ﻋﻠﻰ أﺳﺘﺨﺪام‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT field1, field2, field3
FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

: ‫ﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﻪ ﻋﻠﻰ اﻟﻤﺜﺎل‬


SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

‫ ﺑﻌﺮض ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ﻣﻦ‬RIGHT JOIN ‫ﺗﻘﻮم اﻟﺠﻤﻠﻪ‬


‫ ﺣﺘﻰ ﻟﻮ ﻟﻢ ﺗﻮﺟﺪ ﻓﻰ اﻟﺠﺪول اﻷول‬Orders ‫اﻟﺠﺪول اﻟﺜﺎﻧﻰ‬
: INNER JOIN ‫ﻣﺜﺎل ﻋﻠﻰ أﺳﺘﺨﺪام ﺟﻤﻠﻪ‬
‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٨ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
(Printer) ‫ﻧﺮﻳﺪ ﻋﺮض اﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ اﻟﺬن ﻃﻠﺒﻮا اﻟﻤﻨﺘﺞ‬
SELECT Employees.Name
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID
WHERE Orders.Product = 'Printer'

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

Name
Hansen, Ola

. JOIN ‫وﺑﮫﺬا ﻧﻜﻮن اﻧﺘﮫﯿﻨﺎ ﻣﻦ ﺷﺮح ﺟﻤﻠﻪ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ١٩ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
UNION and UNION ALL ‫اﻟﺪﻣﺞ‬

‫ﺗﺴﺘﺨﺪم ﻟﺪﻣﺞ ﺣﻘﻠﯿﻦ ﻣﻦ ﺟﺪوﻟﯿﻦ ﻣﺨﺘﻠﻔﯿﻦ وﻟﻜﻦ ﻳﺠﺐ‬


‫ان ﻳﻜﻮن ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﻰ اﻟﺤﻘﻠﯿﻦ واﺣﺪ اى ﻳﻜﻮن ﻧﺼﻮص او‬
‫………إﻟﺦ‬. ‫ارﻗﺎم‬

: ‫اﻟﺒﻨﺎء ﻟﻠﺠﻤﻠﻪ ﻳﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ‬


SQL Statement 1
UNION
SQL Statement 2

: ‫ﻣﺜﺎل‬
Employees_Norway:

E_ID E_Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari

Employees_USA:

E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen

: ‫ ﻓﻰ ﻛﻞ ﻣﻦ اﻟﺠﺪوﻟﯿﻦ‬E_NAME ‫ﻧﺮﻳﺪ دﻣﺞ اﻟﺤﻘﻞ‬


SELECT E_Name FROM Employees_Norway
UNION
SELECT E_Name FROM Employees_USA

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Scott, Stephen

. ‫ﻧﻼﺣﻆ ان اﻟﻨﺘﯿﺠﻪ ﻇﮫﺮت ﺑﺪون ﺗﻜﺮار ﻟﻠﺒﯿﺎﻧﺎت‬


: UNION ALL ‫أﺳﺘﺨﺪام‬
‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٢٠ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﻣﺜﻞ أﺳﺘﺨﺪام ‪ UNION‬اﻟﻔﺮق اﻧﻪ ﻳﻘﻮم ﺑﻌﺮض ﺟﻤﯿﻊ‬
‫اﻟﺒﯿﺎﻧﺎت ﺣﺘﻰ ﻟﻮ ﻳﻮﺟﺪ ﺗﻜﺮار ‪.‬‬

‫اﻟﺒﻨﺎء ﻟﻠﺠﻤﻠﻪ ﻳﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬


‫‪SQL Statement 1‬‬
‫‪UNION ALL‬‬
‫‪SQL Statement 2‬‬

‫ﻣﺜﺎل ‪ :‬ﻧﺮﻳﺪ دﻣﺞ اﻟﺤﻘﻞ ‪ E_NAME‬ﻓﻰ اﻟﺠﺪوﻟﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ‬


‫‪SELECT E_Name FROM Employees_Norway‬‬
‫‪UNION ALL‬‬
‫‪SELECT E_Name FROM Employees_USA‬‬

‫اﻟﻨﺘﯿﺠﻪ ‪Result:‬‬

‫‪E_Name‬‬
‫‪Hansen, Ola‬‬
‫‪Svendson, Tove‬‬
‫‪Svendson, Stephen‬‬
‫‪Pettersen, Kari‬‬
‫‪Turner, Sally‬‬
‫‪Kent, Clark‬‬
‫‪Svendson, Stephen‬‬
‫‪Scott, Stephen‬‬

‫ﻧﻼﺣﻆ ﻇﮫﻮر ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ﻣﻊ ﺗﻜﺮار اﺣﺪ اﻷﺳﻤﺎء‬


‫اﻟﻤﺸﺘﺮك ﻓﻰ اﻟﺠﺪوﻟﯿﻦ ‪.‬‬

‫)اﻷن ﻧﻨﺘﻘﻞ إﻟﻰ درس ﻣﮫﻢ ﺟﺪا ﻓﻰ ﻟﻐﻪ ‪ SQL‬اﻻ وھﻮ‬


‫اﻟﺪوال ‪(Functions‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢١‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
SQL Functions ‫اﻟﺪوال‬

‫ ﺑﮫﺎ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺪوال اﻟﻌﺪدﻳﻪ واﻟﺤﺴﺎﺑﯿﻪ‬SQL ‫ﻟﻐﻪ‬

: ‫اﻟﺒﻨﺎء اﻷﺳﺎﺳﻰ ﻷى داﻟﻪ‬


SELECT function(column) FROM table

: ‫اﻟﺪوال‬
‫اﻟﻮﺻﻒ‬ ‫اﻟﺪاﻟﻪ‬
‫ﻹﻳﺠﺎد اﻟﻮﺳﻂ اﻟﺤﺴﺎﺑﻰ ﻟﻠﺤﻘﻞ اﻟﻤﺤﺪد‬ AVG(column)
‫ﻣﻌﺮﻓﻪ ﻋﺪد اﻟﺼﻔﻮف )اﻟﺴﺠﻼت( ﻓﻰ اﻟﺤﻘﻞ ﺑﺪون اﻟﺴﺠﻼت اﻟﻔﺎرﻏﻪ‬ COUNT(column)
‫ﻣﻌﺮﻓﻪ ﻋﺪد اﻟﺼﻔﻮف ﻓﻰ اﻟﺠﺪول‬ COUNT(*)
‫ﻣﻌﺮﻓﻪ ﻗﯿﻤﻪ اول ﺳﺠﻞ ﻓﻰ اﻟﺤﻘﻞ‬ First(column)
‫ﻣﻌﺮﻓﻪ ﻗﯿﻤﻪ أﺧﺮ ﺳﺠﻞ ﻓﻰ اﻟﺤﻘﻞ‬ last(column)
‫ﻣﻌﺮﻓﻪ أﻛﺒﺮ ﻗﯿﻤﻪ ﺳﺠﻞ ﻓﻰ اﻟﺤﻘﻞ‬ Max(column)
‫ﻣﻌﺮﻓﻪ أﺿﻐﺮ ﻗﯿﻤﻪ ﺳﺤﻞ ﻓﻰ اﻟﺤﻘﻞ‬ Min(column)
‫ﻣﻌﺮﻓﻪ إﺟﻤﺎﻟﻰ اﻟﻘﯿﻢ ﻓﻰ اﻟﺤﻘﻞ‬ SUM(column)
SQL SERVER ‫ﻋﺪد اﻟﺴﺠﻼت ﻓﻰ اﻟﺤﻘﻞ ﺑﺪون ﺗﻜﺮار ﺗﻌﻤﻞ ﻓﻘﻂ ﻋﻠﻰ‬ COUNT(DISTINCT column)

: ‫ﻣﺠﻤﻮﻋﻪ ﻣﻦ اﻷﻣﺜﻠﻪ‬

SELECT AVG(Column) From Table


SELECT COUNT(column) From Table
SELECT COUNT(*) From Table
SELECT First(column) From Table
SELECT last(column) From Table
SELECT Max(column) From Table
SELECT Min(column) From Table
SELECT SUM(column) From Table
SELECT COUNT(DISTINCT column) From Table

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٢٢ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
SQL GROUP BY and HAVING ‫اﻟﺘﺠﻤﯿﻊ واﻟﻔﺮز‬

‫ ﻛﺜﯿﺮا ﻣﺎ ﺗﺤﺘﺎج إﻟﻰ‬SUM ‫اﻟﺪوال اﻟﻌﺪدﻳﻪ ﻣﺜﻞ اﻟﺪاﻟﻪ‬


GROUP BY ‫اﻟﺘﺠﻤﯿﻊ‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT column,SUM(column) FROM table GROUP BY column

‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل ﻟﻠﺘﻮﺿﯿﺢ‬


Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100

:‫ﻧﻨﻔﺬ اﻟﺠﻤﻠﻪ اﻟﺘﺎﻟﯿﻪ‬


SELECT Company, SUM(Amount) FROM Sales

Returns this result: ‫اﻟﻨﺘﯿﺠﻪ‬

Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100

‫ﻧﻼﺣﻆ ان ﺟﻤﯿﻊ اﻟﺴﺠﻼت اﺧﺬت اﻟﻤﺠﻤﻮع ﻛﻠﻪ وﻟﻢ ﻧﻌﺮف‬


. ‫ﻣﺠﻤﻮع ﻛﻞ ﺳﺠﻞ‬

: GROUP BY ‫اﻷن ﻧﺠﺮب ﺟﻤﻠﻪ اﻷﺳﺘﻌﻼم ﺑﻌﺪ إﺿﺎﻓﻪ‬


SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company

Returns this result: ‫اﻟﻨﺘﯿﺠﻪ‬

Company SUM(Amount)
W3Schools 12600
IBM 4500

‫ﻧﻼﺣﻆ اﻧﻪ ﺗﻢ ﺟﻤﻊ ﻛﻞ ﺳﺠﻞ وﺣﺪه وأﺻﺒﺤﺖ اﻟﻨﺘﯿﺠﻪ اوﺿﺢ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٢٣ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ ﺗﺴﺘﺨﺪم ﻟﻔﺮز اﻟﺒﯿﺎﻧﺎت ﺣﺴﺐ ﺷﺮط ﻣﻌﯿﻦ‬HAVING ‫اﻟﺪاﻟﻪ‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬
SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition value

: ‫ﺗﻄﺒﯿﻖ ﻋﻠﻰ ﻧﻔﺲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‬


Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100

: ‫ﻧﻨﻔﺬ ﺟﻤﻠﻪ اﻷﺳﺘﻌﻼم اﻟﺘﺎﻟﯿﻪ‬


SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount)>10000

Returns this result : ‫اﻟﻨﺘﯿﺠﻪ‬

Company SUM(Amount)
W3Schools 12600

١٠٠٠٠ ‫ﻧﻼﺣﻆ اﻧﻪ ﺗﻢ ﺗﺤﻘﻖ اﻟﺸﺮط وﻋﺮض اﻟﺒﯿﺎﻧﺎت اﻛﺒﺮ ﻣﻦ‬


.‫ﻓﻘﻂ‬

‫ﺗﻢ ﺑﺤﻤﺪ اﷲ ﺗﻌﺎﻟﻰ اﻟﺠﺰء اﻟﺜﺎﻧﻰ ﻣﻦ اﻟﺪرس واﻟﺨﺎص‬


SQL FUNCTION ‫ﺑـ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٢٤ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﻓﻰ ھﺬا اﻟﺠﺰء ﻣﻦ اﻟﺪرس ﺳﻮف ﻧﻘﻮم ﺑﺸﺮح‬
‫)‪Data Definition Language (DDL‬‬

‫ھﻮ اﻟﻘﺴﻢ اﻟﻤﺴﺌﻮل ﻋﻦ ‪ :‬ﺗﻌﺮﻳﻒ اﻟﺒﯿﺎﻧﺎت‬

‫‪ : Create Database -١‬ﻷﻧﺸﺎء ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت ﺟﺪﻳﺪه‬


‫‪ : Create Table -٢‬ﻷﻧﺸﺎء ﺟﺪول داﺧﻞ ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت‬
‫‪ : ALTER TABLE -٣‬ﻟﻠﺘﻌﺪﻳﻞ ﻓﻰ اﻟﺠﺪول‬
‫‪ : DROP TABLE -٤‬ﻟﺤﺬف اﻟﺠﺪول ﻣﻦ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت‬
‫‪ : CREATE INDEX-٥‬ﻷﻧﺸﺎء ﻣﻔﺘﺎح ﻟﻠﺒﺤﺚ )اﻟﻔﮫﺎرس(‬
‫‪ : DROP INDEX -٦‬ﻟﺤﺬف ﻣﻔﺘﺎح اﻟﺒﺤﺚ‬

‫اوﻻ اﻧﺸﺎء ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت ‪: Create Database‬‬

‫ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬


‫‪CREATE DATABASE database_name‬‬

‫ﻃﺒﻌﺎ ﻧﺤﺪد اﺳﻢ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت‬

‫ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت دﻳﻪ ھﺘﻜﻮن ﻓﺎﺿﯿﻪ ﻳﻌﻨﻰ ﻣﻔﯿﺶ ﺟﻮاھﺎ اى‬


‫ﺟﺪاول ‪.‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢٥‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫ﻷﻧﺸﺎء ﺟﺪول داﺧﻞ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪:Create Table‬‬

‫ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬


‫‪CREATE TABLE table_name‬‬
‫(‬
‫‪column_name1 data_type,‬‬
‫‪column_name2 data_type,‬‬
‫‪.......‬‬
‫)‬

‫ﻣﺜﺎل ﻋﻠﻰ أﻧﺸﺎء ﺟﺪول ‪:‬‬


‫‪CREATE TABLE Person‬‬
‫(‬
‫‪LastName text(30),‬‬
‫‪FirstName text(30),‬‬
‫‪Address text(150),‬‬
‫)‪Age (Number‬‬
‫)‬

‫اﻻن ﻳﻤﻜﻨﻨﺎ اﻧﺸﺎء ﺟﺪوا وﺗﺤﺪﻳﺪ اﻟﺤﻘﻮل واﻧﻮاع وﺣﺠﻢ‬


‫اﻟﺒﯿﺎﻧﺎت ﻓﯿﮫﺎ ‪.‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢٦‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫اﻷن اﻧﺸﺎء اﻟﻔﮫﺎرس ‪: CREATE INDEX‬‬

‫اﻟﻔﮫﺮس ﻳﺼﻤﻢ ﻓﻰ اﻟﺠﺪول ﺣﺘﻰ ﻳﺠﻌﻞ ﻋﻤﻠﯿﻪ اﻷﺳﺘﻌﻼم‬


‫أﺳﺮع ﻛﻤﺎ ﻳﻤﻜﻦ اﻧﺸﺎء اﻛﺜﺮ ﻣﻦ ﻓﮫﺮس ﻧﻔﺲ اﻟﺠﺪول‬
‫اﻟﻤﺴﺘﺨﺪم ﻻ ﻳﺮى ھﺬه اﻟﻔﮫﺎرس اﻧﻤﺎ ھﻰ ﻟﺘﺴﺮع ﻋﻤﻠﯿﻪ‬
‫اﻷﺳﺘﻌﻼم ﻓﻘﻂ ‪.‬‬
‫ھﻨﺎك ﻧﻮﻋﯿﻦ ﻣﻦ اﻟﻔﮫﺎرس اﻟﻨﻮع اﻷول ﻻ ﻳﻤﻜﻦ ان ﻳﺘﻜﺮر ﺑﻪ‬
‫اﻟﺒﯿﺎﻧﺎت اﻣﺎ اﻟﻨﻮع اﻟﺜﺎﻧﻰ ﻳﻤﻜﻦ ﺗﻜﺮار اﻟﺒﯿﺎﻧﺎت ﺑﻪ ‪.‬‬

‫‪Unique Index‬‬ ‫اﻟﺒﻨﺎء ﻟﻠﻔﮫﺮس ﻣﻦ اﻟﻨﻮع اﻟﻔﺮﻳﺪ )اﻟﺬى ﻻ ﻳﺘﻜﺮر(‬


‫‪CREATE UNIQUE INDEX index_name‬‬
‫)‪ON table_name (column_name‬‬

‫‪Simple Index‬‬ ‫اﻟﺒﻨﺎء ﻟﻠﻔﮫﺮس ﻣﻦ اﻟﻨﻮع اﻟﻌﺎدى‬


‫‪CREATE INDEX index_name‬‬
‫)‪ON table_name (column_name‬‬

‫ﻣﺜﺎل ‪:‬‬
‫‪CREATE INDEX PersonIndex‬‬
‫)‪ON Person (LastName‬‬

‫ﻻﻧﺸﺎء ﻓﮫﺮس ﺑﺘﺮﺗﯿﺐ ﻋﻜﺴﻰ ‪:‬‬


‫‪CREATE INDEX PersonIndex‬‬
‫)‪ON Person (LastName DESC‬‬

‫ﻻﻧﺸﺎء ﻓﮫﺮس ﻓﻰ ﺣﻘﻠﯿﻦ ﻓﻰ ﻧﻔﺲ اﻟﺠﺪول ‪:‬‬


‫‪CREATE INDEX PersonIndex‬‬
‫)‪ON Person (LastName, FirstName‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢٧‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
‫اﻷﻣﺮ ‪Drop‬‬

‫‪Drop‬ﺗﺮﺟﻤﺘﮫﺎ اﻟﺤﺮﻓﯿﻪ إﻟﻘﺎء وﻟﻜﻨﻨﺎ ھﻨﺎ ﻧﺴﺘﺨﺪﻣﮫﺎ ﻛﺄﻣﺮ‬


‫ﺣﺬف وﻟﻜﻦ ﺣﺬف اﻳﻪ ) ﻗﺎﻋﺪه ﺑﯿﺎﻧﺎت – ﻓﮫﺮس – ﺟﺪول(‬

‫اوﻻ ﺣﺬف ﻗﺎﻋﺪ ﺑﯿﺎﻧﺎت ‪ :‬ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬


‫‪DROP DATABASE database_name‬‬

‫ﺛﺎﻧﯿﺎ ﺣﺬف ﺟﺪول ﻣﻦ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪ :‬ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ‬


‫ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬
‫‪DROP TABLE table_name‬‬

‫ﺛﺎﻟﺜﺎ ﺣﺬف ﻓﮫﺮس ‪ :‬وﻳﺨﺘﻠﻒ اﻟﺒﻨﺎء ﺣﺴﺐ ﻧﻮع ﻗﺎﻋﺪه‬


‫اﻟﺒﯿﺎﻧﺎت‬
‫ﻣﺜﺎل ‪:‬‬
‫ﻧﻮع ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪Syntax for Microsoft SQLJet (and Microsoft Access):‬‬

‫‪DROP INDEX index_name ON table_name‬‬

‫ﻧﻮع ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪Syntax for MS SQL Server:‬‬

‫‪DROP INDEX table_name.index_name‬‬

‫ﻧﻮع ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪Syntax for IBM DB2 and Oracle:‬‬

‫‪DROP INDEX index_name‬‬

‫ﻧﻮع ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪Syntax for MySQL:‬‬

‫‪ALTER TABLE table_name DROP INDEX index_name‬‬

‫أﺧﯿﺮ اﻣﺮ ﺣﺬف اﻟﺒﯿﺎﻧﺎت ﻣﻦ داﺧﻞ اﻟﺠﺪول دون ﺣﺬف‬


‫اﻟﺠﺪول ‪:‬‬
‫‪TRUNCATE TABLE table_name‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٢٨‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
ALTER TABLE ‫اﻷﻣﺮ‬

‫ﻳﺴﺘﺨﺪم ﻓﻰ اﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ اﻟﺠﺪول ﻣﻦ إﺿﺎﻓﻪ وﺣﺬف‬


. (‫أﻋﻤﺪه )ﺣﻘﻮل‬

‫ ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬: ‫ﻹﺿﺎﻓﻪ ﺣﻘﻞ‬


ALTER TABLE table_name
ADD column_name datatype

: ‫ ﻳﻜﻮن ﺑﻨﺎء اﻟﺠﻤﻠﻪ ﻛﺎﻟﺘﺎﻟﻰ‬: ‫ﻟﺤﺬف ﺣﻘﻞ‬


ALTER TABLE table_name
DROP COLUMN column_name

‫ ﻋﻠﻰ اﻟﺠﺪول اﻟﺘﺎﻟﻰ‬: ‫ﻣﺜﺎل‬


Person:

LastName FirstName Address


Pettersen Kari Storgt 20

: ‫ﻹﺿﺎﻓﻪ ﺣﻘﻞ ﺟﺪﻳﺪ‬


To add a column named "City" in the "Person" table:

ALTER TABLE Person ADD City varchar(30)

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName Address City


Pettersen Kari Storgt 20

: ‫ﻟﺤﺬف ﺣﻘﻞ ﻣﻦ اﻟﺠﺪول‬


To drop the "Address" column in the "Person" table:

ALTER TABLE Person DROP COLUMN Address

Result: ‫اﻟﻨﺘﯿﺠﻪ‬

LastName FirstName City


Pettersen Kari

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٢٩ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
SELECT INTO ‫ﺟﻤﻠﻪ‬

‫ﺗﺴﺘﺨﺪم ﻋﺎده ﻓﻰ ﺣﻔﻆ ﻧﺴﺨﻪ أﺣﺘﯿﺎﻃﯿﻪ ﻣﻦ اﻟﺠﺪول‬

: ‫ﺑﻨﺎء اﻟﺠﻤﻞ ﻛﺎﻟﺘﺎﻟﻰ‬


SELECT column_name(s) INTO newtable [IN externaldatabase]
FROM source

: ‫ﻟﻌﻤﻞ ﻧﺴﺨﻪ إﺣﺘﯿﺎﻃﯿﻪ ﻣﻦ اﻟﺠﺪول ﻓﻰ ﻧﻔﺲ اﻟﻘﺎﻋﺪه‬


SELECT * INTO Persons_backup
FROM Persons

IN ‫ ﻧﺴﺘﺨﺪم‬: ‫ﻟﻨﺴﺦ اﻟﺠﺪول ﻟﻘﺎﻋﺪه ﺑﯿﺎﻧﺎت أﺧﺮى‬


SELECT Persons.* INTO Persons IN 'Backup.mdb'
FROM Persons

: ‫ﻳﻤﻜﻦ أﻳﻀﺎ ﻧﺴﺦ ﺣﻘﻮل ﻣﺤﺪده ﻓﻘﻂ‬


SELECT LastName,FirstName INTO Persons_backup
FROM Persons

Where : ‫ﻧﻔﺲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﻣﻊ إدﺧﺎل ﺷﺮط‬


SELECT LastName,Firstname INTO Persons_backup
FROM Persons
WHERE City='Sandnes'

: ‫إذا اردﻧﺎ ﻧﺴﺦ اﻟﺠﺪول ﻟﻜﻦ ﻓﻰ وﺟﻮد ﻋﻼق ﻣﻊ ﺟﺪول أﺧﺮ‬


SELECT Employees.Name,Orders.Product
INTO Empl_Ord_backup
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٣٠ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
‫ﺟﻤﻠﻪ ‪CREATE VIEW‬‬

‫ﺗﺴﺘﺨﺪم ﻻﻧﺸﺎء ﺟﻤﻠﻪ ﺗﻌﺮض ﺑﯿﺎﻧﺎت ﺗﺤﺖ ﺷﺮط ﻣﻌﯿﻦ‬


‫ﻳﻤﻜﻦ أﺳﺘﺨﺪام اى ﻣﻦ ﺟﻤﻞ ‪ SQL‬ﺑﮫﺎ ﻣﺜﻞ ﻋﻤﻞ ﻋﻼﻗﻪ‬
‫او إﺿﺎﻓﻪ داﻟﻪ ﻣﻦ اﻟﺪوال ‪.‬‬

‫ﻳﻜﻮن ﺑﻨﺎﺋﮫﺎ اﻟﻌﺎم ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬


‫‪CREATE VIEW view_name AS‬‬
‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE condition‬‬

‫ﻣﻼﺣﻈﺎت ھﺎﻣﻪ ‪:‬‬


‫‪ -١‬ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ﻻ ﺗﺘﺄﺛﺮ ﺑﻤﺎ ﻳﺘﻢ ﺗﻨﻔﯿﺬه ﻣﻦ ﺷﺮوط او دوال‬
‫‪ -٢‬ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ﻻ ﺗﻘﻮم ﺑﺤﻔﻆ اﻟﻨﺎﺗﺞ ﻓﻰ ﺟﺪول واﻧﻤﺎ ﻳﻘﻮم‬
‫ﻣﺤﺮك ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ﺑﺘﻨﻔﯿﺬ اﻟﺠﻤﻠﻪ ﻛﻞ ﻣﺮه ﺗﻘﻮم‬
‫ﺑﺘﺸﻐﯿﻠﻪ ﻓﯿﮫﺎ‬

‫ﺑﻌﺾ اﻷﻣﺜﻠﻪ اﻟﻤﺒﻨﯿﻪ ﻋﻠﻰ ﻗﺎﻋﺪه اﻟﺒﯿﺎﻧﺎت ‪: Northwind‬‬

‫ﻣﺜﺎل ‪: ١‬‬
‫‪CREATE VIEW [Current Product List] AS‬‬
‫‪SELECT ProductID,ProductName‬‬
‫‪FROM Products‬‬
‫‪WHERE Discontinued=No‬‬

‫ﻛﯿﻒ ﻳﺘﻢ ﺗﺸﻐﯿﻠﻪ ‪ :‬ﻋﻦ ﻃﺮﻳﻖ اﻟﺠﻤﻠﻪ اﻷﺗﯿﻪ‬


‫]‪SELECT * FROM [Current Product List‬‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ‫‪٣١‬‬ ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ ‪Arab Team 2000‬‬
: ٢ ‫ﻣﺜﺎل‬
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

:‫ﻳﺘﻢ ﻋﺮﺿﻪ ﺑﺎﻟﺠﻤﻠﻪ‬


SELECT * FROM [Products Above Average Price]

: ٣ ‫ﻣﺜﺎل‬
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

: ‫ﻳﺘﻢ ﻋﺮﺿﻪ ﺑﺎﻟﺠﻤﻠﻪ‬


SELECT * FROM [Category Sales For 1997]

: ‫وﻳﻤﻜﻦ أﺳﺘﺨﺪام اﻟﺸﺮط اﺛﻨﺎء ﻋﺮض اﻟﺒﯿﺎﻧﺎت‬

SELECT * FROM [Category Sales For 1997]


WHERE CategoryName='Beverages'

‫ﺗﻢ ﺑﺤﻤﺪ اﷲ اﻷﻧﺘﮫﺎء ﻣﻦ اﻟﺪروس‬


‫وﻧﺪﻋﻮا اﷲ ان ﻳﻮﻓﻚ اﻟﺠﻤﯿﻊ ﻟﻤﺎ ﻓﯿﻪ اﻟﺨﯿﺮ‬
‫اﺳﺌﻠﻜﻢ اﻟﺪﻋﺎء ﺑﻈﮫﺮ اﻟﻐﺎﺋﺐ‬
‫ﺗﺤﯿﺎﺗﻰ ﻟﻠﺠﻤﯿﻊ أﺣﻤﺪ ﺣﺎﻣﺪ‬
GENIUS-IT@HOTMAIL.COM
‫ﻋﻀﻮ ﻓﻰ‬
‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬
WWW.ARABTEAM2000.COM
GENIUS-IT ‫ﺑﺄﺳﻢ‬

‫ﻗﺎم ﺑﺎﻟﻨﻘﻞ واﻟﺘﺮﺟﻤﻪ أﺣﻤﺪ ﺣﺎﻣﺪ‬ ٣٢ Arab Team 2000 ‫اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻰ ﻟﻠﺒﺮﻣﺠﻪ‬

You might also like