ພື້ນຖານ SQL

ຮຽນຮູ້ກ່ຽວກັບ DDL, DML ແລະ JOINs

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

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

ກ່ຽວກັບ SQL

ການອອກສຽງທີ່ຖືກຕ້ອງຂອງ SQL ແມ່ນບັນຫາທີ່ມີຄວາມລໍາບາກໃນຊຸມຊົນຖານຂໍ້ມູນ. ໃນມາດຕະຖານ SQL ຂອງຕົນ, ສະຖາບັນມາດຕະຖານແຫ່ງຊາດອາເມລິກາໄດ້ປະກາດວ່າການອອກສຽງຢ່າງເປັນທາງການແມ່ນ "es queue el." ຢ່າງໃດກໍຕາມ, ຜູ້ຊ່ຽວຊານດ້ານຖານຂໍ້ມູນຈໍານວນຫຼາຍໄດ້ປະຕິບັດກັບການອອກສຽງ slang "sequel." ທາງເລືອກແມ່ນຂອງທ່ານ.

SQL ມາມີຫລາຍຊະນິດ. ຖານຂໍ້ມູນ Oracle ໃຊ້ PL / SQL ຂອງຕົນເອງ. Microsoft SQL Server ເຮັດໃຫ້ການນໍາໃຊ້ Transact-SQL. ທັງຫມົດຂອງການປ່ຽນແປງແມ່ນອີງໃສ່ມາດຕະຖານອຸດສາຫະກໍາ SQL ANSI. ຄໍາແນະນໍານີ້ໃຊ້ຄໍາສັ່ງ SQL ທີ່ສອດຄ່ອງກັບ ANSI ທີ່ເຮັດວຽກໃນລະບົບຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງທີ່ທັນສະໄຫມ.

DDL ແລະ DML

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

ຂໍ້ກໍານົດການກໍານົດພາສາຄໍາສັບ

ພາສາຄໍານິຍາມຂໍ້ມູນຖືກນໍາໃຊ້ເພື່ອສ້າງແລະທໍາລາຍຖານຂໍ້ມູນແລະວັດຖຸຖານຂໍ້ມູນ. ຄໍາສັ່ງເຫຼົ່ານີ້ຖືກນໍາໃຊ້ໂດຍຜູ້ບໍລິຫານຖານຂໍ້ມູນໃນໄລຍະຂັ້ນຕອນການຕິດຕັ້ງແລະການໂຍກຍ້າຍຂອງໂຄງການຖານຂໍ້ມູນ. ນີ້ແມ່ນເບິ່ງໂຄງສ້າງແລະການນໍາໃຊ້ສີ່ຄໍາສັ່ງ DDL ພື້ນຖານ:

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

CREATE DATABASE employees

ສ້າງຖານຂໍ້ມູນທີ່ມີຊື່ວ່າ "ພະນັກງານ" ໃນ DBMS ຂອງທ່ານ. ຫຼັງຈາກສ້າງຖານຂໍ້ມູນ, ຂັ້ນຕອນຕໍ່ໄປແມ່ນສ້າງຕາຕະລາງທີ່ມີຂໍ້ມູນ. ອີກປະການຫນຶ່ງຂອງຄໍາສັ່ງ CREATE ສາມາດໃຊ້ສໍາລັບຈຸດປະສົງນີ້. ຄໍາສັ່ງ:

CREATE TABLE personal_info (first_name char (20) not null, last_name char (20) not null, employee_id int not null)

ສ້າງຕາຕະລາງຊື່ວ່າ "personal_info" ໃນຖານຂໍ້ມູນປັດຈຸບັນ. ໃນຕົວຢ່າງ, ຕາຕະລາງມີສາມຄຸນລັກສະນະ: first_name, last_name ແລະ employee_id ພ້ອມກັບຂໍ້ມູນເພີ່ມເຕີມ.

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

ໃຊ້ພະນັກງານ

ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະຮູ້ສະເຫມີກ່ຽວກັບຖານຂໍ້ມູນທີ່ທ່ານກໍາລັງເຮັດວຽກຢູ່ກ່ອນທີ່ຈະອອກຄໍາສັ່ງ SQL ທີ່ຈັດການຂໍ້ມູນ.

