កុំព្យូទ័រផ្នែកទន់

របៀបសរសេរ SQL មួយសំណួរ - ឧទាហរណ៍លម្អិត

យើងរាល់គ្នាបានទៀងទាត់ប្រឈមនឹងការប្រើភាពខុសគ្នានៃនិងជាមូលដ្ឋានទិន្នន័យមួយ។ នៅពេលដែលយើងជ្រើសអាសយដ្ឋានអ៊ីម៉ែល, យើងកំពុងធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ។ មូលដ្ឋានទិន្នន័យប្រើប្រាស់សេវាកម្មស្វែងរកធនាគារសម្រាប់ការផ្ទុកទិន្នន័យអតិថិជនជាដើម

ប៉ុន្តែបើទោះបីជាការប្រើប្រាស់ថេរនៃមូលដ្ឋានទិន្នន័យ, សូម្បីតែសម្រាប់អ្នកអភិវឌ្ឍន៍ប្រព័ន្ធកម្មវិធីជាច្រើនគឺមានច្រើននៃការ "ចំណុចស" ដោយសារតែការបកស្រាយផ្សេងគ្នានៃលក្ខខណ្ឌដូចគ្នា។ យើងផ្តល់និយមន័យនៃពាក្យសំខាន់ខ្លីទៅមូលដ្ឋានទិន្នន័យនៃការ SQL មួយពិចារណា។ មាំ

មូលដ្ឋានទិន្នន័យ - ឯកសារមួយឬសំណុំឯកសារសម្រាប់រក្សាទុកទិន្នន័យបានបញ្ជាឱ្យរចនាសម្ព័ន្ធនិងទំនាក់ទំនងរបស់ពួកគេ។ ជាញឹកញាប់ណាស់, មូលដ្ឋានទិន្នន័យមួយដែលត្រូវបានគេហៅថាប្រព័ន្ធគ្រប់គ្រងទិន្នន័យ (DBMS) ។ មូលដ្ឋានទិន្នន័យ - វាគ្រាន់តែជាឃ្លាំងនៃពត័មាននៅក្នុងទ្រង់ទ្រាយជាក់លាក់មួយនិងអាចធ្វើការជាមួយមូលដ្ឋានទិន្នន័យផ្សេងគ្នា។

តារាង - ស្រមៃថតនៅក្នុងការដែលឯកសារត្រូវបានរក្សាទុក, បានដាក់ជាក្រុមបើយោងតាមប៉ារ៉ាម៉ែត្រដូចជាបញ្ជីនៃការបញ្ជាទិញសម្រាប់ខែចុងក្រោយនេះ។ នេះគឺជាតារាងនៅក្នុងកុំព្យូទ័ររបស់មួយ មូលដ្ឋានទិន្នន័យ។ តារាងដាច់ដោយឡែកមានឈ្មោះខ្លួនតែមួយគត់របស់ខ្លួន។

ប្រភេទទិន្នន័យ - ប្រភេទនៃការពអនុញ្ញាតឱ្យរក្សាទុកនៅក្នុងជួរឈរតែមួយឬជួរដេក។ វាអាចជាលេខឬជាអត្ថបទទ្រង់ទ្រាយជាក់លាក់មួយ។

ជួរឈរនិងជួរដេក - យើងទាំងអស់គ្នាធ្វើការជាមួយនឹងសៀវភៅបញ្ជីដែលមានវត្តមាននៅក្នុងជួរដេកនិងជួរឈរផងដែរ។ រាល់ការ មូលដ្ឋានទិន្នន័យទំនាក់ទំនង ធ្វើការជាមួយនឹងតារាងវិធីដូចគ្នា។ ខ្សែអក្សរនេះត្រូវបានគេហៅថាពេលខ្លះការកត់ត្រា។

កូនសោសំខាន់ - ជួរដេកគ្នាអាចមានជួរឈរមួយឬច្រើនសម្រាប់ការកំណត់អត្តសញ្ញាណតែមួយគត់របស់ខ្លួន។ គ្មានកូនសោសំខាន់គឺមានការលំបាកខ្លាំងណាស់ដើម្បីធ្វើឱ្យទាន់សម័យ, កែប្រែនិងលុបជួរដេកដែលពាក់ព័ន្ធ។

SQL គឺជាអ្វី?

