You are on page 1of 102

‫ﻧﮕﺎرش‬

‫اول‬

‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬


‫ﺑﻪ اﻧﻀﻤﺎم ﻣﺜﺎل ﻫﺎي ‪SQL Server‬‬
‫اﯾﻦ ﮐﺘﺎب در ﻣﻮرد ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده راﺑﻄﻪ اي ﻣﻌﺮوف ﻣﺜﻞ ‪،MS SQL Server ،MS Access‬‬
‫‪ MySQL‬ﺗﻮﺿﯿﺢ داده اﺳﺖ و ﺑﺮاي ﻫﺮ ﮐﺪام دﺳﺘﻮرات و ﻣﺜﺎﻟﻬﺎي ﻣﺮﺑﻮﻃﻪ را آورده اﺳﺖ‪ .‬ﻣﺜﺎﻟﻬﺎي ﺿﻤﯿﻤﻪ ﺷﺪه‬
‫ﻣﺮﺑﻮط ﺑﻪ ‪ SQL Server 2008‬ﻫﺴﺘﻨﺪ ﮐﻪ در ﻣﺤﯿﻂ ‪ Management Studio‬و ﺑﺎ ﭘﺎﯾﮕﺎه داده آﻣﻮزﺷﯽ‬
‫‪ NorthWind‬ﺗﺴﺖ ﺷﺪه اﻧﺪ‪.‬‬

‫ﭼﺎپ ﻋﻤﻮﻣﯽ ﻏﯿﺮ راﯾﮕﺎن اﯾﻦ ﮐﺘﺎب ﺑﻪ ﻫﺮ ﻧﺤﻮي ﻏﯿﺮ ﻣﺠﺎز اﺳﺖ‬
‫اﺳﺘﻔﺎده از ﻣﻄﺎﻟﺐ ﮐﺘﺎب ﺑﺎ ذﮐﺮ ﻣﻨﺒﻊ ﺑﻼﻣﺎﻧﻊ اﺳﺖ‬
‫ﻓﻬﺮﺳﺖ ﻣﻄﺎﻟﺐ‬

‫ﻓﺼﻞ اول‬

‫ﻣﻘﺪﻣﻪ اي ﺑﺮ ‪1 ...............………......................................………………………………………………………….… SQL‬‬

‫ﮔﺮاﻣﺮ ‪٢ ......................………….................................………………………………………………..…………...… SQL‬‬

‫ﻋﺒﺎرت ‪ SELECT‬در ‪4 .........................................…………………………………………………………………...…… SQL‬‬

‫ﻋﺒﺎرت ‪6 .............................................……………………………………………….......…………… SELECT DISTINC‬‬

‫ﻋﺒﺎرت ‪ WHERE‬در ‪7 ..............................................…………………………………………………………………… SQL‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ‪ AND‬و ‪9 .................................................…………………………………………………………………… OR‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ ORDER BY‬در ‪11 ..........................................…………………………………………………………… SQL‬‬

‫ﻋﺒﺎرت ‪ INSERT INTO‬در ‪13 .............................................…………………………………………………………… SQL‬‬

‫ﻋﺒﺎرت ‪14 ..............................................………...………………………………………………………………… UPDATE‬‬

‫ﻋﺒﺎرت ‪16 ................................................…………………………………………………………………………… DELETE‬‬

‫ﻓﺼﻞ دوم‬

‫ﻋﺒﺎرت ‪ TOP‬در ‪18 .....................................................................................................…….............. SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ LIKE‬در ‪20 ......................................................................................................…….............. SQL‬‬

‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪22 ........................................................................................…….............. SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ IN‬در ‪24 .........................................................................................................…….............. SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ BETWEEN‬در ‪25 ...............................................……............................................................ SQL‬‬

‫‪ Alias‬در ‪27 ................................................……........................................................................... SQL‬‬

‫‪ JOIN‬ﻫﺎ در ‪28 ................................................……........................................................................ SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ INNER JOIN‬در ‪29 ................................................……................................................. SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ LEFT JOIN‬در ‪31 ................................................…….................................................... SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ RIGHT JOIN‬در ‪32 ................................................……................................................. SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ FULL JOIN‬در ‪33 ................................................……................................................... SQL‬‬


35 ................................................……............................................................... SQL ‫ در‬UNION ‫ﻋﻤﻠﮕﺮ‬

37 ................................................……...................................................... SQL ‫ در‬SELECT INTO ‫ﻋﺒﺎرت‬

39 ................................................…….......................................... SQL ‫ در‬CREATE DATABASE ‫ﻋﺒﺎرت‬

39 ................................................……................................................... SQL ‫ در‬CREATE TABLE ‫ﻋﺒﺎرت‬

40 ................................................…….............................................................................. ‫ﻣﺤﺪودﯾﺖ ﻫﺎ‬

40 ................................................……................................................................ NOT NULL ‫ﻣﺤﺪودﯾﺖ‬

41 ................................................……................................................................... UNIQUE ‫ﻣﺤﺪودﯾﺖ‬

43 ...............................................…….................................................. SQL ‫ در‬PRIMARY KEY‫ﻣﺤﺪودﯾﺖ‬

45 ...............................................……............................................................ FOREIGN KEY ‫ﻣﺤﺪودﯾﺖ‬

47 ........................................................................................................…….............. CHECK ‫ﻣﺤﺪودﯾﺖ‬

49 .........................................................................................…….............. SQL ‫ در‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬

50 ................................................................................…….............. SQL ‫ در‬CREATE INDEX ‫دﺳﺘﻮرات‬

51 .........................................................…...... SQL ‫ در‬DROP DATABASE ‫ و‬DROP TABLE ،DROP INEX

52 ................................................……................................................................ ALTER TABLE ‫دﺳﺘﻮر‬

54 .................................................................................…….............. SQL ‫ در‬AUTO INCREMENT ‫ﻓﯿﻠﺪ‬

58 ...............................................……........................................................................ SQL ‫ ﻫﺎ در‬View

60 ...............................................……....................................................................... SQL ‫ﺗﻮاﺑﻊ ﺗﺎرﯾﺦ در‬

63 ...............................................…….............................................................................. NULL ‫ﻣﻘﺪار‬

65 ..............................................……...................................................................... SQL ‫ در‬NULL ‫ﺗﻮاﺑﻊ‬

66 ...............................................……....................................................................... SQL ‫ﻧﻮع داده ﻫﺎ در‬

‫ﻓﺼﻞ ﺳﻮم‬

74 ...................................................................................................................................... SQL ‫ﺗﻮاﺑﻊ‬

74 .................................................................................................................................... AVG() ‫ﺗﺎﺑﻊ‬

76 ..................................................................................................................... SQL ‫ در‬COUNT() ‫ﺗﺎﺑﻊ‬


