ການສ້າງຖານຂໍ້ມູນແລະຕາຕະລາງໃນ SQL

ການສ້າງຖານຂໍ້ມູນ

ທ່ານພ້ອມທີ່ຈະເລີ່ມຕົ້ນສ້າງຖານຂໍ້ມູນແລະຕາຕະລາງທີ່ມີ ພາສາຄໍາຖາມແບບໂຄງສ້າງ ? ໃນບົດຄວາມນີ້, ພວກເຮົາຄົ້ນຫາ ຂັ້ນຕອນການສ້າງຕາຕະລາງ ດ້ວຍຕົນເອງດ້ວຍ CREATE DATABASE ແລະ CREATE TABLE commands. ຖ້າທ່ານມີໃຫມ່ກັບ SQL, ທ່ານອາດຕ້ອງການທົບທວນບົດຄວາມ SQL Basics ຂອງພວກເຮົາກ່ອນ.

ຄວາມຕ້ອງການຂອງທຸລະກິດ

ກ່ອນທີ່ພວກເຮົາຈະນັ່ງຢູ່ແປ້ນພິມ, ພວກເຮົາຕ້ອງຮັບປະກັນວ່າພວກເຮົາມີຄວາມເຂົ້າໃຈຢ່າງແຂງແຮງກ່ຽວກັບຄວາມຕ້ອງການຂອງລູກຄ້າ. ວິທີທີ່ດີທີ່ສຸດທີ່ຈະໄດ້ຮັບຄວາມເຂົ້າໃຈນີ້ຄືແນວໃດ? ເວົ້າເຖິງລູກຄ້າ, ແນ່ນອນ! ຫຼັງຈາກທີ່ນັ່ງກັບຜູ້ອໍານວຍການຊັບພະຍາກອນມະນຸດຂອງ XYZ, ພວກເຮົາໄດ້ຮູ້ວ່າພວກເຂົາເປັນບໍລິສັດຂາຍເຄື່ອງອຸປະກອນແລະມີຄວາມສົນໃຈຫລັກໃນການຕິດຕາມຂໍ້ມູນກ່ຽວກັບພະນັກງານຂາຍຂອງເຂົາເຈົ້າ.

ບໍລິສັດ XYZ ແບ່ງຜົນກໍາໄລການຂາຍຂອງເຂົາເຈົ້າເຂົ້າໄປໃນພາກພື້ນຕາເວັນອອກແລະຕາເວັນຕົກເຊິ່ງແຕ່ລະແມ່ນແບ່ງອອກເປັນຫຼາຍໆຂົງເຂດທີ່ຄຸ້ມຄອງໂດຍຜູ້ຂາຍສ່ວນບຸກຄົນ. ພະແນກຊັບພະຍາກອນມະນຸດຕ້ອງການຕິດຕາມອານາເຂດທີ່ຄຸ້ມຄອງໂດຍແຕ່ລະພະນັກງານເຊັ່ນດຽວກັນກັບຂໍ້ມູນເງິນເດືອນຂອງພະນັກງານແຕ່ລະຄົນແລະໂຄງສ້າງການເບິ່ງແຍງ. ເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການເຫຼົ່ານີ້, ພວກເຮົາໄດ້ອອກແບບຖານຂໍ້ມູນທີ່ປະກອບດ້ວຍສາມຕາຕະລາງ, ສະແດງຢູ່ໃນ ແຜນວາດ Entity-Relationship ໃນຫນ້ານີ້.

ການເລືອກຖານຂໍ້ມູນຖານຂໍ້ມູນ

ພວກເຮົາໄດ້ຕັດສິນໃຈໃຊ້ ລະບົບການຄຸ້ມຄອງຖານຂໍ້ມູນ (ຫຼື DBMS) ທີ່ຖືກສ້າງຂຶ້ນຕາມພາສາຄໍາຖາມແບບໂຄງສ້າງ (SQL). ດັ່ງນັ້ນ, ທັງຫມົດຂອງຖານຂໍ້ມູນແລະຄໍາສັ່ງການສ້າງຕາຕະລາງຂອງພວກເຮົາຄວນຈະຖືກຂຽນດ້ວຍ SQL ມາດຕະຖານມາດຕະຖານໃນໃຈ.