ភាសាសំណួរ SQL មួយ (ជាភាសាអង់គ្លេស Structured Query Language ។ - រចនាសម្ព័ន្ធ Query Language) ត្រូវបានរចនាឡើងតែមួយគត់ដើម្បីធ្វើការជាមួយនឹងមូលដ្ឋានទិន្នន័យនិងបច្ចុប្បន្នជាស្ដង់ដារសម្រាប់មូលដ្ឋានទិន្នន័យដែលពេញនិយមទាំងអស់។ វាក្យសម្ព័ន្ធភាសានេះត្រូវបានបង្កើតឡើងដោយមួយចំនួនតូចនិងងាយស្រួលក្នុងការប្រតិបត្តិកររៀន។ ប៉ុន្តែទោះបីជាភាពសាមញ្ញជាក់ស្តែងនេះវាអនុញ្ញាតឱ្យបង្កើតសំណួរ SQL សម្រាប់ប្រតិបត្ដិការស្មុគ្រស្មាញជាមួយនឹងមូលដ្ឋានទិន្នន័យនៃទំហំណាមួយ។

ចាប់តាំងពីឆ្នាំ 1992 មកគឺមានស្ដង់ដារជារឿងធម្មតា, គេហៅថា ANSI SQL មួយ។ វាកំណត់វាក្យសម្ព័ន្ធនិងមុខងាររបស់ប្រតិបត្តិករមូលដ្ឋាននិងត្រូវបានគាំទ្រដោយទាំងអស់ជាមេដឹកនាំទីផ្សារ DBMS ដូចជា Oracle ដែលជា ក្រុមហ៊ុន Microsoft SQL មួយម៉ាស៊ីនបម្រើនេះបាន។ សូមពិចារណាលក្ខណៈពិសេសទាំងអស់នៃភាសាដែលនៅក្នុងអត្ថបទខ្លីមួយនេះគឺមិនអាចទៅរួចនោះទេដូច្នេះយើងនឹងពិចារណាយ៉ាងខ្លីតែសំណួរ SQL មូលដ្ឋាន។ ឧទាហរណ៍បង្ហាញពីភាពសាមញ្ញនិងមានលក្ខណៈពិសេសនៃភាសានេះ:

  • ការបង្កើតមូលដ្ឋានទិន្នន័យនិងតារាង;
  • ជ្រើសទិន្នន័យ;
  • ការបន្ថែមធាតុ;
  • ការកែប្រែនិងការលុបព។

ទិន្នន័យ SQL មួយប្រភេទ

ជួរឈរទាំងអស់នៅក្នុងតារាងមូលដ្ឋានទិន្នន័យមួយទុកប្រភេទទិន្នន័យដូចគ្នា។ ក្នុង SQL ប្រភេទទិន្នន័យគឺមានដូចគ្នានៅក្នុងភាសាសរសេរកម្មវិធីផ្សេងទៀត។

ប្រភេទទិន្នន័យ បរិយាយ
INT ចំនួនគត់
ពិត អណ្តែតទឹកចំនួនដែលចំណុច
អត្ថបទ ខ្សែអក្សរតួអក្សរនៃប្រវែងអថេរ
កាលបរិច្ឆេទ សំណួរ SQL "កាលបរិច្ឆេទ" នៅក្នុងភាពខុសគ្នានៃទ្រង់ទ្រាយមួយ
លេ ពេល
CHAR ខ្សែអក្សរអត្ថបទនៃប្រវែងថេរ

បង្កើតតារាងនិងមូលដ្ឋានទិន្នន័យ

បង្កើតមូលដ្ឋានទិន្នន័យថ្មី, តារាងនិងសំណួរផ្សេងទៀតនៅក្នុង SQL មួយមានវិធីពីរយ៉ាងគឺ:

  • សេចក្តីថ្លែងការណ៍ SQL មូលដ្ឋានទិន្នន័យដែលបានតាមរយៈកុងសូល
  • ដោយប្រើឧបករណ៍ដែលអន្តរកម្មរដ្ឋបាលផ្នែកនៃម៉ាស៊ីនបម្រើមូលដ្ឋានទិន្នន័យមួយ។