‫ﺗﺎﺑﻊ )(‪78 ................................................................................................................................... FIRST‬‬

‫ﺗﺎﺑﻊ )(‪79 .................................................................................................................................... LAST‬‬

‫ﺗﺎﺑﻊ )(‪80 .................................................................................................................................... MAX‬‬

‫ﺗﺎﺑﻊ )(‪81 .................................................................................................................................... MIN‬‬

‫ﺗﺎﺑﻊ )(‪82 .................................................................................................................................... SUM‬‬

‫دﺳﺘﻮر ‪ Group By‬در ‪83 ................................................................................................................. SQL‬‬

‫ﻋﺒﺎرت ‪85 ................................................................................................................................ Having‬‬

‫ﺗﺎﺑﻊ )(‪86 ................................................................................................................................. UCASE‬‬

‫ﺗﺎﺑﻊ )(‪87 .................................................................................................................................. LCASE‬‬

‫ﺗﺎﺑﻊ )(‪88 ..................................................................................................................................... MID‬‬

‫ﺗﺎﺑﻊ )(‪89 ...................................................................................................................................... LEN‬‬

‫ﺗﺎﺑﻊ )(‪90 ................................................................................................................................ ROUDN‬‬

‫ﺗﺎﺑﻊ )(‪90 .................................................................................................................................. NOW‬‬

‫ﺗﺎﺑﻊ )(‪91 ............................................................................................................................ FORMAT‬‬

‫ﺿﻤﯿﻤﻪ‬

‫ﻣﺮﺟﻊ ﺳﺮﯾﻊ دﺳﺘﻮرات ‪93 .................................................................................................................. SQL‬‬

‫ﻫﺎﺳﺘﯿﻨﮓ در ‪96 ............................................................................................................................. SQL‬‬

‫ﺷﻤﺎ ‪ SQL‬را آﻣﻮﺧﺘﯿﺪ‪ ،‬ﺣﺎﻻ ﭼﮑﺎري ﺑﺎﯾﺪ اﻧﺠﺎم دﻫﯿﺪ؟ ‪97 ....................................................................................‬‬
‫ﭘﯿﺸﮕﻔﺘﺎر‬

‫در دﻫﻪ‪ 70‬ﮔﺮوﻫﯽ از ﺷﺮﮐﺖ آيﺑﯽام ﺑﺮ روي ﺳﯿﺴﺘﻢ ﭘﺎﯾﮕﺎه دادهﻫﺎي ﺳﯿﺴﺘﻢ آر ﮐﺎر ﻣﯽﮐﺮدﻧﺪ و زﺑﺎن ‪ SQL‬را ﺑﻪ ﻣﻨﻈﻮر ﻋﻤﻠﯿﺎت و‬
‫ﺑﺎزﯾﺎﺑﯽ اﻃﻼﻋﺎت ذﺧﯿﺮه ﺷﺪه در ﺳﯿﺴﺘﻢ آر اﯾﺠﺎد ﮐﺮدﻧﺪ‪.‬‬

‫زﺑﺎن ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ ﭘﺮس و ﺟﻮ )‪ SQL‬ﮐﻪ ﺳﯽﮐﻮا‪‬ل ﺧﻮاﻧﺪه ﻣﯽ ﺷﻮد( زﺑﺎﻧﯽ اﺳﺖ ﺳﻄﺢ ﺑﺎﻻ ﻣﺒﺘﻨﯽ ﺑﺮ زﺑﺎن ﺳﻄﺢ ﭘﺎﯾﯿﻦ و رﯾﺎﺿﯽ ﺟﺒﺮ‬
‫راﺑﻄﻪاي ﮐﻪ ﺑﺮاي اﯾﺠﺎد‪ ،‬ﺗﻐﯿﯿﺮ و ﺑﺎزﯾﺎﺑﯽ دادهﻫﺎ و ﻧﯿﺰ ﻋﻤﻠﯿﺎت ﺑﺮ روي آﻧﻬﺎ ﺑﻪﮐﺎر ﻣﯽرود‪ .‬زﺑﺎن ‪ SQL‬ﺑﻪ ﺳﻤﺖ ﻣﺪل ﺷﯽﮔﺮا ‪-‬‬
‫راﺑﻄﻪاي ﻧﯿﺰ ﭘﯿﺸﺮﻓﺖ ﮐﺮده اﺳﺖ‪ SQL .‬ﺑﺮاي ﮐﺎرﻫﺎي وﯾﮋه و ﻣﺤﺪودي )ﮔﺰارش ﮔﯿﺮي از دادهﻫﺎ در ﭘﺎﯾﮕﺎه دادهﻫﺎي راﺑﻄﻪاي( ﻃﺮاﺣﯽ‬
‫ﺷﺪه اﺳﺖ‪ .‬ﺑﺮ ﺧﻼف زﺑﺎﻧﻬﺎي دﺳﺘﻮري ﻣﺜﻞ ﺑﯿﺴﯿﮏ ﯾﺎ ﺳﯽ ﮐﻪ ﺑﺮاي ﺣﻞ ﻣﺴﺎﺋﻞ ﻃﺮاﺣﯽ ﺷﺪه‪ SQL ،‬زﺑﺎﻧﯽ ﺑﺮ ﭘﺎﯾﻪ اﻋﻼن اﺳﺖ‪.‬‬

‫اﯾﻦ ﮐﺘﺎب در ﻣﻮرد ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﻣﺪﯾﺮﯾﺖ ﭘﺎﯾﮕﺎه داده راﺑﻄﻪ اي ﻣﻌﺮوف ﻣﺜﻞ ‪MySQL ،MS SQL Server ،MS Access‬‬
‫ﺗﻮﺿﯿﺢ داده اﺳﺖ و ﺑﺮاي ﻫﺮ ﮐﺪام دﺳﺘﻮرات و ﻣﺜﺎﻟﻬﺎي ﻣﺮﺑﻮﻃﻪ را آورده اﺳﺖ‪ .‬ﻣﺜﺎﻟﻬﺎي ﺿﻤﯿﻤﻪ ﺷﺪه ﻣﺮﺑﻮط ﺑﻪ ‪SQL Server‬‬
‫‪ 2008‬ﻫﺴﺘﻨﺪ ﮐﻪ در ﻣﺤﯿﻂ ‪ Management Studio‬و ﺑﺎ ﭘﺎﯾﮕﺎه داده آﻣﻮزﺷﯽ ‪ NorthWind‬ﺗﺴﺖ ﺷﺪه اﻧﺪ‪ .‬ﭘﺎﯾﮕﺎه داده‬
‫‪ NorthWind‬را ﻧﯿﺰ ﻣﯽ ﺗﻮاﻧﯿﺪ از اﯾﻨﺠﺎ درﯾﺎﻓﺖ ﮐﻨﯿﺪ‪.‬‬

‫ﻣﻄﺎﻟﺐ اﯾﻦ ﮐﺘﺎب‪ ،‬ﺗﺮﺟﻤﻪ دوره آﻣﻮزﺷﯽ ‪ SQL‬از ﺳﺎﯾﺖ ‪ W3Schools‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﻫﺮﭼﻨﺪ ﺗﻼش ﮐﺮدﯾﻢ ﺗﺎ ﺣﺪ اﻣﮑﺎن ﻣﻄﻠﺐ را ﺳﺎده و‬
‫روان ﺑﯿﺎن ﮐﻨﯿﻢ اﻣﺎ ﺑﯽ ﺷﮏ اﺷﮑﺎﻻﺗﯽ در اﻣﺮ ﺗﺮﺟﻤﻪ اﯾﻦ ﮐﺘﺎب وﺟﻮد دارد ﮐﻪ از ﺧﻮاﻧﻨﺪﮔﺎن ﻣﺤﺘﺮم ﺗﻘﺎﺿﺎ ﻣﯽ ﮐﻨﯿﻢ ﺑﺎ ارﺳﺎل ﻧﻈﺮات‬
‫ﺧﻮد ﻣﺎ را در ﺑﻬﺒﻮد ﺑﺨﺸﯿﺪن اﯾﻦ ﮐﺘﺎب ﯾﺎري ﮐﻨﻨﺪ‪.‬‬

‫ﻣﺘﺮﺟﻤﺎن‪:‬‬

‫‪Javadi.b67@gmail.com‬‬ ‫ﺑﺮات ﺟﻮادي‬

‫‪s.izanlo65@gmail.com‬‬ ‫ﺻﻔﻮرا اﯾﺰاﻧﻠﻮ‬

‫‪F_Zareiy@yahoo.com‬‬ ‫ﻓﺎﻃﻤﻪ زارﻋﯽ‬

‫‪asiehghadimi@yahoo.com‬‬ ‫آﺳﯿﻪ ﻗﺪﯾﻤﯽ‬

‫ﺑﻬﺎر ‪91‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻓﺼﻞ اول ‪ -‬دﺳﺘﻮرات ﭘﺎﯾﻪ‬

‫ﻣﻘﺪﻣﻪ اي ﺑﺮ ‪SQL‬‬
‫‪ SQL‬ﯾﮏ زﺑﺎن اﺳﺘﺎﻧﺪارد ﺑﺮاي دﺳﺘﺮﺳﯽ و دﺳﺘﮑﺎري ﭘﺎﯾﮕﺎه ﻫﺎي داده اﺳﺖ‪.‬‬

‫‪ SQL‬ﭼﯿﺴﺖ؟‬

‫‪ SQL‬ﻣﺨﻔﻒ ‪ Structured Query Language‬ﯾﺎ زﺑﺎن ﭘﺮس و ﺟﻮي ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ اﺳﺖ‬ ‫·‬
‫‪ SQL‬ﺑﻪ ﺷﻤﺎ اﺟﺎزه دﺳﺘﺮﺳﯽ و دﺳﺘﮑﺎري ﺑﻪ ﭘﺎﯾﮕﺎه ﻫﺎي داده را ﻣﯽ دﻫﺪ‬ ‫·‬
‫‪ SQL‬ﯾﮏ اﺳﺘﺎﻧﺪارد ‪) ANSI‬ﻣﻮﺳﺴﻪ اﺳﺘﺎﻧﺪارد ﻣﻠﯽ آﻣﺮﯾﮑﺎ( اﺳﺖ‬ ‫·‬

‫ﭼﻪ ﮐﺎرﻫﺎﯾﯽ ‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ اﻧﺠﺎم دﻫﺪ؟‬

‫‪ SQL‬ﯾﮏ ﭘﺮس و ﺟﻮ را در ﺑﺮاﺑﺮ ﯾﮏ ﭘﺎﯾﮕﺎه داده ﻣﯽ ﺗﻮاﻧﺪ ﺳﺮﯾﻊ اﺟﺮا ﮐﻨﺪ‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ داده را از ﯾﮏ ﭘﺎﯾﮕﺎه داده واﮐﺸﯽ ﮐﻨﺪ‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ رﮐﻮردﻫﺎﯾﯽ را در ﭘﺎﯾﮕﺎه داده درج ﮐﻨﺪ‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ رﮐﻮردﻫﺎﯾﯽ را در ﭘﺎﯾﮕﺎه داده ﺑﻪ روز ﮐﻨﺪ‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ رﮐﻮردﻫﺎي ﯾﮏ ﭘﺎﯾﮕﺎه داده را ﺣﺬف ﮐﻨﺪ‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ ﭘﺎﯾﮕﺎه داده ﻫﺎي ﺟﺪﯾﺪي ﺑﻮﺟﻮد آورد‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ ﺟﺪوﻟﻬﺎي ﺟﺪﯾﺪي را در ﭘﺎﯾﮕﺎه داده ﺑﻮﺟﻮد آورد‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ روﯾﻪ ﻫﺎي ذﺧﯿﺮه ﺷﺪه در ﭘﺎﯾﮕﺎه داده ﺑﺴﺎزد‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ ﻧﻤﺎﻫﺎﯾﯽ را در ﭘﺎﯾﮕﺎه داده ﺑﻮﺟﻮد آورد‬ ‫·‬
‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﺟﺪاول‪ ،‬روﯾﻪ ﻫﺎي ذﺧﯿﺮه ﺷﺪه و ﻧﻤﺎﻫﺎ ﻣﺠﻮز ﺗﻨﻈﯿﻢ ﮐﻨﺪ‬ ‫·‬

‫‪ SQL‬اﺳﺘﺎﻧﺪارد ﻫﺴﺖ وﻟﯽ‪...‬‬

‫اﮔﺮﭼﻪ ‪ SQL‬ﯾﮏ ‪ ANSI‬اﺳﺘﺎﻧﺪارد اﺳﺖ اﻣﺎ ﻧﺴﺨﻪ ﻫﺎي ﻣﺨﺘﻠﻔﯽ از زﺑﺎن ‪ SQL‬وﺟﻮد دارﻧﺪ‪.‬‬

‫‪،INSERT ،DELETE ،UPDATE ،SELECT‬‬ ‫ﺑﺎ اﯾﻦ ﺣﺎل‪ ،‬ﺑﺮاي ﻣﻮاﻓﻘﺖ ﺑﺎ ‪ ،ANSI‬ﻫﻤﻪ آﻧﻬﺎ دﺳﺖ ﮐﻢ از ﻓﺮﻣﺎﻧﻬﺎي اﺻﻠﯽ )ﻣﺜﻞ‬
‫‪ (WHERE‬ﺑﻪ روش ﻣﺸﺎﺑﻬﯽ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﻨﺪ‪.‬‬
‫‪1‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﮑﺘﻪ‪ :‬ﺑﯿﺸﺘﺮ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﭘﺎﯾﮕﺎه داده ‪ SQL‬ﻧﯿﺰ ﺿﻤﯿﻤﻪ ﻫﺎي اﺧﺘﺼﺎﺻﯽ ﺧﻮدﺷﺎن را ﻋﻼو ه ﺑﺮ اﺳﺘﺎﻧﺪاردﻫﺎي ‪ SQL‬دارﻧﺪ!‬

‫اﺳﺘﻔﺎده از ‪ SQL‬در وب ﺳﺎﯾﺖ ﺗﺎن‬

‫ﺑﺮاي ﺳﺎﺧﺘﻦ ﯾﮏ وب ﺳﺎﯾﺖ ﮐﻪ ﺑﻌﻀﯽ داده را از ﯾﮏ ﭘﺎﯾﮕﺎه داده ﻧﻤﺎﯾﺶ دﻫﺪ‪ ،‬ﺑﻪ ﻣﻮارد زﯾﺮ ﻧﯿﺎز ﺧﻮاﻫﯿﺪ داﺷﺖ‪:‬‬

‫ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﭘﺎﯾﮕﺎه داده ‪) RDBMS‬ﻣﺜﻞ ‪(MySQL ،SQL Server ،MS Access‬‬ ‫·‬
‫ﯾﮏ زﺑﺎن اﺳﮑﺮﯾﭙﺘﯽ ﺳﻤﺖ ﺳﺮور‪ ،‬ﻣﺜﻞ ‪ php‬ﯾﺎ ‪ASP‬‬ ‫·‬
‫‪SQL‬‬ ‫·‬
‫‪HTML / CSS‬‬ ‫·‬

‫‪RDBMS‬‬

‫‪ RDBMS‬ﻣﺨﻔﻒ ‪ Relational Database Management System‬ﯾﺎ ﺳﯿﺴﺘﻢ ﻣﺪﯾﺮﯾﺖ ﭘﺎﯾﮕﺎه داده راﺑﻄﻪ اي اﺳﺖ‪.‬‬

‫‪ RDBMS‬ﭘﺎﯾﻪ اي ﺑﺮاي ‪ SQL‬و ﺑﺮاي ﻫﻤﻪ ﺳﯿﺴﺘﻤﻬﺎي ﭘﺎﯾﮕﺎه داده ﺟﺪﯾﺪ از ﻗﺒﯿﻞ ‪،Oracle ،IBM DB2 ،MS SQL Server‬‬
‫‪ MySQL‬و ‪ Microsoft Access‬اﺳﺖ‪.‬‬

‫داده در ‪ RDBMS‬در اﺷﯿﺎء ﭘﺎﯾﮕﺎه داده ﮐﻪ ﺟﺪاول ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد‪ ،‬ذﺧﯿﺮه ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﯾﮏ ﺟﺪول ﻣﺠﻤﻮع داده ﯾﮑﭙﺎرﭼﻪ ﻣﺮﺗﺒﻂ اﺳﺖ و ﺷﺎﻣﻞ ﺳﺘﻮن ﻫﺎ و ﺳﻄﺮﻫﺎ ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪SQL‬‬

‫ﺟﺪاول ﭘﺎﯾﮕﺎه داده‬

‫ﯾﮏ ﭘﺎﯾﮕﺎه داده اﻏﻠﺐ ﺷﺎﻣﻞ ﯾﮏ ﯾﺎ ﭼﻨﺪ ﺟﺪول اﺳﺖ‪ .‬ﻫﺮ ﺟﺪول ﺑﻮﺳﯿﻠﻪ ﯾﮏ ﻧﺎم )ﻣﺜﻞ "‪ "Orders‬ﯾﺎ "‪("Customers‬‬
‫ﺷﻨﺎﺳﺎﯾﯽ ﻣﯽ ﺷﻮد‪ .‬ﺟﺪاول ﺷﺎﻣﻞ رﮐﻮردﻫﺎ )ﺳﻄﺮﻫﺎ( ﻫﻤﺮاه داده ﻫﺴﺘﻨﺪ‪.‬‬

‫در زﯾﺮ ﻣﺜﺎﻟﯽ از ﯾﮏ ﺟﺪول ﺑﻪ ﻧﺎم ”‪ “Persons‬آﻣﺪه اﺳﺖ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫‪2‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺟﺪول ﺑﺎﻻ ﺷﺎﻣﻞ ﺳﻪ رﮐﻮرد )ﺑﺮاي ﻫﺮ ﺷﺨﺺ( و ﭘﻨﺞ ﺳﺘﻮن )‪ Address ،FirstName ،LastName ،P_Id‬و ‪ (City‬اﺳﺖ‪.‬‬

‫ﻋﺒﺎرات ‪SQL‬‬

‫ﺑﯿﺸﺘﺮ ﻋﻤﻠﯿﺎﺗﯽ ﮐﻪ ﻧﯿﺎز دارﯾﺪ در ﯾﮏ ﭘﺎﯾﮕﺎه داده اﻧﺠﺎم دﻫﯿﺪ‪ ،‬ﺑﺎ ﻋﺒﺎرات ‪ SQL‬اﻧﺠﺎم ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﺟﻤﻠﻪ ‪ SQL‬زﯾﺮ ﻫﻤﻪ رﮐﻮردﻫﺎ را از ﺟﺪول اﺷﺨﺎص اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‪:‬‬

‫‪SELECT * FROM Persons‬‬

‫در اﯾﻦ آﻣﻮزﺷﯽ‪ ،‬ﻫﻤﻪ ﻋﺒﺎرات ﻣﺨﺘﻠﻒ ‪ SQL‬را ﺑﻪ ﺷﻤﺎ درس ﺧﻮاﻫﯿﻢ داد‪.‬‬

‫ﺑﻪ ﺧﺎﻃﺮ داﺷﺘﻪ ﺑﺎﺷﯿﺪ‪...‬‬

‫‪ SQL‬ﺣﺴﺎس ﺑﻪ ﺣﺮوف ﮐﻮﭼﮏ و ﺑﺰرگ ﻧﯿﺴﺖ‪.‬‬ ‫·‬

‫ﺳﻤﯿﮑﺎﻟﻮن ﺑﻌﺪاز ﻋﺒﺎرات ‪ SQL‬؟‬

‫ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده ﯾﮏ ﺳﻤﯿﮑﺎﻟﻮن در اﻧﺘﻬﺎي ﻫﺮ ﺟﻤﻠﻪ ‪ SQL‬را ﻻزم ﻣﯽ داﻧﺪ‪.‬‬

‫ﺳﻤﯿﮑﺎﻟﻮن ﯾﮏ روش اﺳﺘﺎﻧﺪارد ﺑﺮاي ﺟﺪا ﺳﺎزي ﻫﺮ ﻋﺒﺎرت ‪ SQL‬در ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده اﺳﺖ ﮐﻪ اﺟﺎزه اﺟﺮاي ﺑﯿﺶ از ﯾﮏ‬
‫ﻋﺒﺎرت ‪ SQL‬را در درﺧﻮاﺳﺖ ﺳﺮور را ﻣﯽ دﻫﺪ‪.‬‬

‫ﻣﺎ از ‪ MS Access‬و ‪ SQL Server 2000‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ و ﻣﺠﺒﻮر ﻧﯿﺴﺘﻢ ﯾﮏ ﺳﻤﯿﮑﺎﻟﻮن ﺑﻌﺪ از ﻫﺮ ﻋﺒﺎرت ‪ SQL‬ﻗﺮار دﻫﯿﻢ اﻣﺎ‬
‫ﺑﻌﻀﯽ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﭘﺎﯾﮕﺎه داده ﺷﻤﺎ را ﻣﺠﺒﻮر ﺑﻪ اﺳﺘﻔﺎده آن ﻣﯽ ﮐﻨﻨﺪ‪.‬‬

‫‪ DML‬و ‪ DDL‬در ‪SQL‬‬

‫‪ SQL‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﻪ دو ﺑﺨﺶ ﺗﻘﺴﯿﻢ ﺷﻮد‪ :‬زﺑﺎن دﺳﺘﮑﺎري داده )‪ (DML‬و زﺑﺎن ﺗﻌﺮﯾﻒ داده )‪.(DDL‬‬

‫دﺳﺘﻮرات ﭘﺮس و ﺟﻮ و ﺑﺮوز ﮐﺮدن از ﺑﺨﺶ زﺑﺎن دﺳﺘﮑﺎري داده ‪:SQL‬‬

‫‪ - SELECT‬اﺳﺘﺨﺮاج داده از ﯾﮏ ﭘﺎﯾﮕﺎه داده‬ ‫·‬


‫‪ - UPDATE‬ﺑﺮوز ﮐﺮدن داده در ﯾﮏ ﭘﺎﯾﮕﺎه داده‬ ‫·‬
‫‪ - DELETE‬ﺣﺬف داده از ﯾﮏ ﭘﺎﯾﮕﺎه داده‬ ‫·‬
‫‪ - INSERT INTO‬درج ﯾﮏ داده ﺟﺪﯾﺪ در ﯾﮏ ﭘﺎﯾﮕﺎه داده‬ ‫·‬

‫‪3‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺑﺨﺶ ‪ DDL‬از ‪ SQL‬ﺑﻪ ﺟﺪاول ﭘﺎﯾﮕﺎه داده اﺟﺎزه ﺳﺎﺧﺖ ﯾﺎ ﺣﺬف را ﻣﯽ دﻫﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﮐﻠﯿﺪﻫﺎي ﻓﻬﺮﺳﺖ را ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﺪ‪ ،‬ارﺗﺒﺎط‬
‫ﺑﯿﻦ ﺟﺪاول را ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ و ﻣﺤﺪودﯾﺖ ﻫﺎ ﺑﯿﻦ ﺟﺪاول را اﻋﻤﺎل ﻣﯽ ﮐﻨﺪ‪ .‬ﻣﻬﻤﺘﺮﯾﻦ ﻋﺒﺎرات ‪ DDL‬در ‪ SLQ‬ﻋﺒﺎرﺗﻨﺪ از‪:‬‬

‫‪ - CREATE DATABASE‬ﺳﺎﺧﺖ ﯾﮏ ﭘﺎﯾﮕﺎه داده ﺟﺪﯾﺪ‬ ‫·‬


‫‪ - ALTER DATABASE‬اﺻﻼح ﯾﮏ ﭘﺎﯾﮕﺎه داده‬ ‫·‬
‫‪ - CREATE TABLE‬ﺳﺎﺧﺖ ﯾﮏ ﺟﺪول ﺟﺪﯾﺪ‬ ‫·‬
‫‪ - ALTER TABLE‬اﺻﻼح ﯾﮏ ﺟﺪول‬ ‫·‬
‫‪ - DROP TABLE‬ﺣﺬف ﯾﮏ ﺟﺪول‬ ‫·‬
‫‪ - CREATE INDEX‬ﺳﺎﺧﺖ ﯾﮏ ﮐﻠﯿﺪ ﺟﺴﺘﺠﻮ )ﮐﻠﯿﺪ ﺟﺴﺘﺠﻮ(‬ ‫·‬
‫‪ - DROP INDEX‬ﺣﺬف ﯾﮏ ﻓﻬﺮﺳﺖ‬ ‫·‬

‫ﻋﺒﺎرت ‪ SELECT‬در ‪SQL‬‬

‫اﯾﻦ ﻓﺼﻞ در ﻣﻮرد ‪ SELECT‬و * ‪ SELECT‬ﺗﻮﺿﯿﺢ ﺧﻮاﻫﺪ داد‪.‬‬

‫ﻋﺒﺎرت ‪ SELECT‬در ‪SQL‬‬

‫ﻋﺒﺎرت ‪ SELECT‬ﺑﺮاي اﻧﺘﺨﺎب داده از ﯾﮏ ﭘﺎﯾﮕﺎه داده اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﻧﺘﯿﺠﻪ در ﯾﮏ ﺟﺪول ذﺧﯿﺮه ﻣﯽ ﺷﻮد ﮐﻪ ﺟﺪول‪ -‬ﻧﺘﯿﺠﻪ ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ SQL‬در ‪SELECT‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬

‫و‬

‫‪SELECT * FROM table_name‬‬

‫ﺗﺬﮐﺮ‪ SQL :‬ﺣﺴﺎس ﺑﻪ ﺣﺮوف ﺑﺰرگ و ﮐﻮﭼﮏ ﻧﯿﺴﺖ‪ SELECT .‬ﻣﺜﻞ ‪ select‬اﺳﺖ‪.‬‬

‫ﯾﮏ ﻣﺜﺎل ‪ SELECT‬در ‪SQL‬‬

‫‪4‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:"Persons"‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

.‫" را از ﺟﺪول اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬FirstName" ‫" و‬LastName" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺤﺘﻮاي ﺳﺘﻮن ﻫﺎﯾﯽ ﺑﺎ ﻧﺎم‬

:‫ زﯾﺮ را ﺑﮑﺎر ﻣﯽ ﺑﺮﯾﻢ‬SELECT ‫ﻋﺒﺎرت‬

SELECT LastName, FirstName FROM Persons

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

SELECT * ‫ﻣﺜﺎل‬

.‫" را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬Persons" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ ﺳﺘﻮﻧﻬﺎي ﺟﺪول‬

:‫ زﯾﺮ را ﺑﮑﺎر ﻣﯽ ﺑﺮﯾﻢ‬SELECT‫ﻋﺒﺎرت‬

SELECT * FROM Persons

!‫ ﮐﺎراﮐﺘﺮ ﺳﺘﺎره )*( روﺷﯽ ﺳﺮﯾﻊ ﺑﺮاي اﻧﺘﺨﺎب ﮐﻞ ﺳﺘﻮن ﻫﺎ ﻣﯽ ﺑﺎﺷﺪ‬:‫ﺗﻮﺟﻪ‬

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


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

5
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﭘﯿﻤﺎﯾﺶ در ﺟﺪول ‪ -‬ﻧﺘﯿﺠﻪ‬

‫ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﻧﺮم اﻓﺰاري ﭘﺎﯾﮕﺎه داده اﺟﺎزه ﭘﯿﻤﺎﯾﺶ ﺑﺎ ﺗﻮاﺑﻊ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ را در ﺟﺪول ﻧﺘﯿﺠﻪ ﻣﯽ دﻫﻨﺪ؛ ﻣﺜﻞ ‪Move-To-‬‬
‫‪ Move-To-Next-Record ،Get-Record-Content ،First-Record‬و ﻏﯿﺮه‬

‫ﺗﻮاﺑﻊ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ از اﯾﻦ ﻗﺒﯿﻞ ﺑﻪ ﻋﻨﻮان ﻗﺴﻤﺘﯽ از اﯾﻦ آﻣﻮزش ﻧﯿﺴﺘﻨﺪ‪ .‬ﺑﺮاي ﯾﺎدﮔﯿﺮي در ﻣﻮرد دﺳﺘﺮﺳﯽ ﺑﻪ داده ﺑﺎ ﻓﺮاﺧﻮاﻧﯽ ﺗﺎﺑﻊ‪،‬‬
‫ﻟﻄﻔﺎ از دروه آﻣﻮزﺷﯽ ‪ ADO‬ﯾﺎ دوره آﻣﻮزﺷﯽ ‪ PHP‬ﻣﺎ ﺑﺎزدﯾﺪ ﮐﻨﯿﺪ‪.‬‬

‫ﻋﺒﺎرت ‪SQL SELECT DISTINCT‬‬

‫اﯾﻦ ﻓﺼﻞ در ﻣﻮرد ﺟﻤﻠﻪ‪ SELECT DISTINCT‬ﺗﻮﺿﯿﺢ ﺧﻮاﻫﺪ داد‪.‬‬

‫ﻋﺒﺎرت ‪ SELECT DISTINCT‬در ‪SQL‬‬

‫ﺑﺮﺧﯽ از ﺳﺘﻮن ﻫﺎي ﯾﮏ ﺟﺪول ﻣﻤﮑﻦ اﺳﺖ ﻣﻘﺪار ﻣﺤﺘﻮاي ﺗﮑﺮاري داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬اﯾﻦ ﯾﮏ ﻣﺸﮑﻞ ﻧﯿﺴﺖ اﻣﺎ ﮔﺎﻫﯽ اوﻗﺎت ﻣﯽ ﺧﻮاﻫﯿﺪ‬
‫ﻓﻘﻂ ﻣﻘﺎدﯾﺮ ﻣﺨﺘﻠﻔﯽ )ﻣﺘﻤﺎﯾﺰ( ﮐﻪ در ﯾﮏ ﺟﺪول ﻫﺴﺘﻨﺪ را ﻟﯿﺴﺖ ﮐﻨﯿﺪ‪.‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ DISTINCT‬ﻣﯽ ﺗﻮاﻧﺪ ﻓﻘﻂ ﺑﺮاي ﺑﺮﮔﺮداﻧﺪن ﻣﻘﺎدﯾﺮ ﻣﺘﻤﺎﯾﺰ )ﻣﺘﻔﺎوت( اﺳﺘﻔﺎده ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ SELECT DISTINCT‬در ‪SQL‬‬

‫)‪SELECT DISTINCT column_name(s‬‬


‫‪FROM table_name‬‬

‫ﻣﺜﺎل ‪SELECT DISTINCT‬‬

‫ﺟﺪول"‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫‪6‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺣﺎل ﻣﯽ ﺧﻮاﻫﯿﻢ در ﺟﺪول ﺑﺎﻻ ﺗﻨﻬﺎ ﻣﻘﺎدﯾﺮ ﻣﺘﻔﺎوت از ﺳﺘﻮﻧﯽ ﺑﻨﺎم "‪ "City‬را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از ﺟﻤﻠﻪ ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT DISTINCT City FROM Persons‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪City‬‬
‫‪Sandnes‬‬
‫‪Stavanger‬‬

‫ﻋﺒﺎرت ‪ WHERE‬در ‪SQL‬‬

‫ﻋﺒﺎرت ‪ WHERE‬ﺑﺮاي ﻓﯿﻠﺘﺮ ﮐﺮدن رﮐﻮردﻫﺎ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﻋﺒﺎرت ‪ WHERE‬ﻓﻘﻂ ﺑﺮاي اﺳﺘﺨﺮاج آن رﮐﻮردﻫﺎﯾﯽ ﮐﻪ ﯾﮏ ﻣﻌﯿﺎر ﺧﺎﺻﯽ را اﻧﺠﺎم ﻣﯽ دﻫﻨﺪ‪ ،‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ WHERE‬در ‪SQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE column_name operator value‬‬

‫ﻣﺜﺎل ﻋﺒﺎرت ‪WHERE‬‬

‫ﺟﺪول"‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ اﺷﺨﺎﺻﯽ ﮐﻪ در ﺷﻬﺮ ”‪ “Sandnes‬زﻧﺪﮔﯽ ﻣﯽ ﮐﻨﻨﺪ را از ﺟﺪول ﺑﺎﻻ اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از ﺟﻤﻠﻪ ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City='Sandnes‬‬
‫‪7‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫ﻧﻘﻞ ﻗﻮﻟﻬﺎ در اﻃﺮاف ﻓﯿﻠﺪﻫﺎي ﻣﺘﻨﯽ‬

‫‪ SQL‬ﻧﻘﻞ ﻗﻮل ﻫﺎي ﺗﮑﯽ در ﻣﻮرد ﻣﻘﺎدﯾﺮ ﻣﺘﻨﯽ ﺑﮑﺎر ﻣﯽ ﺑﺮد )ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻤﻬﺎي ﭘﺎﯾﮕﺎه داده ﻧﻘﻞ ﻗﻮل ﻫﺎي دوﺗﺎﯾﯽ ﻣﯽ ﭘﺬﯾﺮﻧﺪ(‪.‬‬

‫اﻣﺎ ﻧﺒﺎﯾﺪ ﻣﻘﺎدﯾﺮ ﻋﺪدي داﺧﻞ ﻧﻘﻞ ﻗﻮل ﻫﺎ ﺿﻤﯿﻤﻪ ﺷﻮﻧﺪ‪.‬‬

‫ﺑﺮاي ﻣﻘﺎدﯾﺮ ﻣﺘﻨﯽ‪:‬‬

‫‪This is correct:‬‬

‫'‪SELECT * FROM Persons WHERE FirstName='Tove‬‬

‫‪This is wrong:‬‬

‫‪SELECT * FROM Persons WHERE FirstName=Tove‬‬

‫ﺑﺮاي ﻣﻘﺎدﯾﺮ ﻋﺪدي‪:‬‬

‫‪This is correct:‬‬

‫‪SELECT * FROM Persons WHERE Year=1965‬‬

‫‪This is wrong:‬‬

‫'‪SELECT * FROM Persons WHERE Year='1965‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺠﺎز در ﻋﺒﺎرت ‪WHERE‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي زﯾﺮ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ ﻋﺒﺎرت ‪ WHERE‬اﺳﺘﻔﺎده ﺷﻮﻧﺪ‪:‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻋﻤﻠﮕﺮ‬

‫ﻣﺴﺎوي‬ ‫=‬

‫ﻧﺎﺑﺮاﺑﺮ‬ ‫><‬

‫ﺑﺰرﮔﺘﺮ از‬ ‫>‬

‫‪8‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﮐﻤﺘﺮ از‬ ‫<‬

‫ﺑﺰرﮔﺘﺮ ﻣﺴﺎوي‬ ‫=>‬

‫ﮐﻮﭼﮑﺘﺮ ﻣﺴﺎوي‬ ‫=<‬

‫ﺑﯿﻦ ﯾﮏ داﻣﻨﻪ ﻣﺸﻤﻮل‬ ‫‪BETWEEN‬‬

‫ﺟﺴﺘﺠﻮي ﯾﮏ اﻟﮕﻮ‬ ‫‪LIKE‬‬

‫ﺑﺮاي ﺗﻌﯿﯿﻦ ﮐﺮدن ﻣﻘﺎدﯾﺮ ﭼﻨﺪﮔﺎﻧﻪ ﻣﻤﮑﻦ‪ ،‬ﺑﺮاي ﯾﮏ ﺳﺘﻮن‬ ‫‪IN‬‬

‫ﻧﮑﺘﻪ‪ :‬در ﺑﯿﺸﺘﺮ ﻧﺴﺨﻪ ﻫﺎي ‪ SQL‬ﻋﻤﻠﮕﺮ >< ﻣﻤﮑﻦ اﺳﺖ ﺑﻪ ﻋﻨﻮان =! ﻧﻮﺷﺘﻪ ﺷﻮد‪.‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ‪ AND‬و ‪OR‬‬


‫ﻋﻤﻠﮕﺮﻫﺎي ‪ AND‬و ‪ OR‬ﺑﺮاي ﻓﯿﻠﺘﺮ رﮐﻮردﻫﺎي ﻣﺒﻨﯽ ﺑﺮ ﺑﯿﺶ از ﯾﮏ ﺷﺮط اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ‪ AND‬و ‪OR‬‬

‫ﻋﻤﻠﮕﺮ ‪ AND‬ﯾﮏ رﮐﻮرد را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ؛ اﮔﺮ ﻫﺮ دو ﺷﺮط اوﻟﯽ و دوﻣﯽ درﺳﺖ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﻋﻤﻠﮕﺮ ‪ OR‬ﯾﮏ رﮐﻮرد را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ؛ اﮔﺮ ﯾﮑﯽ از دو ﺷﺮط اوﻟﯽ ﯾﺎ دوﻣﯽ درﺳﺖ ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺜﺎل ﻋﻤﻠﮕﺮ ‪AND‬‬

‫ﺟﺪول "‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ اﺷﺨﺎﺻﯽ ﮐﻪ ﻧﺎﻣﺸﺎن ”‪ “Tove‬و ﻧﺎم ﺧﺎﻧﻮادﮔﯽ ﺷﺎن ”‪ “Svendson‬اﺳﺖ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از ﺟﻤﻠﻪ ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪9‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT * FROM Persons


WHERE FirstName='Tove'
AND LastName='Svendson'

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


2 Svendson Tove Borgvn 23 Sandnes

OR ‫ﻣﺜﺎﻟﯽ از ﻋﻤﻠﮕﺮ‬

.‫“ اﺳﺖ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬Ola” ‫“ ﯾﺎ‬Tove” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ اﺷﺨﺎﺻﯽ ﮐﻪ ﻧﺎﻣﺸﺎن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از ﺟﻤﻠﻪ‬

SELECT * FROM Persons


WHERE FirstName='Tove'
OR FirstName='Ola'

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

OR ‫ و‬AND ‫ﺗﺮﮐﯿﺐ‬

.(‫ را ﺗﺮﮐﯿﺐ ﮐﻨﯿﺪ )از ﭘﺮاﻧﺘﺰﻫﺎ ﺑﺮاي ﻋﺒﺎرات ﭘﯿﭽﯿﺪه اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬OR ‫ و‬AND ‫ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﯿﺪ‬

.‫“ اﺳﺖ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬Ola” ‫“ ﯾﺎ‬Tove” ‫“ و ﻧﺎﻣﺸﺎن‬Svendson” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ اﺷﺨﺎﺻﯽ ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ ﺷﺎن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از ﺟﻤﻠﻪ‬

SELECT * FROM Persons WHERE


LastName='Svendson'
AND (FirstName='Tove' OR FirstName='Ola')

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

10
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ ORDER BY‬در ‪SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ ORDER BY‬ﺑﺮاي ﻣﺮﺗﺐ ﮐﺮدن ﺟﺪول ﻧﺘﯿﺠﻪ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ORDER BY‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ ORDER BY‬ﺑﺮاي ﻣﺮﺗﺐ ﮐﺮدن ﺟﺪول ﻧﺘﯿﺠﻪ ﺗﻮﺳﻂ ﯾﮏ ﺳﺘﻮن ﻣﺸﺨﺺ‪ ،‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‪ ORDER BY‬ﺑﻪ ﺻﻮرت ﭘﯿﺶ ﻓﺮض رﮐﻮردﻫﺎ را ﺻﻌﻮدي ﻣﺮﺗﺐ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ رﮐﻮردﻫﺎ را ﻧﺰوﻟﯽ ﻣﺮﺗﺐ ﮐﻨﯿﺪ‪ ،‬ﻣﯽ ﺗﻮاﻧﯿﺪ از ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ DESC‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ ORDER BY‬در ‪SQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪ORDER BY column_name(s) ASC|DESC‬‬

‫ﻣﺜﺎل ‪ORDER BY‬‬

‫ﺟﺪول "‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬
‫‪4‬‬ ‫‪Nilsen‬‬ ‫‪Tom‬‬ ‫‪Vingvn 23‬‬ ‫‪Stavanger‬‬

‫ﺣﺎل ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ اﺷﺨﺎص را در ﺟﺪول ﺑﺎﻻ اﻧﺘﺨﺎب ﮐﻨﯿﻢ؛ اﻣﺎ ﻣﯽ ﺧﻮاﻫﯿﻢ آﻧﻬﺎ را ﺑﻮﺳﯿﻠﻪ ﻧﺎم ﺧﻮاﻧﻮادﮔﯽ ﺷﺎن ﻣﺮﺗﺐ ﮐﻨﯿﻢ‪.‬‬

‫‪11‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از ﺟﻤﻠﻪ‬

SELECT * FROM Persons


ORDER BY LastName

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
4 Nilsen Tom Vingvn 23 Stavanger
3 Pettersen Kari Storgt 20 Stavanger
2 Svendson Tove Borgvn 23 Sandnes

ORDER BY DESC ‫ﻣﺜﺎل‬

‫ﺣﺎل ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ اﺷﺨﺎص را در ﺟﺪول ﺑﺎﻻ اﻧﺘﺨﺎب ﮐﻨﯿﻢ؛ اﻣﺎ ﻣﯽ ﺧﻮاﻫﯿﻢ اﻧﻬﺎ را ﺑﻮﺳﯿﻠﻪ ﻧﺎم ﺧﻮاﻧﻮادﮔﯽ ﺷﺎن ﺑﻪ ﺻﻮرت ﻧﺰوﻟﯽ‬
.‫ﻣﺮﺗﺐ ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT‫از ﺟﻤﻠﻪ‬

SELECT * FROM Persons


ORDER BY LastName DESC

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Tom Vingvn 23 Stavanger
1 Hansen Ola Timoteivn 10 Sandnes

12
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL ‫ در‬INSERT INTO ‫ﻋﺒﺎرت‬

.‫ ﺑﺮاي درج ﺳﻄﺮ ﺟﺪﯾﺪي در ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬INSERT INTO ‫ﻋﺒﺎرت‬

SQL ‫ در‬INSERT INT‫ﻋﺒﺎرت‬

.‫ ﺑﺮاي درج ﺳﻄﺮ ﺟﺪﯾﺪي در ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬INSERT INTO ‫ﻋﺒﺎرت‬

SQL ‫ در‬INSERT INTO ‫ﮔﺮاﻣﺮ‬

.‫ ﺑﻪ دو ﺷﮑﻞ ﻣﻤﮑﻦ اﺳﺖ‬INSERT INTO ‫ﻧﻮﺷﺘﻦ ﻋﺒﺎرت‬

:‫ ﻓﻘﻂ ﻣﻘﺎدﯾﺮﺷﺎن را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ‬،‫ﺷﮑﻞ اول اﺳﺎﻣﯽ ﺳﺘﻮﻧﻬﺎﯾﯽ ﮐﻪ داده در آﻧﺠﺎ درج ﺧﻮاﻫﺪ ﺷﺪ را ﻣﺸﺨﺺ ﻧﻤﯽ ﮐﻨﺪ‬

INSERT INTO table_name


VALUES (value1, value2, value3,…)

.‫ﺷﮑﻞ دوم ﻫﻢ اﺳﺎﻣﯽ ﺳﺘﻮن و ﻫﻢ ﻣﻘﺎدﯾﺮي ﮐﻪ درج ﺧﻮاﻫﻨﺪ ﺷﺪ را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ‬

INSERT INTO table_name (column1, column2, column3,...)


VALUES (value1, value2, value3,...)

SQL ‫ در‬INSERT INTO ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

.‫ درج ﻣﯽ ﮐﻨﯿﻢ‬Persons ‫اﮐﻨﻮن ﺳﻄﺮ ﺟﺪﯾﺪي از ﺟﺪول‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از ﺟﻤﻠﻪ‬

INSERT INTO Persons


VALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')

13
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫“ اﮐﻨﻮن ﺷﺒﯿﻪ اﯾﻦ اﺳﺖ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger

‫درج داده ﻓﻘﻂ در ﺳﺘﻮن ﻫﺎي ﻣﻌﯿﻦ‬

.‫ﻫﻤﭽﻨﯿﻦ ﻣﻤﮑﻦ اﺳﺖ ﻓﻘﻂ داده ﻫﺎ را در ﺳﺘﻮن ﻫﺎي ﻣﺸﺨﺺ اﺿﺎﻓﻪ ﮐﻨﯿﺪ‬

"FirstName" ‫" و‬LastName" ،"P_Id" ‫ زﯾﺮ ﺳﻄﺮﺟﺪﯾﺪي را اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﮐﺮد؛ اﻣﺎ ﻓﻘﻂ داده را ﺑﻪ ﺳﺘﻮن ﻫﺎي‬SQL ‫ﻋﺒﺎرت‬
.‫اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‬

INSERT INTO Persons (P_Id, LastName, FirstName)


VALUES (5, 'Tjessem', 'Jakob')

:‫“ اﮐﻨﻮن ﺷﺒﯿﻪ اﯾﻦ اﺳﺖ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob

UPDATE ‫ﻋﺒﺎرت‬

.‫ ﺑﺮاي آﭘﺪﯾﺖ ﮐﺮدن رﮐﻮردﻫﺎي ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬UPDATE ‫ﺟﻤﻠﻪ‬

UPDATE ‫ﻋﺒﺎرت‬

.‫ ﺑﺮاي آﭘﺪﯾﺖ ﮐﺮدن رﮐﻮردﻫﺎي ﻣﻮﺟﻮد ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬UPDATE ‫ﺟﻤﻠﻪ‬

14
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL UPDATE ‫ﮔﺮاﻣﺮ‬


UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

‫ ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ ﮐﻪ رﮐﻮرد ﯾﺎ رﮐﻮردﻫﺎﯾﯽ ﺑﺎﯾﺪ ﺑﻪ روز‬WHERE ‫ ﻋﺒﺎرت‬.‫ ﺗﻮﺟﻪ ﮐﻨﯿﺪ‬UPDATE ‫ در ﮔﺮاﻣﺮ‬WHERE ‫ ﺑﻪ ﻋﺒﺎرت‬:‫ﻧﮑﺘﻪ‬
!‫ را ﺣﺬف ﮐﻨﯿﺪ ﻫﻤﻪ ﮐﻮردﻫﺎ ﺑﺮوز ﺧﻮاﻫﻨﺪ ﺷﺪ‬WHERE ‫ اﮔﺮ ﻋﺒﺎرت‬.‫ﺷﻮﻧﺪ‬

SQL UPDATE ‫ﻣﺜﺎل‬

:"Persons"‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob

.‫“ را آﭘﺪﯾﺖ ﮐﻨﯿﻢ‬Persons” ‫" را در ﺟﺪول‬Tjessem, Jakob"‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﺷﺨﺺ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از ﺟﻤﻠﻪ‬

UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'
WHERE LastName='Tjessem' AND FirstName='Jakob'

:‫“ اﮐﻨﻮن ﺷﺒﯿﻪ اﯾﻦ اﺳﺖ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob Nissestien 67 Sandnes

15
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL ‫ در‬UPDATE ‫اﺧﻄﺎر‬

:‫ ﻣﺜﻞ اﯾﻦ‬،‫ را در ﻣﺜﺎل ﺑﺎﻻ ﺣﺬف ﮐﺮده ﺑﺎﺷﯿﻢ‬WHERE ‫ اﮔﺮ ﻣﺎ ﻋﺒﺎرت‬.‫ دﻗﺖ ﮐﻨﯿﺪ‬،‫زﻣﺎﻧﯿﮑﻪ رﮐﻮردﻫﺎ را ﺑﺮوز ﻣﯽ ﮐﻨﯿﺪ‬

UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'

:‫“ ﺷﺒﯿﻪ اﯾﻦ ﻣﯽ ﺷﻮد‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Nissestien 67 Sandnes
2 Svendson Tove Nissestien 67 Sandnes
3 Pettersen Kari Nissestien 67 Sandnes
4 Nilsen Johan Nissestien 67 Sandnes
5 Tjessem Jakob Nissestien 67 Sandnes

DELETE ‫ﻋﺒﺎرت‬

.‫ ﺑﺮاي ﺣﺬف رﮐﻮردﻫﺎي ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬DELETE ‫ﺟﻤﻠﻪ‬

DELETE ‫ﻋﺒﺎرت‬

. ‫ ﺑﺮاي ﺣﺬف ﺳﻄﺮﻫﺎي ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬DELETE ‫ﺟﻤﻠﻪ‬

SQL DELETE ‫ﮔﺮاﻣﺮ‬


DELETE FROM table_name
WHERE some_column=some_value

‫ ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ ﮐﻪ رﮐﻮردﻫﺎ ﯾﺎ رﮐﻮردﻫﺎﯾﯽ ﺑﺎﯾﺪ ﺣﺬف‬WHERE ‫ ﻋﺒﺎرت‬.‫ ﺗﻮﺟﻪ ﮐﻨﯿﺪ‬DELETE ‫ در ﮔﺮاﻣﺮ‬WHERE ‫ ﺑﻪ ﻋﺒﺎرت‬:‫ﻧﮑﺘﻪ‬
.‫ را ﺣﺬف ﮐﻨﯿﺪ ﻫﻤﻪ رﮐﻮردﻫﺎ ﺣﺬف ﺧﻮاﻫﻨﺪ ﺷﺪ‬WHERE ‫ اﮔﺮ ﺷﻤﺎ ﻋﺒﺎرت‬.‫ﺷﻮﻧﺪ‬

SQL ‫ در‬DELETE ‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

16
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes


2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

4 Nilsen Johan Bakken 2 Stavanger


5 Tjessem Jakob Nissestien 67 Sandnes

.‫" ﺣﺬف ﮐﻨﯿﻢ‬Persons" ‫" را از ﺟﺪول‬Tjessem, Jakob" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﺷﺨﺺ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از ﺟﻤﻠﻪ‬

DELETE FROM Persons


WHERE LastName='Tjessem' AND FirstName='Jakob'

:‫“ اﮐﻨﻮن ﺷﺒﯿﻪ اﯾﻦ اﺳﺖ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger

‫ﺣﺬف ﻫﻤﻪ ﺳﻄﺮﻫﺎ‬

‫ وﯾﮋﮔﯽ ﻫﺎ و ﻓﻬﺮﺳﺖ ﻫﺎي ﺟﺪول‬،‫ ﺑﻪ اﯾﻦ ﻣﻌﻨﯽ ﮐﻪ ﺳﺎﺧﺘﺎر‬.‫ﺣﺬف ﮐﺮدن ﻫﻤﻪ ﺳﻄﺮﻫﺎ در ﯾﮏ ﺟﺪول ﺑﺪون ﺣﺬف ﺟﺪول ﻣﻤﮑﻦ اﺳﺖ‬
.‫دﺳﺖ ﻧﺨﻮرده ﺑﺎﻗﯽ ﺧﻮاﻫﻨﺪ ﻣﺎﻧﺪ‬

DELETE FROM table_name

or

DELETE * FROM table_name

!‫ اﯾﻦ ﻋﺒﺎرت را ﻧﻤﯽ ﺗﻮاﻧﯿﺪ ﺧﻨﺜﯽ ﮐﻨﯿﺪ‬.‫ وﻗﺘﯽ رﮐﻮردﻫﺎ را ﺣﺬف ﻣﯽ ﮐﻨﯿﺪ ﺧﯿﻠﯽ ﻣﺮاﻗﺐ ﺑﺎﺷﯿﺪ‬:‫ﻧﮑﺘﻪ‬

17
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻓﺼﻞ دوم ‪ -‬دﺳﺘﻮرات ﭘﯿﺸﺮﻓﺘﻪ‬

‫ﻋﺒﺎرت ‪ TOP‬در ‪SQL‬‬

‫ﻋﺒﺎرت ‪ TOP‬در ‪ SQL‬ﺑﺮاي ﺗﻌﯿﯿﻦ ﺗﻌﺪادي از رﮐﻮردﻫﺎ ﺑﺮاي ﺑﺮﮔﺮداﻧﺪن‪ ،‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ‪.‬‬

‫ﻋﺒﺎرت ‪ TOP‬در ﺟﺪول ﻫﺎي ﺑﺰرگ ﺑﺎ ﻫﺰاران رﮐﻮرد ﻣﯽ ﺗﻮاﻧﺪ ﺑﺴﯿﺎر ﻣﻔﯿﺪ ﺑﺎﺷﺪ‪ .‬ﺑﺮﮔﺮداﻧﺪن ﺗﻌﺪاد زﯾﺎدي از رﮐﻮردﻫﺎ ﻣﯽ ﺗﻮاﻧﺪ‬
‫ﻋﻤﻠﮑﺮد را ﺗﺤﺖ ﻓﺸﺎر ﻗﺮار دﻫﺪ‪.‬‬

‫ﻧﮑﺘﻪ‪ :‬ﻫﻤﻪ ي ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده از ﻋﺒﺎرت ‪ TOP‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻧﻤﯽ ﮐﻨﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪SQL Server‬‬

‫)‪SELECT TOP number|percent column_name(s‬‬


‫‪FROM table_name‬‬

‫ﻣﻌﺎدل ‪ SELECT TOP‬در ‪ Oracle‬و ‪MySQL‬‬

‫ﮔﺮاﻣﺮ ‪MySQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪LIMIT number‬‬

‫ﻣﺜﺎل ‪:‬‬

‫* ‪SELECT‬‬
‫‪FROM Persons‬‬
‫‪LIMIT 5‬‬

‫ﮔﺮاﻣﺮ ‪Oracle‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE ROWNUM <= number‬‬

‫ﻣﺜﺎل ‪:‬‬

‫‪18‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT *
FROM Persons
WHERE ROWNUM <=5

SQL ‫ در‬TOP ‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Tom Vingvn 23 Stavanger

. ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ دو رﮐﻮرد اول از ﺟﺪول ﺑﺎﻻ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT TOP 2 * FROM Persons

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

SQL ‫ در‬TOP PERCENT ‫ﻣﺜﺎل‬

:“Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Tom Vingvn 23 Stavanger

.‫ از ﺟﺪول ﺑﺎﻻ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬50% ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻓﻘﻂ‬

: ‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT TOP 50 PERCENT * FROM Persons

19
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫ﻋﻤﻠﮕﺮ ‪ LIKE‬در ‪SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ LIKE‬در ﯾﮏ ﻋﺒﺎرت ‪ ،WHERE‬ﻋﺒﺎرﺗﯽ اﺳﺖ ﮐﻪ ﺑﺮاي ﺟﺴﺘﺠﻮي ﯾﮏ اﻟﮕﻮي ﺗﻌﯿﯿﻦ ﺷﺪه در ﯾﮏ ﺳﺘﻮن اﺳﺘﻔﺎده ﻣﯽ‬
‫ﺷﻮد‪.‬‬

‫ﻋﻤﻠﮕﺮ ‪LIKE‬‬

‫ﻋﻤﻠﮕﺮ ‪ LIKE‬ﺑﺮاي ﺟﺴﺘﺠﻮي ﯾﮏ اﻟﮕﻮي ﺗﻌﯿﯿﻦ ﺷﺪه در ﯾﮏ ﺳﺘﻮن اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ LIKE‬در ‪SQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE column_name LIKE pattern‬‬

‫ﻣﺜﺎل ﻋﻤﻠﮕﺮ ‪LIKE‬‬

‫ﺟﺪول ”‪:“Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ اﺷﺨﺎﺻﯽ را ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آن ﻫﺎ ﺑﺎ "‪ "s‬ﺷﺮوع ﻣﯽ ﺷﻮد را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE 's%‬‬

‫ﻋﻼﻣﺖ "‪ "%‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﺗﻌﺮﯾﻒ ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ) ﺣﺮوف ﻧﺎﭘﯿﺪا در اﻟﮕﻮ ( ﻗﺒﻞ و ﺑﻌﺪ از اﻟﮕﻮ اﺳﺘﻔﺎده ﺷﻮد ‪.‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪20‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

P_Id LastName FirstName Address City


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

.‫" ﭘﺎﯾﺎن ﻣﯽ ﯾﺎﺑﺪ‬s" ‫" اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آﻧﻬﺎ ﺑﺎ‬persons" ‫ﺳﭙﺲ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT * FROM Persons


WHERE City LIKE '%s'

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

.‫" ﺑﺎﺷﺪ‬tav" ‫" اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آﻧﻬﺎ ﺷﺎﻣﻞ اﻟﮕﻮي‬persons" ‫ﺳﭙﺲ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT * FROM Persons


WHERE City LIKE '%tav%'

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


3 Pettersen Kari Storgt 20 Stavanger

‫“ اﺷﺨﺎﺻﯽ ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آﻧﻬﺎ ﺷﺎﻣﻞ اﻟﮕﻮي‬Persons” ‫ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺟﺪول‬NOT ‫ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﺳﺘﻔﺎده از ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫“ ﻧﯿﺴﺖ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬tav”

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT‫از دﺳﺘﻮر‬

SELECT * FROM Persons


WHERE City NOT LIKE '%tav%'

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

21
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪SQL‬‬


‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪ ،SQL‬ﻫﻨﮕﺎم ﺟﺴﺘﺠﻮي داده در ﯾﮏ ﭘﺎﯾﮕﺎه داده ﻣﯽ ﺗﻮاﻧﻨﺪ اﺳﺘﻔﺎده ﺷﻮﻧﺪ‪.‬‬

‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪SQL‬‬

‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪ ،SQL‬ﻫﻨﮕﺎم ﺟﺴﺘﺠﻮي داده در ﯾﮏ ﭘﺎﯾﮕﺎه داده ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﯾﺎ ﭼﻨﺪ ﮐﺎراﮐﺘﺮ را ﺟﺎﯾﮕﺰﯾﻦ ﮐﻨﺪ‪.‬‬

‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪ SQL‬ﺑﺎﯾﺪ ﻫﻤﺮاه ﺑﺎ ﻋﻤﻠﮕﺮ ‪ LIKE‬اﺳﺘﻔﺎده ﺷﻮﻧﺪ‪.‬‬

‫از ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه زﯾﺮ ﻣﯽ ﺗﻮان در ‪ SQL‬اﺳﺘﻔﺎده ﮐﺮد‪:‬‬

‫ﺗﻌﺮﯾﻒ‬ ‫ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه‬

‫ﯾﮏ ﺟﺎﻧﺸﯿﻦ ﺑﺮاي ﺻﻔﺮ ﯾﺎ ﮐﺎراﮐﺘﺮﻫﺎي ﺑﯿﺸﺘﺮ‬ ‫‪%‬‬


‫ﯾﮏ ﺟﺎﻧﺸﯿﻦ ﺑﺮاي دﻗﯿﻘﺎ ﯾﮏ ﮐﺎراﮐﺘﺮ‬ ‫_‬
‫ﻫﺮ ﮐﺎراﮐﺘﺮ ﺗﻨﻬﺎ در ‪) Charlist‬ﻟﯿﺴﺖ ﮐﺎراﮐﺘﺮﻫﺎ(‬ ‫]‪[charlist‬‬
‫ﻫﺮﮐﺎراﮐﺘﺮ ﺗﻨﻬﺎ ﮐﻪ در ‪ Charlist‬ﻧﺒﺎﺷﺪ‬ ‫]‪[^charlist‬‬

‫ﯾﺎ‬

‫]‪[!charlist‬‬

‫ﻣﺜﺎل ﮐﺎراﮐﺘﺮﻫﺎي ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪SQL‬‬

‫ﺟﺪول ”‪ “Persons‬زﯾﺮ را دارﯾﻢ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﺳﺘﻔﺎده از ﮐﺎراﮐﺘﺮ ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ‪%‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول"‪ "persons‬اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آﻧﻬﺎ ﺑﺎ "‪ "sa‬ﺷﺮوع ﻣﯽ ﺷﻮد‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE 'sa%‬‬

‫‪22‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫ﺳﭙﺲ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول "‪ "persons‬اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﺷﻬﺮ زﻧﺪﮔﯽ آﻧﻬﺎ ﺷﺎﻣﻞ اﻟﮕﻮي "‪ "nes‬ﺑﺎﺷﺪ ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE City LIKE '%nes%‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫اﺳﺘﻔﺎده از ﮐﺎراﮐﺘﺮ ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه _‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول "‪ "Persons‬اﺷﺨﺎﺻﯽ ﮐﻪ ﻧﺎم آﻧﻬﺎ ﺑﺎ ﻫﺮ ﮐﺎراﮐﺘﺮي ﺷﺮوع ﻣﯽ ﺷﻮد و ﺑﺎ "‪ "la‬اداﻣﻪ ﻣﯽ ﯾﺎﺑﺪ را‬
‫اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE FirstName LIKE '_la‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬

‫ﺳﭙﺲ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول "‪ "persons‬اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ آن ﻫﺎ ﺑﺎ "‪ "s‬ﺷﺮوع ﻣﯽ ﺷﻮد و ﺑﺎ ﻫﺮ‬
‫ﮐﺎراﮐﺘﺮ‪ ،"end" ،‬ﻫﺮ ﮐﺎراﮐﺘﺮ و "‪ "on‬اداﻣﻪ ﻣﯽ ﯾﺎﺑﺪ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE LastName LIKE 'S_end_on‬‬

‫‪23‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫اﺳﺘﻔﺎده از ﮐﺎراﮐﺘﺮ ﺟﺎﯾﮕﺰﯾﻦ ﺷﻮﻧﺪه ]‪[charlist‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول "‪ "persons‬اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ آن ﻫﺎ ﺑﺎ "‪"s‬ﯾﺎ "‪ "b‬ﯾﺎ "‪ "p‬ﺷﺮوع ﻣﯽ‬
‫ﺷﻮد‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE LastName LIKE '[bsp]%‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫ﺳﭙﺲ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول "‪ "persons‬اﺷﺨﺎﺻﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ آن ﻫﺎ ﺑﺎ "‪ "s‬ﯾﺎ "‪ "b‬ﯾﺎ "‪ "p‬ﺷﺮوع‬
‫ﻧﻤﯽ ﺷﻮد ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫'‪WHERE LastName LIKE '[!bsp]%‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬

‫ﻋﻤﻠﮕﺮ ‪ IN‬در ‪SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ IN‬ﺑﻪ ﺷﻤﺎ اﺟﺎزه ﻣﯽ دﻫﺪ ﻣﻘﺎدﯾﺮ ﭼﻨﺪﮔﺎﻧﻪ در ﻋﺒﺎرت ‪ WHERE‬ﺗﻌﯿﯿﻦ ﮐﻨﯿﺪ ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ IN‬در ‪SQL‬‬

‫‪24‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

IN ‫ﻣﺜﺎﻟﯽ از ﻋﻤﻠﮕﺮ‬

:"Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

‫" اﺳﺖ را اﻧﺘﺨﺎب‬pettersen" ‫" ﯾﺎ‬Hansen" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ اﺷﺨﺎﺻﯽ را ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ آن ﻫﺎ ﺑﺮاﺑﺮ ﺑﺎ‬
.‫ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT * FROM Persons


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

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

SQL ‫ در‬BETWEEN ‫ﻋﻤﻠﮕﺮ‬

.‫ ﺑﺮاي اﻧﺘﺨﺎب ﯾﮏ داﻣﻨﻪ از داده ﺑﯿﻦ ﻣﻘﺪار اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬،WHERE ‫ در ﯾﮏ ﻋﺒﺎرت‬BETWEEN ‫ﻋﻤﻠﮕﺮ‬

BETWEEN ‫ﻋﻤﻠﮕﺮ‬

.‫ ﻣﺘﻦ ﯾﺎ داده ﺑﺎﺷﺪ‬،‫ ﻣﻘﺎدﯾﺮ ﻣﯽ ﺗﻮاﻧﻨﺪ اﻋﺪاد‬.‫ داﻣﻨﻪ اي از داده ﻫﺎ را از ﺑﯿﻦ دو ﻣﻘﺪار اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‬BETWEEN ‫ﻋﻤﻠﮕﺮ‬

SQL ‫ در‬BETWEEN ‫ﮔﺮاﻣﺮ‬

25
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE column_name‬‬
‫‪BETWEEN value1 AND value2‬‬

‫ﻣﺜﺎل ﻋﻤﻠﮕﺮ ‪BETWEEN‬‬

‫ﺟﺪول "‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ اﺷﺨﺎﺻﯽ را ﮐﻪ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ آن ﻫﺎ ﺑﻪ ﺻﻮرت ﺣﺮوف اﻟﻔﺒﺎ ﺑﯿﻦ "‪ "Hansen‬و "‪"pettersen‬‬
‫اﺳﺖ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫‪WHERE LastName‬‬
‫'‪BETWEEN 'Hansen' AND 'Pettersen‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬

‫ﺗﺬﮐﺮ‪ :‬ﻋﻤﻠﮕﺮ ‪ BETWEEN‬در ﭘﺎﯾﮕﺎه داده ﻫﺎي ﻣﺨﺘﻠﻒ ﺑﻪ ﻃﻮر ﻣﺘﻔﺎوت ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫در ﺑﻌﻀﯽ از ﭘﺎﯾﮕﺎه داده ﻫﺎ‪ ،‬اﺷﺨﺎﺻﯽ ﺑﺎ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ "‪ "Hansen‬ﯾﺎ "‪ "Pettersen‬ﻟﯿﺴﺖ ﻧﻤﯽ ﺷﻮﻧﺪ؛ زﯾﺮا‬
‫ﻋﻤﻠﮕﺮ ‪ BETWEEN‬ﻓﻘﻂ ﻓﯿﻠﺪﻫﺎﯾﯽ ﮐﻪ ﺑﯿﻦ آن ﻫﺎ ﻫﺴﺘﻨﺪ )ﺑﺎﺳﺘﺜﻨﺎي ﻣﻘﺎدﯾﺮ ﺗﺴﺖ( را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‪.‬‬

‫در دﯾﮕﺮ ﭘﺎﯾﮕﺎه داده ﻫﺎ‪ ،‬اﺷﺨﺎﺻﯽ ﺑﺎ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ "‪ "Hansen‬ﯾﺎ "‪ "pettersen‬ﻟﯿﺴﺖ ﻣﯽ ﺷﻮﻧﺪ‪ ،‬زﯾﺮا ﻋﻤﻠﮕﺮ ‪BETWEEN‬‬
‫ﻓﯿﻠﺪﻫﺎﯾﯽ ﮐﻪ ﺑﯿﻦ و ﺷﺎﻣﻞ آن ﻫﺎ ﻫﺴﺘﻨﺪ را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‪.‬‬

‫و در ﺑﺮﺧﯽ دﯾﮕﺮ‪ ،‬اﺷﺨﺎﺻﯽ ﺑﺎ ﻧﺎم ﺧﺎﻧﻮادﮔﯽ "‪ "Hansen‬در ﻟﯿﺴﺖ ﻫﺴﺘﻨﺪ اﻣﺎ "‪ "pattersen‬در ﻟﯿﺴﺖ ﻧﯿﺴﺖ )ﺷﺒﯿﻪ ﻣﺜﺎل‬
‫ﺑﺎﻻ( ‪ ،‬زﯾﺮا ﻋﻤﻠﮕﺮ ‪ BETWEEN‬ﻓﯿﻠﺪﻫﺎي ﺑﯿﻦ ﻣﻘﺎدﯾﺮ ﺗﺴﺖ و اوﻟﯿﻦ ﻣﻘﺪار ﺗﺴﺖ را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ )ﺑﺎﺳﺘﺜﻨﺎي ﻣﻘﺪار آﺧﺮ ﺗﺴﺖ(‪.‬‬

‫ﺑﻨﺎﺑﺮاﯾﻦ‪ :‬رﻓﺘﺎر ﭘﺎﯾﮕﺎه داده ﺧﻮد را ﺑﺎ ﻋﻤﻠﮕﺮ ‪ BETWEEN‬ﭼﮏ ﮐﻨﯿﺪ‪.‬‬

‫ﻣﺜﺎل ‪2‬‬
‫‪26‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺑﺮاي ﻧﻤﺎﯾﺶ اﺷﺨﺎﺻﯽ ﮐﻪ ﺑﯿﺮون از داﻣﻨﻪ ﻣﺜﺎل ﻗﺒﻞ ﻫﺴﺘﻨﺪ‪ ،‬از ‪ NOT BETWEEN‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪SELECT * FROM Persons‬‬


‫‪WHERE LastName‬‬
‫'‪NOT BETWEEN 'Hansen' AND 'Pettersen‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫‪ Alias‬در ‪SQL‬‬

‫ﺑﺎ ‪ ، SQL‬ﯾﮏ ﻧﺎم ﻣﺴﺘﻌﺎر ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﺟﺪول ﯾﺎ ﯾﮏ ﺳﺘﻮن داده ﺷﻮد‪.‬‬

‫‪ Alias‬در ‪SQL‬‬

‫ﻣﯽ ﺗﻮاﻧﯿﺪ ﯾﮏ ﺟﺪول ﯾﺎ ﯾﮏ ﺳﺘﻮن را ﺑﺎ ﻧﺎم دﯾﮕﺮ‪ ،‬ﺑﺎ اﺳﺘﻔﺎده از ‪) Alias‬ﻧﺎم ﻣﺴﺘﻌﺎر( ﻣﻌﯿﻦ ﮐﻨﯿﺪ ‪ .‬اﯾﻦ ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﭼﯿﺰ ﺧﻮب‬
‫ﺑﺮاي ﻧﺎم ﺟﺪول ﭘﯿﭽﯿﺪه ﯾﺎ ﻧﺎم ﺳﺘﻮن ﻃﻮﻻﻧﯽ ﺑﺎﺷﺪ‪.‬‬

‫ﯾﮏ ﻧﺎم ‪ Alias‬ﻫﺮ ﭼﯿﺰي ﻣﯽ ﺗﻮاﻧﺪ ﺑﺎﺷﺪ اﻣﺎ ﻣﻌﻤﻮﻻ ﮐﻮﺗﺎه اﺳﺖ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ Alias‬در ‪ SQL‬ﺑﺮاي ﺟﺪول ﻫﺎ‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪AS alias_name‬‬

‫ﮔﺮاﻣﺮ ‪ Alias‬در ‪ SQL‬ﺑﺮاي ﺳﺘﻮن ﻫﺎ‬

‫‪SELECT column_name AS alias_name‬‬


‫‪FROM table_name‬‬

‫ﻣﺜﺎل ‪Alias‬‬

‫ﻓﺮض ﮐﻨﯿﺪ ﯾﮏ ﺟﺪول ﺑﻨﺎم "‪ "persons‬و ﺟﺪوﻟﯽ دﯾﮕﺮ ﺑﻨﺎم "‪ "Product_Orders‬دارﯾﻢ‪ Alias .‬ﺟﺪول را ﺑﻪ ﺗﺮﺗﯿﺐ "‪"p‬‬
‫و "‪ "po‬ﻣﻌﯿﻦ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ ﺳﻔﺎرﺷﺎﺗﯽ ﮐﻪ "‪ "Ola Hansen‬ﻣﺴﺌﻮل آن ﻫﺴﺖ را ﻟﯿﺴﺖ ﮐﻨﯿﻢ‪.‬‬

‫‪27‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ SELECT:‬از دﺳﺘﻮر‬

‫‪SELECT po.OrderID, p.LastName, p.FirstName‬‬


‫‪FROM Persons AS p,‬‬
‫‪Product_Orders AS po‬‬
‫'‪WHERE p.LastName='Hansen' AND p.FirstName='Ola‬‬

‫ﻋﺒﺎرت ‪ SELECT‬ﻣﺸﺎﺑﻪ ﺑﺪون ﻧﺎم ﻫﺎي ﻣﺴﺘﻌﺎر‪:‬‬

‫‪SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName‬‬


‫‪FROM Persons,‬‬
‫‪Product_Orders‬‬
‫'‪WHERE Persons.LastName='Hansen' AND Persons.FirstName='Ola‬‬

‫ﻫﻤﺎﻧﻄﻮر ﮐﻪ از دو ﻋﺒﺎرت ‪ SELECT‬ﺑﺎﻻ ﻣﯽ ﺑﯿﻨﯿﺪ‪ ،‬ﻧﺎم ﻣﺴﺘﻌﺎر ﻣﯽ ﺗﻮاﻧﺪ ﭘﺮس و ﺟﻮ را ﻫﻢ ﺑﺮاي ﻧﻮﺷﺘﻦ و ﻫﻢ ﺑﺮاي ﺧﻮاﻧﺪن‬
‫آﺳﺎﻧﺘﺮ ﮐﻨﺪ‪.‬‬

‫‪ JOIN‬ﻫﺎ در ‪SQL‬‬

‫‪ JOIN‬ﻫﺎ در ‪ SQL‬ﺑﺮاي ﭘﺮس و ﺟﻮي داده از دو ﯾﺎ ﭼﻨﺪ ﺟﺪول‪ ،‬ﻣﺒﻨﯽ ﺑﺮ ﯾﮏ راﺑﻄﻪ ﺑﯿﻦ ﺑﺮﺧﯽ ﺳﺘﻮن ﻫﺎ در اﯾﻦ ﺟﺪول ﻫﺎ‬
‫اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫‪ JOIN‬در ‪SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ JOIN‬ﺑﺮاي ﭘﺮس و ﺟﻮي داده از دو ﯾﺎ ﭼﻨﺪ ﺟﺪول در ﯾﮏ ﻋﺒﺎرت ‪ ،SQL‬ﻣﺒﻨﯽ ﺑﺮ ﯾﮏ راﺑﻄﻪ ﺑﯿﻦ ﺑﺮﺧﯽ ﺳﺘﻮن ﻫﺎ‬
‫در اﯾﻦ ﺟﺪول ﻫﺎ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﺟﺪول ﻫﺎ در ﯾﮏ ﭘﺎﯾﮕﺎه داده اﻏﻠﺐ ﺑﺎ ﮐﻠﯿﺪﻫﺎ ﺑﺎ ﯾﮑﺪﯾﮕﺮ ﻣﺮﺗﺒﻂ ﻫﺴﺘﻨﺪ‪.‬‬

‫ﮐﻠﯿﺪ اﺻﻠﯽ )‪ (Primary Key‬ﯾﮏ ﺳﺘﻮن )ﯾﺎ ﺗﺮﮐﯿﺒﯽ از ﺳﺘﻮن ﻫﺎ( ﺑﺎ ﯾﮏ ﻣﻘﺪار ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﺮاي ﻫﺮ ﺳﻄﺮ اﺳﺖ‪ .‬ﻫﺮ ﻣﻘﺪار‬
‫ﮐﻠﯿﺪ اﺻﻠﯽ ﺑﺎﯾﺪ در داﺧﻞ ﺟﺪول‪ ،‬ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﺎﺷﺪ‪ .‬ﻫﺪف ﭼﺴﺒﺎﻧﺪن داده ﻫﺎ ﺑﻪ ﯾﮑﺪﯾﮕﺮ‪ ،‬در ﺳﺮاﺳﺮ ﺟﺪول ﻫﺎ‪ ،‬ﺟﻠﻮﮔﯿﺮي از‬
‫ﺗﮑﺮار ﻫﻤﻪ داده ﻫﺎ در ﻫﺮ ﺟﺪول اﺳﺖ‪.‬‬

‫ﺟﺪول "‪"Persons‬را ﺑﺒﯿﻨﯿﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫‪28‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺳﺘﻮن "‪ "P_Id‬ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ در ﺟﺪول "‪ "persons‬اﺳﺖ‪ .‬ﺑﻪ اﯾﻦ ﻣﻌﻨﺎ ﮐﻪ دو ﺳﻄﺮ‪ ،‬ﻣﻘﺪار "‪ "P_Id‬ﯾﮑﺴﺎن‬
‫ﻧﻤﯽ ﺗﻮاﻧﻨﺪ داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ P_Id .‬دو ﺷﺨﺺ را ﻣﺘﻤﺎﯾﺰ ﻣﯽ ﻧﻤﺎﯾﺪ؛ ﺣﺘﯽ اﮔﺮ آن ﻫﺎ ﻧﺎم ﯾﮑﺴﺎﻧﯽ داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﭘﺲ ﺟﺪول "‪"Order‬را دارﯾﻢ‪:‬‬

‫‪O_Id‬‬ ‫‪OrderNo‬‬ ‫‪P_Id‬‬


‫‪1‬‬ ‫‪77895‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪44678‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪22456‬‬ ‫‪1‬‬
‫‪4‬‬ ‫‪24562‬‬ ‫‪1‬‬
‫‪5‬‬ ‫‪34764‬‬ ‫‪15‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺳﺘﻮن "‪"O-Id‬ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ در ﺟﺪول"‪ "Orders‬اﺳﺖ و ﺳﺘﻮن "‪ "p-Id‬را ﺑﻪ ﺟﺪول "‪ "Persons‬ﺑﺪون‬
‫اﺳﺘﻔﺎده از ﻧﺎم آﻧﻬﺎ ارﺟﺎع ﻣﯽ دﻫﺪ‪.‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ راﺑﻄﻪ ﺑﯿﻦ دو ﺟﺪول ﺑﺎﻻ‪ ،‬ﺳﺘﻮن"‪ "P-Id‬اﺳﺖ‪.‬‬

‫‪ JOIN‬ﻫﺎي ﻣﺨﺘﻠﻒ در ‪SQL‬‬

‫ﻗﺒﻞ از اﯾﻨﮑﻪ ﺑﺎ ﻣﺜﺎل ﻫﺎ اداﻣﻪ دﻫﯿﻢ ‪ ،‬اﻧﻮاع ‪ JOIN‬ﻫﺎﯾﯽ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ اﺳﺘﻔﺎده ﮐﻨﯿﺪ و ﺗﻔﺎوت ﺑﯿﻦ آن ﻫﺎ را ﻟﯿﺴﺖ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪ :JOIN‬ﺳﻄﺮﻫﺎ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪ ،‬وﻗﺘﯽ ﮐﻪ ﺣﺪاﻗﻞ ﯾﮏ ﺗﻄﺎﺑﻖ در ﻫﺮ دو ﺟﺪول داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫‪ :LEFT JOIN‬ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول ﭼﭗ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮ آن در ﺟﺪول راﺳﺖ ﻧﺒﺎﺷﺪ‪.‬‬

‫‪ :RIGHT JOIN‬ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول راﺳﺖ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮ آن در ﺟﺪول ﭼﭗ ﻧﺒﺎﺷﺪ‪.‬‬

‫‪ :FULL JOIN‬ﺳﻄﺮﻫﺎ را زﻣﺎﻧﯽ ﮐﻪ ﻧﻈﯿﺮش در ﯾﮑﯽ از ﺟﺪول ﻫﺎ ﺑﺎﺷﺪ‪ ،‬ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ INNER JOIN‬در ‪SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ INNER JOIN‬در ‪SQL‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ INNER JOIN‬ﺳﻄﺮ ﻫﺎ را زﻣﺎﻧﯽ ﮐﻪ ﺣﺪاﻗﻞ ﯾﮏ ﺗﻄﺎﺑﻖ در دو ﺟﺪول وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ INNER JOIN‬در ‪SQL‬‬

‫)‪SELECT column_name(s‬‬
‫‪FROM table_name1‬‬
‫‪INNER JOIN table_name2‬‬
‫‪ON table_name1.column_name=table_name2.column_name‬‬
‫‪29‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫ ﯾﮑﺴﺎن اﺳﺖ‬JOIN ‫ ﺑﺎ‬INNER JOIN :‫ﭘﺎﻧﻮﺷﺘﻪ‬

SQL ‫ در‬INNER JOIN ‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

:"Orders" ‫ﺟﺪول‬

O_Id OrderNo P_Id


1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

.‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ اﺷﺨﺎﺻﯽ را ﺑﺎ ﻫﺮ ﺳﻔﺎرﺷﯽ ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo


FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678

‫ اﮔﺮ ﺳﻄﺮﻫﺎﯾﯽ در‬.‫ ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ‬،‫ ﺳﻄﺮ ﻫﺎ را زﻣﺎﻧﯽ ﮐﻪ ﺣﺪاﻗﻞ در دو ﺟﺪول ﻧﻈﯿﺮ ﻫﺴﺘﻨﺪ‬INNER JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫ آن ﺳﻄﺮﻫﺎ ﻟﯿﺴﺖ ﻧﻤﯽ ﺷﻮﻧﺪ‬،‫" ﻧﯿﺴﺖ‬Orders" ‫" ﻫﺴﺘﻨﺪ ﮐﻪ ﻧﻈﯿﺮﺷﺎن در‬Persons"

30
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL ‫ در‬LEFT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

SQL ‫ در‬LEFT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

‫(؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮش در ﺟﺪول راﺳﺖ‬table_name1) ‫ ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول ﭼﭗ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬LEFT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫( وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‬table_name2)

SQL ‫ در‬LEFT JOIN ‫ﮔﺮاﻣﺮ‬

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

.‫ ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد‬LEFT OUTER JOIN ،LEFT JOIN ‫ در ﺑﻌﻀﯽ از ﭘﺎﯾﮕﺎه داده ﻫﺎ‬:‫ﭘﺎﻧﻮﺷﺘﻪ‬

SQL LEFT JOIN‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

:"Orders" ‫ﺟﺪول‬

O_Id OrderNo P_Id


1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

.‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ ﻫﻤﻪ اﺷﺨﺎص را ﺑﺎ ﺳﻔﺎرﺷﺎﺗﺸﺎن )در ﺻﻮرت وﺟﻮد( ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

31
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo


FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove

‫(؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮش درﺟﺪول راﺳﺖ‬persons) ‫ ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول ﭼﭗ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬LEFT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫( وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‬orders)

SQL ‫ در‬RIGHT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

SQL ‫ در‬RIGHT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

‫(؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮش درﺟﺪول‬table_name2) ‫ ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول راﺳﺖ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬RIGHT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫( وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‬table_name1) ‫ﭼﭗ‬

SQL ‫ در‬RIGHT JOIN ‫ﮔﺮاﻣﺮ‬

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

.‫ ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد‬RIGHT OUTER JOIN، RIGHT JOIN ‫ در ﺑﻌﻀﯽ از ﭘﺎﯾﮕﺎه داده ﻫﺎ‬:‫ﭘﺎﻧﻮﺷﺘﻪ‬

SQL ‫ در‬RIGHT JOIN ‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

32
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

P_Id LastName FirstName Address City


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

: "Orders" ‫ﺟﺪول‬

O_Id OrderNo P_Id


1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

.‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ ﻫﻤﻪ ﺳﻔﺎرﺷﺎت ﺑﺎ ﻣﺸﺨﺼﺎت اﺷﺨﺎص )در ﺻﻮرت وﺟﻮد( را ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo


FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
34764

‫(؛ ﺣﺘﯽ اﮔﺮ ﻧﻈﯿﺮش در ﺟﺪول ﭼﭗ‬Orders) ‫ ﺗﻤﺎم ﺳﻄﺮﻫﺎي ﺟﺪول راﺳﺖ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬RIGHT JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
.‫( وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‬Persons)

SQL ‫ در‬FULL JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

SQL ‫ در‬FULL JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬

. ‫ ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬،‫ ﺳﻄﺮﻫﺎ را زﻣﺎﻧﯽ ﮐﻪ ﻧﻈﯿﺮﺷﺎن در ﯾﮑﯽ از ﺟﺪول ﻫﺎ ﺑﺎﺷﺪ‬FULL JOIN ‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬
33
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL ‫ در‬FULL JOIN ‫ﮔﺮاﻣﺮ‬

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

SQL ‫ در‬FULL JOIN ‫ﻣﺜﺎل‬

:"Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

:"Orders" ‫ﺟﺪول‬

O_Id OrderNo P_Id


1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

.‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ اﺷﺨﺎص ﺑﺎ ﺳﻔﺎرﺷﺎﺗﺸﺎن و ﻫﻤﻪ ﺳﻔﺎرﺷﺎت ﺑﺎ اﺷﺨﺎص را ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo


FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895

34
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪44678‬‬


‫‪Svendson‬‬ ‫‪Tove‬‬
‫‪34764‬‬

‫ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ FULL JOIN‬ﻫﻤﻪ ﺳﻄﺮﻫﺎ را از ﺟﺪول ﭼﭗ)‪ (persons‬و ﻫﻤﻪ ﺳﻄﺮﻫﺎ از ﺟﺪول راﺳﺖ)‪ (orders‬ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ‪.‬‬

‫اﮔﺮ ﺳﻄﺮﻫﺎﯾﯽ در"‪ "Persons‬وﺟﻮد دارد ﮐﻪ ﻧﻈﯿﺮش در"‪ "Orders‬ﻧﯿﺴﺖ‪ ،‬ﯾﺎ اﮔﺮ ﺳﻄﺮﻫﺎﯾﯽ در "‪ "Orders‬وﺟﻮد دارد ﮐﻪ‬
‫ﻧﻈﯿﺮش در "‪ "Persons‬ﻧﯿﺴﺖ‪ ،‬آن ﺳﻄﺮﻫﺎ ﻧﯿﺰ ﻟﯿﺴﺖ ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﻋﻤﻠﮕﺮ ‪ UNION‬در ‪SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ UNION‬در ‪ SQL‬دو ﯾﺎ ﭼﻨﺪ دﺳﺘﻮر ‪ SELECT‬را ﺗﺮﮐﯿﺐ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﻋﻤﻠﮕﺮ ‪ UNION‬در ‪SQL‬‬

‫ﻋﻤﻠﮕﺮ ‪ UNION‬ﺑﺮاي ﺗﺮﮐﯿﺐ ﺟﺪول ﻧﺘﯿﺠﻪ‪ ،‬از دو ﯾﺎ ﭼﻨﺪ ﻋﺒﺎرت‪ SELECT‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﻫﺮ ﻋﺒﺎرت ‪ SELECT‬در داﺧﻞ ‪ UNION‬ﺑﺎﯾﺪ ﺗﻌﺪاد ﯾﮑﺴﺎﻧﯽ از ﺳﺘﻮن ﻫﺎ را داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺳﺘﻮن ﻫﺎ ﺑﺎﯾﺪ‬
‫ﻫﻤﺎﻧﻨﺪ اﻧﻮاع داده ﻫﺎي ﻣﺸﺎﺑﻪ داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺳﺘﻮن ﻫﺎ در ﻫﺮ ﻋﺒﺎرت ﻣﺸﺎﺑﻪ ﺑﺎﯾﺪ ﺗﺮﺗﯿﺐ ﯾﮑﺴﺎن داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ UNION‬در ‪SQL‬‬

‫‪SELECT column_name(s) FROM table_name1‬‬


‫‪UNION‬‬
‫‪SELECT column_name(s) FROM table_name2‬‬

‫ﺗﻮﺟﻪ‪ :‬ﻋﻤﻠﮕﺮ ‪ UNION‬ﺑﻪ ﺻﻮرت ﭘﯿﺶ ﻓﺮض ﻓﻘﻂ ﻣﻘﺎدﯾﺮ ﻣﺘﻤﺎﯾﺰ را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‪ .‬از ‪ UNION ALL‬ﺑﺮاي اﺟﺎزه دادن ﺑﻪ‬
‫ﻣﻘﺎدﯾﺮ ﺗﮑﺮاري اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ UNION ALL‬در ‪SQL‬‬

‫‪SELECT column_name(s) FROM table_name1‬‬


‫‪UNION ALL‬‬
‫‪SELECT column_name(s) FROM table_name2‬‬

‫ﭘﺎﻧﻮﺷﺘﻪ‪ :‬ﻧﺎم ﺳﺘﻮﻧﻬﺎ در ﺟﺪول ﻧﺘﯿﺠﻪ ‪ UNION‬ﻫﻤﯿﺸﻪ ﺑﺮاﺑﺮ ﺑﺎ ﻧﺎم ﺳﺘﻮﻧﻬﺎ در اوﻟﯿﻦ ﻋﺒﺎرت ‪ SELECT‬در ‪ UNION‬اﺳﺖ‪.‬‬

‫ﻣﺜﺎل ‪ UNION‬در ‪SQL‬‬


‫ﺑﻪ ﺟﺪاول زﯾﺮ ﻧﮕﺎه ﮐﻨﯿﺪ‪:‬‬

‫‪"Employees_Norway":‬‬
‫‪35‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

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

.‫ را ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬USA ‫ و‬Norway ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ ﮐﺎرﻣﻨﺪﻫﺎي ﻣﺨﺘﻠﻒ در‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SELECT ‫از دﺳﺘﻮر‬

SELECT E_Name FROM Employees_Norway


UNION
SELECT E_Name FROM Employees_USA

:‫ﺟﺪول ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

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

‫ در ﻣﺜﺎل ﺑﺎﻻ ﮐﺎرﻣﻨﺪ ﺑﺎ ﻧﺎم‬. ‫ اﺳﺘﻔﺎده ﺷﻮد‬USA ‫ و‬Norway ‫ اﯾﻦ دﺳﺘﻮر ﻧﻤﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﻟﯿﺴﺖ ﮐﺮدن ﻫﻤﻪ ﮐﺎرﻣﻨﺪﻫﺎي‬:‫ﺗﻮﺟﻪ‬
.‫ ﻓﻘﻂ ﻣﻘﺎدﯾﺮ ﻣﺘﻤﺎﯾﺰ را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‬UNION ‫ دﺳﺘﻮر‬.‫ﻫﺎي ﯾﮑﺴﺎن ﻗﺮار دارﻧﺪ و ﻓﻘﻂ ﯾﮑﯽ از آﻧﻬﺎ در ﻟﯿﺴﺖ اﺳﺖ‬

SQL ‫ در‬UNION ALL ‫ﻣﺜﺎل‬

.‫ را ﻟﯿﺴﺖ ﮐﻨﯿﻢ‬USA ‫ و‬Norway ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﻤﻪ ﮐﺎرﻣﻨﺪﻫﺎي‬

36
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT E_Name FROM Employees_Norway


UNION ALL
SELECT E_Name FROM Employees_USA

:‫ﻧﺘﯿﺠﻪ‬

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

SQL ‫ در‬SELECT INTO ‫ﻋﺒﺎرت‬

.‫ اﺳﺘﻔﺎده ﺷﻮد‬،‫ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﺳﺎﺧﺖ ﮐﭙﯽ ﻫﺎي ﭘﺸﺘﯿﺒﺎن از ﺟﺪول‬SQL ‫ در‬SELECT INTO ‫ﻋﺒﺎرت‬

SQL ‫ در‬SELECT INTO ‫ﻋﺒﺎرت‬

.‫ داده ﻫﺎ را از ﯾﮑﯽ از ﺟﺪول ﻫﺎ اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ و آن را درون ﯾﮏ ﺟﺪول ﻣﺘﻔﺎوت درج ﻣﯽ ﮐﻨﺪ‬SELECT INTO ‫ﻋﺒﺎرت‬

.‫ ﺑﯿﺸﺘﺮ اوﻗﺎت ﺑﺮاي ﮐﭙﯽ ﻫﺎي ﭘﺸﺘﯿﺒﺎن از ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬SELECT INTO ‫ﻋﺒﺎرت‬

SQL ‫ در‬SELECT INTO ‫ﮔﺮاﻣﺮ‬

:‫ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﻫﻤﻪ ﺳﺘﻮن ﻫﺎ را درون ﺟﺪول ﺟﺪﯾﺪ اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

: ‫ﯾﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﻓﻘﻂ ﺳﺘﻮن ﻫﺎﯾﯽ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ درون ﺟﺪول ﺟﺪﯾﺪ ﺑﺎﺷﻨﺪ‬

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

37
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL ‫ در‬SELECT INTO ‫ﻣﺜﺎل‬

.‫" ﺑﺴﺎزﯾﻢ‬persons" ‫ اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﯾﮏ ﮐﭙﯽ دﻗﯿﻖ از داده ﻫﺎ در ﺟﺪول‬- ‫ﺳﺎﺧﺘﻦ ﯾﮏ ﮐﭙﯽ ﭘﺸﺘﯿﺒﺎن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از ﻋﺒﺎرت‬

SELECT *
INTO Persons_Backup
FROM Persons

.‫ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‬،‫ ﺑﺮاي ﮐﭙﯽ ﺟﺪول درون ﭘﺎﯾﮕﺎه داده ﻫﺎي دﯾﮕﺮ‬IN ‫ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﻋﺒﺎرت‬

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

:‫ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ ﻓﻘﻂ ﭼﻨﺪ ﻓﯿﻠﺪ درون ﺟﺪول ﺟﺪﯾﺪ ﮐﭙﯽ ﮐﻨﯿﻢ‬

SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons

WHERE ‫ ﺑﺎ ﯾﮏ ﻋﺒﺎرت‬SQL ‫ در‬SELECT INTO

.‫ اﺿﺎﻓﻪ ﮐﻨﯿﻢ‬WHERE ‫ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ ﯾﮏ ﻋﺒﺎرت‬

‫" زﻧﺪﮔﯽ‬sandnes" ‫" ﻣﯽﺳﺎزد و ﻓﻘﻂ ﺷﺎﻣﻞ اﺷﺨﺎﺻﯽ اﺳﺖ ﮐﻪ در ﺷﻬﺮ‬persons-backup" ‫ زﯾﺮ ﯾﮏ ﺟﺪول‬SQL ‫ﻋﺒﺎرت‬
.‫ﻣﯽ ﮐﻨﻨﺪ‬

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

‫ ﺷﺪه‬JOIN ‫ – ﺟﺪاول‬SQL ‫ در‬SELECT INTO

.‫ﻫﻤﭽﻨﯿﻦ اﻧﺘﺨﺎب داده ﻫﺎ از ﺑﯿﺸﺘﺮ از ﯾﮏ ﺟﺪول ﻣﻤﮑﻦ اﺳﺖ‬

.‫" را ﻣﯽﺳﺎزد‬orders" ‫" و‬persons" ‫" ﺷﺎﻣﻞ داده ﻫﺎ از دو ﺟﺪول‬Persons_Order_Backup" ‫ﻣﺜﺎل زﯾﺮ ﯾﮏ ﺟﺪول‬

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
38
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻋﺒﺎرت ‪ CREATE DATABASE‬در ‪SQL‬‬

‫ﻋﺒﺎرت ‪CREATE DATABASE‬‬

‫ﻋﺒﺎرت ‪ CREATE DATABASE‬ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﭘﺎﯾﮕﺎه داده اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ CREATE DATABASE‬در ‪SQL‬‬

‫‪CREATE DATABASE database_name‬‬

‫ﻣﺜﺎل ‪CREATE DATABASE‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﭘﺎﯾﮕﺎه داده اي ﺑﺎ ﻧﺎم "‪ "MY-db‬اﯾﺠﺎد ﮐﻨﯿﻢ‪.‬‬

‫از ﻋﺒﺎرت ‪ CREAT DATABASE‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪CREATE DATABASE my_db‬‬

‫ﺟﺪاول ﭘﺎﯾﮕﺎه داده ﻣﯽ ﺗﻮاﻧﺪ ﺑﺎ ﻋﺒﺎرت ‪ CREATE TABLE‬اﺿﺎﻓﻪ ﺷﻮﻧﺪ‪.‬‬

‫ﻋﺒﺎرت ‪ CREATE TABLE‬در ‪SQL‬‬

‫ﻋﺒﺎرت ‪CREATE TABLE‬‬

‫ﻋﺒﺎرت ‪ CREATE TABLE‬ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﺟﺪول در ﭘﺎﯾﮕﺎه داده اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪SQL CREATE TABLE‬‬

‫‪CREATE TABLE‬‬ ‫‪table_name‬‬


‫(‬
‫‪column_name1‬‬ ‫‪data_type,‬‬
‫‪column_name2‬‬ ‫‪data_type,‬‬
‫‪column_name3‬‬ ‫‪data_type,‬‬
‫‪....‬‬
‫)‬

‫ﻧﻮع داده ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﭼﻪ ﻧﻮع داده اي در ﺳﺘﻮن ﻣﯽ ﺗﻮاﻧﺪ ﻧﮕﻪ داﺷﺘﻪ ﺷﻮد‪ .‬ﺑﺮاي ﯾﮏ ﻣﺮﺟﻊ ﮐﺎﻣﻞ از اﻧﻮاع داده ﻣﻮﺟﻮد در‬
‫‪ SQL Server ،MS Access‬و ‪ MySQL‬ﺑﻪ ﻣﺮﺟﻊ اﻧﻮاع داده ﻣﺎ ﺑﺮوﯾﺪ‪.‬‬

‫ﻣﺜﺎل ‪CREATE TABLE‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﯾﮏ ﺟﺪول ﺑﺎ ﻧﺎم "‪ "persons‬اﯾﺠﺎد ﮐﻨﯿﻢ ﮐﻪ ﺷﺎﻣﻞ ﭘﻨﺞ ﺳﺘﻮن‪ P_Id :‬و ‪ LastName‬و ‪ FirstName‬و‬
‫‪ Address‬و ‪ City‬اﺳﺖ‪.‬‬
‫‪39‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫از ﻋﺒﺎرت ‪ CREATE TABLE‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int,‬‬
‫‪LastName varchar(255),‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﺳﺘﻮن ‪ P_I d‬از ﻧﻮع ‪ int‬اﺳﺖ و ﯾﮏ ﻋﺪد را ﻧﮕﻪ ﻣﯽ دارد‪.‬‬

‫ﺳﺘﻮن ﻫﺎي ‪ Address ،FirstName ،lastName‬و ‪ City‬از ﻧﻮع ‪ varchar‬و ﺑﺎﻃﻮل ﺑﯿﺸﺘﺮ از ‪ 255‬ﮐﺎراﮐﺘﺮ ﻫﺴﺘﻨﺪ‪.‬‬

‫اﮐﻨﻮن ﺟﺪول ﺧﺎﻟﯽ "‪ "Persons‬را ﺑﺒﯿﻨﯿﺪ ﮐﻪ اﯾﻨﮕﻮﻧﻪ اﺳﺖ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬

‫ﻣﺤﺪودﯾﺖ ﻫﺎ‬

‫ﺑﺮاي ﻣﺤﺪود ﮐﺮدن ﺑﺮﺧﯽ از داده ﻫﺎ در ﯾﮏ ﺟﺪول‪ ،‬از دﺳﺘﻮر ‪ Constraint‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﻣﺤﺪودﯾﺘﻬﺎ را ﻣﯽ ﺗﻮان ﻣﻮﻗﻊ اﯾﺠﺎد ﺟﺪول )دﺳﺘﻮر ‪ (ALTER TABLE‬ﯾﺎ ﺑﻌﺪ از اﯾﺠﺎد ﺟﺪول ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ )دﺳﺘﻮر ‪ALTER‬‬
‫‪.(TABLE‬‬

‫در ﻣﺤﺪودﯾﺖ ﻫﺎي زﯾﺮ ﺗﻤﺮﮐﺰ ﺧﻮاﻫﯿﻢ ﮐﺮد ‪:‬‬

‫‪NOT NULL‬‬ ‫·‬


‫‪UNIQUE‬‬ ‫·‬
‫‪PRIMARY KEY‬‬ ‫·‬
‫‪FOREIGN KEY‬‬ ‫·‬
‫‪CHECK‬‬ ‫·‬
‫‪DEFAULT‬‬ ‫·‬

‫در ﺑﺨﺶ ﻫﺎي ﺑﻌﺪ ﻫﺮ ﯾﮏ از ﻣﺤﺪودﯾﺖ ﻫﺎ را ﺑﺎ ﺟﺰﺋﯿﺎت ﺗﻮﺿﯿﺢ ﻣﯽ دﻫﯿﻢ ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ‪:NOT NULL‬‬

‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض ‪ ،‬اﯾﻦ ﻋﺒﺎرت در ﯾﮏ ﺟﺪول ﻧﻤﯽ ﮔﺬارد ﯾﮏ ﺳﺘﻮن ﻣﻘﺪار ﺗﻬﯽ در ﻧﻈﺮ ﺑﮕﯿﺮد‪.‬‬
‫‪40‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻣﺤﺪودﯾﺖ ‪:NOT NULL‬‬

‫ﻣﺤﺪودﯾﺖ ‪ NOT NULL‬ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﺗﺎ ﻓﯿﻠﺪ ﻣﻮرد ﻧﻈﺮ ﻫﻤﯿﺸﻪ داراي ﻣﻘﺪار ﺑﺎﺷﺪ‪ .‬اﯾﻦ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ ﺷﻤﺎ ﻧﻤﯽ ﺗﻮاﻧﯿﺪ‬
‫ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ را ﺑﺪون ﻣﻘﺪار وارد ﮐﻨﯿﺪ‪ ،‬ﯾﺎ ﯾﮏ رﮐﻮرد را ﺑﺪون اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﻣﻘﺪار ﺑﻪ اﯾﻦ ﻓﯿﻠﺪ‪ ،‬ﺑﺮوز رﺳﺎﻧﯽ ﮐﻨﯿﺪ‪.‬‬

‫در ﺗﮑﻪ ﺑﺮﻧﺎﻣﻪ ‪ SQL‬زﯾﺮ ﺳﺘﻮن "‪ "P_Id‬و ﺳﺘﻮن "‪ "LastName‬ﻧﻤﯽ ﺗﻮاﻧﻨﺪ ﺧﺎﻟﯽ از ﻣﻘﺪار ﺑﺎﺷﻨﺪ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫ﻣﺤﺪودﯾﺖ ‪:UNIQUE‬‬

‫ﻣﺤﺪودﯾﺖ ‪ UNIQUE‬ﺷﻨﺎﺳﺎﯾﯽ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮدي را ﺑﻪ ﻫﺮ رﮐﻮرد در ﺟﺪول ﭘﺎﯾﮕﺎه داده ﻣﯽ دﻫﺪ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ﻫﺎي ‪ UNIQUE‬و ‪ PRIMARY KEY‬ﻫﺮ دو ﺗﻀﻤﯿﻨﯽ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﺮاي ﯾﮏ ﺳﺘﻮن ﯾﺎ ﻣﺠﻤﻮﻋﻪ اي از ﺳﺘﻮن ﻫﺎ را‬
‫ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﻨﺪ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ‪ PRIMARY KEY‬ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر داراي ﻣﺤﺪودﯾﺖ ‪ UNIQUE‬ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﺑﺮ روي آن ﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ‪.‬‬

‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﻣﺤﺪودﯾﺖ ﻫﺎي ﺑﺴﯿﺎري از ‪ UNIQUE‬در ﺟﺪول داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ ،‬اﻣﺎ ﺗﻨﻬﺎ ﯾﮏ ﻣﺤﺪودﯾﺖ‬
‫‪ PRIMARY KEY‬در ﻫﺮ ﺟﺪول ﻣﯽ ﺗﻮاﻧﯿﺪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ‪ UNIQUE‬در ﺳﺎﺧﺘﻦ ﺟﺪول در ‪:SQL‬‬

‫ﮐﺪ ‪ SQL‬زﯾﺮ ﯾﮏ ﻣﺤﺪودﯾﺖ ‪ UNIQUE‬زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول "‪ "Persons‬ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮد ﺑﻪ ﺳﺘﻮن"‪ "P_Id‬ﻧﺴﺒﺖ ﻣﯽ دﻫﺪ‪:‬‬

‫‪MySQL:‬‬
‫‪CREATE TABLE Persons‬‬
‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫‪City varchar(255),‬‬
‫)‪UNIQUE (P_Id‬‬
‫)‬