ໃນຖານະເປັນຜົນປະໂຫຍດເພີ່ມເຕີມ, ການນໍາໃຊ້ SQL ທີ່ສອດຄ່ອງກັບ ANSI ຈະຮັບປະກັນວ່າຄໍາສັ່ງເຫຼົ່ານີ້ຈະເຮັດວຽກໃນທຸກ DBMS ທີ່ສະຫນັບສະຫນູນ ມາດຕະຖານ SQL , ລວມທັງ Oracle ແລະ Microsoft SQL Server. ຖ້າທ່ານຍັງບໍ່ໄດ້ເລືອກເວທີສໍາລັບຖານຂໍ້ມູນຂອງທ່ານ, ບົດຄວາມ ຊອບແວຖານຂໍ້ມູນ ຈະເຮັດໃຫ້ທ່ານຜ່ານຂະບວນການຄັດເລືອກ.

ການສ້າງຖານຂໍ້ມູນ

ຂັ້ນຕອນທໍາອິດຂອງພວກເຮົາແມ່ນເພື່ອສ້າງຖານຂໍ້ມູນຕົວເອງ. ລະບົບການຈັດການຖານຂໍ້ມູນຈໍານວນຫຼາຍສະເຫນີຊຸດຂອງຕົວເລືອກເພື່ອປັບປຸງພາລາມິເຕີຖານຂໍ້ມູນໃນຂັ້ນຕອນນີ້ແຕ່ຖານຂໍ້ມູນຂອງພວກເຮົາພຽງແຕ່ອະນຸຍາດໃຫ້ສ້າງຖານຂໍ້ມູນງ່າຍໆ. ເຊັ່ນດຽວກັນກັບຄໍາສັ່ງທັງຫມົດຂອງພວກເຮົາ, ທ່ານອາດຈະຕ້ອງປຶກສາເອກະສານສໍາລັບ DBMS ຂອງທ່ານເພື່ອກໍານົດວ່າມີໂປຣແກຣມແບບພິເສດໃດໆທີ່ສະຫນັບສະຫນູນໂດຍລະບົບທີ່ທ່ານຕ້ອງການ. ໃຫ້ໃຊ້ຄໍາສັ່ງ CREATE DATABASE ເພື່ອຕັ້ງຖານຂໍ້ມູນຂອງພວກເຮົາ:

CREATE DATABASE staff

ເອົາບັນທຶກພິເສດຂອງທຶນຈົດທະບຽນທີ່ໃຊ້ໃນຕົວຢ່າງຂ້າງເທິງ. ມັນເປັນການປະຕິບັດທົ່ວໄປໃນບັນດາໂຄງການ SQL ໃນການນໍາໃຊ້ຕົວອັກສອນທັງຫມົດສໍາລັບຄໍາຫລັກ SQL ເຊັ່ນ "CREATE" ແລະ "DATABASE" ໃນຂະນະທີ່ນໍາໃຊ້ຕົວອັກສອນຕົວນ້ອຍໆສໍາລັບຊື່ທີ່ຖືກກໍານົດໂດຍຜູ້ໃຊ້ເຊັ່ນຊື່ຖານຂໍ້ມູນ "ພະນັກງານ". ສົນທິສັນຍາເຫຼົ່ານີ້ສະຫນອງໃຫ້ງ່າຍຕໍ່ການອ່ານ.

ສືບຕໍ່ການອ່ານບົດແນະນໍານີ້ດັ່ງທີ່ພວກເຮົາສ້າງຕາຕະລາງສໍາລັບຖານຂໍ້ມູນຂອງພວກເຮົາ.

ຮຽນຮູ້ເພີ່ມເຕີມ

ຖ້າທ່ານຕ້ອງການຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບ ພາສາຄໍາຖາມແບບໂຄງສ້າງ , ອ່ານ ຄໍາແນະນໍາກ່ຽວກັບ SQL ຫຼືເຂົ້າສູ່ຫຼັກສູດ e-mail ຮຽນ SQL ຟຣີຂອງພວກເຮົາ.

