មូលដ្ឋានគ្រឹះ SQL

រៀនអំពី DDL, DML និង JOINs

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

សេចក្តីណែនាំអំពីមូលដ្ឋានគ្រឹះដែលនៅពីក្រោយ SQL នេះមើលទៅខ្លីមួយចំនួននៃពាក្យបញ្ជាសំខាន់ៗមួយចំនួនដែលត្រូវបានប្រើដើម្បីបង្កើតនិងកែប្រែមូលដ្ឋានទិន្នន័យ។

អំពី SQL

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

SQL បានមកនៅក្នុងរសជាតិជាច្រើន។ មូលដ្ឋានទិន្នន័យ Oracle ប្រើកម្មសិទ្ធិ PL / SQL ។ ក្រុមហ៊ុន Microsoft SQL មួយធ្វើឱ្យការប្រើប្រាស់នៃការ Transact-SQL ។ ទាំងអស់នៃការប្រែប្រួលនេះត្រូវបានផ្អែកលើស្តង់ដារឧស្សាហកម្មអេសអេសអេស SQL ។ សេចក្តីណែនាំនេះប្រើពាក្យសម្ងាត់ SQL ANSI-compliant ដែលធ្វើការលើប្រព័ន្ធមូលដ្ឋានទិន្នន័យទំនាក់ទំនងទំនើប។

DDL និង DML

ពាក្យបញ្ជា SQL អាចត្រូវបានបែងចែកជាអនុរងសំខាន់ពីរ។ ភាសានិយមន័យទិន្នន័យ (DDL) មានពាក្យបញ្ជាដែលប្រើដើម្បីបង្កើតនិងបំផ្លាញមូលដ្ឋានទិន្នន័យនិងវត្ថុមូលដ្ឋានទិន្នន័យ។ បន្ទាប់ពីរចនាសម្ព័ន្ធទិន្នន័យត្រូវបានកំណត់ជាមួយ DDL អ្នកគ្រប់គ្រងទិន្នន័យនិងអ្នកប្រើអាចប្រើ Language Data Handling (DML) ដើម្បីបញ្ចូល, ទាញយកនិងកែប្រែទិន្នន័យដែលមាននៅក្នុងវា។

ទិន្នន័យនិយមន័យពាក្យបញ្ជាភាសា

ភាសានិយមន័យទិន្នន័យត្រូវបានប្រើដើម្បីបង្កើតនិងបំផ្លាញមូលដ្ឋានទិន្នន័យនិងវត្ថុមូលដ្ឋានទិន្នន័យ។ ពាក្យបញ្ជាទាំងនេះត្រូវបានប្រើជាចម្បងដោយអ្នកគ្រប់គ្រងមូលដ្ឋានទិន្នន័យក្នុងដំណាក់កាលរៀបចំនិងដកយកចេញនៃគម្រោងមូលដ្ឋានទិន្នន័យ។ ខាងក្រោមនេះជារូបរាងនៃរចនាសម្ព័ន្ធនិងការប្រើប្រាស់ពាក្យបញ្ជា DDL ចំនួនបួនមូលដ្ឋាន:

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

បង្កើតបុគ្គលិកផ្នែកទិន្នន័យ

បង្កើតមូលដ្ឋានទិន្នន័យទទេមួយដែលមានឈ្មោះថា "និយោជិត" នៅលើ DBMS របស់អ្នក។ បន្ទាប់ពីបង្កើតមូលដ្ឋានទិន្នន័យជំហានបន្ទាប់គឺបង្កើតតារាងដែលមានទិន្នន័យ។ បំរែបំរួលមួយនៃពាក្យ CREATE អាចត្រូវបានប្រើសម្រាប់គោលបំណងនេះ។ ពាក្យបញ្ជា:

បង្កើតតារាងអ៊ីម៉ែល personal_info (first_name char (20) មិនមែនជា null, last_name char (20) មិនមែនជា null, employee_id int null)