‫‪41‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL Server / Oracle / MS Access:

CREATE TABLE Persons


(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
‫ ﻫﺎي ﻣﻮﺟﻮد ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد در ﯾﮏ‬UNIQUE ‫ و ﯾﺎ ﺑﺮاي ﻣﻌﯿﻦ ﮐﺮدن‬UNIQUE ‫ﺑﺮاي ﻧﺎم ﮔﺬاري ﯾﮏ ﻣﺤﺪودﯾﺖ‬
:‫ اﺳﺘﻔﺎده از دﺳﺘﻮر زﯾﺮ ﺟﺎﯾﺰ اﺳﺖ‬،‫ﺟﺪول‬

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons


(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)

: ‫ در ﺗﻐﯿﯿﺮ ﺟﺪول‬UNIQUE ‫ﻣﺤﺪودﯾﺖ‬

:‫ از ﮐﺪ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬، "P_Id" ‫ﺑﺮاي اﯾﺠﺎد اﯾﻦ ﻣﺤﺪودﯾﺖ ﺑﺮ روي ﺳﺘﻮن‬

MySQL / SQL Server / Oracle / MS Access:


ALTER TABLE Persons
ADD UNIQUE (P_Id)

‫ اﺳﺘﻔﺎده از دﺳﺘﻮر زﯾﺮ‬،‫ و ﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﺗﻌﺮﯾﻒ اﯾﻦ ﻣﺤﺪودﯾﺖ ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد‬UNIQUE ‫ﺑﺮاي ﻧﺎﻣﮕﺬاري ﻣﺤﺪودﯾﺖ‬
: ‫ ﺟﺎﯾﺰ اﺳﺖ‬SQL ‫در‬

MySQL / SQL Server / Oracle / MS Access:


ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

UNIQUE ‫ﺑﺮاي ﺣﺬف ﯾﮏ ﻣﺤﺪودﯾﺖ‬

:‫ اﺳﺖ‬SQL‫ در‬UNIQUE ‫ﮐﺪ زﯾﺮ ﻧﻤﻮﻧﻪ اي ﺑﺮاي ﺣﺬف ﮐﺮدن ﻣﺤﺪودﯾﺖ‬


42
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:


ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

:SQL ‫ در‬PRIMARY KEY‫ﻣﺤﺪودﯾﺖ‬

:SQL ‫ در‬PRIMARY KEY‫ﻣﺤﺪودﯾﺖ‬

.‫ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ اﺻﻠﯽ ﻣﺴﺌﻮل ﺷﻨﺎﺳﺎﯾﯽ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮدي ﻫﺮ رﮐﻮرد در ﺟﺪول ﭘﺎﯾﮕﺎه داده اﺳﺖ‬

.‫ﮐﻠﯿﺪ اﺻﻠﯽ ﺑﺎﯾﺪ از ﻣﻘﺎدﯾﺮ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮدي ﺑﺮﺧﻮردار ﺑﺎﺷﺪ‬

.‫ داﺷﺘﻪ ﺑﺎﺷﺪ‬NULL ‫ﺳﺘﻮن ﮐﻠﯿﺪ اﺻﻠﯽ ﻧﻤﯽ ﺗﻮاﻧﺪ ﻣﻘﺪار‬

.‫ﻫﺮ ﺟﺪول ﺑﺎﯾﺪ ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ داﺷﺘﻪ ﺑﺎﺷﺪ و ﻫﺮ ﺟﺪول ﻣﯽ ﺗﻮاﻧﺪ ﻓﻘﻂ ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ داﺷﺘﻪ ﺑﺎﺷﻨﺪ‬

:SQL ‫ در‬CREATE TABLE ‫ در‬PRIMARY KEY ‫ﻣﺤﺪودﯾﺖ‬

:‫" اﯾﺠﺎد ﻣﯽ ﺷﻮد‬Persons" ‫" ﻣﯽ ﺳﺎزد؛ زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول‬P_Id" ‫ ﺑﺮ روي ﺳﺘﻮن‬PRIMARY KEY ‫ﮐﺪ زﯾﺮ ﯾﮏ ﻣﺤﺪودﯾﺖ‬

MySQL:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

SQL Server / Oracle / MS Access:


CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

43
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺑﺮاي اﺟﺎزه دادن ﺑﻪ ﻧﺎﻣﮕﺬاري ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ اﺻﻠﯽ و ﺑﺮاي ﺗﻌﺮﯾﻒ ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ اﺻﻠﯽ ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد‪ ،‬از دﺳﺘﻮر‬
‫زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪MySQL / SQL Server / Oracle / MS Access:‬‬


‫‪CREATE TABLE Persons‬‬
‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫‪City varchar(255),‬‬
‫)‪CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName‬‬
‫)‬