ຕອນນີ້ພວກເຮົາໄດ້ອອກແບບແລະສ້າງຖານຂໍ້ມູນຂອງພວກເຮົາ, ພວກເຮົາພ້ອມທີ່ຈະເລີ່ມຕົ້ນສ້າງຕາຕະລາງສາມທີ່ໃຊ້ໃນການເກັບຂໍ້ມູນຂອງເຈົ້າຫນ້າທີ່ XYZ Corporation. ພວກເຮົາຈະປະຕິບັດຕາຕະລາງທີ່ພວກເຮົາອອກແບບມາໃນສ່ວນທີ່ຜ່ານມາຂອງບົດຮຽນນີ້.

ສ້າງຕາລາງທໍາອິດຂອງພວກເຮົາ

ຕາຕະລາງທໍາອິດຂອງພວກເຮົາປະກອບດ້ວຍຂໍ້ມູນສ່ວນບຸກຄົນສໍາລັບແຕ່ລະພະນັກງານຂອງບໍລິສັດຂອງພວກເຮົາ. ພວກເຮົາຈໍາເປັນຕ້ອງປະກອບມີຊື່ຂອງພະນັກງານ, ເງິນເດືອນ, ID ແລະຜູ້ຈັດການແຕ່ລະຄົນ. ມັນເປັນການປະຕິບັດການອອກແບບທີ່ດີທີ່ຈະແຍກຊື່ແລະຊື່ຄັ້ງທໍາອິດເຂົ້າໄປໃນທົ່ງນາແຍກເພື່ອງ່າຍການຄົ້ນຫາຂໍ້ມູນແລະການຈັດຮຽງໃນອະນາຄົດ. ນອກຈາກນັ້ນ, ພວກເຮົາຈະຕິດຕາມຜູ້ຈັດການຂອງພະນັກງານແຕ່ລະຄົນໂດຍໃສ່ຄໍາອ້າງອີງເຖິງ ID ພະນັກງານຂອງຜູ້ຈັດການໃນແຕ່ລະບັນທຶກພະນັກງານ. ໃຫ້ທໍາອິດໃຫ້ເບິ່ງຢູ່ໃນຕາຕະລາງພະນັກງານທີ່ຕ້ອງການ.

ລາຍການ ReportsTo ເກັບຮັກສາ ID ຜູ້ຈັດການສໍາລັບແຕ່ລະພະນັກງານ. ຈາກບັນທຶກຕົວຢ່າງສະແດງໃຫ້ເຫັນ, ພວກເຮົາສາມາດກໍານົດວ່າ Sue Scampi ແມ່ນຜູ້ຈັດການຂອງ Tom Kendall ແລະ John Smith. ຢ່າງໃດກໍຕາມ, ບໍ່ມີຂໍ້ມູນຢູ່ໃນຖານຂໍ້ມູນກ່ຽວກັບຜູ້ຈັດການຂອງ Sue, ດັ່ງທີ່ໄດ້ສະແດງໄວ້ ໃນລາຍການ NULL ໃນແຖວນັ້ນ.

ໃນປັດຈຸບັນພວກເຮົາສາມາດນໍາໃຊ້ SQL ເພື່ອສ້າງຕາຕະລາງໃນຖານຂໍ້ມູນພະນັກງານຂອງພວກເຮົາ. ກ່ອນທີ່ພວກເຮົາຈະເຮັດດັ່ງນັ້ນ, ໃຫ້ແນ່ໃຈວ່າພວກເຮົາຢູ່ໃນຖານຂໍ້ມູນທີ່ຖືກຕ້ອງໂດຍການອອກຄໍາສັ່ງ USE:

ໃຊ້ພະນັກງານ;

ອີກທາງເລືອກ, "ພະນັກງານຂໍ້ມູນຂ່າວສານ"; ຄໍາສັ່ງຈະປະຕິບັດຫນ້າທີ່ດຽວກັນ. ໃນປັດຈຸບັນພວກເຮົາສາມາດເບິ່ງຄໍາສັ່ງ SQL ທີ່ໃຊ້ໃນການສ້າງຕາລາງພະນັກງານຂອງພວກເຮົາ:

CREATE TABLE employees (employeeid INTEGER NOT NULL, lastname VARCHAR (25) NOT NULL, firstname VARCHAR (25) NOT NULL, reportsto INTEGER NULL)

ເຊັ່ນດຽວກັບຕົວຢ່າງຂ້າງເທິງ, ໃຫ້ສັງເກດວ່າສົນທິສັນຍາການຂຽນກໍານົດວ່າພວກເຮົາໃຊ້ຕົວອັກສອນທັງຫມົດສໍາລັບຄໍາຫລັກ SQL ແລະຕົວອັກສອນຕົວນ້ອຍສໍາລັບຄໍລໍາແລະຕາຕະລາງທີ່ມີຊື່ຜູ້ໃຊ້. ຄໍາສັ່ງຂ້າງເທິງອາດເບິ່ງຄືວ່າສັບສົນໃນຄັ້ງທໍາອິດ, ແຕ່ວ່າມັນກໍ່ມີໂຄງສ້າງທີ່ງ່າຍດາຍຢູ່ຫລັງມັນ. ນີ້ແມ່ນທັດສະນະທົ່ວໄປທີ່ອາດຈະເຮັດໃຫ້ສິ່ງທີ່ນ້ອຍກວ່າ:

CREATE TABLE table_name (attribute_name datatype options, ... , attribute_name datatype options)

ຄຸນລັກສະນະແລະປະເພດຂໍ້ມູນ

ໃນຕົວຢ່າງກ່ອນຫນ້ານີ້, ຊື່ຕາຕະລາງແມ່ນພະນັກງານແລະພວກເຮົາປະກອບມີສີ່ຄຸນລັກສະນະ: employeeid, lastname, firstname, and reportsto. datatype ສະແດງເຖິງປະເພດຂອງຂໍ້ມູນທີ່ພວກເຮົາຕ້ອງການເກັບໄວ້ໃນແຕ່ລະພາກສະຫນາມ. ຫມາຍເລກພະນັກງານແມ່ນຈໍານວນເຕັມຈໍານວນຫນຶ່ງ, ດັ່ງນັ້ນພວກເຮົາຈະໃຊ້ datatype INTEGER ສໍາລັບພາກສະຫນາມພະນັກງານແລະພາກສະຫນາມລາຍງານ. ຊື່ພະນັກງານຈະເປັນສາຍອັກຂະລະຂອງຄວາມຍາວຂອງຕົວປ່ຽນແປງແລະພວກເຮົາບໍ່ຄາດວ່າລູກຈ້າງຈະມີຊື່ທໍາອິດຫຼືນາມສະກຸນຍາວກວ່າ 25 ຕົວ. ດັ່ງນັ້ນ, ພວກເຮົາຈະໃຊ້ຊະນິດ VARCHAR (25) ສໍາລັບເຂດເຫຼົ່ານີ້.

NULL Values

ພວກເຮົາຍັງສາມາດລະບຸ NULL ຫຼື NULL ໃນເຂດຂໍ້ມູນທາງເລືອກຂອງລາຍງານ CREATE. ນີ້ພຽງແຕ່ບອກຖານຂໍ້ມູນວ່າຄຸນຄ່າ NULL (ຫລືຫວ່າງ) ຖືກອະນຸຍາດໃຫ້ສໍາລັບຄຸນລັກສະນະດັ່ງກ່າວໃນເວລາທີ່ການເພີ່ມແຖວໃນຖານຂໍ້ມູນ. ໃນຕົວຢ່າງຂອງພວກເຮົາ, ພະແນກຊັບພະຍາກອນມະນຸດຮຽກຮ້ອງໃຫ້ລະຫັດພະນັກງານແລະຊື່ຄົບຖ້ວນຖືກເກັບໄວ້ສໍາລັບພະນັກງານແຕ່ລະຄົນ. ຢ່າງໃດກໍຕາມ, ບໍ່ແມ່ນພະນັກງານທຸກຄົນມີຜູ້ຈັດການ - ບົດລາຍງານຂອງ CEO ບໍ່ມີໃຜ! - ດັ່ງນັ້ນພວກເຮົາອະນຸຍາດໃຫ້ລາຍການ NULL ໃນຂົງເຂດນັ້ນ. ໃຫ້ສັງເກດວ່າ NULL ເປັນຄ່າເລີ່ມຕົ້ນແລະການຍົກເລີກຕົວເລືອກນີ້ຈະຊ່ວຍໃຫ້ຄ່າ NULL ສໍາລັບຄຸນສົມບັດ.