បង្កើតតារាងដែលមានចំណងជើងថា "personal_info" នៅក្នុងឃ្លាំងទិន្នន័យបច្ចុប្បន្ន។ ក្នុងឧទាហរណ៍តារាងមានគុណលក្ខណៈបី: first_name, last_name និង employee_id ព្រមជាមួយព័ត៌មានបន្ថែមមួយចំនួន។

ប្រើ។ ពាក្យបញ្ជា USE អនុញ្ញាតឱ្យអ្នកបញ្ជាក់មូលដ្ឋានទិន្នន័យដែលអ្នកចង់ធ្វើការជាមួយនៅក្នុង DBMS របស់អ្នក។ ឧទាហរណ៍ប្រសិនបើអ្នកកំពុងធ្វើការក្នុងមូលដ្ឋានទិន្នន័យលក់ហើយចង់ចេញនូវពាក្យបញ្ជាមួយចំនួនដែលនឹងប៉ះពាល់ដល់មូលដ្ឋានទិន្នន័យបុគ្គលិកសូមណែនាំពួកវាជាមួយពាក្យបញ្ជា SQL ដូចខាងក្រោម:

ប្រើបុគ្គលិក

វាជាការសំខាន់ណាស់ដែលត្រូវដឹងអំពីមូលដ្ឋានទិន្នន័យដែលអ្នកកំពុងធ្វើការមុននឹងចេញពាក្យបញ្ជា SQL ដែលរៀបចំទិន្នន័យ។

ALTER ។ នៅពេលអ្នកបង្កើតតារាងមួយនៅក្នុងមូលដ្ឋានទិន្នន័យអ្នកប្រហែលជាចង់កែប្រែនិយមន័យរបស់វា។ ពាក្យបញ្ជា ALTER អនុញ្ញាតឱ្យអ្នកធ្វើការផ្លាស់ប្តូររចនាសម្ព័ន្ធនៃតារាងដោយមិនលុបនិងបង្កើតវាឡើងវិញ។ សូមមើលពាក្យបញ្ជាដូចខាងក្រោម:

ALTER TABLE personal_info ADD ប្រាក់បៀវត្សរ៍ null

ឧទាហរណ៍នេះបន្ថែមគុណលក្ខណៈថ្មីទៅតារាងពត៌មានផ្ទាល់ខ្លួន - ប្រាក់ខែរបស់បុគ្គលិក។ អាគុយម៉ង់ "ប្រាក់" បញ្ជាក់ថាប្រាក់ខែរបស់និយោជិកត្រូវបានរក្សាទុកដោយប្រើទំរង់ដុល្លារនិងសេន។ ចុងបញ្ចប់ពាក្យគន្លឹះ "null" ប្រាប់មូលដ្ឋានទិន្នន័យថាវាគ្មានបញ្ហាទេសម្រាប់វាលនេះដើម្បីមិនមានតម្លៃសម្រាប់បុគ្គលិកណាម្នាក់។

DROP ។ ពាក្យបញ្ជាចុងក្រោយនៃភាសានិយមន័យទិន្នន័យ DROP អនុញ្ញាតឱ្យយើងលុបវត្ថុមូលដ្ឋានទិន្នន័យទាំងអស់ចេញពី DBMS របស់យើង។ ឧទាហរណ៍ប្រសិនបើយើងចង់លុបតារាងពត៌មានផ្ទាល់ខ្លួនដែលយើងបានបង្កើតអចិន្ត្រៃយើងនឹងប្រើពាក្យបញ្ជាដូចខាងក្រោម:

DROP TABLE personal_info

ដូចគ្នានេះដែរពាក្យបញ្ជាដូចខាងក្រោមនឹងត្រូវបានប្រើដើម្បីលុបមូលដ្ឋានទិន្នន័យបុគ្គលិកទាំងមូល:

បុគ្គលិក DROP DATABASE