‫ﺗﻮﺟﻪ‪ :‬در ﻣﺜﺎل ﺑﺎﻻ ﺗﻨﻬﺎ ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ )‪ (pk_PersonID‬وﺟﻮد دارد‪ .‬ﺑﺎ اﯾﻦ ﺣﺎل‪ ،‬ﻣﻘﺪار ‪ pk_PersonID‬از دو ﺳﺘﻮن‬
‫)‪ P_Id‬و ‪ (LastName‬ﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ‪ PRIMARY KEY‬در ‪ALTER TABLE‬‬

‫ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ اﺻﻠﯽ ﺑﺮ روي ﺳﺘﻮن "‪ "P_Id‬زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول اﯾﺠﺎد ﻣﯽ ﺷﻮد‪ ،‬از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده‬
‫ﮐﻨﯿﺪ‪:‬‬

‫‪MySQL / SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Persons‬‬
‫)‪ADD PRIMARY KEY (P_Id‬‬

‫ﺑﺮاي ﻧﺎﻣﮕﺬاري و ﻫﻤﭽﻨﯿﻦ ﺗﻌﺮﯾﻒ ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد‪ ،‬ﺑﺎﯾﺪ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫‪MySQL / SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Persons‬‬
‫)‪ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName‬‬

‫ﺗﻮﺟﻪ‪ :‬اﮔﺮ ﺑﺮاي اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﮐﻠﯿﺪ اﺻﻠﯽ ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮرات ﺟﺪول را ﺗﻐﯿﯿﺮ دﻫﯿﺪ‪ ،‬ﮐﻠﯿﺪ اﺻﻠﯽ ﺳﺘﻮن ﻫﺎ ﺑﺎﯾﺪ ﺣﺘﻤﺎ‬
‫ﺷﺎﻣﻞ ﻣﻘﺪار ‪ NOT NULL‬ﺑﺎﺷﺪ )ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺟﺪول ﺑﺮاي اوﻟﯿﻦ ﺑﺎر اﯾﺠﺎد ﺷﺪه اﺳﺖ(‪.‬‬

‫ﺑﺮاي ﺣﺬف ﯾﮏ ﻣﺤﺪودﯾﺖ ‪PRIMARY KEY‬‬

‫ﺑﺮاي ﺣﺬف ﮐﺮدن ﮐﻠﯿﺪ اﺻﻠﯽ از ﺗﮑﻪ ﺑﺮﻧﺎﻣﻪ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪44‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪MySQL:‬‬
‫‪ALTER TABLE Persons‬‬
‫‪DROP PRIMARY KEY‬‬

‫‪SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Persons‬‬
‫‪DROP CONSTRAINT pk_PersonID‬‬

‫ﻣﺤﺪودﯾﺖ ‪:FOREIGN KEY‬‬

‫ﮐﻠﯿﺪ ﺧﺎرﺟﯽ در ﯾﮏ ﺟﺪول ﺑﻪ ﮐﻠﯿﺪ اﺻﻠﯽ در ﯾﮏ ﺟﺪول دﯾﮕﺮ اﺷﺎره ﻣﯽ ﮐﻨﺪ‪.‬‬

‫اﺟﺎزه دﻫﯿﺪ ﮐﻠﯿﺪ ﺧﺎرﺟﯽ را ﺑﺎ ذﮐﺮ ﯾﮏ ﻣﺜﺎل ﺗﻮﺿﯿﺢ دﻫﯿﻢ‪ .‬ﺑﻪ دو ﺟﺪول زﯾﺮ ﻧﮕﺎه ﮐﻨﯿﺪ‪:‬‬

‫ﺟﺪول "‪:" Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫ﺟﺪول " ‪:" Orders‬‬

‫‪O_Id‬‬ ‫‪OrderNo‬‬ ‫‪P_Id‬‬


‫‪1‬‬ ‫‪77895‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪44678‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪22456‬‬ ‫‪2‬‬
‫‪4‬‬ ‫‪24562‬‬ ‫‪1‬‬

‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول "ﺳﻔﺎرﺷﺎت" ﺑﻪ ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول "اﻓﺮاد" اﺷﺎره ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول "اﻓﺮاد" ﮐﻠﯿﺪ اﺻﻠﯽ ﺟﺪول "اﻓﺮاد" اﺳﺖ‪ .‬ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول "ﺳﻔﺎرﺷﺎت" ﮐﻠﯿﺪ ﺧﺎرﺟﯽ در‬
‫ﺟﺪول "ﺳﻔﺎرﺷﺎت" اﺳﺖ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ ﺧﺎرﺟﯽ)‪ (FOREIGN KEY‬در واﻗﻊ از وارد ﺷﺪن اﻃﻼﻋﺎت ﻧﺎ ﻣﻌﺘﺒﺮ در ﺟﺪول و ﻫﻤﭽﻨﯿﻦ ﻫﺮ ﭼﯿﺰ ﮐﻪ ارﺗﺒﺎط‬
‫ﺑﯿﻦ دو ﺟﺪول را از ﺑﯿﻦ ﺑﺒﺮد ﺟﻠﻮﮔﯿﺮي ﻣﯽ ﮐﻨﺪ؛ زﯾﺮا ﮐﻪ ﺑﻪ ﻣﻘﺪار ﯾﮑﺘﺎﯾﯽ در ﺟﺪول اﺻﻠﯽ اﺷﺎره دارد‪.‬‬

‫ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ ﺧﺎرﺟﯽ در ‪: CREATE TABLE‬‬

‫ﮐﺪ زﯾﺮ ﺳﺘﻮن "‪ "P_Id‬را ﺑﻪ ﻋﻨﻮان ﮐﻠﯿﺪ ﺧﺎرﺟﯽ ﻣﯽ ﺳﺎزد؛ زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول "ﺳﻔﺎرﺷﺎت" اﯾﺠﺎد ﻣﯽ ﺷﻮد‪:‬‬

‫‪45‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

MySQL:

CREATE TABLE Orders


(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:


CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

:‫ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬،‫ﺑﺮاي ﻧﺎﻣﮕﺬاري و ﻫﻤﭽﻨﯿﻦ ﺗﻌﺮﯾﻒ ﮐﻠﯿﺪ ﻫﺎي ﺧﺎرﺟﯽ ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد‬

MySQL / SQL Server / Oracle / MS Access:


CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

:ALTER TABLE ‫ در‬FOREIGN KEY ‫ﻣﺤﺪودﯾﺖ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬SQL ‫ از دﺳﺘﻮر‬،‫" زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول اﯾﺠﺎد ﺷﺪه‬P_Id" ‫ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﻣﺤﺪودﯾﺖ ﮐﻠﯿﺪ ﺧﺎرﺟﯽ ﺑﺮ روي ﺳﺘﻮن‬

MySQL / SQL Server / Oracle / MS Access:


ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

:‫ از دﺳﺘﻮرات زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬،‫ﺑﺮاي ﻧﺎﻣﮕﺬاري و ﻫﻤﭽﻨﯿﻦ ﺗﻌﺮﯾﻒ ﺑﺮ روي ﺳﺘﻮن ﻫﺎي ﻣﺘﻌﺪد‬

MySQL / SQL Server / Oracle / MS Access:

46
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪ALTER TABLE Orders‬‬


‫‪ADD CONSTRAINT fk_PerOrders‬‬
‫)‪FOREIGN KEY (P_Id‬‬
‫)‪REFERENCES Persons(P_Id‬‬

‫ﺑﺮاي ﺣﺬف ﯾﮏ ﻣﺤﺪودﯾﺖ ‪FOREIGN KEY‬‬

‫ﺑﺮاي ﺣﺬف ﮐﺮدن ﮐﻠﯿﺪ ﺧﺎرﺟﯽ از ﺗﮑﻪ ﺑﺮﻧﺎﻣﻪ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪MySQL:‬‬
‫‪ALTER TABLE Orders‬‬
‫‪DROP FOREIGN KEY fk_PerOrders‬‬

‫‪SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Orders‬‬
‫‪DROP CONSTRAINT fk_PerOrders‬‬

‫ﻣﺤﺪودﯾﺖ ‪CHECK‬‬

‫ﻣﺤﺪودﯾﺖ ‪CHECK‬‬
‫ﻣﺤﺪودﯾﺖ ‪ CHECK‬ﺑﻪ ﻣﻨﻈﻮر ﻣﺤﺪود ﮐﺮدن داﻣﻨﻪ ﻣﻘﺪار ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ در ﯾﮏ ﺳﺘﻮن ﻗﺮار ﮔﯿﺮد اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫اﮔﺮ ﻣﺤﺪودﯾﺖ ‪ CHECK‬را ﺗﻨﻬﺎ ﺑﺮ روي ﯾﮏ ﺳﺘﻮن ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﯿﺪ اﺟﺎزه وارد ﮐﺮدن ﺑﺮﺧﯽ از ﻣﻘﺪار ﻫﺎ را ﺑﺮاي آن ﺳﺘﻮن دارﯾﺪ‪.‬‬

‫اﮔﺮ ﻣﺤﺪودﯾﺖ ‪ CHECK‬را ﺑﺮاي ﯾﮏ ﺟﺪول ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﯿﺪ‪ ،‬ﻣﯽ ﺗﻮاﻧﯿﺪ ﻣﻘﺎدﯾﺮ را در ﺳﺘﻮن ﻫﺎي ﺧﺎﺻﯽ ﻣﺒﻨﯽ ﺑﺮ ﻣﻘﺎدﯾﺮ ﺳﺘﻮن‬
‫ﻫﺎي دﯾﮕﺮ در ردﯾﻒ ﻣﺤﺪود ﮐﻨﯿﺪ‪.‬‬

‫ﻣﺤﺪودﯾﺖ ‪ CHECK‬در ‪CREATE TABLE‬‬


‫ﺑﺮﻧﺎﻣﻪ زﯾﺮ ﻣﺤﺪودﯾﺖ ‪ CHECK‬را روي ﺳﺘﻮن"‪ "P_Id‬در ﺟﺪول "‪ "Persons‬ﻣﯽ ﺳﺎزد‪ .‬ﻣﺤﺪودﯾﺖ ﻣﺸﺨﺺ ﺷﺪه ﺑﺮاي ﺳﺘﻮن‬
‫"‪ "P_Id‬ﻓﻘﻂ ﺷﺎﻣﻞ اﻋﺪاد ﺻﺤﯿﺢ ﺑﺰرﮔﺘﺮ از ﺻﻔﺮ اﺳﺖ‪.‬‬

‫‪MySQL:‬‬
‫‪CREATE TABLE Persons‬‬
‫(‬
‫‪P_Id int NOT NULL,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫‪City varchar(255),‬‬
‫)‪CHECK (P_Id>0‬‬
‫)‬

‫‪47‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SQL Server / Oracle / MS Access:


CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
:‫ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬،‫ﺑﺮاي ﻣﺤﺪود ﮐﺮدن ﭼﻨﺪ ﺳﺘﻮن ﺑﻪ ﻃﻮر ﻫﻤﺰﻣﺎن‬

MySQL / SQL Server / Oracle / MS Access:


CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)

ALTER TABLE ‫ در‬CHECK ‫ﻣﺤﺪودﯾﺖ‬

:‫ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬،‫" زﻣﺎﻧﯽ ﮐﻪ ﺟﺪول از ﻗﺒﻞ اﯾﺠﺎد ﺷﺪه اﺳﺖ‬P_Id" ‫ در ﺳﺘﻮن‬CHECK ‫ﺑﺮاي اﯾﺠﺎد ﻣﺤﺪودﯾﺖ‬

MySQL / SQL Server / Oracle / MS Access:


ALTER TABLE Persons
ADD CHECK (P_Id>0)

:‫ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬،‫ﺑﺮاي ﻣﺤﺪود ﮐﺮدن ﭼﻨﺪ ﺳﺘﻮن ﺑﻪ ﻃﻮر ﻫﻤﺰﻣﺎن‬

MySQL / SQL Server / Oracle / MS Access:


ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

CHECK ‫ﺣﺬف ﮐﺮدن ﻣﺤﺪودﯾﺖ‬

:‫ﺑﺮاي ﺣﺬف اﯾﻦ ﻣﺤﺪودﯾﺖ ﺑﺎﯾﺪ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‬

SQL Server / Oracle / MS Access:


ALTER TABLE Persons
DROP CONSTRAINT chk_Person
48
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person

SQL ‫ در‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬

SQL ‫ در‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬

.‫ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬،‫ ﺑﺮاي ﻗﺮار دادن ﯾﮏ ﻣﻘﺪار ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض در ﯾﮏ ﺳﺘﻮن‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬

.‫ ﺑﻪ ﻫﻤﻪ رﮐﻮردﻫﺎي ﺟﺪﯾﺪ اﺿﺎﻓﻪ ﻣﯽ ﺷﻮد؛ اﮔﺮ ﻫﯿﭻ ﻣﻘﺪار دﯾﮕﺮي وارد ﻧﺸﻮد‬DEFAULT ‫ﻣﻘﺪار‬

CREATE TABLE ‫ در‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬

:‫" اﯾﺠﺎد ﻣﯽ ﮐﻨﺪ‬Persons" ‫" در ﺟﺪول‬City"‫ را ﺑﺮ روي ﺳﺘﻮن‬DEFAULT ‫ﺗﮑﻪ ﺑﺮﻧﺎﻣﻪ زﯾﺮ ﻣﺤﺪودﯾﺖ‬

My SQL / SQL Server / Oracle / MS Access:


CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

‫ ﻣﻮرد‬GETDATE() ‫ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻌﯽ ﻣﺎﻧﻨﺪ‬،‫ ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي وارد ﮐﺮدن ﻣﻘﺎدﯾﺮ ﺳﯿﺴﺘﻢ‬DEFAULT ‫ﻣﺤﺪودﯾﺖ‬
:‫اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد‬

CREATE TABLE Orders


(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)

49
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻣﺤﺪودﯾﺖ‪ DEFAULT‬در ‪ALTER TABLE‬‬

‫ﺑﺮاي اﯾﺠﺎد ﻣﺤﺪودﯾﺖ ‪ DEFAULT‬در ﺳﺘﻮن "‪ "City‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺟﺪول اﯾﺠﺎد ﺷﺪه‪ ،‬از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪MySQL:‬‬
‫‪ALTER TABLE Persons‬‬
‫'‪ALTER City SET DEFAULT 'SANDNES‬‬

‫‪SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Persons‬‬
‫'‪ALTER COLUMN City SET DEFAULT 'SANDNES‬‬

‫ﺑﺮاي ﺣﺬف ﯾﮏ ﻣﺤﺪودﯾﺖ ‪DEFAULT‬‬

‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﺮاي ﺣﺬف اﯾﻦ ﻣﺤﺪودﯾﺖ ﺑﺎﯾﺪ از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫‪MySQL:‬‬
‫‪ALTER TABLE Persons‬‬
‫‪ALTER City DROP DEFAULT‬‬

‫‪SQL Server / Oracle / MS Access:‬‬


‫‪ALTER TABLE Persons‬‬
‫‪ALTER COLUMN City DROP DEFAULT‬‬

‫دﺳﺘﻮرات ‪ CREATE INDEX‬در ‪SQL‬‬

‫دﺳﺘﻮر ‪ CREATE INDEX‬ﺑﺮاي اﯾﺠﺎد ﺷﺎﺧﺺ در ﺟﺪاول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﺷﺎﺧﺺ ﻫﺎ ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺟﺎزه ﺟﺴﺘﺠﻮ در ﭘﺎﯾﮕﺎه داده را ﺑﺮاي ﭘﯿﺪا ﮐﺮدن ﺳﺮﯾﻊ اﻃﻼﻋﺎت را ﻣﯽ دﻫﺪ؛ ﺑﺪون آﻧﮑﻪ ﮐﻞ ﺟﺪول را‬
‫ﺑﮕﺮدد‪.‬‬

‫‪ INDEX‬ﻫﺎ‬

‫ﺷﺎﺧﺺ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﯾﺎﻓﺘﻦ ﺳﺮﯾﻌﺘﺮ و ﻣﻮﺛﺮﺗﺮ داده در ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﺷﻮد‪.‬‬

‫ﮐﺎرﺑﺮان ﺷﺎﺧﺺ ﻫﺎ را ﻧﻤﯽ ﺗﻮاﻧﻨﺪ ﺑﺒﯿﻨﻨﺪ‪ ،‬آﻧﻬﺎ ﻓﻘﻂ ﺑﺮاي ﺳﺮﻋﺖ ﺑﺨﺸﯿﺪن ﺑﻪ ﺟﺴﺘﺠﻮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫‪50‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﻮﺟﻪ‪ :‬ﺑﺮوز رﺳﺎﻧﯽ ﯾﮏ ﺟﺪول ﺑﺎ ﺷﺎﺧﺺ زﻣﺎن ﺑﯿﺸﺘﺮي را ﻧﺴﺒﺖ ﺑﻪ ﺑﺮوز رﺳﺎﻧﯽ ﯾﮏ ﺟﺪول ﺑﺪون ﺷﺎﺧﺺ ﺗﻠﻒ ﻣﯽ ﮐﻨﺪ )ﭼﻮن‬
‫ﺷﺎﺧﺺ ﻧﯿﺰ ﻧﯿﺎز ﺑﻪ ﯾﮏ ﺑﺮوز رﺳﺎﻧﯽ دارد(‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﺷﻤﺎ ﺗﻨﻬﺎ ﺑﺎﯾﺪ ﺷﺎﺧﺺ را در ﺳﺘﻮن )و ﺟﺪول( اﯾﺠﺎد ﮐﻨﯿﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ CREATE INDEX‬در ‪SQL‬‬

‫اﯾﺠﺎد ﯾﮏ ﺷﺎﺧﺺ در ﯾﮏ ﺟﺪول‪ .‬ﻣﻘﺎدﯾﺮ ﺗﮑﺮاري ﻣﺠﺎز ﻫﺴﺘﻨﺪ‪:‬‬

‫‪CREATE INDEX index_name‬‬


‫)‪ON table_name (column_name‬‬

‫ﮔﺮاﻣﺮ ‪ CREATE UNIQUE INDEX‬در ‪SQL‬‬

‫اﯾﺠﺎد ﯾﮏ ﺷﺎﺧﺺ در ﯾﮏ ﺟﺪول‪ .‬ﻣﻘﺎدﯾﺮ ﺗﮑﺮاري ﻣﺠﺎز ﻧﯿ ﺴﺘﻨﺪ‪:‬‬

‫‪CREATE UNIQUE INDEX index_name‬‬


‫)‪ON table_name (column_name‬‬

‫ﺗﻮﺟﻪ‪ :‬ﮔﺮاﻣﺮ ﺳﺎﺧﺖ ﺷﺎﺧﺺ ﻫﺎ در ﭘﺎﯾﮕﺎه داده ﻫﺎي ﻣﺨﺘﻠﻒ ﻣﺘﻔﺎوت اﺳﺖ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﮔﺮاﻣﺮ ﺳﺎﺧﺖ ﺷﺎﺧﺺ ﻫﺎ را در ﭘﺎﯾﮕﺎه داده‬
‫ﺧﻮد ﭼﮏ ﮐﻨﯿﺪ‪.‬‬

‫ﻣﺜﺎل ‪CREATE INDEX‬‬

‫دﺳﺘﻮر زﯾﺮ ﯾﮏ ﺷﺎﺧﺺ ﺑﻪ ﻧﺎم "‪ "PIndex‬ﺑﺮ روي ﺳﺘﻮن "‪ "LastName‬در ﺟﺪول "‪ "Persons‬اﯾﺠﺎد ﻣﯽ ﮐﻨﺪ‪:‬‬

‫‪CREATE INDEX PIndex‬‬


‫)‪ON Persons (LastName‬‬

‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ ﯾﮏ ﺷﺎﺧﺺ را ﺑﺮ روي ﺗﺮﮐﯿﺒﯽ از ﺳﺘﻮن ﻫﺎ اﯾﺠﺎد ﮐﻨﯿﺪ ﺑﺎﯾﺪ ﻧﺎم ﺳﺘﻮن ﻫﺎ را داﺧﻞ ﭘﺮاﻧﺘﺰ ﻧﻮﺷﺘﻪ و ﺑﺎ ﮐﺎﻣﺎ از ﻫﻢ‬
‫ﺟﺪا ﮐﻨﯿﺪ‪:‬‬

‫‪CREATE INDEX PIndex‬‬


‫)‪ON Persons (LastName, FirstName‬‬

‫‪ DROP TABLE ،DROP INEX‬و ‪ DROP DATABASE‬در ‪SQL‬‬

‫ﺷﺎﺧﺺ ﻫﺎ‪ ،‬ﺟﺪاول‪ ،‬و ﭘﺎﯾﮕﺎه داده ﻫﺎ ﺑﺮاﺣﺘﯽ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ دﺳﺘﻮر ‪ DROP‬ﺣﺬف ﺷﻮﻧﺪ‪.‬‬

‫دﺳﺘﻮر ‪DROP INEX‬‬

‫‪51‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫ ﺑﺮاي ﺣﺬف ﯾﮏ ﺷﺎﺧﺺ در ﯾﮏ ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬DROP INDEX ‫دﺳﺘﻮر‬

MS Access:

DROP INDEX index_name ON table_name

MS SQL Server:

DROP INDEX table_name.index_name

DB2/Oracle:

DROP INDEX index_name

MySQL:

ALTER TABLE table_name DROP INDEX index_name

DROP TABLE ‫دﺳﺘﻮر‬

.‫ ﺑﺮاي ﺣﺬف ﺟﺪول اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬DROP TABLE ‫دﺳﺘﻮر‬

DROP TABLE table_name

DROP DATABASE ‫دﺳﺘﻮر‬

.‫ ﺑﺮاي ﺣﺬف ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗﯽ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬DROP DATABASE ‫دﺳﺘﻮر‬

DROP DATABASE database_name


TRUNCATE TABLE ‫دﺳﺘﻮر‬

‫و ام اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﻓﻘﻂ اﻃﻼﻋﺎت داﺧﻞ ﺟﺪول را ﭘﺎك ﮐﻨﯿﻢ؛ ﻧﻪ ﺧﻮد ﺟﺪول را ﺑﺎﯾﺪ ﭼﮑﺎر ﮐﺮد؟‬

:‫ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬TRUNCATE TABLE ‫ از دﺳﺘﻮر‬،‫ﺧﺐ‬

TRUNCATE TABLE table_name

ALTER TABLE ‫دﺳﺘﻮر‬

ALTER TABLE ‫دﺳﺘﻮر‬

52
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫دﺳﺘﻮر ‪ ALTER TABLE‬ﺑﺮاي اﺿﺎﻓﻪ ﮐﺮدن‪ ،‬ﺣﺬف‪ ،‬ﯾﺎ ﺗﻐﯿﯿﺮ ﺳﺘﻮن در ﺟﺪول ﻣﻮﺟﻮد اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ ALTER TABLE‬در ‪SQL‬‬

‫ﺑﺮاي اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﺳﺘﻮن در ﯾﮏ ﺟﺪول‪ ،‬از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪ADD column_name datatype‬‬

‫ﺑﺮاي ﺣﺬف ﯾﮏ ﺳﺘﻮن در ﯾﮏ ﺟﺪول‪ ،‬از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ )ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﺑﺮﺧﯽ از ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده‬
‫اﺟﺎزه ﺣﺬف ﯾﮏ ﺳﺘﻮن را ﻧﻤﯽ دﻫﻨﺪ(‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪DROP COLUMN column_name‬‬

‫ﺑﺮاي ﺗﻐﯿﯿﺮ ﻧﻮع داده ﯾﮏ ﺳﺘﻮن در ﯾﮏ ﺟﺪول‪ ،‬از ﮔﺮاﻣﺮ زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪ALTER TABLE table_name‬‬


‫‪ALTER COLUMN column_name datatype‬‬

‫ﻣﺜﺎل دﺳﺘﻮر ‪ ALTER TABLE‬در ‪SQL‬‬

‫ﺑﻪ ﺟﺪول "‪ "Persons‬ﻧﮕﺎه ﮐﻨﯿﺪ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫ﺣﺎﻻ ﻣﯽ ﺧﻮاﻫﯿﻢ ﯾﮏ ﺳﺘﻮن ﺑﻪ ﻧﺎم " ‪ "DateOfBirth‬را در ﺟﺪول "‪ "Persons‬اﺿﺎﻓﻪ ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪ALTER TABLE Persons‬‬


‫‪ADD DateOfBirth date‬‬

‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ در ﺳﺘﻮن ﺟﺪﯾﺪ "‪ "DateOfBirth‬ﻧﻮﻋﯽ از ﺗﺎرﯾﺦ اﺳﺖ و ﺑﺮاي ﻧﮕﻪ داﺷﺘﻦ داده اي از ﻧﻮع ﺗﺎرﯾﺦ اﺳﺘﻔﺎده ﻣﯽ‬
‫ﺷﻮد‪ .‬ﻧﻮع داده ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﭼﻪ ﻧﻮع‪ ،‬داده ﻫﺎي در ﺳﺘﻮن ﻣﯽ ﺗﻮاﻧﻨﺪ وارد ﺷﻮﻧﺪ‪.‬‬

‫‪53‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫" اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City DateOfBirth


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

‫ﻣﺜﺎل ﺗﻐﯿﯿﺮ ﻧﻮع داده ﻫﺎ‬

.‫ " را ﺗﻐﯿﯿﺮ دﻫﯿﻢ‬Persons " ‫" در ﺟﺪول‬DateOfBirth" ‫ﺣﺎﻻ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻧﻮع داده ﻫﺎي ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

ALTER TABLE Persons


ALTER COLUMN DateOfBirth year

.‫" در ﺣﺎل ﺣﺎﺿﺮ ﻣﻘﺪار ﯾﮏ ﺳﺎل در ﻗﺎﻟﺐ دو رﻗﻢ ﯾﺎ ﭼﻬﺎر رﻗﻢ را در ﺧﻮد ﻧﮕﻪ ﻣﯽ دارد‬DateOfBirth" ‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺳﺘﻮن‬

DROP COLUMN ‫ﻣﺜﺎل‬

.‫ " را ﺣﺬف ﮐﻨﯿﻢ‬Persons" ‫" در ﺟﺪول‬DateOfBirth" ‫در ﮔﺎم ﺑﻌﺪي ﻣﯽ ﺧﻮاﻫﯿﻢ ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

ALTER TABLE Persons


DROP COLUMN DateOfBirth

:‫" اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City


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

SQL ‫ در‬AUTO INCREMENT ‫ﻓﯿﻠﺪ‬

‫ اﺟﺎزه ﻣﯽ دﻫﺪ ﯾﮏ ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺗﻮﻟﯿﺪ ﺷﻮد؛ زﻣﺎﻧﯽ ﮐﻪ ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ در ﺟﺪول وارد‬Auto-increment ‫ﻓﯿﻠﺪ‬
.‫ﺷﻮد‬

SQL ‫ در‬AUTO INCREMENT ‫ﻓﯿﻠﺪ‬

54
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺧﯿﻠﯽ اوﻗﺎت ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﻘﺪاري را ﺑﺮاي ‪ primary key‬ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ ﮐﻪ ﺑﺘﻮاﻧﺪ ﺑﺮاي ﻫﺮ رﮐﻮرد ﯾﮏ ﻣﻘﺪار ﺟﺪﯾﺪ را ﺑﻪ ﻃﻮر‬
‫ﺧﻮدﮐﺎر ﺗﻮﻟﯿﺪ ﮐﻨﺪ‪.‬‬

‫ﻣﯽ ﺧﻮاﻫﯿﻢ ﯾﮏ ﻓﯿﻠﺪ ‪ Auto-increment‬را در ﯾﮏ ﺟﺪول اﯾﺠﺎد ﮐﻨﯿﻢ‪.‬‬

‫ﮔﺮاﻣﺮ ‪MySQL‬‬

‫دﺳﺘﻮرات زﯾﺮ ﺳﺘﻮن "‪ "P_Id‬را در ﺟﺪول"‪ "Persons‬ﺑﻪ ﻋﻨﻮان ﮐﻠﯿﺪ اﺻﻠﯽ و ﺑﺎ ﺧﺎﺻﯿﺖ ‪ Auto-increment‬ﺗﻌﺮﯾﻒ ﻣﯽ‬
‫ﮐﻨﻨﺪ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int NOT NULL AUTO_INCREMENT,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫‪City varchar(255),‬‬
‫)‪PRIMARY KEY (P_Id‬‬
‫)‬