ប្រតិបត្តិករមូលដ្ឋានទិន្នន័យថ្មីបង្កើតមូលដ្ឋានទិន្នន័យ <ឈ្មោះមូលដ្ឋានទិន្នន័យ>; ។ ដូចដែលអ្នកអាចមើលឃើញ, វាក្យសម្ព័ន្ធគឺសាមញ្ញនិងសង្ខេប។

តុនេះនៅក្នុងមូលដ្ឋានទិន្នន័យដែលបានបង្កើតបង្កើតតារាងសេចក្តីថ្លែងការណ៍ជាមួយនឹងប៉ារ៉ាម៉ែត្រដូចខាងក្រោម:

  • ឈ្មោះតារាង
  • ឈ្មោះនិងទិន្នន័យប្រភេទនៃជួរឈរ

ជាឧទាហរណ៍មួយ, បង្កើតតារាងមួយដែលមានជួរឈរទំនិញដូចខាងក្រោម:

ជួរឈរ បរិយាយ
commodity_id លេខសម្គាល់ផលិតផល
អ្នកលក់ លេខសម្គាល់អ្នកលក់ (អាជីវករគន្លឹះតារាងខាងក្រៅ)
commodity_name ឈ្មោះផលិតផល
commodity_price ការចំណាយនៃការ
commodity_desc បរិយាយ

បង្កើតតារាងមួយ:

បង្កើតទំនិញតារាង

(CHAR commodity_id (15) មិន NULL,

អ្នកលក់ CHAR (15) មិន NULL,

commodity_name CHAR (254) NULL,

ទសភាគ commodity_price (8,2) NULL,

commodity_desc VARCHAR (1000) NULL);

តារាងមានជួរឈរប្រាំ។ បន្ទាប់ពីឈ្មោះនេះគឺជាប្រភេទនៃជួរឈរទិន្នន័យត្រូវបានបំបែកដោយសញ្ញាក្បៀស។ តម្លៃជួរឈរនេះអាចសន្មត់តម្លៃទទេ (NULL) ឬត្រូវបំពេញនៅក្នុង (មិន NULL), ហើយវាជាការប្តេជ្ញាចិត្តដើម្បីបង្កើតតារាងមួយ។

ទិន្នន័យពីតារាងគំរូ

ទិន្នន័យប្រតិបត្តិករគំរូ - សំណួរ SQL ភាគច្រើនបំផុតបានប្រើជាទូទៅ។ ចំពោះការបន្ថែមដែលអ្នកត្រូវការដើម្បីបញ្ជាក់ថាយើងចង់ជ្រើសពីតារាងមួយ។ នៅពេលដំបូងឧទាហរណ៍ធម្មតា:

commodity_name ជ្រើសពីផលិតផល

បន្ទាប់ពីសេចក្តីថ្លែងការណ៍ SELECT បង្ហាញឈ្មោះរបស់ជួរឈរដើម្បីទទួលបានពនេះប៉ុន្តែពីកំណត់តារាង។

លទ្ធផលសំណួរនឹងត្រូវបានជួរដេកតារាងទាំងអស់ដោយតម្លៃ Commodity_name ក្នុងលំដាប់ដែលពួកគេត្រូវបានចូលទៅក្នុងមូលដ្ឋានទិន្នន័យឧទាហរណ៍ ដោយគ្មានការតម្រៀបណាមួយទេ។ ដើម្បីរៀបចំលទ្ធផលដោយប្រើលំដាប់ប្រតិបត្តិករជម្រើសដោយ។

ដើម្បីសួរនៅលើវាលច្រើនរាយពួកវាបំបែកដោយសញ្ញាក្បៀសដូចក្នុងឧទាហរណ៍ដូចខាងក្រោម:

commodity_id SELECT, commodity_name, commodity_price ពីទំនិញ

វាគឺជាការដែលអាចធ្វើបានដើម្បីទទួលបានជាលទ្ធផលនៃតម្លៃនៃជួរឈរខ្សែអក្សរសំណួរទាំងអស់។ ចំពោះគោលបំណងនេះសញ្ញា "*":

* ជ្រើសពីផលិតផល

  • ជ្រើសគាំទ្រលើសពីនេះទៀត:
  • តម្រៀបទិន្នន័យ (ORDER BY សេចក្តីថ្លែងការណ៍)
  • ការជ្រើសរើសនេះបើយោងតាមលក្ខខណ្ឌនេះ (ទីកន្លែង)
  • រយៈពេលក្រុម (ក្រុមដោយ)