ប្រើពាក្យបញ្ជានេះដោយប្រុងប្រយ័ត្ន។ ពាក្យបញ្ជា DROP លុបរចនាសម្ព័ន្ធទិន្នន័យទាំងមូលពីមូលដ្ឋានទិន្នន័យរបស់អ្នក។ ប្រសិនបើអ្នកចង់ដកចេញកំណត់ត្រាបុគ្គលសូមប្រើពាក្យបញ្ជា DELETE នៃភាសាការសម្អាតទិន្នន័យ។

ពាក្យបញ្ជាការរៀបចំទិន្នន័យ

ភាសាការសម្អាតទិន្នន័យ (DML) ត្រូវបានប្រើដើម្បីទាញយកបញ្ចូលនិងកែប្រែព័ត៌មានមូលដ្ឋានទិន្នន័យ។ ពាក្យបញ្ជាទាំងនេះត្រូវបានប្រើដោយអ្នកប្រើមូលដ្ឋានទិន្នន័យទាំងអស់ក្នុងកំឡុងពេលប្រតិបត្ដិការទម្រង់នៃមូលដ្ឋានទិន្នន័យ។

INSERT ។ ពាក្យបញ្ជា INSERT ក្នុង SQL ត្រូវបានប្រើដើម្បីបន្ថែមកំណត់ត្រាទៅតារាងដែលមានស្រាប់។ ត្រលប់ទៅឧទាហរណ៏ personal_info ពីផ្នែកមុន, ស្រមៃថានាយកដ្ឋានធនធានមនុស្សរបស់យើងត្រូវការបន្ថែមបុគ្គលិកថ្មីទៅមូលដ្ឋានទិន្នន័យរបស់ខ្លួន។ អ្នកអាចប្រើពាក្យបញ្ជាស្រដៀងនឹងមួយនេះ:

INSERT INTO តម្លៃព័ត៌មានផ្ទាល់ខ្លួន - ផ្ទាល់ខ្លួន ('bart', 'simpson', 12345, $ 45000)

ចំណាំថាមានតម្លៃបួនដែលបានបញ្ជាក់សម្រាប់កំណត់ត្រា។ ទាំងនេះត្រូវគ្នាទៅនឹងគុណលក្ខណៈតារាងក្នុងលំដាប់ដែលពួកគេត្រូវបានកំណត់: first_name, last_name, employee_id និង salary ។

ជ្រើសរើស។ ពាក្យបញ្ជា SELECT គឺជាពាក្យបញ្ជាដែលប្រើច្រើនបំផុតក្នុង SQL ។ វាអនុញ្ញាតឱ្យអ្នកប្រើមូលដ្ឋានទិន្នន័យដើម្បីយកព័ត៌មានជាក់លាក់ដែលពួកគេចង់បានពីមូលដ្ឋានទិន្នន័យប្រតិបត្តិ។ សូមក្រឡេកមើលឧទាហរណ៏មួយចំនួនម្តងទៀតដោយប្រើតារាង personal_info ពីឃ្លាំងទិន្នន័យបុគ្គលិក។

ពាក្យបញ្ជាដែលបង្ហាញខាងក្រោមទាញយកព័ត៌មានទាំងអស់ដែលមានក្នុងតារាង personal_info ។ ចំណាំថាសញ្ញាផ្កាយត្រូវបានប្រើជាអក្សរជំនួសក្នុង SQL ។ នេះមានន័យត្រង់ថា "ជ្រើសរើសអ្វីគ្រប់យ៉ាងពីតារាងព័ត៌មានផ្ទាល់ខ្លួន" ។

ជ្រើសរើស * FROM personal_info

ជាជម្រើសអ្នកប្រើប្រហែលជាចង់កំណត់គុណលក្ខណៈដែលត្រូវបានទាញយកពីមូលដ្ឋានទិន្នន័យ។ ឧទាហរណ៍នាយកដ្ឋានធនធានមនុស្សអាចតម្រូវឱ្យមានបញ្ជីឈ្មោះចុងក្រោយនៃបុគ្គលិកទាំងអស់នៅក្នុងក្រុមហ៊ុន។ ពាក្យបញ្ជា SQL ដូចខាងក្រោមនឹងទាញយកតែព័ត៌មាននោះ:

ជ្រើសរើសឈ្មោះចុងក្រោយពី FROM_info

ឃ្លា WHERE អាចត្រូវបានប្រើដើម្បីកំណត់កំណត់ត្រាដែលត្រូវបានយកទៅអ្នកដែលបំពេញតាមលក្ខណៈវិនិច្ឆ័យដែលបានបញ្ជាក់។ នាយកប្រតិបត្តិអាចនឹងចាប់អារម្មណ៍ក្នុងការពិនិត្យឡើងវិញនូវកំណត់ត្រាបុគ្គលិកនៃបុគ្គលិកដែលមានប្រាក់ខែខ្ពស់ទាំងអស់។ ពាក្យបញ្ជាដូចខាងក្រោមយកទិន្នន័យទាំងអស់ដែលមាននៅក្នុង personal_info សម្រាប់កំណត់ត្រាដែលមានតម្លៃប្រាក់ខែលើសពី $ 50,000:

ជ្រើសរើស * FROM personal_info WHERE ប្រាក់ខែ> $ 50000

ធ្វើឱ្យទាន់សម័យ។ ពាក្យបញ្ជា UPDATE អាចត្រូវបានប្រើដើម្បីកែប្រែពត៌មានដែលមាននៅក្នុងតារាងមួយទោះជាយ៉ាងណាក៏ដោយ។ សន្មតថាក្រុមហ៊ុនផ្តល់ឱ្យនិយោជិតទាំងអស់នូវប្រាក់ចំណូល 3% ក្នុងមួយឆ្នាំ ៗ ក្នុងប្រាក់ខែរបស់ពួកគេ។ ពាក្យបញ្ជា SQL ដូចខាងក្រោមអាចត្រូវបានប្រើដើម្បីអនុវត្តយ៉ាងលឿនទៅនិយោជិតទាំងអស់ដែលរក្សាទុកក្នុងមូលដ្ឋានទិន្នន័យ:

ធ្វើបច្ចុប្បន្នភាពព័ត៌មានផ្ទាល់ខ្លួន - កំណត់ប្រាក់ខែ = ប្រាក់ខែ * 1.03

នៅពេលដែលបុគ្គលិកថ្មី Bart Simpson បានបង្ហាញការសម្តែងខាងលើនិងលើសពីការហៅឱ្យទទួលខុសត្រូវអ្នកគ្រប់គ្រងចង់ទទួលបាននូវសមិទ្ធផលដ៏អស្ចារ្យរបស់គាត់ជាមួយនឹងការដំឡើង 5,000 ដុល្លារ។ ឃ្លា WHERE អាចត្រូវបានប្រើដើម្បីបែងចែក Bart សម្រាប់ការលើកនេះ:

ធ្វើបច្ចុប្បន្នភាពព័ត៌មានផ្ទាល់ខ្លួនកំណត់ប្រាក់ខែ = ប្រាក់ខែ + $ 5000 WHERE employee_id = 12345

លុប។ ចុងក្រោយសូមមើលពាក្យបញ្ជា DELETE ។ អ្នកនឹងរកឃើញថាវាក្យសម្ព័ន្ធនៃពាក្យបញ្ជានេះគឺស្រដៀងទៅនឹងពាក្យបញ្ជា DML ផ្សេងទៀត។ ជាអកុសលរបាយការណ៍ប្រាក់ចំណូលសាជីវកម្មចុងក្រោយបង្អស់របស់យើងមិនបានឆ្លើយតបយ៉ាងពិតប្រាកដទេហើយ Bart ក្រីក្រត្រូវបានបញ្ឈប់។ ពាក្យ DELETE ដែលមានឃ្លា WHERE អាចត្រូវបានប្រើដើម្បីលុបកំណត់ត្រារបស់គាត់ពីតារាងព័ត៌មានផ្ទាល់ខ្លួន:

លុបពី personal_info WHERE employee_id = 12345

ចូលរួម

ឥឡូវអ្នកបានរៀនមូលដ្ឋានគ្រឹះនៃ SQL វាជាពេលដែលត្រូវផ្លាស់ប្តូរទៅជាគំនិតដ៏មានឥទ្ធិពលបំផុតដែលភាសាត្រូវផ្តល់ជូន - សេចក្តីថ្លែងការណ៍ JOIN ។ សេចក្តីថ្លែងការណ៍ចូលរួមអនុញ្ញាតឱ្យអ្នកបញ្ចូលទិន្នន័យក្នុងតារាងច្រើនដើម្បីដំណើរការទិន្នន័យមានទំហំធំ។ សេចក្តីថ្លែងទាំងនេះគឺជាកន្លែងដែលអំណាចពិតនៃឃ្លាំងទិន្នន័យស្ថិតនៅ។

ដើម្បីស្វែងយល់ពីការប្រើប្រាស់ប្រតិបត្តការមូលដ្ឋានដើម្បីបញ្ចូលគ្នាទិន្នន័យពីតារាងពីរបន្តជាមួយឧទាហរណ៍ដោយប្រើតារាង PERSONAL_INFO និងបន្ថែមតារាងបន្ថែមទៅលាយ។ សន្មតថាអ្នកមានតារាងមួយដែលហៅថា DISCIPLINARY_ACTION ដែលត្រូវបានបង្កើតជាមួយសេចក្តីថ្លែងការណ៍ដូចខាងក្រោម:

បង្កើតសកម្មភាពតារាង disciplinary_action (action_id int non null, employee_id int non null, comments char (500))

តារាងនេះមានលទ្ធផលនៃការដាក់វិន័យលើបុគ្គលិកក្រុមហ៊ុន។ អ្នកនឹងកត់សំគាល់ថាវាមិនមានព័ត៌មានអំពីបុគ្គលិកក្រៅពីចំនួននិយោជិតទេ។ វាមានភាពងាយស្រួលក្នុងការស្រមៃមើលនូវសេណារីយ៉ូជាច្រើនដែលអ្នកអាចបញ្ចូលព័ត៌មានពីតារាង DISCIPLINARY_ACTION និង PERSONAL_INFO ។

សន្មតថាអ្នកត្រូវបានគេប្រគល់ភារកិច្ចក្នុងការបង្កើតរបាយការណ៍ដែលរាយការចាត់វិធានការវិន័យដែលបានធ្វើឡើងប្រឆាំងនឹងបុគ្គលិកទាំងអស់ដែលមានប្រាក់បៀវត្សរ៍ធំជាង 40.000 ដុល្លារ។ ការប្រើប្រាស់ប្រតិបត្តិការមួយក្នុងករណីនេះគឺត្រង់។ យើងអាចទាញយកព័ត៌មាននេះដោយប្រើពាក្យបញ្ជាខាងក្រោម:

ជ្រើសរើស personal_info.first_name, personal_info.last_name, disciplinary_action.comments ពី personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id និង personal_info.salary> 40000

លេខកូដបញ្ជាក់តារាងពីរដែលយើងចង់ចូលរួមនៅក្នុងឃ្លា FROM ហើយបន្ទាប់មករួមបញ្ចូលសេចក្តីថ្លែងការណ៍មួយនៅក្នុងឃ្លា WHERE ដើម្បីកំណត់លទ្ធផលទៅកំណត់ត្រាដែលមានលេខសម្គាល់និយោជិតដែលត្រូវគ្នានិងបំពេញតាមលក្ខណៈវិនិច្ឆ័យរបស់យើងអំពីប្រាក់ខែធំជាង 40.000 ដុល្លារ។