‫‪ MySQL‬از ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ AUTO_INCREMENT‬ﺑﺮاي اﺟﺮاي وﯾﮋﮔﯽ ﯾﮏ ‪ auto-increment‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض‪ ،‬ﻣﻘﺪار ﺷﺮوع ﺑﺮاي ﺧﺎﺻﯿﺖ‪ AUTO_INCREMENT‬ﻣﻘﺪار ﯾﮏ اﺳﺖ‪ ،‬و آن را ﺑﺎ ﯾﮏ ﮔﺎم ﺑﺮاي ﻫﺮ رﮐﻮرد‬
‫ﺟﺪﯾﺪ اﻓﺰاﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬

‫ﺑﺮاي ﺗﻌﺮﯾﻒ ﻣﻘﺪار اوﻟﯿﻪ ﺷﺮوع ﺗﺮﺗﯿﺐ ‪ ، AUTO_INCREMENT‬از دﺳﺘﻮر زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪ALTER TABLE Persons AUTO_INCREMENT=100‬‬

‫ﺑﺮاي درج ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ ،"Persons‬ﻣﺠﺒﻮر ﻧﺨﻮاﻫﯿﻢ ﺷﺪ ﮐﻪ ﻣﻘﺪاري ﺑﺮاي ﺳﺘﻮن "‪ "P_Id‬ﻣﺸﺨﺺ ﮐﻨﯿﻢ )ﯾﮏ‬
‫ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ( ‪:‬‬

‫)‪INSERT INTO Persons (FirstName,LastName‬‬


‫)'‪VALUES ('Lars','Monsen‬‬

‫دﺳﺘﻮر ‪ SQL‬ﻓﻮق ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ "Persons‬اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﻪ ﺳﺘﻮن "‪ "P_Id‬ﯾﮏ ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد‬
‫اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ‪ .‬ﺳﺘﻮن "‪ "FirstName‬ﻣﻘﺪار "‪ "Lars‬و ﺳﺘﻮن "‪ "LastName‬ﻣﻘﺪار"‪"Monsen‬را ﺑﻪ ﺧﻮد‬
‫اﺧﺘﺼﺎص ﻣﯽ دﻫﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪SQL Server‬‬

‫‪55‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫دﺳﺘﻮرات ‪ SQL‬زﯾﺮ ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول"‪ "Persons‬را ﺑﻪ ﻋﻨﻮان ﮐﻠﯿﺪ اﺻﻠﯽ و ﺑﺎ ﺧﺎﺻﯿﺖ ‪AUTO_INCREMENT‬‬
‫ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﺪ ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id int PRIMARY KEY IDENTITY,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬

‫‪ MS SQL Server‬از ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ IDENTITY‬ﺑﺮاي اﻧﺠﺎم ﮐﺎر ﺧﺎﺻﯿﺖ ‪ auto-increment‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض‪ ،‬ﻣﻘﺪار ﺷﺮوع ﺑﺮاي ﺧﺎﺻﯿﺖ ‪ IDENTITY‬ﻣﻘﺪار ﯾﮏ اﺳﺖ و آن را ﺑﺎ ﯾﮏ ﮔﺎم ﺑﺮاي ﻫﺮ رﮐﻮرد ﺟﺪﯾﺪ اﻓﺰاﯾﺶ‬
‫ﻣﯽ دﻫﺪ‪.‬‬

‫ﺑﺮاي ﺗﻌﺮﯾﻒ ﺳﺘﻮن "‪ "P_Id‬ﮐﻪ ﺑﺎ ﻣﻘﺪار ‪ 10‬ﺷﺮوع و ﺑﺎ ﻣﻘﺪار ‪ 5‬اﻓﺰاﯾﺶ ﯾﺎﺑﺪ‪ ،‬ﺑﺎﯾﺪ ‪ identity‬را ﺑﻪ )‪ IDENTITY(10,5‬ﺗﻐﯿﯿﺮ‬
‫دﻫﯿﺪ‪.‬‬

‫ﺑﺮاي درج ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ ،"Persons‬ﻣﺠﺒﻮر ﻧﺨﻮاﻫﯿﻢ ﺷﺪ ﮐﻪ ﻣﻘﺪاري ﺑﺮاي ﺳﺘﻮن "‪ "P_Id‬وارد ﮐﻨﯿﻢ )ﯾﮏ‬
‫ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ(‪:‬‬

‫)‪INSERT INTO Persons (FirstName,LastName‬‬


‫)'‪VALUES ('Lars','Monsen‬‬

‫دﺳﺘﻮر ‪ SQL‬ﻓﻮق ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ "Persons‬اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﻪ ﺳﺘﻮن "‪ "P_Id‬ﯾﮏ ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد‬
‫اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ‪ .‬ﺳﺘﻮن "‪ "FirstName‬ﻣﻘﺪار "‪ "Lars‬و ﺳﺘﻮن "‪ "LastName‬ﻣﻘﺪار"‪"Monsen‬را ﺑﻪ ﺧﻮد‬
‫اﺧﺘﺼﺎص ﻣﯽ دﻫﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪Access‬‬

‫دﺳﺘﻮرات ‪ SQL‬زﯾﺮ ﺳﺘﻮن "‪ "P_Id‬در ﺟﺪول"‪ "Persons‬را ﺑﻪ ﻋﻨﻮان ﮐﻠﯿﺪ اﺻﻠﯽ و ﺑﺎ ﺧﺎﺻﯿﺖ ‪AUTO_INCREMENT‬‬
‫ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﺪ ‪:‬‬

‫‪CREATE TABLE Persons‬‬


‫(‬
‫‪P_Id PRIMARY KEY AUTOINCREMENT,‬‬
‫‪LastName varchar(255) NOT NULL,‬‬
‫‪FirstName varchar(255),‬‬
‫‪Address varchar(255),‬‬
‫)‪City varchar(255‬‬
‫)‬
‫‪56‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪ Access‬از ﮐﻠﻤﻪ ﮐﻠﯿﺪي ‪ AUTOINCREMENT‬ﺑﺮاي اﻧﺠﺎم ﮐﺎر ﺧﺎﺻﯿﺖ ‪ auto-increment‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض‪ ،‬ﻣﻘﺪار ﺷﺮوع ﺑﺮاي ﺧﺎﺻﯿﺖ‪ AUTO_INCREMENT‬ﻣﻘﺪار ﯾﮏ اﺳﺖ‪ ،‬و آن را ﺑﺎ ﯾﮏ ﮔﺎم ﺑﺮاي ﻫﺮ رﮐﻮرد‬
‫ﺟﺪﯾﺪ اﻓﺰاﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬

‫ﺑﺮاي ﺗﻌﺮﯾﻒ ﺳﺘﻮن "‪ "P_Id‬ﮐﻪ ﺑﺎ ﻣﻘﺪار ‪ 10‬ﺷﺮوع و ﺑﺎ ﻣﻘﺪار ‪ 5‬اﻓﺰاﯾﺶ ﯾﺎﺑﺪ‪ ،‬ﺑﺎﯾﺪ ‪ AUTOINCREMENT‬را ﺑﻪ‬
‫)‪ AUTOINCREMENT(10,5‬ﺗﻐﯿﯿﺮ دﻫﯿﺪ‪.‬‬

‫ﺑﺮاي درج ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ ، "Persons‬ﻧﻤﯽ ﺧﻮاﻫﺪ ﮐﻪ ﻣﻘﺪاري ﺑﺮاي ﺳﺘﻮن "‪ "P_Id‬وارد ﮐﻨﯿﻢ )ﯾﮏ ﻣﻘﺪار‬
‫ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ(‪:‬‬

‫)‪INSERT INTO Persons (FirstName,LastName‬‬


‫)'‪VALUES ('Lars','Monsen‬‬

‫دﺳﺘﻮر ‪ SQL‬ﻓﻮق ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ "Persons‬اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﻪ ﺳﺘﻮن "‪ "P_Id‬ﯾﮏ ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد‬
‫اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ‪ .‬ﺳﺘﻮن "‪ "FirstName‬ﻣﻘﺪار "‪ "Lars‬و ﺳﺘﻮن "‪ "LastName‬ﻣﻘﺪار"‪"Monsen‬را ﺑﻪ ﺧﻮد‬
‫اﺧﺘﺼﺎص ﻣﯽ دﻫﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪Oracle‬‬

‫در اوراﮐﻞ‪ ،‬ﮐﺪ ﮐﻤﯽ ﺑﯿﺸﺘﺮ ﻓﺮﯾﺒﻨﺪه ﺗﺮ اﺳﺖ‪.‬‬

‫ﺷﻤﺎ ﻣﺠﺒﻮر ﺧﻮاﻫﯿﺪ ﺷﺪ ﯾﮏ ﻓﯿﻠﺪ ‪ auto-increment‬ﺑﺎ ﺷﯽ ﺗﺮﺗﯿﺒﯽ )اﯾﻦ ﺷﯽ ﺷﻤﺎره ﺗﺮﺗﯿﺒﯽ ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﺪ( ﺑﺴﺎزﯾﺪ‪.‬‬

‫از ﮔﺮاﻣﺮ ‪ CREATE SEQUENCE‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬

‫‪CREATE SEQUENCE seq_person‬‬


‫‪MINVALUE 1‬‬
‫‪START WITH 1‬‬
‫‪INCREMENT BY 1‬‬
‫‪CACHE 10‬‬

‫ﮐﺪ ﺑﺎﻻ ﺑﺎﻋﺚ اﯾﺠﺎد ﯾﮏ ﺗﻮاﻟﯽ ﺑﺎ ﻧﺎم ‪ ،seq_person‬ﮐﻪ ﺑﺎ ‪ 1‬ﺷﺮوع ﻣﯽ ﺷﻮد و ﺗﻮﺳﻂ ‪ 1‬اﻓﺰاﯾﺶ ﺧﻮاﻫﺪ ﮐﺮد‪ .‬ﻣﻘﺪار آن ﻧﯿﺰ ﺗﺎ‬
‫‪ ،10‬ﺑﺮاي ﻋﻤﻠﮑﺮد ﺑﺎﻻ ذﺧﯿﺮه ﮔﺎه )‪ (Cache‬ﺗﻌﺮﯾﻒ ﮐﺮده اﺳﺖ‪ .‬ﮔﺰﯾﻨﻪ ‪ Cache‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﭼﻨﺪ ﻣﻘﺪار دﻧﺒﺎﻟﻪ اي ﺑﺮاي‬
‫دﺳﺘﺮﺳﯽ ﺳﺮﯾﻊ ﺗﺮ‪ ،‬در ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﺑﺮاي درج ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ ،"Persons‬ﺑﺎﯾﺪ از ﺗﺎﺑﻊ ‪ nextval‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ )اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺪار ﺑﻌﺪي از دﻧﺒﺎﻟﻪ‬
‫‪ seq_person‬را ﺑﺎزﯾﺎﺑﯽ ﻣﯽ ﮐﻨﺪ(‪:‬‬

‫)‪INSERT INTO Persons (P_Id,FirstName,LastName‬‬

‫‪57‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫)'‪VALUES (seq_person.nextval,'Lars','Monsen‬‬

‫دﺳﺘﻮر ‪ SQL‬ﻓﻮق ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول "‪ "Persons‬اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﻪ ﺳﺘﻮن "‪ "P_Id‬ﯾﮏ ﻣﻘﺪار ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد‬
‫اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ‪ .‬ﺳﺘﻮن "‪ "FirstName‬ﻣﻘﺪار "‪ "Lars‬و ﺳﺘﻮن "‪ "LastName‬ﻣﻘﺪار"‪"Monsen‬را ﺑﻪ ﺧﻮد‬
‫اﺧﺘﺼﺎص ﻣﯽ دﻫﻨﺪ‪.‬‬

‫‪ View‬ﻫﺎ در ‪SQL‬‬

‫‪ View‬ﯾﮏ ﺟﺪول ﻣﺠﺎزي اﺳﺖ‪.‬‬

‫اﯾﻦ ﻓﺼﻞ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﯾﮏ ‪ View‬را اﯾﺠﺎد‪ ،‬ﺑﺮوز رﺳﺎﻧﯽ و ﭘﺎك ﮐﻨﯿﺪ‪.‬‬

‫دﺳﺘﻮر ‪ CREATE VIEW‬در ‪SQL‬‬

‫در ‪ ،SQL‬ﯾﮏ ‪ view‬ﯾﮏ ﺟﺪول ﻣﺠﺎزي اﺳﺖ ﮐﻪ ﺑﺮ اﺳﺎس ﻧﺘﯿﺠﻪ ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮرات ‪ SQL‬ﺑﻪ وﺟﻮد ﻣﯽ آﯾﺪ‪.‬‬

‫ﯾﮏ ‪ view‬ﺷﺎﻣﻞ ﺳﻄﺮ و ﺳﺘﻮن‪ ،‬درﺳﺖ ﻣﺜﻞ ﯾﮏ ﺟﺪول واﻗﻌﯽ اﺳﺖ‪ .‬ﻓﯿﻠﺪ ﻫﺎ در ﯾﮏ ‪ ،view‬ﻫﻤﺎن ﻓﯿﻠﺪ ﻫﺎ از ﯾﮏ ﯾﺎ ﭼﻨﺪ‬
‫ﺟﺪول واﻗﻌﯽ در ﭘﺎﯾﮕﺎه داده ﻫﺴﺘﻨﺪ‪.‬‬

‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺗﻮاﺑﻊ ‪ WHERE ،SQL‬و دﺳﺘﻮرات ‪ JOIN‬را ﺑﻪ ﯾﮏ ‪ view‬اﺿﺎﻓﻪ ﮐﻨﯿﺪ و داده را اراﺋﻪ دﻫﯿﺪ؛ در ﺻﻮرﺗﯽ ﮐﻪ‬
‫اﻃﻼﻋﺎت از ﯾﮏ ﺟﺪول واﺣﺪ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ CREATE VIEW‬در ‪SQL‬‬

‫‪CREATE VIEW view_name AS‬‬


‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE condition‬‬

‫ﺗﻮﺟﻪ‪ :‬ﯾﮏ ‪ view‬ﻫﻤﻮاره اﻃﻼﻋﺎت ﺑﺮوز را ﻧﺸﺎن ﻣﯽ دﻫﺪ! ﻣﻮﺗﻮر ﭘﺎﯾﮕﺎه داده داده ﻫﺎ را ﺑﺎزﺳﺎزي ﻣﯽ ﮐﻨﺪ و ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر‬
‫‪ ، view's SQL‬ﻫﺮ ﺑﺎر ﮐﻪ ﯾﮏ ﮐﺎرﺑﺮ ﻧﻤﺎﯾﺶ داده ﺷﺪ ﯾﮏ ‪ view‬اﺳﺖ‪.‬‬

‫ﻣﺜﺎل ‪ CREATE VIEW‬در ‪SQL‬‬

‫اﮔﺮ ﺷﻤﺎ ﭘﺎﯾﮕﺎه داده ‪ Northwind‬را دارﯾﺪ‪ ،‬ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺒﯿﻨﯿﺪ ﮐﻪ ﭼﻨﺪﯾﻦ ‪ view‬ﻧﺼﺐ ﺷﺪه ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض دارد‪.‬‬

‫ﻧﻤﺎ )‪ (view‬ﺑﺎ ﻧﺎم "‪ ،"Current Product List‬ﺗﻤﺎم ﻣﺤﺼﻮﻻت ﻓﻌﺎل )ﻣﺤﺼﻮﻻﺗﯽ ﮐﻪ ﻣﻮﻗﻮف ﻧﺸﺪه اﻧﺪ( از ﺟﺪول‬
‫"‪ "Products‬ﻟﯿﺴﺖ ﻣﯽ ﮐﻨﺪ‪ .‬اﯾﻦ ‪ view‬ﺑﺎ دﺳﺘﻮرات ‪ SQL‬زﯾﺮ اﯾﺠﺎد ﺷﺪه‪:‬‬

‫‪58‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

CREATE VIEW [Current Product List] AS


SELECT ProductID,ProductName
FROM Products
WHERE Discontinued='No'

:‫ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﯾﺮ ﭘﺮس و ﺟﻮ ﮐﻨﯿﻢ‬view ‫ﻣﯽ ﺗﻮاﻧﯿﻢ از‬

SELECT * FROM [Current Product List]

‫" ﺑﺎ ﯾﮏ ﻗﯿﻤﺖ واﺣﺪ‬Products" ‫ ﺑﻤﻨﻈﻮر اﻧﺘﺨﺎب ﻫﺮ ﻣﺤﺼﻮل در ﺟﺪول‬Northwind ‫ ﻫﺎ در ﭘﺎﯾﮕﺎه داده‬view ‫ﯾﮑﯽ دﯾﮕﺮ از‬
:‫ ﺑﺎﻻﺗﺮ از ﻣﯿﺎﻧﮕﯿﻦ ﻗﯿﻤﺖ واﺣﺪ اﺳﺖ‬،

CREATE VIEW [Products Above Average Price] AS


SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

:‫ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﯾﺮ ﭘﺮس و ﺟﻮ ﮐﻨﯿﻢ‬view ‫ﻣﯽ ﺗﻮاﻧﯿﻢ از‬

SELECT * FROM [Products Above Average Price]

‫ ﺗﻮﺟﻪ‬.‫ اﺳﺖ‬1997 ‫ ﻣﺤﺎﺳﺒﻪ ﮐﻞ ﻓﺮوش ﺑﺮاي ﻫﺮ دﺳﺘﻪ ﺑﻨﺪي در ﺳﺎل‬Northwind ‫ ﻫﺎ در ﭘﺎﯾﮕﺎه داده‬view ‫ﯾﮑﯽ دﯾﮕﺮ از‬
:‫" اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﺪ‬Product Sales for 1997" ‫ دﯾﮕﺮي ﺑﻪ ﻧﺎم‬view ‫ اﻃﻼﻋﺎت ﺧﻮد را از‬view ‫داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ اﯾﻦ‬

CREATE VIEW [Category Sales For 1997] AS


SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

:‫ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﯾﺮ ﭘﺮس و ﺟﻮ ﮐﻨﯿﻢ‬view ‫ﻣﯽ ﺗﻮاﻧﯿﻢ از‬

SELECT * FROM [Category Sales For 1997]

:‫" را ﻣﯽ ﺧﻮاﻫﯿﻢ‬Beverages" ‫ ﺣﺎﻻ ﮐﻞ ﻓﺮوش ﻓﻘﻂ در دﺳﺘﻪ‬.‫ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﯿﻢ ﯾﮏ ﺷﺮط ﺑﻪ ﭘﺮس و ﺟﻮ اﺿﺎﻓﻪ ﮐﻨﯿﻢ‬

SELECT * FROM [Category Sales For 1997]


WHERE CategoryName='Beverages'

VIEW ‫ﺑﺮوز رﺳﺎﻧﯽ‬

:‫ را ﺑﺮوز رﺳﺎﻧﯽ ﮐﻨﯿﺪ‬view ‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺎ اﺳﺘﻔﺎده از ﮔﺮاﻣﺮ زﯾﺮ ﯾﮏ‬

59
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﮔﺮاﻣﺮ ‪ CREATE OR REPLACE VIEW‬در ‪SQL‬‬

‫‪CREATE OR REPLACE VIEW view_name AS‬‬


‫)‪SELECT column_name(s‬‬
‫‪FROM table_name‬‬
‫‪WHERE condition‬‬

‫ﺣﺎﻻ ﻣﯽ ﺧﻮاﻫﯿﻢ ﺳﺘﻮن "‪ "Category‬را ﺑﻪ ﻧﻤﺎي "‪ "Current Product List‬اﺿﺎﻓﻪ ﮐﻨﯿﻢ‪ .‬اﯾﻦ ﻧﻤﺎ را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮرات‬
‫‪ SQL‬زﯾﺮ ﺑﺮوز رﺳﺎﻧﯽ ﺧﻮاﻫﯿﻢ ﮐﺮد‪:‬‬

‫‪CREATE VIEW [Current Product List] AS‬‬


‫‪SELECT ProductID,ProductName,Category‬‬
‫‪FROM Products‬‬
‫'‪WHERE Discontinued='No‬‬

‫ﺣﺬف ﮐﺮدن ﯾﮏ ‪ View‬در ‪SQL‬‬

‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﯾﮏ ﻧﻤﺎ را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ DROP VIEW‬ﺣﺬف ﮐﻨﯿﺪ‪.‬‬

‫ﮔﺮاﻣﺮ ‪ DROP VIEW‬در ‪SQL‬‬

‫‪DROP VIEW view_name‬‬

‫ﺗﻮاﺑﻊ ﺗﺎرﯾﺦ در ‪SQL‬‬

‫ﺗﺎرﯾﺦ در ‪SQL‬‬

‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺳﺨﺖ ﺗﺮﯾﻦ ﺑﺨﺶ در ﻫﻨﮕﺎم ﮐﺎر ﺑﺎ ﺗﺎرﯾﺦ اﯾﻦ اﺳﺖ ﮐﻪ اﻃﻤﯿﻨﺎن ﺣﺎﺻﻞ ﮐﻨﯿﺪ ﮐﻪ ﻓﺮﻣﺖ ﺗﺎرﯾﺦ ﺷﻤﺎ زﻣﺎن وارد‬
‫ﮐﺮدن‪ ،‬ﻣﻄﺎﺑﻖ ﺑﺎ ﻓﺮﻣﺖ ﺳﺘﻮن ﺗﺎرﯾﺦ در ﭘﺎﯾﮕﺎه داده ﺑﺎﺷﺪ‪.‬‬

‫ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ ﻣﺤﺘﻮﯾﺎت ﺷﺎﻣﻞ ﺑﺨﺶ ﺗﺎرﯾﺦ ﺑﺎﺷﺪ‪ ،‬اﻧﺘﻈﺎر ﻣﯽ رود ﮐﻪ در ﭘﺮس و ﺟﻮ ﺗﺎن ﮐﺎر ﮐﻨﺪ‪ .‬اﻣﺎ اﮔﺮ ﯾﮏ ﺑﺨﺶ ﻫﻢ درﮔﯿﺮ‬
‫ﺷﻮد‪ ،‬آن را ﭘﯿﭽﯿﺪه ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﻗﺒﻞ از ﺻﺤﺒﺖ ﮐﺮدن در ﻣﻮرد ﻋﻮارض ﻧﺎﺷﯽ از ﭘﺮس و ﺟﻮ ﺑﺮاي ﺗﺎرﯾﺦ‪ ،‬ﺑﻪ ﻣﻬﻢ ﺗﺮﯾﻦ ﺗﻮاﺑﻊ داﺧﻠﯽ در راﺑﻄﻪ ﺑﺎ ﺗﺎرﯾﺦ ﻧﮕﺎﻫﯽ‬
‫ﺑﯿﻨﺪازﯾﺪ‪.‬‬

‫ﺗﻮاﺑﻊ ﺗﺎرﯾﺦ در ‪MySQL‬‬

‫ﺟﺪول زﯾﺮ ﻟﯿﺴﺖ ﻣﻬﻢ ﺗﺮﯾﻦ ﺗﻮاﺑﻊ داﺧﻠﯽ در راﺑﻄﻪ ﺑﺎ ﺗﺎرﯾﺦ در ‪ MySQL‬ﻫﺴﺘﻨﺪ‪:‬‬

‫‪60‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﺗﺎﺑﻊ‬

‫ﺗﺎرﯾﺦ و زﻣﺎن ﻓﻌﻠﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪NOW‬‬

‫ﺗﺎرﯾﺦ ﺟﺎري را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪CURDATE‬‬

‫زﻣﺎن ﺟﺎري را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪CURTIME‬‬

‫ﺑﺨﺶ ﺗﺎرﯾﺦ از ﯾﮏ ﻋﺒﺎرت ﺗﺎرﯾﺦ ﯾﺎ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن را اﺳﺘﺨﺮاج ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫)(‪DATE‬‬

‫ﺗﻨﻬﺎ ﺑﺨﺸﯽ از ﯾﮏ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن را ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ ‪.‬‬ ‫)(‪EXTRACT‬‬

‫ﯾﮏ ﺑﺎزه زﻣﺎﻧﯽ ﻣﺸﺨﺺ ﺷﺪه را ﺑﻪ ﯾﮏ ﺗﺎرﯾﺦ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫)(‪DATE_ADD‬‬

‫ﯾﮏ ﺑﺎزه زﻣﺎﻧﯽ ﻣﺸﺨﺺ ﺷﺪه از ﺗﺎرﯾﺦ اﺳﺖ‪.‬‬ ‫)(‪DATE_SUB‬‬

‫ﺗﻌﺪاد روزﻫﺎي ﺑﯿﻦ دو ﺗﺎرﯾﺦ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪DATEDIFF‬‬

‫ﻧﻤﺎﯾﺶ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن داده ﻫﺎ در ﻓﺮﻣﺖ ﻫﺎي ﻣﺨﺘﻠﻒ اﺳﺖ‪.‬‬ ‫)(‪DATE_FORMAT‬‬

‫ﺗﻮاﺑﻊ ﺗﺎرﯾﺦ در ‪SQL Server‬‬

‫ﺟﺪول زﯾﺮ ﻟﯿﺴﺘﯽ از ﻣﻬﻢ ﺗﺮﯾﻦ ﺗﻮاﺑﻊ ﺗﺎرﯾﺦ داﺧﻠﯽ در ‪ SQL Server‬ﻫﺴﺘﻨﺪ‪:‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﺗﺎﺑﻊ‬

‫ﺗﺎرﯾﺦ و زﻣﺎن ﻓﻌﻠﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪GETDATE‬‬

‫ﺑﺨﺸﯽ از ﯾﮏ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪DATEPART‬‬

‫ﯾﮏ ﺑﺎزه زﻣﺎﻧﯽ ﻣﺸﺨﺺ ﺷﺪه از ﺗﺎرﯾﺦ را اﺿﺎﻓﻪ ﯾﺎ ﮐﻢ ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫)(‪DATEADD‬‬

‫زﻣﺎن ﺑﯿﻦ دو ﺗﺎرﯾﺦ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫)(‪DATEDIFF‬‬

‫داده ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن در ﻓﺮﻣﺖ ﻫﺎي ﻣﺨﺘﻠﻒ ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬ ‫)(‪CONVERT‬‬

‫اﻧﻮاع داده ﺗﺎرﯾﺦ در ‪SQL‬‬

‫‪ MySQL‬ﺑﺎ اﻧﻮاع داده ﻫﺎي زﯾﺮ‪ ،‬ﺑﺮاي ذﺧﯿﺮه ﺳﺎزي ﯾﮏ ﻣﻘﺪار ﺗﺎرﯾﺦ ﯾﺎ ﯾﮏ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن در ﭘﺎﯾﮕﺎه داده ﻣﯽ آﯾﺪ‪:‬‬

‫ﻓﺮﻣﺖ ‪YYYY-MM-DD :DATE‬‬ ‫·‬


‫ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :DATETIME‬‬ ‫·‬
‫ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :TIMESTAMP‬‬ ‫·‬
‫· ﻓﺮﻣﺖ ‪ YYYY :YEAR‬ﯾﺎ ‪YY‬‬
‫‪ SQL Server‬ﺑﺎ اﻧﻮاع داده ﻫﺎي زﯾﺮ‪ ،‬ﺑﺮاي ذﺧﯿﺮه ﺳﺎزي ﯾﮏ ﻣﻘﺪار ﺗﺎرﯾﺦ ﯾﺎ ﯾﮏ ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن در ﭘﺎﯾﮕﺎه داده ﻣﯽ آﯾﺪ‪:‬‬
‫‪61‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻓﺮﻣﺖ ‪YYYY-MM-DD :DATE‬‬ ‫·‬


‫ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :DATETIME‬‬ ‫·‬
‫ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :SMALLDATETIME‬‬ ‫·‬
‫ﻓﺮﻣﺖ ‪ :TIMESTAMP‬ﯾﮏ ﻋﺪد ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد‬ ‫·‬
‫ﺗﻮﺟﻪ‪ :‬زﻣﺎﻧﯽ ﮐﻪ ﯾﮏ ﺟﺪول ﺟﺪﯾﺪ در ﭘﺎﯾﮕﺎه داده ﺧﻮد ﻣﯽ ﺳﺎزﯾﺪ‪ ،‬اﻧﻮاع ﺗﺎرﯾﺦ ﺑﺮاي ﯾﮏ ﺳﺘﻮن اﻧﺘﺨﺎب ﻣﯽ ﺷﻮﻧﺪ!‬

‫ﺑﺮاي ﻣﺮور ﺑﺮ ﻫﻤﻪ ﻧﻮع داده ﻫﺎي ﻣﻮﺟﻮد‪ ،‬ﺑﻪ ﻣﺮﺟﻊ ﮐﺎﻣﻞ داده ﻫﺎ رﺟﻮع ﮐﻨﯿﺪ‪.‬‬

‫ﮐﺎر ﺑﺎ ﺗﺎرﯾﺦ در ‪SQL‬‬

‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﻣﯽ ﺗﻮاﻧﯿﺪ دو ﺗﺎرﯾﺦ را ﺑﻪ راﺣﺘﯽ ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ؛ اﮔﺮ ﻫﯿﭻ ﻋﻨﺼﺮ زﻣﺎن ﻣﺒﻬﻤﯽ وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ!‬

‫ﺟﺪول "‪ "Orders‬ﺑﻪ ﻓﺮض زﯾﺮ اﺳﺖ‪:‬‬

‫‪OrderId‬‬ ‫‪ProductName‬‬ ‫‪OrderDate‬‬


‫‪1‬‬ ‫‪Geitost‬‬ ‫‪2008-11-11‬‬
‫‪2‬‬ ‫‪Camembert Pierrot‬‬ ‫‪2008-11-09‬‬
‫‪3‬‬ ‫‪Mozzarella di Giovanni‬‬ ‫‪2008-11-11‬‬
‫‪4‬‬ ‫‪Mascarpone Fabioli‬‬ ‫‪2008-10-29‬‬

‫ﺣﺎﻻ ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺟﺪول ﺑﺎﻻ در ﺳﺘﻮن ‪ OrderDate‬رﮐﻮرد "‪ "2008-11-11‬را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SELECT‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫'‪SELECT * FROM Orders WHERE OrderDate='2008-11-11‬‬

‫ﺟﺪول ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪OrderId‬‬ ‫‪ProductName‬‬ ‫‪OrderDate‬‬


‫‪1‬‬ ‫‪Geitost‬‬ ‫‪2008-11-11‬‬
‫‪3‬‬ ‫‪Mozzarella di Giovanni‬‬ ‫‪2008-11-11‬‬

‫ﺣﺎل‪ ،‬ﻓﺮض ﮐﻨﯿﻢ ﮐﻪ ﺟﺪول "‪ "Orders‬ﺑﻪ اﯾﻦ ﺻﻮرت ﺑﺎﺷﺪ )ﺑﻪ ﻋﻨﺼﺮ زﻣﺎن در ﺳﺘﻮن"‪ "OrderDate‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ(‪:‬‬

‫‪OrderId‬‬ ‫‪ProductName‬‬ ‫‪OrderDate‬‬


‫‪1‬‬ ‫‪Geitost‬‬ ‫‪2008-11-11 13:23:44‬‬
‫‪2‬‬ ‫‪Camembert Pierrot‬‬ ‫‪2008-11-09 15:45:21‬‬
‫‪3‬‬ ‫‪Mozzarella di Giovanni‬‬ ‫‪2008-11-11 11:12:01‬‬
‫‪4‬‬ ‫‪Mascarpone Fabioli‬‬ ‫‪2008-10-29 14:56:59‬‬

‫‪62‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫اﮔﺮ از ﻫﻤﺎن دﺳﺘﻮر ‪ SELECT‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫'‪SELECT * FROM Orders WHERE OrderDate='2008-11-11‬‬

‫ﻫﯿﭻ ﻧﺘﯿﺠﻪ اي ﺣﺎﺻﻞ ﻧﻤﯽ ﺷﻮد‪ ،‬اﯾﻦ ﺑﺨﺎﻃﺮ اﺳﺖ ﮐﻪ ﭘﺮس و ﺟﻮ ﻓﻘﻂ ﻓﺮﻣﺖ ﺗﺎرﯾﺦ ﺑﺪون ﺑﺨﺶ زﻣﺎن را ﺟﺴﺘﺠﻮ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﻧﮑﺘﻪ‪ :‬اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ ﭘﺮس و ﺟﻮ ﺗﺎن را ﺳﺎده و آﺳﺎن ﻧﮕﻬﺪاري ﮐﻨﯿﺪ‪ ،‬ﺑﻪ ﻋﻨﺼﺮ زﻣﺎن در ﺗﺎرﯾﺦ ﺗﺎن اﺟﺎزه ورود ﻧﺪﻫﯿﺪ!‬

‫ﻣﻘﺪار ‪NULL‬‬

‫ﻣﻘﺪار ‪ NULL‬ﻧﺸﺎن دﻫﻨﺪه داده ﻫﺎي ﻧﺎﺷﻨﺎﺧﺘﻪ ﻫﺴﺘﻨﺪ‪.‬‬

‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض‪ ،‬ﯾﮏ ﺳﺘﻮن ﺟﺪول ﻣﯽ ﺗﻮاﻧﺪ ﻣﻘﺪار ‪ NULL‬را ﻧﮕﻪ دارد‪.‬‬

‫اﯾﻦ ﻗﺴﻤﺖ ﻋﻤﻠﮕﺮﻫﺎي ‪ IS NULL‬و ‪ NOT NULL‬را ﺗﻮﺿﯿﺢ ﺧﻮاﻫﺪ داد‪.‬‬

‫ﻣﻘﺎدﯾﺮ ‪ NULL‬در ‪SQL‬‬

‫اﮔﺮ ﯾﮏ ﺳﺘﻮن در ﯾﮏ ﺟﺪول اﺧﺘﯿﺎري ﺑﺎﺷﺪ‪ ،‬ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺪون اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﻣﻘﺪار ﺑﻪ اﯾﻦ ﺳﺘﻮن ﯾﮏ رﮐﻮرد ﺟﺪﯾﺪ ﺳﺎﺧﺘﻪ ﯾﺎ‬
‫ﺑﺮوز رﺳﺎﻧﯽ ﮐﻨﯿﻢ‪ .‬اﯾﻦ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ اﯾﻦ ﻓﯿﻠﺪ ﺑﺎ ﯾﮏ ﻣﻘﺪار ‪ NULL‬ﭘﺮ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﻣﻘﺪار ‪ NULL‬از ﺑﻘﯿﻪ ﻣﻘﺎدﯾﺮ ﻣﺘﻔﺎوت ﻋﻤﻞ ﻣﯽ ﮐﻨﻨﺪ‪.‬‬

‫‪ NULL‬ﺑﻪ ﻋﻨﻮان ﻣﻘﺎدﯾﺮ ﻧﺎﺷﻨﺎﺧﺘﻪ و ﯾﺎ ﻏﯿﺮ ﻗﺎﺑﻞ اﺟﺮا اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﻧﮑﺘﻪ‪ :‬ﻣﻘﺎﯾﺴﻪ ‪ NULL‬و ﻋﺪد ‪ 0‬ﻣﻤﮑﻦ ﻧﯿﺴﺖ‪ .‬آﻧﻬﺎ ﺑﺎ ﻫﻢ ﺑﺮاﺑﺮ ﻧﯿﺴﺘﻨﺪ‪.‬‬

‫ﮐﺎر ﮐﺮدن ﺑﺎ ﻣﻘﺪار‪NULL‬‬

‫ﺟﺪول "‪:"Persons‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬


‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Sandnes‬‬
‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬
‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Stavanger‬‬

‫‪63‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻓﺮض ﮐﻨﯿﺪ ﮐﻪ ﺳﺘﻮن "‪ "Address‬در ﺟﺪول "‪ "Persons‬اﺧﺘﯿﺎري اﺳﺖ‪ .‬اﯾﻦ ﺑﻪ اﯾﻦ ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ اﮔﺮ ﻫﯿﭻ ﻣﻘﺪاري ﺑﺮاي‬
‫اﯾﻦ ﺳﺘﻮن وارد ﻧﮑﻨﯿﺪ ﺑﺎ ﻣﻘﺪار ‪ NULL‬را ﭘﺮ ﻣﯽ ﺷﻮد‪.‬‬

‫ﭼﮕﻮﻧﻪ ﻣﯽ ﺗﻮان ﻣﻘﺪار ‪ NULL‬را آزﻣﺎﯾﺶ ﮐﻨﯿﻢ؟‬

‫ﻣﻤﮑﻦ ﻧﯿﺴﺖ اﯾﻦ ﮐﺎر را ﺑﺎ ﻋﻤﻠﮕﺮ ﻫﺎي راﺑﻄﻪ ﻣﺎﻧﻨﺪ = ‪ ،> ،‬و ﯾﺎ > < اﻧﺠﺎم دﻫﯿﺪ‪.‬‬

‫ﻣﯽ ﺧﻮاﻫﯿﻢ از ﻋﻤﻠﮕﺮ ﻫﺎي ‪ IS NULL‬و ‪ IS NOT NULL‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬

‫ﻣﻘﺪار ‪IS NULL‬‬

‫ﭼﮕﻮﻧﻪ ﻣﯽ ﺗﻮاﻧﻢ ﺗﻨﻬﺎ رﮐﻮرد ﻫﺎﯾﯽ ﺑﺎ ﻣﻘﺎدﯾﺮ ‪ NULL‬را در ﺳﺘﻮن "‪ "Address‬اﻧﺘﺨﺎب ﮐﻨﯿﻢ؟‬

‫ﻣﯽ ﺧﻮاﻫﯿﻢ از ﻋﻤﻠﮕﺮ ‪ NULL‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT LastName,FirstName,Address FROM Persons‬‬


‫‪WHERE Address IS NULL‬‬

‫ﺟﺪول ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬


‫‪Hansen‬‬ ‫‪Ola‬‬
‫‪Pettersen‬‬ ‫‪Kari‬‬

‫ﻧﮑﺘﻪ‪ :‬ﻫﻤﯿﺸﻪ از ‪ IS NULL‬ﺑﺮاي ﺟﺴﺘﺠﻮي ﻣﻘﺎدﯾﺮ ‪ NULL‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬

‫ﻣﻘﺪار ‪IS NOT NULL‬‬

‫ﭼﮕﻮﻧﻪ ﻣﯽ ﺗﻮاﻧﻢ ﺗﻨﻬﺎ رﮐﻮردﻫﺎي ﺑﺎ ﻣﻘﺎدﯾﺮ ‪ NOT NULL‬را در ﺳﺘﻮن "‪ "Address‬اﻧﺘﺨﺎب ﮐﻨﻢ؟‬

‫ﻣﯽ ﺧﻮاﻫﯿﻢ از ﻋﻤﻠﮕﺮ ‪ IS NOT NULL‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT LastName,FirstName,Address FROM Persons‬‬


‫‪WHERE Address IS NOT NULL‬‬

‫ﺟﺪول ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪64‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

LastName FirstName Address


Svendson Tove Borgvn 23

.‫ ﻧﮕﺎه ﺧﻮاﻫﯿﻢ ﮐﺮد‬COALESCE() ،IFNULL() ،NVL() ،ISNULL() ‫در ﻗﺴﻤﺖ ﺑﻌﺪ ﺑﻪ ﺗﻮاﺑﻊ‬

SQL ‫ در‬NULL ‫ﺗﻮاﺑﻊ‬

COALESCE() ‫ و‬ISNULL(), NVL(), IFNULL() ‫ﺗﻮاﺑﻊ‬

:‫" زﯾﺮ ﻧﮕﺎه ﮐﻨﯿﺪ‬Products" ‫ﺑﻪ ﺟﺪول‬

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder


1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23
3 Gorgonzola 15.67 9 20

.‫ ﺑﺎﺷﺪ‬NULL ‫ و ﻣﻤﮑﻦ اﺳﺖ ﺣﺎوي ﻣﻘﺪار‬،‫" اﺧﺘﯿﺎري اﺳﺖ‬UnitsOnOrder"‫ﻓﺮض ﮐﻨﯿﺪ ﮐﻪ ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬SELECT ‫از دﺳﺘﻮر‬

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

.‫ اﺳﺖ‬NULL ‫ ﻧﺘﯿﺠﻪ‬،‫ ﺑﺎﺷﺪ‬NULL ‫" ﻣﻘﺪار‬UnitsOnOrder" ‫ اﮔﺮ ﻫﺮ ﯾﮏ از ﻣﻘﺎدﯾﺮ ﺳﺘﻮن‬،‫در ﻣﺜﺎل ﺑﺎﻻ‬

‫ اﺳﺘﻔﺎده ﻣﯽ‬،‫ رﻓﺘﺎر ﮐﻨﻨﺪ‬NULL ‫ ﺑﺮاي ﻣﺸﺨﺺ ﮐﺮدن اﯾﻨﮑﻪ ﭼﮕﻮﻧﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﻘﺎدﯾﺮ‬Access ‫ ﻣﻮﺟﻮد در‬ISNULL() ‫ﺗﺎﺑﻊ‬
.‫ﺷﻮد‬

.‫ ﻧﯿﺰ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي رﺳﯿﺪن ﺑﻪ ﻫﻤﺎن ﻧﺘﯿﺠﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد‬COALESCE() ‫ و‬NVL() ,IFNULL() ‫ﺗﻮاﺑﻊ‬

.‫ ﺻﻔﺮ ﺑﺎﺷﺪ‬NULL ‫در اﯾﻦ ﺣﺎﻟﺖ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﻘﺪار‬

‫ ﺗﺎﺑﻊ‬،‫ ﺑﺎﺷﺪ‬NULL ‫ زﯾﺮا اﮔﺮ ﻣﻘﺪار‬،‫" ﺧﺎﻟﯽ ﺑﺎﺷﺪ در ﻣﺤﺎﺳﺒﻪ ﻫﯿﭻ ﺻﺪﻣﻪ اي ﻧﻤﯽ زﻧﺪ‬UnitsOnOrder"‫ اﮔﺮ ﺳﺘﻮن‬،‫در زﯾﺮ‬
:‫ ﺻﻔﺮ را ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ‬ISNULL()

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

65
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪Oracle‬‬

‫اوراﮐﻞ ﺗﺎﺑﻊ )(‪ ISNULL‬ﻧﺪارد‪ .‬ﺑﺎ اﯾﻦ ﺣﺎل‪ ،‬ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺮاي رﺳﯿﺪن ﺑﻪ ﻧﺘﯿﺠﻪ ﻣﺸﺎﺑﻪ از ﺗﺎﺑﻊ )(‪ NVL‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫))‪SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0‬‬
‫‪FROM Products‬‬