ການກໍ່ສ້າງຕາຕະລາງທີ່ຍັງເຫຼືອ

ຕອນນີ້ຂໍໃຫ້ເບິ່ງຢູ່ຕາຕະລາງອານາເຂດ. ຈາກການເບິ່ງຢ່າງລວດໄວຢູ່ໃນຂໍ້ມູນນີ້, ມັນປາກົດວ່າພວກເຮົາຈໍາເປັນຕ້ອງເກັບຮັກສາຈໍານວນເຕັມແລະສອງສາຍຍາວທີ່ແຕກຕ່າງກັນ. ເຊັ່ນດຽວກັນກັບຕົວຢ່າງທີ່ຜ່ານມາຂອງພວກເຮົາ, ພວກເຮົາບໍ່ຄາດຫວັງວ່າ ID ເຂດຈະໃຊ້ຫຼາຍກວ່າ 25 ຕົວອັກສອນ. ຢ່າງໃດກໍຕາມ, ບາງເຂດຂອງພວກເຮົາມີຊື່ຍາວ, ດັ່ງນັ້ນພວກເຮົາຈະຂະຫຍາຍຄວາມຍາວທີ່ອະນຸຍາດໃຫ້ກັບ 40 ລັກສະນະ. ໃຫ້ເບິ່ງ SQL ທີ່ສອດຄ້ອງກັນ:

ການສ້າງຂອບເຂດຂອບເຂດ (territid INTEGER NOT NULL, territory ຄໍາອະທິບາຍ VARCHAR (40) NOT NULL, regionally VARCHAR (25) NOT NULL);

ສຸດທ້າຍ, ພວກເຮົາຈະນໍາໃຊ້ Table EmployeeTerritories ເພື່ອເກັບຮັກສາການພົວພັນລະຫວ່າງພະນັກງານແລະເຂດແດນ. ຂໍ້ມູນລາຍລະອຽດກ່ຽວກັບແຕ່ລະພະນັກງານແລະອານາເຂດແມ່ນເກັບຢູ່ໃນສອງຕາຕະລາງທີ່ຜ່ານມາຂອງພວກເຮົາ. ດັ່ງນັ້ນ, ພວກເຮົາພຽງແຕ່ຕ້ອງການເກັບຮັກສາສອງຕົວເລກຈໍານວນເຕັມໃນຕາຕະລາງນີ້. ຖ້າພວກເຮົາຕ້ອງການຂະຫຍາຍຂໍ້ມູນນີ້ພວກເຮົາສາມາດໃຊ້ JOIN ໃນຄໍາສັ່ງການເລືອກຂໍ້ມູນຂອງພວກເຮົາເພື່ອໃຫ້ໄດ້ຮັບຂໍ້ມູນຈາກຕາຕະລາງຫຼາຍ. ວິທີການເກັບຮັກສາຂໍ້ມູນນີ້ຈະຊ່ວຍຫຼຸດຜ່ອນຄວາມເສຍຫາຍໃນຖານຂໍ້ມູນຂອງພວກເຮົາແລະຮັບປະກັນການໃຊ້ພື້ນທີ່ທີ່ເຫມາະສົມໃນການຂັບຂີ່ຂອງພວກເຮົາ. ພວກເຮົາຈະກວມເອົາຄໍາສັ່ງ JOIN ໃນຄວາມເລິກໃນບົດຮຽນໃນອະນາຄົດ. ນີ້ແມ່ນລະຫັດ SQL ທີ່ຈະປະຕິບັດຕາຕະລາງສຸດທ້າຍຂອງພວກເຮົາ:

CREATE TABLE employeeterritories (employeeid INTEGER NOT NULL, territid INTEGER NOT NULL);

SQL ກົນໄກໃຫ້ການປ່ຽນໂຄງສ້າງຂອງຖານຂໍ້ມູນຫຼັງຈາກການສ້າງ

ຖ້າທ່ານປະຫລາດໃຈໂດຍສະເພາະໃນມື້ນີ້, ທ່ານອາດຈະສັງເກດເຫັນວ່າພວກເຮົາ "ບັງເອີນ" ຍົກເລີກຄວາມຕ້ອງການໃນການອອກແບບໃນເວລາທີ່ປະຕິບັດຕາຕະລາງຖານຂໍ້ມູນຂອງພວກເຮົາ. ຜູ້ອໍານວຍການ HR ຂອງບໍລິສັດ XYZ ຮຽກຮ້ອງໃຫ້ຖານຂໍ້ມູນຕິດຕາມຂໍ້ມູນຂ່າວສານກ່ຽວກັບເງິນເດືອນຂອງພະນັກງານແລະພວກເຮົາປະຕິເສດທີ່ຈະສະຫນອງ ຂໍ້ມູນ ນີ້ໃນ ຕາຖານຖານຂໍ້ມູນທີ່ ພວກເຮົາສ້າງ.

ຢ່າງໃດກໍຕາມ, ທັງຫມົດແມ່ນບໍ່ສູນເສຍ. ພວກເຮົາສາມາດໃຊ້ຄໍາສັ່ງ ALTER TABLE ເພື່ອເພີ່ມຄຸນລັກສະນະນີ້ໃຫ້ກັບຖານຂໍ້ມູນທີ່ມີຢູ່ຂອງພວກເຮົາ. ພວກເຮົາຕ້ອງການເກັບຮັກສາເງິນເດືອນເປັນມູນຄ່າຈໍານວນເຕັມ. syntax ແມ່ນຄ້າຍຄືກັນກັບຄໍາສັ່ງ CREATE TABLE, ທີ່ນີ້ແມ່ນ:

ALTER TABLE employees ADD salary INTEGER NULL;

ສັງເກດວ່າພວກເຮົາກໍານົດວ່າຄ່າ NULL ຖືກອະນຸຍາດໃຫ້ສໍາລັບຄຸນລັກສະນະນີ້. ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ບໍ່ມີທາງເລືອກໃນການເພີ່ມຄໍລໍາໃນຕາຕະລາງທີ່ມີຢູ່ແລ້ວ. ນີ້ແມ່ນເນື່ອງມາຈາກຄວາມຈິງທີ່ວ່າຕາຕະລາງແລ້ວມີບັນດາແຖວທີ່ບໍ່ມີການເຂົ້າສໍາລັບຄຸນລັກສະນະນີ້. ດັ່ງນັ້ນ, DBMS ອັດຕະໂນມັດໃສ່ຂໍ້ມູນ NULL ເພື່ອກອກຂໍ້ມູນການສູນເສຍ.

ແລະວ່າ wraps ເຖິງເບິ່ງເວັບຢູ່ໃນຖານຂໍ້ມູນ SQL ແລະຂະບວນການສ້າງຕາຕະລາງ. ກວດເບິ່ງຄືນເລື້ອຍໆ ສໍາລັບການຕິດຕັ້ງໃຫມ່ ໃນ ຊຸດ ຄໍາສອນ SQL ຂອງພວກເຮົາ. ຖ້າທ່ານຕ້ອງການເຕືອນອີເມລ໌ເມື່ອບົດຄວາມໃຫມ່ຖືກເພີ່ມໃສ່ເວັບໄຊທ໌ກ່ຽວກັບຖານຂໍ້ມູນ, ໃຫ້ແນ່ໃຈວ່າຈອງຈົດຫມາຍຂອງພວກເຮົາ!