បន្ថែមបន្ទាត់

ដើម្បីបន្ថែមជួរដេកទៅក្នុងតារាងមួយដោយប្រើសេចក្តីថ្លែងការណ៍ SQL សេចក្តីថ្លែងការណ៍ INSERT មួយ។ លើសពីនេះទៀតអាចត្រូវបានធ្វើឡើងនៅក្នុងវិធីបីយ៉ាង:

  • បន្ថែមបន្ទាត់ទាំងមូលថ្មី;
  • នៃបន្ទាត់;
  • លទ្ធផលសំណួរ។

ដើម្បីបន្ថែមបន្ទាត់ពេញលេញបានអ្នកត្រូវតែបញ្ជាក់ឈ្មោះតារាងនិងតម្លៃនៃជួរឈរ (វាល) នៃបន្ទាត់ថ្មី។ ខាងក្រោមនេះគឺជាឧទាហរណ៍មួយ:

បញ្ចូលទៅជាតម្លៃទំនិញ ( '106', '50', 'ក្រុមហ៊ុន Coca-Cola ", " 1.68 "" គ្មាន Alcogol)

ឧទាហរណ៍បន្ថែមផលិតផលថ្មីមួយទៅក្នុងតារាង។ តម្លៃត្រូវបានបញ្ជាក់បន្ទាប់ពីតម្លៃសម្រាប់ជួរឈរនីមួយ។ ប្រសិនបើមានគឺគ្មានតម្លៃដែលត្រូវគ្នាសម្រាប់ជួរឈរនេះវាគឺជាការចាំបាច់ដើម្បីបញ្ជាក់ NULL ។ ជួរឈរត្រូវបានពោរពេញទៅដោយគុណតម្លៃក្នុងលំដាប់ដែលបានបញ្ជាក់នៅពេលបង្កើតតារាងមួយ។

នៅក្នុងករណីនៃការបន្ថែមតែចំណែកនៃខ្សែអក្សរនេះត្រូវតែបញ្ជាក់យ៉ាងជាក់លាក់ឈ្មោះនៃជួរឈរនោះដូចនៅក្នុងឧទាហរណ៍នេះ:

បញ្ចូលទៅក្នុងទំនិញ (commodity_id, អ្នកលក់, commodity_name)

តម្លៃ ( '106', '50', 'ក្រុមហ៊ុន Coca-Cola " )

យើងបានណែនាំតែអត្តសញ្ញាណផលិតផល, អ្នកផ្គត់ផ្គង់និងឈ្មោះរបស់ខ្លួននិងនៅសល់នៃវាលដែលបានដាក់ឡែកទទេ។

លោកបានបន្ថែមថាលទ្ធផលសំណួរ

ជាទូទៅមាន INSERT ត្រូវបានប្រើដើម្បីបន្ថែមជួរដេកមួយប៉ុន្តែអាចត្រូវបានប្រើសម្រាប់បន្ថែមលទ្ធផលសេចក្តីថ្លែងការណ៍មួយ SELECT ។

ទិន្នន័យការផ្លាស់ប្តូរ

ដើម្បីផ្លាស់ប្តូរពនៅក្នុងវាលតារាងមូលដ្ឋានទិន្នន័យត្រូវប្រើសេចក្តីថ្លែងការណ៍ធ្វើឱ្យទាន់សម័យ។ ប្រតិបត្តិករនេះអាចត្រូវបានប្រើក្នុងវិធីពីរយ៉ាង:

  • បានធ្វើបច្ចុប្បន្នភាពជួរដេកទាំងអស់នៅក្នុងតារាង។
  • មានតែសម្រាប់បន្ទាត់ជាក់លាក់មួយ។

បច្ចុប្បន្នភាពមានធាតុសំខាន់ចំនួនបី:

  • តុមួយដែលអ្នកចង់ធ្វើឱ្យការផ្លាស់ប្តូរ;
  • ឈ្មោះវាលនិងតម្លៃថ្មីរបស់ពួកគេ;
  • លក្ខខណ្ឌសម្រាប់ការផ្លាស់ប្តូរការជ្រើសជួរដេក។

សូមពិចារណាឧទាហរណ៍មួយ។ ចូរនិយាយថាផលិតផលដែលមានលេខសម្គាល់ = 106 បានផ្លាស់ប្តូរតម្លៃនេះ, ដូច្នេះបន្ទាត់នេះដើម្បីធ្វើបច្ចុប្បន្នភាព។ សរសេរសេចក្តីថ្លែងការណ៍ដូចខាងក្រោម:

commodity_price បច្ចុប្បន្នភាពទំនិញ SET = '3,2' WHERE commodity_id = ' 106'

យើងចង្អុលបង្ហាញថាឈ្មោះតារាងក្នុងករណីនេះ, ទំនិញដែលនឹងត្រូវបានធ្វើបច្ចុប្បន្នភាពនិងបន្ទាប់មកបន្ទាប់ពីកំណត់ - តម្លៃថ្មីនៃជួរឈរនិងបានរកឃើញធាតុដែលចង់បានបញ្ជាក់លេខសម្គាល់តម្លៃដែលជាកន្លែងដែលអ្នកចង់បាន។

ដើម្បីផ្លាស់ប្តូរចំនួនជួរឈរបន្ទាប់ពីសេចក្តីថ្លែងការណ៍នេះបានបញ្ជាក់គូ SET ជាច្រើននៃជួរឈរតម្លៃដែលបំបែកដោយសញ្ញាក្បៀស។ សូមមើលឧទាហរណ៍ដែលក្នុងនោះឈ្មោះនិងតម្លៃទំនិញធ្វើឱ្យទាន់សម័យមួយ:

commodity_name បច្ចុប្បន្នភាពទំនិញ SET = 'Fanta " , commodity_price =' 3,2 'WHERE commodity_id =' 106 '

ដើម្បីលុបនៅក្នុងជួរឈរដែលបានព, អ្នកអាចកំណត់វាទទេប្រសិនបើវាអនុញ្ញាតឱ្យរចនាសម្ព័ន្ធរបស់តារាង។ វាត្រូវតែត្រូវបានចងចាំថាជា NULL - នេះគឺជា "ទេ" តម្លៃមិនមែនសូន្យជាអត្ថបទឬលេខ។ យកការរៀបរាប់ធាតុ:

ទំនិញ SET commodity_desc បច្ចុប្បន្នភាព NULL ទីកន្លែង commodity_id = = ' 106'

លុបជួរដេក

សំណើ SQL មួយលុបជួរដេកក្នុងតារាងត្រូវបានធ្វើប្រតិបត្តិការលុប។ មានវិធីពីរយ៉ាងក្នុងការប្រើគឺ:

  • តារាងដែលបានលុបជួរដេកជាក់លាក់;
  • យកចេញជួរដេកទាំងអស់នៅក្នុងតារាង។

ឧទាហរណ៍យកចេញមួយជួរដេកនៃតារាង:

លុបពីទំនិញដែលជាកន្លែងដែល commodity_id = '106'

បន្ទាប់ពីបានលុបពីបញ្ជាក់ឈ្មោះតារាងដែលនៅក្នុងដើម្បីលុបជួរដេក។ ដែលជាកន្លែងដែលមានរួមបញ្ចូលទាំងស្ថានភាពនៅក្រោមប្រតិបត្តិករដែលបន្ទាត់ត្រូវបានជ្រើសសម្រាប់ការលុបមួយ។ នៅក្នុងឧទាហរណ៍នេះយើងយកបន្ទាត់ផលិតផលដែលមានលេខសម្គាល់ = 106 ។ ចង្អុលបង្ហាញកន្លែងដែលមានសារៈសំខាន់ណាស់ពីព្រោះ ឆ្លង privedt ប្រតិបត្តិករនេះយកជួរដេកទាំងអស់ក្នុងតារាង។ នេះអនុវត្តទៅផ្លាស់ប្តូរតម្លៃវាល។

សេចក្តីថ្លែងការណ៍ដែលបានលុបមិនបានបញ្ជាក់ឈ្មោះជួរឈរនិងមេតាតួអក្សរ។ លោកនឹងយកបន្ទាត់និងលុបជួរឈរមួយដែលគាត់មិនអាចធ្វើបាន។

ការចូលដំណើរការដោយប្រើប្រាស់ក្រុមហ៊ុន Microsoft SQL មួយនៅ

ក្រុមហ៊ុន Microsoft បានការចូលដំណើរ ត្រូវបានប្រើជាធម្មតាអន្តរកម្មដើម្បីបង្កើតសៀវភៅបញ្ជីមូលដ្ឋានទិន្នន័យ, ការផ្លាស់ប្តូរការគ្រប់គ្រង, ការវិភាគទិន្នន័យនៅក្នុងមូលដ្ឋានទិន្នន័យនិងនៅក្នុងគោលបំណងដើម្បីអនុវត្តការចូលដំណើរការសំណួរ SQL តាមរយៈការសាងសង់សំណួរអន្តរកម្មងាយស្រួល (ការរចនាសំណួរ) ដោយប្រើដែលអ្នកអាចសាងសង់និងប្រតិបត្តិសេចក្តីថ្លែងការណ៍ SQL បន្ទាន់ complexity ណាមួយ។

ដូចគ្នានេះផងដែរការចូលដំណើរការជារបៀបដែលគាំទ្រទៅម៉ាស៊ីនបម្រើ, ម្ល៉ោះចូលដំណើរការមូលដ្ឋានទិន្នន័យអាចត្រូវបានប្រើជា generator SQL-សំណួរទៅប្រភពទិន្នន័យ ODBC ណាមួយ។ លក្ខណៈពិសេសនេះអនុញ្ញាតឱ្យកម្មវិធីទាក់ទងជាមួយការចូលដំណើរការ មូលដ្ឋានទិន្នន័យ ក្នុងទ្រង់ទ្រាយណាមួយ។

ផ្នែកបន្ថែម SQL មួយ

ដោយសារតែសំណួរ SQL មិនមានលក្ខណៈពិសេសភាសាសរសេរកម្មវិធីទាំងអស់ដូចជាការរង្វិលជុំនីតិវិធី, សាខា, ល, ដែលជាក្រុមហ៊ុនផលិត DBMS អភិវឌ្ឍកំណែរបស់ពួកគេនៃ SQL មួយជាមួយនឹងលក្ខណៈពិសេសកម្រិតខ្ពស់។ ជាដំបូងនេះគឺការគាំទ្រសម្រាប់នីតិវិធីរក្សាទុកនិងប្រតិបត្តិករស្ដង់ដារភាសានីតិវិធី។

នេះជាគ្រាមភាសាទូទៅបំផុតនៃភាសានេះ:

  • មូលដ្ឋានទិន្នន័យ Oracle -: PL / SQL មួយ
  • Interbase, Firebird - PSQL
  • SQL មួយម៉ាស៊ីនបម្រើក្រុមហ៊ុន Microsoft - ប្រតិបត្តិការ-SQL មួយ
  • PostgreSQL - PL / PGSQL នោះ។

អ៊ីនធើណេ SQL មួយ

មូលដ្ឋានទិន្នន័យ MySQL ត្រូវបានចេញផ្សាយក្រោមអាជ្ញាប័ណ្ណសាធារណៈដោយមិនគិតថ្លៃអាជ្ញាប័ណ្ណទូទៅ GNU ។ មានអាជ្ញាប័ណ្ណពាណិជ្ជកម្មដែលមានសមត្ថភាពដើម្បីអភិវឌ្ឍម៉ូឌុលផ្ទាល់ខ្លួនគឺ។ ជាផ្នែកមួយនៃការពេញនិយមបំផុតនៃផ្នែកម៉ាស៊ីនបម្រើអ៊ីនធើណែសាងសង់នេះដូចជាការ xampp, wamp និងចង្កៀងនិងជាការអភិវឌ្ឍកម្មវិធីមូលដ្ឋានទិន្នន័យដែលមានប្រជាប្រិយភាពបំផុតក្នុងអ៊ីនធឺណិត។

វាត្រូវបានបង្កើតឡើងដោយក្រុមហ៊ុន Sun Microsystems ហើយបច្ចុប្បន្នត្រូវបានគាំទ្រដោយក្រុមហ៊ុន Oracle ។ ផ្ដល់ការគាំទ្រដល់មូលដ្ឋានទិន្នន័យដែលមានទំហំរហូតដល់ទៅ 64 តេរ៉ាបៃវាក្យសម្ព័ន្ធ SQL ដែល: 2003, ចម្លងមូលដ្ឋានទិន្នន័យនិងសេវាកម្មពពក។

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 km.delachieve.com. Theme powered by WordPress.