‫‪MySQL‬‬

‫‪ MySQL‬ﯾﮏ ﺗﺎﺑﻊ )(‪ ISNULL‬دارد‪ .‬اﻣﺎ ﮐﻤﯽ ﻣﺘﻔﺎوت از ﺗﺎﺑﻊ)(‪ ISNULL‬ﻣﻮﺟﻮد در ﻣﺎﯾﮑﺮوﺳﺎﻓﺖ ﮐﺎر ﻣﯽ ﮐﻨﺪ‪.‬‬

‫در ‪ MySQL‬ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺗﺎﺑﻊ )(‪ IFNULL‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ ‪:‬‬

‫))‪SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0‬‬
‫‪FROM Products‬‬

‫و ﯾﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﺗﺎﺑﻊ )(‪ COALESCE‬ﮐﻪ ﺷﺒﯿﻪ ﺑﻪ اﯾﻦ اﺳﺖ‪ ،‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪:‬‬

‫))‪SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0‬‬
‫‪FROM Products‬‬

‫ﻧﻮع داده ﻫﺎ در ‪SQL‬‬


‫اﻧﻮاع داده ﻫﺎ و ﻣﺤﺪوده ﻫﺎ ﺑﺮاي ‪ Microsoft Access ,MySQL‬و ‪SQL Server‬‬

‫اﻧﻮاع داده ﻫﺎ ﺑﺮاي ‪Microsoft Access‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫‪1 byte‬‬ ‫اﺳﺘﻔﺎده از ﻣﺘﻦ و ﯾﺎ ﺗﺮﮐﯿﺒﯽ از ﻣﺘﻦ و اﻋﺪاد‪.‬‬ ‫‪Text‬‬

‫ﺑﺮاي ﻣﻘﺎدﯾﺮ ﺑﺰرﮔﺘﺮ از ﻣﺘﻦ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺗﺎ ‪ 65536‬ﮐﺎراﮐﺘﺮ ذﺧﯿﺮه ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪2 bytes‬‬ ‫‪Memo‬‬
‫ﺗﻮﺟﻪ‪ :‬ﺷﻤﺎ ﯾﮏ ‪ Memo‬را ﻧﻤﯽ ﺗﻮاﻧﯿﺪ ﻣﺮﺗﺐ ﮐﻨﯿﺪ ‪ .‬ﻫﺮ ﭼﻨﺪ ﻗﺎﺑﻞ ﺟﺴﺘﺠﻮ ﻫﺴﺘﻨﺪ‪.‬‬

‫‪4 bytes‬‬ ‫ﺗﺎ اﻋﺪاد ﺻﺤﯿﺢ از ‪ 0‬ﺗﺎ ‪ 255‬اﺟﺎزه ﻣﯽ دﻫﺪ‪.‬‬ ‫‪Byte‬‬

‫‪4 bytes‬‬ ‫ﺗﺎ اﻋﺪاد ﺻﺤﯿﺢ ﺑﯿﻦ ‪ -32768‬و ‪ 32767‬اﺟﺎزه ﻣﯽ دﻫﺪ‪.‬‬ ‫‪Integer‬‬

‫‪8 bytes‬‬ ‫ﺗﺎ ﺗﻌﺪاد ﮐﻞ ﺑﯿﻦ ‪ -2147483648‬ﺗﺎ ‪ 2147483647‬اﺟﺎزه ﻣﯽ دﻫﺪ‪.‬‬ ‫‪Long‬‬

‫‪8 bytes‬‬ ‫ﯾﮏ دﻗﺖ ﻣﻤﯿﺰ ﺷﻨﺎور‪ .‬رﻗﻢ اﻋﺸﺎر ﺑﯿﺸﺘﺮ را ﺗﺤﻤﻞ ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪Single‬‬

‫‪66‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪4 bytes‬‬ ‫دو دﻗﺖ اﻋﺸﺎري‪ .‬رﻗﻢ اﻋﺸﺎر ﺑﯿﺸﺘﺮ را ﺗﺤﻤﻞ‪.‬‬ ‫‪Double‬‬

‫ﺑﺮاي ﭘﻮل اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺗﺎ ‪ 15‬رﻗﻢ ﮐﺎﻣﻞ دﻻر‪ ،‬ﺑﻪ ﻋﻼوه ‪ 4‬رﻗﻢ اﻋﺸﺎر را ﻧﮕﻪ ﻣﯽ دارد‪.‬‬
‫‪8 bytes‬‬ ‫‪Currency‬‬
‫ﻧﮑﺘﻪ‪ :‬ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ارز ﮐﺸﻮر ﺧﻮد را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬

‫زﻣﯿﻨﻪ ﻫﺎي ‪ AutoNumber‬ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﺑﻪ ﻫﺮ رﮐﻮرد ﯾﮏ ﺷﻤﺎره اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ و‬


‫‪1 bit‬‬ ‫‪AutoNumber‬‬
‫ﺑﺎ ﯾﮏ ﺷﺮوع ﻣﯽ ﺷﻮد‪.‬‬

‫‪up to 1GB‬‬ ‫اﺳﺘﻔﺎده از ﺗﺎرﯾﺦ و زﻣﺎن‪.‬‬ ‫‪Date/Time‬‬