ALTER ເມື່ອທ່ານສ້າງຕາຕະລາງພາຍໃນຖານຂໍ້ມູນ, ທ່ານອາດຕ້ອງການດັດແປງຄວາມຫມາຍຂອງມັນ. ຄໍາສັ່ງ ALTER ອະນຸຍາດໃຫ້ທ່ານສາມາດປ່ຽນແປງໂຄງສ້າງຂອງຕາຕະລາງໂດຍບໍ່ມີການລຶບແລະການສ້າງແບບຟອມໃຫມ່. ເບິ່ງຄໍາສັ່ງຕໍ່ໄປນີ້:

ALTER TABLE personal_info ADD ເງິນເດືອນບໍ່ຖືກຕ້ອງ

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

DROP ຄໍາສັ່ງຂັ້ນສຸດທ້າຍຂອງພາສາຄໍາສັບຂໍ້ມູນ, DROP, ອະນຸຍາດໃຫ້ພວກເຮົາເອົາວັດຖຸຖານຂໍ້ມູນທັງຫມົດອອກຈາກ DBMS ຂອງພວກເຮົາ. ຕົວຢ່າງ: ຖ້າພວກເຮົາຕ້ອງການລຶບຕາຕະລາງ personal_info ທີ່ພວກເຮົາສ້າງອອກຢ່າງຖາວອນ, ພວກເຮົາຕ້ອງໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້:

DROP TABLE personal_info

ເຊັ່ນດຽວກັນ, ຄໍາສັ່ງຂ້າງລຸ່ມນີ້ຈະຖືກນໍາໃຊ້ເພື່ອລຶບຖານຂໍ້ມູນຂອງພະນັກງານທັງຫມົດ:

ພະນັກງານ DROP DATABASE

ໃຊ້ຄໍາສັ່ງນີ້ດ້ວຍການດູແລ. ຄໍາສັ່ງ DROP ເອົາໂຄງສ້າງຂໍ້ມູນທັງຫມົດອອກຈາກຖານຂໍ້ມູນຂອງທ່ານ. ຖ້າທ່ານຕ້ອງການລຶບຂໍ້ມູນສ່ວນຕົວ, ໃຫ້ໃຊ້ຄໍາສັ່ງ DELETE ຂອງພາສາການຈັດການຂໍ້ມູນ.

ຄໍາສັ່ງການຈັດການຂໍ້ມູນພາສາ

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

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

INSERT INTO ຄ່າ personal_info ('bart', 'simpson', 12345, $ 45000)

ໃຫ້ສັງເກດວ່າມີສີ່ຄ່າທີ່ລະບຸໄວ້ສໍາລັບການບັນທຶກ. ເຫຼົ່ານີ້ແມ່ນສອດຄ່ອງກັບຄຸນລັກສະນະຂອງຕາຕະລາງໃນຄໍາສັ່ງທີ່ພວກເຂົາກໍານົດໄວ້: first_name, last_name, employee_id ແລະເງິນເດືອນ.

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

ຄໍາສັ່ງທີ່ສະແດງໄວ້ຂ້າງລຸ່ມນີ້ລວບລວມຂໍ້ມູນທັງຫມົດທີ່ມີຢູ່ໃນຕາຕະລາງ personal_info. ໃຫ້ສັງເກດວ່າຕາຕະລາງຖືກນໍາໃຊ້ເປັນຕົວແທນໃນ SQL. ນີ້ຫມາຍຄວາມວ່າ "ເລືອກເອົາທຸກສິ່ງທຸກຢ່າງຈາກຕາຕະລາງ personal_info."

SELECT * FROM personal_info

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

SELECT last_name FROM personal_info

ຂໍ້ກໍານົດ WHERE ສາມາດຖືກນໍາໃຊ້ເພື່ອຈໍາກັດການບັນທຶກທີ່ຖືກດຶງດູດໃຫ້ກັບຜູ້ທີ່ຕອບສະຫນອງເງື່ອນໄຂທີ່ກໍານົດໄວ້. CEO ອາດຈະມີຄວາມສົນໃຈໃນການທົບທວນຄືນບັນທຶກການພະນັກງານຂອງພະນັກງານທີ່ໄດ້ຮັບຄ່າຈ້າງທັງຫມົດ. ຄໍາສັ່ງຕໍ່ໄປນີ້ສາມາດເອົາຂໍ້ມູນທັງຫມົດທີ່ຢູ່ພາຍໃນ personal_info ສໍາລັບບັນທຶກທີ່ມີຄ່າເງິນເດືອນສູງກວ່າ $ 50,000:

SELECT * FROM personal_info WHERE salary> $ 50000

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

ອັບເດດ personal_info SET salary = salary * 103

ໃນເວລາທີ່ພະນັກງານໃຫມ່ Bart Simpson ສະແດງໃຫ້ເຫັນການປະຕິບັດຂ້າງເທິງແລະຫຼັງຈາກການໂທຫາຂອງຫນ້າທີ່, ການຄຸ້ມຄອງຕ້ອງການຮັບຮູ້ຜົນສໍາເລັດ stellar ລາວມີການຍົກສູງ 5,000 $. ຂໍ້ກໍານົດຂອງ WHERE ສາມາດນໍາໃຊ້ໄດ້ໃນການອອກແບບ Bart ສໍາລັບການຍົກສູງບົດບາດນີ້:

ອັບເດດ personal_info ເງິນເດືອນ SET = ເງິນເດືອນ + $ 5000 WHERE employee_id = 12345

DELETE. ສຸດທ້າຍ, ໃຫ້ເບິ່ງທີ່ຄໍາສັ່ງ DELETE. ທ່ານຈະພົບວ່າ syntax ຂອງຄໍາສັ່ງນີ້ແມ່ນຄ້າຍຄືກັນກັບຄໍາສັ່ງ DML ອື່ນໆ. ແຕ່ຫນ້າເສຍດາຍ, ລາຍງານລາຍໄດ້ຂອງບໍລິສັດຫລ້າສຸດຂອງພວກເຮົາບໍ່ໄດ້ຕອບສະຫນອງຄວາມຕ້ອງການແລະຄວາມທຸກຍາກຂອງ Bart ໄດ້ຖືກຍົກເລີກ. ຄໍາສັ່ງ DELETE ທີ່ມີເງື່ອນໄຂ WHERE ສາມາດຖືກນໍາໃຊ້ເພື່ອລຶບບັນທຶກລາວຈາກຕາຕະລາງ personal_info:

DELETE FROM personal_info WHERE employee_id = 12345

JOINs

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

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

CREATE TABLE disciplinary_action (action_id int not null, employee_id int not null, comments char (500))

ຕາຕະລາງນີ້ປະກອບດ້ວຍຜົນຂອງການປະຕິບັດລະບຽບວິໄນກ່ຽວກັບພະນັກງານຂອງບໍລິສັດ. ທ່ານຈະສັງເກດເຫັນວ່າມັນບໍ່ມີຂໍ້ມູນໃດໆກ່ຽວກັບພະນັກງານນອກເຫນືອຈາກຈໍານວນພະນັກງານ. ມັນງ່າຍທີ່ຈະຈິນຕະນາການສະຖານະການຈໍານວນຫຼາຍທີ່ທ່ານອາດຈະຕ້ອງສົມທົບຂໍ້ມູນຈາກຕາຕະລາງ DISCIPLINARY_ACTION ແລະ PERSONAL_INFO.

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

SELECT personal_info.first_name, personal_info.last_name, disciplinary_action.comments FROM personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

ລະຫັດລະບຸສອງຕາຕະລາງທີ່ພວກເຮົາຕ້ອງການເຂົ້າຮ່ວມໃນຂໍ້ກໍານົດ FROM ແລະຫຼັງຈາກນັ້ນປະກອບມີຄໍາສັ່ງໃນຂໍ້ກໍານົດຂອງ WHERE ເພື່ອຈໍາກັດຜົນໄດ້ຮັບທີ່ບັນທຶກໄວ້ທີ່ມີ ID ຂອງພະນັກງານແລະຕອບສະຫນອງເງື່ອນໄຂຂອງພວກເຮົາທີ່ຈະຈ່າຍເງິນກວ່າ $ 40,000.