‫در زﻣﯿﻨﻪ ﻫﺎي ﻣﻨﻄﻘﯽ ﻣﯽ ﺗﻮاﻧﺪ ﺑﻪ ﻋﻨﻮان ﺑﻠﻪ ‪ /‬ﺧﯿﺮ‪ ،‬درﺳﺖ ‪ /‬ﻏﻠﻂ‪ ،‬و ﯾﺎ روﺷﻦ ‪ /‬ﺧﺎﻣﻮش‬
‫ﻧﻤﺎﯾﺶ داده ﺷﻮد‪.‬در ﮐﺪ ‪ ،‬اﺳﺘﻔﺎده از ﺛﺎﺑﺖ ﻫﺎي ‪)Yes/No‬ﻣﻌﺎدل ‪ -1‬و ‪ .(0‬ﺗﻮﺟﻪ‪ :‬ﻣﻘﺪار‬ ‫‪Yes/No‬‬
‫‪ NULL‬در ‪ Yes/No‬ﻣﺠﺎز ﻧﯿﺴﺖ‪.‬‬

‫‪4 byte‬‬ ‫ﺗﺼﺎوﯾﺮ‪ ،‬ﺻﺪا‪ ،‬وﯾﺪﺋﻮ‪ ،‬ﯾﺎ ‪) BLOBs‬اﺷﯿﺎء ﺑﺎﯾﻨﺮي ﺑﺰرگ(را ﻣﯽ ﺗﻮاﻧﺪ ذﺧﯿﺮه ﮐﻨﺪ‪.‬‬ ‫‪Ole Object‬‬

‫ﺷﺎﻣﻞ ﭘﯿﻮﻧﺪﻫﺎﯾﯽ ﺑﻪ ﻓﺎﯾﻞ ﻫﺎي دﯾﮕﺮ‪ ،‬از ﺟﻤﻠﻪ ﺻﻔﺤﺎت وب‪.‬‬ ‫‪Hyperlink‬‬

‫ﯾﮏ ﻟﯿﺴﺖ از ﮔﺰﯾﻨﻪ ﻫﺎ اﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ از ﻟﯿﺴﺖ ﮐﺸﻮﯾﯽ اﻧﺘﺨﺎب وارد ﮐﻨﯿﺪ‪.‬‬ ‫‪Lookup Wizard‬‬

‫اﻧﻮاع داده ﻫﺎ ﺑﺮاي ‪MySQL‬‬

‫در ‪ MySQL‬ﺳﻪ ﻧﻮع داده اﺻﻠﯽ وﺟﻮد دارد‪ :‬ﻣﺘﻦ‪ ،‬ﺷﻤﺎره و ﺗﺎرﯾﺦ ‪ /‬زﻣﺎن‪.‬‬

‫اﻧﻮاع ﻣﺘﻦ‪:‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫داراي ﯾﮏ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ اﺳﺖ)ﻣﯽ ﺗﻮاﻧﺪ ﺷﺎﻣﻞ ﺣﺮوف‪ ،‬اﻋﺪاد و ﮐﺎراﮐﺘﺮﻫﺎي ﺧﺎص ﺑﺎﺷﺪ(‪ .‬اﻧﺪازه ﺛﺎﺑﺖ در ﭘﺮاﻧﺘﺰ‬
‫)‪CHAR(size‬‬
‫ﻣﺸﺨﺺ ﻣﯽ ﺷﻮد‪ .‬ﺗﻮاﻧﺎﯾﯽ ذﺧﯿﺮه ﺳﺎزي ﺗﺎ ‪ 255‬ﮐﺎراﮐﺘﺮ را دارد‪.‬‬

‫داراي ﯾﮏ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ اﺳﺖ)ﻣﯽ ﺗﻮاﻧﺪ ﺷﺎﻣﻞ ﺣﺮوف‪ ،‬اﻋﺪاد و ﮐﺎراﮐﺘﺮﻫﺎي ﺧﺎص ﺑﺎﺷﺪ(‪ .‬ﺣﺪاﮐﺜﺮ اﻧﺪازه در ﭘﺮاﻧﺘﺰ‬
‫ﻣﺸﺨﺺ ﻣﯽ ﺷﻮد‪ .‬ﺗﻮاﻧﺎﯾﯽ ذﺧﯿﺮه ﺳﺎزي ﺗﺎ ‪ 255‬ﮐﺎراﮐﺘﺮ را دارد‪.‬‬ ‫)‪VARCHAR(size‬‬
‫ﺗﻮﺟﻪ‪ :‬اﮔﺮ ﺷﻤﺎ ﯾﮏ ﻣﻘﺪار ﺑﺰرﮔﺘﺮ از ‪ 255‬ﻗﺮار دﻫﯿﺪ آن را ﺗﺒﺪﯾﻞ ﺑﻪ ﻧﻮع ﻣﺘﻦ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫داراي ﯾﮏ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﺣﺪاﮐﺜﺮ ‪ 255‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫‪TINYTEXT‬‬

‫داراي ﯾﮏ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﺣﺪاﮐﺜﺮ ‪ 65535‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫‪TEXT‬‬

‫ﺑﺮاي ‪)BLOBs‬اﺷﯿﺎء ﺑﺎﯾﻨﺮي ﺑﺰرگ(‪ .‬ﺗﺎ ‪ 65535‬ﺑﺎﯾﺖ از داده ﻫﺎ را ﻧﮕﻪ ﻣﯽ دارد‪.‬‬ ‫‪BLOB‬‬

‫داراي ﯾﮏ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﺣﺪاﮐﺜﺮ ‪ 16777215‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫‪MEDIUMTEXT‬‬

‫‪67‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺑﺮاي ‪)BLOBs‬اﺷﯿﺎء ﺑﺎﯾﻨﺮي ﺑﺰرگ(‪ .‬ﺗﺎ ‪ 16777215‬ﺑﺎﯾﺖ از داده ﻫﺎ را ﻧﮕﻪ ﻣﯽ دارد‪.‬‬ ‫‪MEDIUMBLOB‬‬

‫ﺗﺎ ‪ 16777215‬ﺑﺎﯾﺖ از داده ﻫﺎ ﻧﮕﻪ ﻣﯽ دارد‪.‬‬ ‫‪LONGTEXT‬‬

‫ﺑﺮاي ‪)BLOBs‬اﺷﯿﺎء ﺑﺎﯾﻨﺮي ﺑﺰرگ(‪ .‬ﺗﺎ ‪ 4294967295‬ﺑﺎﯾﺖ از داده ﻫﺎ را ﻧﮕﻪ ﻣﯽ دارد‪.‬‬ ‫‪LONGBLOB‬‬

‫اﺟﺎزه ﻣﯽ دﻫﺪ ﯾﮏ ﻟﯿﺴﺖ از ﻣﻘﺎدﯾﺮ ﻣﻤﮑﻦ را وارد ﮐﻨﯿﺪ‪ .‬ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ در اﯾﻦ ﻟﯿﺴﺖ ﺗﺎ ‪ 535،65‬ﻣﻘﺪار ذﺧﯿﺮه ﮐﻨﯿﺪ‪.‬‬
‫اﮔﺮ ﻣﻘﺪار درج ﺷﺪه در ﻟﯿﺴﺖ ﻧﯿﺴﺖ‪ ،‬ﯾﮏ ﻣﻘﺪار ﺧﺎﻟﯽ ﺑﻪ ﺟﺎي آن ﻗﺮار ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪.‬‬
‫)‪ENUM(x, y, z, etc.‬‬
‫ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ‪ :‬ﻣﻘﺎدﯾﺮ وارد ﺷﺪه در آن ﻣﺮﺗﺐ ﺷﺪه اﻧﺪ‪.‬‬
‫ﻣﻘﺎدﯾﺮ ﻣﻤﮑﻦ را ﺑﺎﯾﺪ ﺑﺎ اﯾﻦ ﻓﺮﻣﺖ وارد ﮐﻨﯿﺪ ‪ENUM('X','Y','Z') :‬‬

‫ﺷﺒﯿﻪ ﺑﻪ ‪ ENUM‬اﺳﺖ اﻟﺒﺘﻪ ﺑﻪ ﺟﺰ آن ﻣﺠﻤﻮﻋﻪ ﻣﻤﮑﻦ اﺳﺖ ﺷﺎﻣﻞ ﺑﯿﺶ از ‪ 64‬اﻗﻼم ﻟﯿﺴﺖ و ﻣﯽ ﺗﻮاﻧﺪ ﺑﯿﺶ از ﯾﮏ‬
‫‪SET‬‬
‫اﻧﺘﺨﺎب داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫اﻧﻮاع ﺷﻤﺎره ﻫﺎ ﯾﺎ اﻋﺪاد‪:‬‬

‫ﺗﻮﺿﯿﺤﺎت‬
‫ﻧﻮع داده‬

‫‪ -128‬ﺗﺎ ‪ 127‬ﻧﺮﻣﺎل‪ .‬از ‪ 0‬ﺗﺎ ‪ 255‬ﺑﺪون ﻋﻼﻣﺖ*‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در داﺧﻞ ﭘﺮاﻧﺘﺰ ﻣﺸﺨﺺ ﺷﻮد‪.‬‬
‫)‪TINYINT(size‬‬

‫‪ -32768‬ﺗﺎ ‪ 32767‬ﻧﺮﻣﺎل‪ 0 .‬ﺗﺎ ‪ 65535‬ﺑﺪون ﻋﻼﻣﺖ*‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در داﺧﻞ ﭘﺮاﻧﺘﺰ ﻣﺸﺨﺺ ﺷﻮد‬
‫‪.‬‬ ‫)‪SMALLINT(size‬‬

‫‪ -8388608‬ﺗﺎ ‪ 8388607‬ﻋﺎدي‪ 0 .‬ﺗﺎ ‪ 16777215‬ﺑﺪون ﻋﻼﻣﺖ*‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در داﺧﻞ ﭘﺮاﻧﺘﺰ‬
‫ﻣﺸﺨﺺ ﺷﻮد‪.‬‬ ‫)‪MEDIUMINT(size‬‬

‫‪ -2147483648‬ﺗﺎ ‪ 2147483647‬ﻋﺎدي‪ 0 .‬ﺗﺎ ‪ 4294967295‬ﺑﺪون ﻋﻼﻣﺖ*‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در‬
‫داﺧﻞ ﭘﺮاﻧﺘﺰ ﻣﺸﺨﺺ ﺷﻮد‪.‬‬ ‫)‪INT(size‬‬

‫‪ - 9223372036854775808‬ﺗﺎ ‪ 9223372036854775807‬ﻋﺎدي‪ 0 .‬ﺗﺎ ‪ 18446744073709551615‬ﺑﺪون‬


‫ﻋﻼﻣﺖ*‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در داﺧﻞ ﭘﺮاﻧﺘﺰ ﻣﺸﺨﺺ ﺷﻮد‪.‬‬ ‫)‪BIGINT(size‬‬

‫‪68‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﻌﺪاد ﮐﻤﯽ ازاﻋﺪاد ﺑﺎ ﻧﻘﻄﻪ اﻋﺸﺎر ﺷﻨﺎور ﻣﯽ آﯾﻨﺪ‪ .‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در ﭘﺎراﻣﺘﺮ ‪ size‬ﻣﺸﺨﺺ ﺷﺪه‬
‫ﺑﺎﺷﺪ‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم را در ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر ﺑﺎ ﭘﺎراﻣﺘﺮ ‪ d‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬ ‫)‪FLOAT(size,d‬‬

‫ﺗﻌﺪاد زﯾﺎدي ازاﻋﺪاد ﺑﺎ ﻧﻘﻄﻪ اﻋﺸﺎر ﺷﻨﺎور ﻣﯽ آﯾﻨﺪ‪ .‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم ﻣﻤﮑﻦ اﺳﺖ در ﭘﺎراﻣﺘﺮ ‪ size‬ﻣﺸﺨﺺ ﺷﺪه‬
‫ﺑﺎﺷﺪ‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم را در ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر ﺑﺎ ﭘﺎراﻣﺘﺮ ‪ d‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬ ‫)‪DOUBLE(size,d‬‬

‫‪ DOUBLE‬ﺑﻪ ﻋﻨﻮان ﯾﮏ رﺷﺘﻪ ذﺧﯿﺮه ﻣﯽ ﺷﻮد و ﺑﺮاي ﯾﮏ ﻧﻘﻄﻪ ﺛﺎﺑﺖ اﻋﺸﺎري اﺟﺎزه ﻣﯽ دﻫﺪ‪.‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم‬
‫ﻣﻤﮑﻦ اﺳﺖ در ﭘﺎراﻣﺘﺮ ‪ size‬ﻣﺸﺨﺺ ﺷﺪه ﺑﺎﺷﺪ‪ .‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد ارﻗﺎم را در ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر ﺑﺎ ﭘﺎراﻣﺘﺮ ‪d‬‬
‫)‪DECIMAL(size,d‬‬
‫ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫*اﻧﻮاع داده ﻫﺎي ﺻﺤﯿﺢ ﮔﺰﯾﻨﻪ اﺿﺎﻓﯽ ﺑﻪ ﻧﺎم ‪) UNSIGNED‬ﺑﺪون ﻋﻼﻣﺖ(دارﻧﺪ ‪ .‬ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل‪ ،‬ﻋﺪد ﺻﺤﯿﺢ را از ﻣﻨﻔﯽ ﺑﻪ ﻣﺜﺒﺖ ﺗﺒﺪﯾﻞ‬
‫ﻣﯽ ﮐﻨﺪ‪ .‬اﺿﺎﻓﻪ ﮐﺮدن اﯾﻦ وﯾﮋﮔﯽ ﻣﺤﺪوده را ﺑﺪون ﻋﻼﻣﺖ ﺧﻮاﻫﺪ ﮐﺮد و ﻣﺤﺪوده را ﺑﺎ ﺣﺮﮐﺖ از ﺻﻔﺮ )ﺑﻪ ﺟﺎي ﯾﮏ ﻋﺪد ﻣﻨﻔﯽ(ﺷﺮوع ﻣﯽ‬
‫ﮐﻨﺪ‪.‬‬

‫ﻧﻮع ﺗﺎرﯾﺦ‪:‬‬

‫ﺗﻮﺿﯿﺤﺎت‬
‫ﻧﻮع داده‬

‫ورودي ﺗﺎرﯾﺦ اﺳﺖ ‪ .‬ﺑﺎ ﻓﺮﻣﺖ ‪YYYY-MM-DD :‬‬


‫ﺗﻮﺟﻪ ‪ :‬اﯾﻦ ﻧﻮع داده از داﻣﻨﻪ '‪ '1000-01-01‬ﺗﺎ '‪ '9999-12-31‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫)(‪DATE‬‬

‫*ورودي ﺗﺮﮐﯿﺒﯽ از ﺗﺎرﯾﺦ و زﻣﺎن اﺳﺖ‪ .‬ﺑﺎ ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :‬‬
‫ﺗﻮﺟﻪ ‪ :‬اﯾﻦ ﻧﻮع داده از داﻣﻨﻪ '‪ '1000-01-01 00:00:00‬ﺗﺎ '‪ '9999-12-31 23:59:59‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫)(‪DATETIME‬‬

‫*ورودي زﻣﺎن اﺳﺖ ‪ .‬ﺗﻌﺪادي از ﺛﺎﻧﯿﻪ ﻫﺎي ﺑﻌﺪ از ﻣﺒﺪا ﺗﺎرﯾﺦ ﯾﻮﻧﯿﮑﺲ )‪ ('1970-01-01 00:00:00' UTC‬را ذﺧﯿﺮه‬
‫ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺎ ﻓﺮﻣﺖ ‪YYYY-MM-DD HH:MM:SS :‬‬
‫ﺗﻮﺟﻪ ‪ :‬اﯾﻦ ﻧﻮع داده از داﻣﻨﻪ ‪ '1970-01-01 00:00:01' UTC‬ﺗﺎ ‪ '2038-01-09 03:14:07' UTC‬ﭘﺸﺘﯿﺒﺎﻧﯽ‬
‫)(‪TIMESTAMP‬‬
‫ﻣﯽ ﮐﻨﺪ‪.‬‬

‫‪69‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ورودي زﻣﺎن اﺳﺖ ‪ .‬ﺑﺎ ﻓﺮﻣﺖ ‪HH:MM:SS :‬‬


‫ﺗﻮﺟﻪ ‪ :‬اﯾﻦ ﻧﻮع داده از داﻣﻨﻪ '‪ '-838:59:59‬ﺗﺎ '‪ '838:59:59‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫)(‪TIME‬‬

‫ورودي ﯾﮏ ﺳﺎل در ﻗﺎﻟﺐ دو رﻗﻤﯽ ﯾﺎ ﭼﻬﺎر رﻗﻤﯽ اﺳﺖ‪.‬‬


‫ﺗﻮﺟﻪ‪ :‬ﻣﻘﺎدﯾﺮ ﻣﺠﺎز در ﻓﺮﻣﺖ ﭼﻬﺎر رﻗﻤﯽ‪ 1901 :‬ﺗﺎ ‪ .2155‬ﻣﻘﺎدﯾﺮ ﻣﺠﺎز در ﻓﺮﻣﺖ دو رﻗﻤﯽ‪ :‬ﺳﺎل ‪ 70‬ﺗﺎ ‪ 69‬ﺑﺮ ﮔﺮﻓﺘﻪ از‬
‫ﺳﺎل ‪ 1970‬ﺗﺎ ‪.2069‬‬ ‫)(‪YEAR‬‬

‫*ﻓﺮﻣﺖ دو ﺗﺎﺑﻊ )(‪ DATETIME‬و )(‪ TIMESTAMP‬ﺷﺒﯿﻪ ﺑﻪ ﻫﻢ اﺳﺖ وﻟﯽ از ﻧﻈﺮ ﮐﺎرﮐﺮد ﺑﺴﯿﺎر ﺑﺎ ﻫﻢ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ‪ .‬در ﭘﺮس و ﺟﻮي‬
‫‪ INSERT‬و ﯾﺎ ‪،UPDATE‬داده ‪ TIMESTAMP‬ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﺧﻮد را ﺑﻪ ﺗﺎرﯾﺦ و زﻣﺎن ﻓﻌﻠﯽ ﻣﯽ ﭼﺴﺒﺎﻧﺪ‪ .‬ﺑﺮﭼﺴﺐ زﻣﺎن ﻓﺮﻣﺖ ﻫﺎي‬
‫ﻣﺨﺘﻠﻔﯽ ﻣﯽ ﭘﺬﯾﺮد ﻣﺎﻧﻨﺪ ‪ ،YYYYMMDD ،YYMMDDHHMMSS ،YYYYMMDDHHMMSS‬ﯾﺎ ‪.YYMMDD‬‬

‫اﻧﻮاع داده ﻫﺎ ﺑﺮاي‪SQL Server‬‬

‫رﺷﺘﻪ ﻫﺎي ﮐﺎراﮐﺘﺮي‪:‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫‪n‬‬ ‫رﺷﺘﻪ ﮐﺎراﮐﺘﺮي ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 8000‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫)‪char(n‬‬

‫رﺷﺘﻪ ﮐﺎراﮐﺘﺮي ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 8000‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫)‪varchar(n‬‬

‫رﺷﺘﻪ ﮐﺎراﮐﺘﺮي ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 1073741824‬ﮐﺎراﮐﺘﺮ‪.‬‬ ‫)‪varchar(max‬‬

‫رﺷﺘﻪ ﮐﺎراﮐﺘﺮي ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ‪ .‬ﺣﺪاﮐﺜﺮ ‪ GB2‬داده ﻫﺎي ﻣﺘﻨﯽ ‪.‬‬ ‫‪text‬‬

‫رﺷﺘﻪ ﻫﺎي ﯾﻮﻧﯿﮑﺪ ‪:‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫داده ﻫﺎي ﯾﻮﻧﯿﮑﺪ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 4000‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫)‪nchar(n‬‬

‫داده ﻫﺎي ﯾﻮﻧﯿﮑﺪ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮاﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 4000‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫)‪nvarchar(n‬‬

‫‪70‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫داده ﻫﺎي ﯾﻮﻧﯿﮑﺪ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮاﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪912،870،536‬ﮐﺎراﮐﺘﺮ اﺳﺖ‪.‬‬ ‫)‪nvarchar(max‬‬

‫داده ﻫﺎي ﯾﻮﻧﯿﮑﺪ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮاﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ GB2‬داده ﻫﺎي ﻣﺘﻨﯽ ‪.‬‬ ‫‪ntext‬‬

‫ﻧﻮع دودوﯾﯽ‪:‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫اﻋﺪاد ‪ 0‬و ‪ 1‬و ‪Null‬‬ ‫‪bit‬‬

‫داده ﻫﺎي دودوﯾﯽ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 8000‬ﺑﺎﯾﺖ اﺳﺖ‪.‬‬ ‫)‪binary(n‬‬

‫داده ﻫﺎي دودوﯾﯽ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪ 8000‬ﺑﺎﯾﺖ اﺳﺖ‪.‬‬ ‫)‪varbinary(n‬‬

‫داده ﻫﺎي دودوﯾﯽ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪GB2‬‬ ‫)‪varbinary(max‬‬

‫داده ﻫﺎي دودوﯾﯽ ﺑﺎ ﻃﻮل ﻣﺘﻐﯿﺮ اﺳﺖ‪ .‬ﺣﺪاﮐﺜﺮ ‪GB2‬‬ ‫‪image‬‬

‫اﻧﻮاع ﺷﻤﺎره ﻫﺎ ﯾﺎ اﻋﺪاد‪:‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫‪1 byte‬‬ ‫اﻋﺪاد ﺻﺤﯿﺢ از ‪ 0‬ﺗﺎ ‪255‬‬ ‫‪tinyint‬‬

‫‪2 bytes‬‬ ‫اﻋﺪاد ﺻﺤﯿﺢ ﺑﯿﻦ ‪ -32768‬و ‪32767‬‬ ‫‪smallint‬‬

‫‪4 bytes‬‬ ‫ﺗﻌﺪاد ﮐﻞ اﻋﺪاد ﺑﯿﻦ ‪ -2147483648‬ﺗﺎ ‪2147483647‬‬ ‫‪int‬‬

‫و‬ ‫‪-9.223.372.036.854.775.808‬‬ ‫ﺑﯿﻦ‬ ‫اﻋﺪاد‬ ‫ﮐﻞ‬ ‫ﺗﻌﺪاد‬


‫‪8 bytes‬‬ ‫‪bigint‬‬
‫‪9.223.372.036.854.775.807‬‬

‫اﻋﺪاد ﺑﺎ دﻗﺖ ﺛﺎﺑﺖ و اﻋﺪاد ﻣﻘﯿﺎس‪.‬‬


‫اﻋﺪاد از ‪ -1+ 38 ^ 10‬ﺑﻪ ‪.1- 38 ^ 10‬‬
‫ﭘﺎراﻣﺘﺮ ‪ P‬ﻧﺸﺎن ﻣﯽ دﻫﺪ ﺗﻌﺪاد ﮐﻞ ﺣﺪاﮐﺜﺮ ﻋﺪدي ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ ذﺧﯿﺮه ﻣﯽ ﺷﻮد )ﻫﺮ دو در‬
‫ﺳﻤﺖ ﭼﭗ و در ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر(‪ P .‬ﺑﺎﯾﺪ ﻣﻘﺪار ‪ 1‬ﺗﺎ ‪ 38‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﻃﻮر‬
‫‪5-17 bytes‬‬ ‫)‪decimal(p,s‬‬
‫ﭘﯿﺶ ﻓﺮض ‪ 18‬اﺳﺖ‪ .‬ﭘﺎراﻣﺘﺮ ‪ S‬ﻧﺸﺎن ﻣﯽ دﻫﺪ‪ ،‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد رﻗﻢ ﻫﺎي ذﺧﯿﺮه ﺷﺪه در‬
‫ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر اﺳﺖ‪ S .‬ﺑﺎﯾﺪ ﯾﮏ ﻣﻘﺪار را از ‪ 0‬ﺑﻪ ‪ P‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﻘﺪار ﭘﯿﺶ‬
‫ﻓﺮض ‪ 0‬اﺳﺖ ‪.‬‬

‫‪71‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫اﻋﺪاد ﺑﺎ دﻗﺖ ﺛﺎﺑﺖ و اﻋﺪاد ﻣﻘﯿﺎس‪.‬اﻋﺪاد از ‪ -1+ 38 ^ 10‬ﺑﻪ ‪.1- 38 ^ 10‬‬


‫ﭘﺎراﻣﺘﺮ ‪ P‬ﻧﺸﺎن ﻣﯽ دﻫﺪ ﺗﻌﺪاد ﮐﻞ ﺣﺪاﮐﺜﺮ ﻋﺪدي ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ ذﺧﯿﺮه ﻣﯽ ﺷﻮد )ﻫﺮ دو در‬
‫ﺳﻤﺖ ﭼﭗ و در ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر(‪ P .‬ﺑﺎﯾﺪ ﻣﻘﺪار ‪ 1‬ﺗﺎ ‪ 38‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﻃﻮر‬
‫‪5-17 bytes‬‬ ‫ﭘﯿﺶ ﻓﺮض ‪ 18‬اﺳﺖ‪ .‬ﭘﺎراﻣﺘﺮ ‪ S‬ﻧﺸﺎن ﻣﯽ دﻫﺪ‪ ،‬ﺣﺪاﮐﺜﺮ ﺗﻌﺪاد رﻗﻢ ﻫﺎي ذﺧﯿﺮه ﺷﺪه در‬ ‫)‪numeric(p,s‬‬

‫ﺳﻤﺖ راﺳﺖ ﻧﻘﻄﻪ اﻋﺸﺎر اﺳﺖ‪ S .‬ﺑﺎﯾﺪ ﯾﮏ ﻣﻘﺪار را از ‪ 0‬ﺑﻪ ‪ P‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﻘﺪار ﭘﯿﺶ‬
‫ﻓﺮض ‪ 0‬اﺳﺖ ‪.‬‬

‫‪4 bytes‬‬ ‫داده ﻫﺎي ﭘﻮل از ‪ -214748.3648‬ﺗﺎ ‪214748.3647‬‬ ‫‪smallmoney‬‬

‫داده ﻫﺎي ﭘﻮل از ‪ -922337203685477.5808‬ﺑﻪ ‪922337203685477.5807‬‬


‫‪8 bytes‬‬ ‫‪money‬‬

‫داده ﻫﺎي ﻋﺪدي ﺑﺎ دﻗﺖ اﻋﺸﺎر از ‪ -1.79E + 308‬ﺗﺎ ‪1.79E + 308‬‬


‫ﭘﺎراﻣﺘﺮ ‪ N‬ﻧﺸﺎن ﻣﯽ دﻫﺪ ﮐﻪ آﯾﺎ اﯾﻦ رﺷﺘﻪ ﺑﺎﯾﺪ ‪ 4‬ﯾﺎ ‪ 8‬ﺑﺎﯾﺖ را ﺗﺤﻤﻞ ﮐﻨﺪ‪float(24) .‬‬
‫‪4 or 8 bytes‬‬ ‫)‪float(n‬‬
‫داراي ﯾﮏ ﻣﯿﺪان ‪ 4‬ﺑﺎﯾﺘﯽ و )‪ float(53‬داراي ﯾﮏ ﻣﯿﺪان ‪ 8‬ﺑﺎﯾﺘﯽ اﺳﺖ‪ .‬ﻣﻘﺪار ﭘﯿﺶ‬
‫ﻓﺮض ﺑﺮاي ‪ n‬ﻋﺪد ‪ 53‬اﺳﺖ‪.‬‬

‫‪4 bytes‬‬ ‫اﻃﻼﻋﺎت دﻗﯿﻖ اﻋﺪاد از ﺷﻤﺎره ‪ -3.40E + 38‬ﺗﺎ ‪3.40E + 38‬‬ ‫‪real‬‬

‫ﻧﻮع ﺗﺎرﯾﺦ‪:‬‬

‫ﻓﻀﺎي ﻻزم‬ ‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫‪8 bytes‬‬ ‫از ﺗﺎرﯾﺦ ‪ 1‬ژاﻧﻮﯾﻪ ‪ 1753‬ﺗﺎ ‪ 31‬دﺳﺎﻣﺒﺮ‪ 9999 ،‬ﺑﺎ دﻗﺖ ‪ 3.33‬ﻣﯿﻠﯽ ﺛﺎﻧﯿﻪ اﺳﺖ‪.‬‬ ‫‪datetime‬‬

‫‪6-8 bytes‬‬ ‫از ﺗﺎرﯾﺦ ‪1‬ژاﻧﻮﯾﻪ ‪ 0001 ،‬ﺗﺎ ‪ 31‬دﺳﺎﻣﺒﺮ‪ 9999 ،‬ﺑﺎ دﻗﺖ ‪ 100‬ﻧﺎﻧﻮ ﺛﺎﻧﯿﻪ اﺳﺖ ‪.‬‬ ‫‪datetime2‬‬

‫‪4 bytes‬‬ ‫از ﺗﺎرﯾﺦ ‪ 1‬ژاﻧﻮﯾﻪ ﺳﺎل ‪ 1900‬ﺗﺎ ‪6‬ژوﺋﻦ ‪ ،2079 ،‬ﺑﺎ دﻗﺖ ‪ 1‬دﻗﯿﻘﻪ اﺳﺖ ‪.‬‬ ‫‪smalldatetime‬‬

‫‪3 bytes‬‬ ‫ﻓﻘﻂ ذﺧﯿﺮه ﺗﺎرﯾﺦ‪ .‬از ‪1‬ژاﻧﻮﯾﻪ ‪ 0001 ،‬ﺗﺎ ‪ 31‬دﺳﺎﻣﺒﺮ‪.9999 ،‬‬ ‫‪date‬‬

‫‪3-5 bytes‬‬ ‫ﻓﻘﻂ ذﺧﯿﺮه زﻣﺎن ﺑﺎ دﻗﺖ ‪ 100‬ﻧﺎﻧﻮ ﺛﺎﻧﯿﻪ اﺳﺖ ‪.‬‬ ‫‪time‬‬

‫‪8-10 bytes‬‬ ‫ﻫﻤﺎن ‪ date me2‬اﺳﺖ ﻋﻼوه ﺑﺮ اﯾﻦ از ﯾﮏ اﻓﺴﺖ ﻣﻨﻄﻘﻪ زﻣﺎﻧﯽ‪.‬‬ ‫‪datetimeoffset‬‬

‫ﯾﮏ ﺷﻤﺎره ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ذﺧﯿﺮه ﻣﯽ ﺷﻮد در زﻣﺎﻧﯽ ﮐﻪ ﯾﮏ ردﯾﻒ اﯾﺠﺎد ﻣﯽ ﺷﻮد و ﯾﺎ ﺑﺎ‬
‫ﺗﻐﯿﯿﺮ ﺑﺮوز رﺳﺎﻧﯽ ﻣﯽ ﺷﻮد‪ .‬ﻣﻘﺪار ‪ timestamp‬زﻣﺎن را ﺑﺮ اﺳﺎس ﯾﮏ ﺳﺎﻋﺖ داﺧﻠﯽ‬
‫‪timestamp‬‬
‫ﺗﻨﻈﯿﻢ ﻣﯽ ﮐﻨﺪ و ﺑﻪ زﻣﺎن واﻗﻌﯽ ﻣﻄﺎﺑﻘﺖ ﻧﺪارد‪ .‬ﻫﺮ ﺟﺪول‪ ،‬ﻣﻤﮑﻦ اﺳﺖ ﻓﻘﻂ ﯾﮏ زﻣﺎن‬
‫ﻣﺘﻐﯿﺮ داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫اﻧﻮاع دﯾﮕﺮ داده ﻫﺎ ‪:‬‬

‫‪72‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﻧﻮع داده‬

‫ذﺧﯿﺮه ﺑﯿﺸﺘﺮ از ‪ 8000‬ﺑﺎﯾﺖ از داده ﻫﺎ را از اﻧﻮاع داده ﻫﺎي ﻣﺨﺘﻠﻒ‪ ،‬ﺑﻪ ﺟﺰ ﻣﺘﻦ‪ ،ntext ،‬و زﻣﺎن ‪.‬‬ ‫‪sql_variant‬‬

‫ذﺧﯿﺮه ﯾﮏ ﺷﻨﺎﺳﻪ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد در ﺳﻄﺢ ﺟﻬﺎن )‪.(GUID‬‬ ‫‪uniqueidentifier‬‬

‫ذﺧﯿﺮه ‪ XML‬ﺑﺎ ﻓﺮﻣﺖ داده ﻫﺎ‪ .‬ﺣﺪاﮐﺜﺮ ‪.GB2‬‬ ‫‪xml‬‬

‫ذﺧﯿﺮه ﻣﺮﺟﻊ ﺑﺎ ﯾﮏ اﺷﺎره ﮔﺮ ﺑﺮاي ﻋﻤﻠﯿﺎت ﭘﺎﯾﮕﺎه داده اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬ ‫‪cursor‬‬

‫ذﺧﯿﺮه ﯾﮏ ﻧﺘﯿﺠﻪ ﺑﺮاي ﭘﺮدازش در آﯾﻨﺪه‪.‬‬ ‫‪table‬‬

‫‪73‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻓﺼﻞ ﺳﻮم ‪ -‬ﺗﻮاﺑﻊ ‪SQL‬‬

‫ﺗﻮاﺑﻊ ‪SQL‬‬

‫‪ SQL‬ﺗﻮاﺑﻊ داﺧﻠﯽ زﯾﺎدي ﺑﺮاي اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﺑﺮ روي داده دارد‪.‬‬

‫ﺗﻮاﺑﻊ ﺟﻤﻌﯽ ‪SQL‬‬

‫ﺗﻮاﺑﻊ ﺟﻤﻌﯽ ‪ SQL‬ﯾﮏ ﻣﻘﺪار ﺗﮑﯽ ﻣﺤﺎﺳﺒﻪ ﺷﺪه از ﻣﻘﺎدﯾﺮ ﯾﮏ ﺳﺘﻮن را ﺑﺮﻣﯽ ﮔﺮداﻧﻨﺪ‪.‬‬

‫ﺗﻮاﺑﻊ ﺟﻤﻌﯽ ﻣﻔﯿﺪ‪:‬‬

‫)(‪ - AVG‬ﻣﻌﺪل را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬


‫)(‪ - COUNT‬ﺗﻌﺪاد ﺳﻄﺮﻫﺎ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - FIRST‬اوﻟﯿﻦ ﻣﻘﺪار را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - LAST‬آﺧﺮﯾﻦ ﻣﻘﺪار را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - MAX‬ﺑﯿﺸﺘﺮﯾﻦ ﻣﻘﺪار را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - MIN‬ﮐﻤﺘﺮﯾﻦ ﻣﻘﺪار را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - SUM‬ﻣﺠﻤﻮع را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬

‫ﺗﻮاﺑﻊ اﺳﮑﺎﻟﺮ ‪SQL‬‬

‫ﺗﻮاﺑﻊ اﺳﮑﺎﻟﺮ ‪ SQL‬ﯾﮏ ﻣﻘﺪار ﺗﮑﯽ ﻣﺒﻨﯽ ﺑﺮ ﻣﻘﺪار ورودي را ﺑﺮﻣﯽ ﮔﺮداﻧﻨﺪ‪.‬‬

‫ﺗﻮاﺑﻊ اﺳﮑﺎﻟﺮ ﻣﻔﯿﺪ‪:‬‬

‫)(‪ - UCASE‬ﺗﺒﺪﯾﻞ رﺷﺘﻪ ﺑﻪ ﺣﺮوف ﺑﺰرگ‬ ‫·‬


‫)(‪ - LCASE‬ﺗﺒﺪﯾﻞ رﺷﺘﻪ ﺑﻪ ﺣﺮوف ﮐﻮﭼﮏ‬ ‫·‬
‫)(‪ - MID‬اﺳﺘﺨﺮاج ﮐﺎراﮐﺘﺮﻫﺎ از ﯾﮏ رﺷﺘﻪ ﻣﺘﻨﯽ‬ ‫·‬
‫)(‪ - LEN‬ﻃﻮل ﯾﮏ رﺷﺘﻪ ﻣﺘﻨﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - ROUND‬ﯾﮏ رﺷﺘﻪ ﻋﺪدي را ﺑﺎ ﺗﻌﺪاد اﻋﺸﺎر ﻣﺸﺨﺺ ﮔﺮد ﻣﯽ ﮐﻨﺪ‬ ‫·‬
‫)(‪ - NOW‬ﺗﺎرﯾﺦ و ﺳﺎﻋﺖ ﻓﻌﻠﯽ ﺳﯿﺴﺘﻢ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬ ‫·‬
‫)(‪ - FORMAT‬ﭼﮕﻮﻧﮕﯽ ﻧﻤﺎﯾﺶ ﯾﮏ ﻓﯿﻠﺪ را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ‬ ‫·‬

‫ﺗﺎﺑﻊ )(‪AVG‬‬
‫‪74‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫ ﻣﻘﺪار ﻣﯿﺎﻧﮕﯿﻦ از ﯾﮏ ﺳﺘﻮن ﻋﺪدي را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬AVG() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬AVG() ‫ﮔﺮاﻣﺮ‬

SELECT AVG(column_name) FROM table_name

SQL ‫ در‬AVG() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

.‫“ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﻘﺪار ﻣﯿﺎﻧﮕﯿﻦ ﻓﯿﻠﺪ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT AVG(OrderPrice) AS OrderAverage FROM Orders

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

OrderAverage
950

.‫“ ﻣﯿﺎﻧﮕﯿﻦ دارﻧﺪ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫“ ﺑﺎﻻﺗﺮ از ﻣﻘﺪار‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺸﺘﺮﯾﺎﻧﯽ ﮐﻪ )ﺣﺪاﻗﻞ( ﯾﮏ ﻣﻘﺪار‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT Customer FROM Orders


WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

75
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

Customer
Hansen
Nilsen
Jensen

SQL ‫ در‬COUNT() ‫ﺗﺎﺑﻊ‬

.‫ ﺗﻌﺪادي ﺳﻄﺮ ﮐﻪ ﺑﺎ ﯾﮏ ﻣﻌﯿﺎرﻫﺎي ﻣﺸﺨﺺ ﺗﻄﺒﯿﻖ داده ﺷﺪه اﻧﺪ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬SQL ‫ در‬COUNT() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬COUNT(column_name) ‫ﮔﺮاﻣﺮ‬

:‫ ﺷﻤﺎرش ﻧﺨﻮاﻫﺪ ﺷﺪ( از ﺳﺘﻮن ﻣﺸﺨﺼﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬NULL ‫ ﺗﻌﺪادي ﻣﻘﺎدﯾﺮ )ﻣﻘﺎدﯾﺮ‬COUNT(column_name) ‫ﺗﺎﺑﻊ‬

SELECT COUNT(column_name) FROM table_name

SQL ‫ در‬COUNT(*) ‫ﮔﺮاﻣﺮ‬

:‫ رﮐﻮرد از ﯾﮏ ﺟﺪول را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬SQL ‫ در‬COUNT(*) ‫ﺗﺎﺑﻊ‬

SELECT COUNT(*) FROM table_name

SQL ‫ در‬COUNT(DISTINCT column_name) ‫ﮔﺮاﻣﺮ‬

:‫ ﺗﻌﺪادي ﻣﻘﺎدﯾﺮ ﻣﺘﻤﺎﯾﺰ از ﺳﺘﻮن ﻣﺸﺨﺼﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬COUNT(DISTINCT column_name) ‫ﺗﺎﺑﻊ‬

SELECT COUNT(DISTINCT column_name) FROM table_name

‫ ﮐﺎر ﻧﻤﯽ‬Microsoft Access ‫ ﮐﺎر ﻣﯽ ﮐﻨﺪ و در‬Microsoft SQL Server ‫ و‬ORACLE ‫ در‬COUNT(DISTINCT) :‫ﺗﻮﺟﻪ‬
.‫ﮐﻨﺪ‬

SQL ‫ در‬COUNT(DISTINCT column_name) ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

76
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

:‫“ را ﺑﺸﻤﺎرﯾﻢ‬Nilsen” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﺗﻌﺪاد ﺳﻔﺎرﺷﺎت ﻣﺸﺘﺮي‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders


WHERE Customer='Nilsen'

:‫ ﺳﻔﺎرش دارد‬2 ‫ ﻣﺠﻤﻮﻋﺎ‬Nilsen ‫ ﺧﻮاﻫﺪ ﺷﺪ؛ ﭼﻮن ﻣﺸﺘﺮي‬2 ‫ ﺑﺎﻻ‬SQL ‫ﻧﺘﯿﺠﻪ دﺳﺘﻮر‬

CustomerNilsen
2

SQL ‫ در‬COUNT(*) ‫ﻣﺜﺎل‬

:‫ ﻣﺜﻞ اﯾﻦ‬،‫ ﺻﺮﻓﻨﻈﺮ ﮐﻨﯿﻢ‬WHERE ‫اﮔﺮ از ﻋﺒﺎرت‬

SELECT COUNT(*) AS NumberOfOrders FROM Orders

:‫ﻧﺘﯿﺠﻪ اﯾﻦ ﮔﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

NumberOfOrders
6

.‫ﮐﻪ ﻣﺠﻤﻮع ﺗﻌﺪاد ﺳﻄﺮﻫﺎي ﺟﺪول اﺳﺖ‬

SQL ‫ در‬COUNT(DISTINCT column_name) ‫ﻣﺜﺎل‬

77
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﺗﻌﺪاد ﻣﺸﺘﺮﯾﺎن ﻏﯿﺮ ﺗﮑﺮاري در ﺟﺪول ”‪ “Orders‬را ﺑﺸﻤﺎرﯾﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪NumberOfCustomers‬‬
‫‪3‬‬

‫ﮐﻪ ﺗﻌﺪاد ﻣﺸﺘﺮﯾﺎن ﻏﯿﺮ ﺗﮑﺮاري )‪ Hansen, Nilsen‬و ‪ (Jansen‬در ﺟﺪول اﺳﺖ‪.‬‬

‫ﺗﺎﺑﻊ )(‪FIRST‬‬

‫ﺗﺎﺑﻊ )(‪ FIRST‬اوﻟﯿﻦ ﻣﻘﺪار از ﺳﺘﻮن اﻧﺘﺨﺎب ﺷﺪه را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬

‫ﮔﺮاﻣﺮ )(‪ FIRST‬در ‪SQL‬‬

‫‪SELECT FIRST(column_name) FROM table_name‬‬

‫ﻣﺜﺎل )(‪ FIRST‬در ‪SQL‬‬

‫ﺟﺪول ”‪ “Orders‬زﯾﺮ را دارﯾﻢ‪:‬‬

‫‪O_Id‬‬ ‫‪OrderDate‬‬ ‫‪OrderPrice‬‬ ‫‪Customer‬‬


‫‪1‬‬ ‫‪2008/11/12‬‬ ‫‪1000‬‬ ‫‪Hansen‬‬
‫‪2‬‬ ‫‪2008/10/23‬‬ ‫‪1600‬‬ ‫‪Nilsen‬‬
‫‪3‬‬ ‫‪2008/09/02‬‬ ‫‪700‬‬ ‫‪Hansen‬‬
‫‪4‬‬ ‫‪2008/09/03‬‬ ‫‪300‬‬ ‫‪Hansen‬‬
‫‪5‬‬ ‫‪2008/08/30‬‬ ‫‪2000‬‬ ‫‪Jensen‬‬
‫‪6‬‬ ‫‪2008/10/04‬‬ ‫‪100‬‬ ‫‪Nilsen‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ اوﻟﯿﻦ ﻣﻘﺪار از ﺳﺘﻮن ”‪ “OrderPrice‬را ﭘﯿﺪا ﮐﻨﯿﻢ‪.‬‬

‫‪78‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders

.‫ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻧﺸﻮد‬FIRST() ‫ راه ﺣﻠﯽ وﺟﻮد دارد؛ اﮔﺮ ﺗﺎﺑﻊ‬:‫ﻧﮑﺘﻪ‬

SELECT OrderPrice FROM Orders ORDER BY O_Id LIMIT 1

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

FirstOrderPrice
1000

LAST() ‫ﺗﺎﺑﻊ‬

.‫ آﺧﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن اﻧﺘﺨﺎب ﺷﺪه را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬LAST() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬LAST() ‫ﮔﺮاﻣﺮ‬

SELECT LAST(column_name) FROM table_name

SQL ‫ در‬LAST() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

79
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫“ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ آﺧﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders

.‫ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻧﺸﻮد‬LAST() ‫ راه ﺣﻠﯽ وﺟﻮد دارد؛ اﮔﺮ ﺗﺎﺑﻊ‬:‫ﻧﮑﺘﻪ‬

SELECT OrderPrice FROM Orders ORDER BY O_Id DESC LIMIT 1

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastOrderPrice
100

MAX() ‫ﺗﺎﺑﻊ‬

.‫ ﺑﺰرﮔﺘﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن اﻧﺘﺨﺎب ﺷﺪه ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬MAX() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬MAX() ‫ﮔﺮاﻣﺮ‬

SELECT MAX(column_name) FROM table_name

SQL ‫ در‬MAX() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

80
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫“ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﺑﺰرﮔﺘﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LargestOrderPrice
2000

MIN() ‫ﺗﺎﺑﻊ‬

.‫ ﮐﻮﭼﮑﺘﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن اﻧﺘﺨﺎب ﺷﺪه را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬MIN() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬MIN() ‫ﮔﺮاﻣﺮ‬

SELECT MIN(column_name) FROM table_name

SQL ‫ در‬MIN() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

.‫“ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﮐﻮﭼﮑﺘﺮﯾﻦ ﻣﻘﺪار از ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders

81
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

SmallestOrderPrice
100

SUM() ‫ﺗﺎﺑﻊ‬

.‫ ﻣﺠﻤﻮع ﯾﮏ ﺳﺘﻮن ﻋﺪدي را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬SUM() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬SUM() ‫ﮔﺮاﻣﺮ‬

SELECT SUM(column_name) FROM table_name

SQL ‫ در‬SUM() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Orders” ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer


1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

.‫“ را ﭘﯿﺪا ﮐﻨﯿﻢ‬OrderPrice” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺠﻤﻮع ﻫﻤﻪ ﻓﯿﻠﺪﻫﺎي‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

82
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪OrderTotal‬‬
‫‪5700‬‬

‫دﺳﺘﻮر ‪ Group By‬در ‪SQL‬‬

‫ﺗﻮاﺑﻊ ﺟﻤﻌﯽ اﻏﻠﺐ ﺑﻪ ﯾﮏ دﺳﺘﻮر ‪ Group By‬اﺿﺎﻓﻪ ﺷﺪه ﻧﯿﺎز دارﻧﺪ‪.‬‬

‫دﺳﺘﻮر ‪Group By‬‬

‫دﺳﺘﻮر ‪ Group By‬ﺑﺎ ﺗﻮاﺑﻊ ﺟﻤﻌﯽ‪ ،‬ﺑﺮاي دﺳﺘﻪ ﺑﻨﺪي ﮐﺮدن ﻧﺘﯿﺠﻪ ﺗﻮﺳﻂ ﯾﮏ ﯾﺎ ﭼﻨﺪ ﺳﺘﻮن اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ‪ Group By‬در ‪SQL‬‬

‫)‪SELECT column_name, aggregate_function(column_name‬‬


‫‪FROM table_name‬‬
‫‪WHERE column_name operator value‬‬
‫‪GROUP BY column_name‬‬

‫ﻣﺜﺎل ‪ Group By‬در ‪SQL‬‬

‫ﺟﺪول "‪ "Orders‬زﯾﺮ را دارﯾﻢ‪:‬‬

‫‪O_Id‬‬ ‫‪OrderDate‬‬ ‫‪OrderPrice‬‬ ‫‪Customer‬‬

‫‪1‬‬ ‫‪2008/11/12‬‬ ‫‪1000‬‬ ‫‪Hansen‬‬

‫‪2‬‬ ‫‪2008/10/23‬‬ ‫‪1600‬‬ ‫‪Nilsen‬‬

‫‪3‬‬ ‫‪2008/09/02‬‬ ‫‪700‬‬ ‫‪Hansen‬‬

‫‪4‬‬ ‫‪2008/09/03‬‬ ‫‪300‬‬ ‫‪Hansen‬‬

‫‪5‬‬ ‫‪2008/08/30‬‬ ‫‪2000‬‬ ‫‪Jensen‬‬

‫‪6‬‬ ‫‪2008/10/04‬‬ ‫‪100‬‬ ‫‪Nilsen‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺠﻤﻮع ﺳﻔﺎرﺷﺎت ﻫﺮ ﻣﺸﺘﺮي را ﭘﯿﺪا ﮐﻨﯿﻢ‪.‬‬

‫ﻣﺎ ﻣﺠﺒﻮر ﺧﻮاﻫﯿﻢ ﺷﺪ از دﺳﺘﻮر ‪ Group By‬ﺑﺮاي دﺳﺘﻪ ﺑﻨﺪي ﮐﺮدن ﻣﺸﺘﺮﯾﺎن اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬

‫‪83‬‬
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT Customer,SUM(OrderPrice) FROM Orders‬‬


‫‪GROUP BY Customer‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪Customer‬‬ ‫)‪SUM(OrderPrice‬‬
‫‪Hansen‬‬ ‫‪2000‬‬
‫‪Nilsen‬‬ ‫‪1700‬‬

‫‪Jensen‬‬ ‫‪2000‬‬

‫دﻟﭙﺴﻨﺪ اﺳﺖ‪ ،‬ﻣﮕﻪ ﻧﻪ؟ ‪J‬‬

‫ﺑﮕﺬارﯾﺪ ﺑﺒﯿﻨﯿﻢ؛ اﮔﺮ از دﺳﺘﻮر ‪ Group By‬ﺻﺮف ﻧﻈﺮ ﻣﯽ ﮐﺮدﯾﻢ ﭼﻪ اﺗﻔﺎﻗﯽ ﻣﯽ اﻓﺘﺎد‪:‬‬

‫‪SELECT Customer,SUM(OrderPrice) FROM Orders‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪Customer‬‬ ‫)‪SUM(OrderPrice‬‬
‫‪Hansen‬‬ ‫‪5700‬‬
‫‪Nilsen‬‬ ‫‪5700‬‬
‫‪Hansen‬‬ ‫‪5700‬‬
‫‪Hansen‬‬ ‫‪5700‬‬
‫‪Jensen‬‬ ‫‪5700‬‬
‫‪Nilsen‬‬ ‫‪5700‬‬

‫ﻧﺘﯿﺠﻪ ﺑﺎﻻ ﭼﯿﺰي ﻧﯿﺴﺖ ﮐﻪ ﻣﯽ ﺧﻮاﺳﺘﯿﻢ‪.‬‬

‫ﺗﺸﺮﯾﺢ اﯾﻨﮑﻪ ﭼﺮا دﺳﺘﻮر ‪ SELECT‬ﺑﺎﻻ ﻧﻤﯽ ﺗﻮاﻧﺪ اﺳﺘﻔﺎده ﺷﻮد‪ :‬دﺳﺘﻮر ‪ SELECT‬ﺑﺎﻻ دو ﺳﺘﻮن ﻣﺸﺨﺺ ﺷﺪه دارد‬
‫)‪ Customer‬و )‪ .(SUM(OrderPrice‬ﻫﻨﮕﺎﻣﯿﮑﻪ "‪ 6 "Customer‬ﻣﻘﺪار ﺑﺮﻣﯽ ﮔﺮداﻧﺪ )ﯾﮏ ﻣﻘﺪار ﺑﺮاي ﻫﺮ در ﺳﻄﺮ ﺟﺪول‬
‫"‪ "SUM(OrderPrice)" ،("Orders‬ﯾﮏ ﻣﻘﺪار واﺣﺪ ﺑﺮﻣﯽ ﮔﺮداﻧﺪ )آن ﻣﺠﻤﻮع ﺳﺘﻮن "‪ "OrderPrice‬اﺳﺖ(‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ اﯾﻦ‬
‫ﻧﺘﯿﺠﻪ درﺳﺖ را ﺑﻪ ﻣﺎ ﻧﺨﻮاﻫﺪ داد‪ .‬ﺑﺎ اﯾﻦ ﺣﺎل‪ ،‬دﯾﺪﯾﺪ ﮐﻪ دﺳﺘﻮر ‪ Group By‬اﯾﻦ ﻣﺸﮑﻞ را ﺣﻞ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫‪ Group By‬ﺑﺎ ﺑﯿﺶ از ﯾﮏ ﺳﺘﻮن‬

‫ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ از دﺳﺘﻮر ‪ Group By‬ﺑﺮاي ﺑﯿﺶ از ﯾﮏ ﺳﺘﻮن اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ ،‬ﻣﺜﻞ اﯾﻦ‪:‬‬
‫‪84‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders


GROUP BY Customer,OrderDate

Having ‫ﻋﺒﺎرت‬
.‫ ﻧﻤﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﺗﻮاﺑﻊ ﺟﻤﻌﯽ اﺳﺘﻔﺎده ﺷﻮد‬WHERE ‫ اﺿﺎﻓﻪ ﺷﺪ؛ ﭼﻮن ﮐﻠﻤﻪ ﮐﻠﯿﺪي‬SQL ‫ ﺑﻪ‬Having ‫ﻋﺒﺎرت‬

Having ‫ﮔﺮاﻣﺮ ﻋﺒﺎرت‬


SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

SQL ‫ در‬Having ‫ﻣﺜﺎل‬

:‫" زﯾﺮ را دارﯾﻢ‬Orders" ‫ﺟﺪول‬

O_Id OrderDate OrderPrice Customer

1 2008/11/12 1000 Hansen

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

.‫ دارد را ﭘﯿﺪا ﮐﻨﯿﻢ‬2000 ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﺮ ﻣﺸﺘﺮي را ﮐﻪ ﺟﻤﻊ ﺳﻔﺎرش ﮐﻤﺘﺮ از‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT Customer,SUM(OrderPrice) FROM Orders


GROUP BY Customer
HAVING SUM(OrderPrice)<2000

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

Customer SUM(OrderPrice)

Nilsen 1700

85
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫ دارﻧﺪ را ﭘﯿﺪا ﮐﻨﯿﻢ‬1500 ‫" ﮐﻪ ﺟﻤﻊ ﺳﻔﺎرش ﺑﯿﺸﺘﺮ از‬Jensen" ‫" ﯾﺎ‬Hansen" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺸﺘﺮﯾﺎﻧﯽ ﺑﺎ ﻧﺎم‬

:‫ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫ ﻣﻌﻤﻮﻟﯽ ﺑﻪ دﺳﺘﻮر‬WHERE ‫ﯾﮏ ﻋﺒﺎرت‬

SELECT Customer,SUM(OrderPrice) FROM Orders


WHERE Customer='Hansen' OR Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

Customer SUM(OrderPrice)

Hansen 2000

Jensen 2000

UCASE() ‫ﺗﺎﺑﻊ‬
.‫ ﻣﻘﺪار ﯾﮏ رﺷﺘﻪ را ﺑﻪ ﺣﺮوف ﺑﺰرگ ﺗﺒﺪﯾﻞ ﻣﯽ ﮐﻨﺪ‬UCASE() ‫ﺗﺎﺑﻊ‬

UCASE() ‫ﮔﺮاﻣﺮ‬
SELECT UCASE(column_name) FROM table_name

SQL Server ‫ﮔﺮاﻣﺮ ﺑﺮاي‬


SELECT UPPER(column_name) FROM table_name

SQL ‫ در‬UCASE() ‫ﻣﺜﺎل‬

:‫“ زﯾﺮ را دارﯾﻢ‬Persons” ‫ﺟﺪول‬

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

‫“ را ﺑﻪ‬LastName” ‫“ ﺑﺎﻻ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ و ﺳﺘﻮن‬FirstName” ‫“ و‬LastName” ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺤﺘﻮاي ﺳﺘﻮﻧﻬﺎي‬
.‫ﺣﺮوف ﺑﺰرگ ﺗﺒﺪﯾﻞ ﮐﻨﯿﻢ‬
86
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LastName FirstName

HANSEN Ola

SVENDSON Tove

PETTERSEN Kari

LCASE() ‫ﺗﺎﺑﻊ‬
.‫ ﻣﻘﺪار ﯾﮏ رﺷﺘﻪ را ﺣﺮوف ﮐﻮﭼﮏ ﺗﺒﺪﯾﻞ ﻣﯽ ﮐﻨﺪ‬LCASE() ‫ﺗﺎﺑﻊ‬

LCASE() ‫ﮔﺮاﻣﺮ‬
SELECT LCASE(column_name) FROM table_name

SQL Server ‫ﮔﺮاﻣﺮ ﺑﺮاي‬


SELECT LOWER(column_name) FROM table_name

SQL ‫ در‬LCASE() ‫ﻣﺜﺎل ﺗﺎﺑﻊ‬

:‫" زﯾﺮ را دارﯾﻢ‬Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

‫" را ﺑﻪ‬LastName" ‫" ﺳﺘﻮن ﻫﺎي ﺑﺎﻻ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ و ﺳﺘﻮن‬FirstName" ‫" و‬LastName" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺤﺘﻮاي‬
.‫ف ﮐﻮﭼﮏ ﺗﺒﺪﯾﻞ ﮐﻨﯿﻢ‬.‫ﺣﺮو‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT LCASE(LastName) as LastName,FirstName FROM Persons

87
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪LastName‬‬ ‫‪FirstName‬‬

‫‪hansen‬‬ ‫‪Ola‬‬

‫‪svendson‬‬ ‫‪Tove‬‬

‫‪pettersen‬‬ ‫‪Kari‬‬

‫ﺗﺎﺑﻊ )(‪MID‬‬

‫ﺗﺎﺑﻊ )(‪ MID‬ﺑﺮاي اﺳﺘﺨﺮاج ﮐﺎراﮐﺘﺮﻫﺎ از ﯾﮏ رﺷﺘﻪ ﻣﺘﻨﯽ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫ﮔﺮاﻣﺮ ﺗﺎﺑﻊ )(‪MID‬‬

‫‪SELECT MID(column_name,start[,length]) FROM table_name‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﭘﺎراﻣﺘﺮ‬
‫ﻻزم‪ .‬رﺷﺘﻪ ﻣﻮرد ﻧﻈﺮ ﺑﺮاي اﺳﺘﺨﺮاج ﮐﺎراﮐﺘﺮﻫﺎ‬ ‫‪column_name‬‬
‫ﻻزم‪ .‬ﻣﻮﻗﻌﯿﺖ ﺷﺮوع را ﻣﺸﺨﺺ ﮐﻨﯿﺪ )ﺷﺮوع از ‪(1‬‬ ‫‪start‬‬
‫اﺧﺘﯿﺎري‪ .‬ﺗﻌﺪاد ﮐﺎراﮐﺘﺮﻫﺎ ﺑﺮاي ﺑﺎزﮔﺸﺖ‪ .‬اﮔﺮ ﺻﺮﻓﻨﻈﺮ ﺷﻮد‪ ،‬ﺗﺎﺑﻊ )(‪ MID‬ﺑﻘﯿﻪ ﻣﺘﻦ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‪.‬‬ ‫‪length‬‬

‫ﻣﺜﺎل )(‪ MID‬در ‪SQL‬‬

‫ﺟﺪول "‪ "Persons‬زﯾﺮ را دارﯾﻢ‪:‬‬

‫‪P_Id‬‬ ‫‪LastName‬‬ ‫‪FirstName‬‬ ‫‪Address‬‬ ‫‪City‬‬

‫‪1‬‬ ‫‪Hansen‬‬ ‫‪Ola‬‬ ‫‪Timoteivn 10‬‬ ‫‪Sandnes‬‬

‫‪2‬‬ ‫‪Svendson‬‬ ‫‪Tove‬‬ ‫‪Borgvn 23‬‬ ‫‪Sandnes‬‬

‫‪3‬‬ ‫‪Pettersen‬‬ ‫‪Kari‬‬ ‫‪Storgt 20‬‬ ‫‪Stavanger‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﭼﻬﺎر ﮐﺎراﮐﺘﺮ اول از ﺳﺘﻮن "‪ "City‬ﺑﺎﻻ را اﺳﺘﺨﺮاج ﮐﻨﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪88‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT MID(City,1,4) as SmallCity FROM Persons

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

SmallCity

Sand

Sand

Stav

LEN() ‫ﺗﺎﺑﻊ‬

.‫ ﻃﻮل ﻣﻘﺪار ﯾﮏ ﻓﯿﻠﺪ ﻣﺘﻨﯽ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬LEN() ‫ﺗﺎﺑﻊ‬

LEN() ‫ﮔﺮاﻣﺮ ﺗﺎﺑﻊ‬

SELECT LEN(column_name) FROM table_name

SQL ‫ در‬LEN() ‫ﻣﺜﺎل ﺗﺎﺑﻊ‬

:‫" زﯾﺮ را دارﯾﻢ‬Persons" ‫ﺟﺪول‬

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

.‫" ﺑﺎﻻ را اﻧﺘﺨﺎب ﮐﻨﯿﻢ‬Address" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻃﻮل ﻣﻘﺎدﯾﺮ در ﺳﺘﻮن‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT LEN(Address) as LengthOfAddress FROM Persons

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

LengthOfAddress
12
9

89
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫ﺗﺎﺑﻊ )(‪ROUDN‬‬

‫ﺗﺎﺑﻊ )(‪ ROUDN‬ﺑﺮاي ﮔﺮد ﮐﺮدن ﯾﮏ ﻓﯿﻠﺪ ﻋﺪدي ﺑﻪ ﺗﻌﺪاد ﻋﺪد اﻋﺸﺎري ﻣﺸﺨﺺ‪.‬‬

‫ﮔﺮاﻣﺮ )(‪ ROUDN‬در ‪SQL‬‬

‫‪SELECT ROUND(column_name,decimals) FROM table_name‬‬

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﭘﺎراﻣﺘﺮﻫﺎ‬
‫‪ column_name‬ﻻزم‪ .‬ﻓﯿﻠﺪي ﮐﻪ ﺑﺎﯾﺪ ﮔﺮد ﺷﻮد‪.‬‬
‫ﻻزم‪ .‬ﺗﻌﺪاد اﻋﺸﺎر ﺑﺮاي ﮔﺮد ﺷﺪن را ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫‪decimals‬‬

‫ﻣﺜﺎل )(‪ ROUDN‬در ‪SQL‬‬

‫ﺟﺪول "‪ "Products‬زﯾﺮ را دارﯾﻢ‪:‬‬

‫‪Prod_Id‬‬ ‫‪ProductName‬‬ ‫‪Unit‬‬ ‫‪UnitPrice‬‬

‫‪1‬‬ ‫‪Jarlsberg‬‬ ‫‪1000 g‬‬ ‫‪10.45‬‬

‫‪2‬‬ ‫‪Mascarpone‬‬ ‫‪1000 g‬‬ ‫‪32.56‬‬

‫‪3‬‬ ‫‪Gorgonzola‬‬ ‫‪1000 g‬‬ ‫‪15.67‬‬

‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻧﺎم ﻣﺤﺼﻮﻻت و ﻗﯿﻤﺖ ﮔﺮد ﺷﺪه ﺑﻪ ﻧﺰدﯾﮑﺘﺮﯾﻦ ﻋﺪد ﻧﻤﺎﯾﺶ دﻫﯿﻢ‪.‬‬

‫از دﺳﺘﻮر ‪ SQL‬زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪:‬‬

‫‪SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products‬‬

‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬

‫‪ProductName‬‬ ‫‪UnitPrice‬‬
‫‪Jarlsberg‬‬ ‫‪10‬‬
‫‪Mascarpone‬‬ ‫‪33‬‬
‫‪Gorgonzola‬‬ ‫‪16‬‬

‫ﺗﺎﺑﻊ )(‪NOW‬‬
‫‪90‬‬
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

.‫ ﺗﺎرﯾﺦ و زﻣﺎن ﻓﻌﻠﯽ ﺳﯿﺴﺘﻢ را ﺑﺮﻣﯽ ﮔﺮداﻧﺪ‬NOW() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬NOW() ‫ﮔﺮاﻣﺮ‬

SELECT NOW() FROM table_name

NOW() ‫ﻣﺜﺎل‬

:‫" زﯾﺮ را دارﯾﻢ‬Products" ‫ﺟﺪول‬

Prod_Id ProductName Unit UnitPrice


1 Jarlsberg 1000 g 10.45
2 Mascarpone 1000 g 32.56
3 Gorgonzola 1000 g 15.67

.‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺤﺼﻮﻻت و ﻗﯿﻤﺖ ﻫﺎ در ﺗﺎرﯾﺦ اﻣﺮوز را ﻧﻤﺎﯾﺶ دﻫﯿﻢ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

ProductName UnitPrice PerDate

Jarlsberg 10.45 10/7/2008 11:25:02 AM

Mascarpone 32.56 10/7/2008 11:25:02 AM

Gorgonzola 15.67 10/7/2008 11:25:02 AM

FORMAT() ‫ﺗﺎﺑﻊ‬

.‫ ﺑﺮاي ﭼﮕﻮﻧﮕﯽ ﻧﻤﺎﯾﺶ ﻓﺮﻣﺖ ﯾﮏ ﻓﯿﻠﺪ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬FORMAT() ‫ﺗﺎﺑﻊ‬

SQL ‫ در‬FORMAT() ‫ﮔﺮاﻣﺮ‬

91
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT FORMAT(column_name,format) FROM table_name

‫ﺗﻮﺿﯿﺤﺎت‬ ‫ﭘﺎراﻣﺘﺮ‬
.‫ ﻓﯿﻠﺪي ﮐﻪ ﺑﺎﯾﺪ ﻓﺮﻣﺖ دﻫﯽ ﺷﻮد‬.‫ﻻزم‬ column_name
.‫ ﻓﺮﻣﺖ را ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﺪ‬.‫ﻻزم‬ format

SQL ‫ در‬FORMAT() ‫ﻣﺜﺎل‬

:‫" زﯾﺮ را دارﯾﻢ‬Products" ‫ﺟﺪول‬

Prod_Id ProductName Unit UnitPrice

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

.‫"( را ﻧﻤﺎﯾﺶ دﻫﯿﻢ‬YYYY-MM-DD" ‫اﮐﻨﻮن ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﺤﺼﻮﻻت و ﻗﯿﻤﺖ در ﺗﺎرﯾﺦ اﻣﺮوز )ﺑﺎ ﻓﺮﻣﺖ‬

:‫ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬SQL ‫از دﺳﺘﻮر‬

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate FROM


Products

:‫ﻧﺘﯿﺠﻪ اﯾﻨﮕﻮﻧﻪ ﺧﻮاﻫﺪ ﺷﺪ‬

ProductName UnitPrice PerDate

Jarlsberg 10.45 2008-10-07

Mascarpone 32.56 2008-10-07

Gorgonzola 15.67 2008-10-07

92
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

‫ﺿﻤﯿﻤﻪ‬

SQL ‫ﻣﺮﺟﻊ ﺳﺮﯾﻊ دﺳﺘﻮرات‬

SQL ‫دﺳﺘﻮرات‬ ‫ﮔﺮاﻣﺮ‬


SELECT column_name(s)
FROM table_name
AND / OR
WHERE condition
AND|OR condition
ALTER TABLE table_name
ADD column_name datatype

ALTER TABLE ‫ﯾﺎ‬

ALTER TABLE table_name


DROP COLUMN column_name
SELECT column_name AS column_alias
FROM table_name

AS (alias) ‫ﯾﺎ‬

SELECT column_name
FROM table_name AS table_alias
SELECT column_name(s)
FROM table_name
BETWEEN
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE TABLE table_name
(
column_name1 data_type,
CREATE TABLE column_name2 data_type,
column_name2 data_type,
...
)
CREATE INDEX index_name
ON table_name (column_name)
CREATE INDEX
‫ﯾﺎ‬

٩٣
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

CREATE UNIQUE INDEX index_name


ON table_name (column_name)
CREATE VIEW view_name AS
SELECT column_name(s)
CREATE VIEW
FROM table_name
WHERE condition
DELETE FROM table_name
WHERE some_column=some_value

‫ﯾﺎ‬

DELETE FROM table_name


DELETE
(!‫ ﻣﺤﺘﻮاي ﺟﺪول را ﺣﺬف ﻣﯽ ﮐﻨﺪ‬:‫)ﺗﻮﺟﻪ‬

DELETE * FROM table_name

(!‫ ﻣﺤﺘﻮاي ﺟﺪول را ﺣﺬف ﻣﯽ ﮐﻨﺪ‬:‫)ﺗﻮﺟﻪ‬


DROP DATABASE DROP DATABASE database_name
DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY
WHERE column_name operator value
GROUP BY column_name
SELECT column_name, aggregate_function(column_name)
FROM table_name
HAVING WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
SELECT column_name(s)
FROM table_name
IN
WHERE column_name
IN (value1,value2,..)
INSERT INTO table_name
INSERT INTO
VALUES (value1, value2, value3,....)

٩۴
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

‫ﯾﺎ‬

INSERT INTO table_name


(column1, column2, column3,...)
VALUES (value1, value2, value3,....)
SELECT column_name(s)
FROM table_name1
INNER JOIN
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SELECT column_name(s)
FROM table_name1
LEFT JOIN
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SELECT column_name(s)
FROM table_name1
RIGHT JOIN
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SELECT column_name(s)
FROM table_name1
FULL JOIN
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SELECT column_name(s)
LIKE FROM table_name
WHERE column_name LIKE pattern
SELECT column_name(s)
ORDER BY FROM table_name
ORDER BY column_name [ASC|DESC]
SELECT column_name(s)
SELECT
FROM table_name
SELECT *
SELECT *
FROM table_name
SELECT DISTINCT column_name(s)
SELECT DISTINCT
FROM table_name
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name
SELECT INTO
‫ﯾﺎ‬

٩۵
91 ‫ﺑﻬﺎر‬ SQL ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات‬

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name
SELECT TOP number|percent column_name(s)
SELECT TOP
FROM table_name
TRUNCATE TABLE TRUNCATE TABLE table_name
SELECT column_name(s) FROM table_name1
UNION UNION
SELECT column_name(s) FROM table_name2
SELECT column_name(s) FROM table_name1
UNION ALL UNION ALL
SELECT column_name(s) FROM table_name2
UPDATE table_name
UPDATE SET column1=value, column2=value,...
WHERE some_column=some_value
SELECT column_name(s)
WHERE FROM table_name
WHERE column_name operator value

SQL ‫ﻫﺎﺳﺘﯿﻨﮓ در‬

‫ وب ﺳﺮور ﺗﺎن ﺑﺎﯾﺪ ﺑﻪ ﯾﮏ ﺳﯿﺴﺘﻢ‬،‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ وب ﺳﺎﯾﺖ ﺗﺎن ﻗﺎدر ﺑﻪ دﺧﯿﺮه ﮐﺮدن و ﻧﻤﺎﯾﺶ داده ﻫﺎ از ﯾﮏ ﭘﺎﯾﮕﺎه داده ﺑﺎﺷﺪ‬
.‫ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‬SQL ‫ﭘﺎﯾﮕﺎه داده دﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﺪ ﮐﻪ از زﺑﺎن‬

‫ ﻧﮕﺎه‬SQL ‫( ﻣﯿﺰﺑﺎن ﺧﻮاﻫﺪ ﺷﺪ؛ ﺑﺎﯾﺪ ﺑﻪ ﻃﺮح ﻫﺎي ﻫﺎﺳﺘﯿﻨﮓ‬ISP) ‫اﮔﺮ وب ﺳﺮور ﺷﻤﺎ ﺗﻮﺳﻂ ﯾﮏ ﻓﺮاﻫﻢ ﮐﻨﻨﺪه ﺳﺮوﯾﺲ اﯾﻨﺘﺮﻧﺖ‬
.‫ﮐﻨﯿﺪ‬
.‫ ﻫﺴﺘﻨﺪ‬MS Access ‫ و‬MS SQL Server ،MySQL ‫راﯾﺞ ﺗﺮﯾﻦ ﭘﺎﯾﮕﺎه داده ﻫﺎي ﻫﺎﺳﺘﯿﻨﮓ‬

.‫ﯾﻮﻧﯿﮑﺲ داﺷﺘﻪ ﺑﺎﺷﯿﺪ‬/‫ را در ﻫﺮ دو ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ وﯾﻨﺪوز و ﻟﯿﻨﻮﮐﺲ‬SQL ‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﭘﺎﯾﮕﺎه داده ﻫﺎي‬

:‫ آﻣﺪه اﺳﺖ‬،‫در زﯾﺮ ﯾﮏ ﻧﻤﺎي ﮐﻠﯽ از اﯾﻨﮑﻪ ﮐﺪام ﺳﯿﺴﺘﻢ ﭘﺎﯾﮕﺎه داده روي ﮐﺪام ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ اﺟﺮا ﻣﯽ ﺷﻮد‬

My SQL Server

.‫ﻓﻘﻂ ﺑﺮ روي ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ وﯾﻨﺪوز اﺟﺮا ﻣﯽ ﺷﻮد‬

٩۶
‫ﺑﻬﺎر ‪91‬‬ ‫راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮرات ‪SQL‬‬

‫‪MySQL‬‬

‫ﺑﺮ روي ﻫﺮ دو ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ وﯾﻨﺪوز و ﻟﯿﻨﻮﮐﺲ‪/‬ﯾﻮﻧﯿﮑﺲ اﺟﺮا ﻣﯽ ﺷﻮد‪.‬‬

‫‪MS Access‬‬

‫ﻓﻘﻂ ﺑﺮ روي ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ وﯾﻨﺪوز اﺟﺮا ﻣﯽ ﺷﻮد‪.‬‬

‫ﺑﺮاي آﻣﻮزش ﺑﯿﺸﺘﺮ درﺑﺎره وب ﻫﺎﺳﺘﯿﻨﮓ‪ ،‬ﻟﻄﻔﺎ از دوره آﻣﻮزش ﻫﺎﺳﺘﯿﻨﮓ ﻣﺎ ﺑﺎزدﯾﺪ ﮐﻨﯿﺪ‪.‬‬

‫ﺷﻤﺎ ‪ SQL‬را آﻣﻮﺧﺘﯿﺪ‪ ،‬ﺣﺎﻻ ﭼﮑﺎري ﺑﺎﯾﺪ اﻧﺠﺎم دﻫﯿﺪ؟‬

‫ﺧﻼﺻﻪ ‪SQL‬‬

‫اﯾﻦ دوره ‪ SQL‬ﺑﻪ ﺷﻤﺎ آﻣﻮﺧﺖ ﮐﻪ ‪ SQL‬زﺑﺎن اﺳﺘﺎﻧﺪارد ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﺮاي دﺳﺘﺮﺳﯽ و دﺳﺘﮑﺎري ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده اﺳﺖ‪.‬‬

‫ﺷﻤﺎ آﻣﻮﺧﺘﯿﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﺑﺎ ‪ SQL‬در ﯾﮏ ﭘﺎﯾﮕﺎه داده ﭘﺮس و ﺟﻮ را اﺟﺮا ﮐﻨﯿﺪ‪ ،‬داده را ﺑﺎزﯾﺎﺑﯽ ﮐﻨﯿﺪ‪ ،‬رﮐﻮردﻫﺎي ﺟﺪﯾﺪ درج ﮐﻨﯿﺪ‪،‬‬
‫رﮐﻮردﻫﺎ را ﺣﺬف و ﺑﺮوز رﺳﺎﻧﯽ ﮐﻨﯿﺪ‪.‬‬

‫ﺷﻤﺎ ﻫﻤﭽﻨﯿﻦ آﻣﻮﺧﺘﯿﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﭘﺎﯾﮕﺎه ﻫﺎي داده‪ ،‬ﺟﺪاول و ﻓﻬﺮﺳﺖ ﻫﺎ را ﺑﺎ ‪ SQL‬ﺑﺴﺎزﯾﺪ‪ ،‬و ﭼﮕﻮﻧﻪ آﻧﻬﺎ را ﺣﺬف ﮐﻨﯿﺪ‪.‬‬

‫ﺷﻤﺎ ﻣﻬﻤﺘﺮﯾﻦ ﺗﻮاﺑﻊ ﺟﻤﻌﯽ را در ‪ SQL‬آﻣﻮﺧﺘﯿﺪ‪.‬‬

‫اﮐﻨﻮن ﻣﯽ داﻧﯿﺪ ﮐﻪ ‪ SQL‬زﺑﺎن اﺳﺘﺎﻧﺪاردي اﺳﺖ ﮐﻪ ﺑﺎ ﻫﻤﻪ ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده ﻣﻌﺮوف ﻣﺜﻞ ‪،IBM DB2 ،MS SQL Server‬‬
‫‪ MySQL ،Oracle‬و ‪ MS Access‬ﺑﺨﻮﺑﯽ ﮐﺎر ﻣﯽ ﮐﻨﺪ‪.‬‬

‫ﺣﺎﻻ ﺷﻤﺎ ‪ SQL‬را آﻣﻮﺧﺘﯿﺪ‪ ،‬آﻣﻮزش ﺑﻌﺪي ﭼﯿﺴﺖ؟‬

‫ﭘﯿﺸﻨﻬﺎد ﻣﺎ ﺑﺮاي ﯾﺎدﮔﯿﺮي درﺑﺎره ‪ ADO‬ﯾﺎ ‪ PHP MySQL‬اﺳﺖ‪.‬‬

‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ در ﻣﻮرد ‪ ADO‬ﺑﯿﺸﺘﺮ ﺑﯿﺎﻣﻮزﯾﺪ‪ ،‬ﻟﻄﻔﺎ دوره آﻣﻮزش ‪ ADO‬ﻣﺎ را ﺑﺎزدﯾﺪ ﮐﻨﯿﺪ‪.‬‬

‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ در ﻣﻮرد ‪ MySQL‬ﺑﯿﺸﺘﺮ ﺑﯿﺎﻣﻮزﯾﺪ‪ ،‬ﻟﻄﻔﺎ دوره آﻣﻮزش ‪ PHP‬ﻣﺎ را ﺑﺎزدﯾﺪ ﮐﻨﯿﺪ‪.‬‬

‫‪٩٧‬‬

You might also like