การเปลี่ยนชื่อคอลัมน์

เราต้องจัดการกับชื่อคอลัมน์ด้วย มิฉะนั้น เราจะทำซ้ำชื่อ name และ id แต่มีข้อมูลที่แตกต่างกัน ในทางกลับกัน มีคอลัมน์ id แรกและคอลัมน์ Employee_id ซึ่งมีข้อมูลเดียวกัน

มาเขียนแบบสอบถามโดยจะมีเฉพาะคอลัมน์ที่จำเป็นและเปลี่ยนชื่อคอลัมน์ด้วยชื่อเดียวกัน:

SELECT  
    task.id AS task_id,  
    task.name AS task_desc, 
    task.deadline AS deadline, 
    emploee.id AS emploee_id,  
    emploee.name AS emp_name,  
emploee.occupation AS	
    emp_occupation 
FROM employee, task
WHERE emploee.id = task.emploee_id

และผลลัพธ์ของแบบสอบถามนี้:

task_id task_desc วันกำหนดส่ง พนักงาน_id emp_name emp_occupation
1 แก้ไขข้อบกพร่องในส่วนหน้า 2022-06-01 1 อีวานอฟ อีวาน โปรแกรมเมอร์
2 แก้ไขข้อบกพร่องในส่วนหลัง 2022-06-15 2 เปตรอฟ เปตรอฟ โปรแกรมเมอร์
7 ใช้ชีวิตให้สนุก (โมฆะ) 4 ราบิโนวิช มอยชา ผู้อำนวยการ
3 ซื้อกาแฟ 2022-07-01 5 คิเรียนโก อนาสตาเซีย ผู้จัดการสำนักงาน
4 ซื้อกาแฟ 2022-08-01 5 คิเรียนโก อนาสตาเซีย ผู้จัดการสำนักงาน
5 ซื้อกาแฟ 2022-09-01 5 คิเรียนโก อนาสตาเซีย ผู้จัดการสำนักงาน
8 ใช้ชีวิตให้สนุก (โมฆะ) 6 วาสก้า แมว

เยี่ยมมาก ปัญหาเกี่ยวกับชื่อคอลัมน์ที่เข้าใจยากได้รับการแก้ไขเรียบร้อยแล้ว ข้อความค้นหาค่อนข้างยาว แต่ทุกอย่างชัดเจนในตารางผลลัพธ์ และไม่มีคอลัมน์พิเศษ

นามแฝงของตาราง

บางครั้งชื่อตารางยาวเกินไปและใช้พื้นที่ในแบบสอบถามมาก ดังนั้น ผู้สร้าง SQL เพื่อปรับปรุงความสามารถในการอ่าน เช่น ในกรณีของคอลัมน์ เสนอความสามารถในการระบุนามแฝงของตาราง

รูปแบบทั่วไปของนามแฝง (นามแฝงตาราง) เป็นดังนี้:

FROM table1 alias1, table2 alias2

ลองเขียนข้อความค้นหาก่อนหน้าของเราใหม่ด้วยนามแฝงสั้นๆ:

SELECT  
    t.id AS task_id,  
    t.name AS task_desc, 
    t.deadline AS deadline, 
    e.id AS emploee_id,  
    e.name AS emp_name,  
    e.occupation AS emp_occupation 
    FROM employee e, task t 
WHERE e.id = t.emploee_id

ความสามารถในการอ่านลดลงเล็กน้อย แต่นี่เป็นเพราะชื่อของตารางในตอนแรกนั้นเรียบง่ายและชัดเจน มันอาจจะเป็นเช่นนี้:

SELECT  
  	task.id AS task_id,  
  	task.name AS task_desc, 
  	task.deadline AS deadline, 
  	emploee.id AS emploee_id,  
  	emploee.name AS emp_name,  
emploee.occupation AS	
  	emp_occupation 
FROM  
  	Microsoft_it_department_employee employee, 
  	Year2022_priority_task task 
WHERE emploee.id = task.emploee_id 

และในกรณีนี้นามแฝงก็มีประโยชน์แล้วใช่ไหม? ;)

คีย์หลัก

และอีกหนึ่งข้อมูลสำคัญเกี่ยวกับตาราง จำได้ไหมว่าเรามีคอลัมน์ Employee_id ในตารางงาน เราอ้างอิงรหัสพนักงานจากตารางพนักงาน

หากเราต้องการอ้างอิงจากตารางหนึ่งไปยังแถวของตาราง อื่นตารางที่อ้างอิงจะต้องมีคอลัมน์ที่มี ID ซึ่งเรียกอีกอย่างว่าคีย์หลัก - PRIMARY KEY

บ่อยที่สุด นี่คือคอลัมน์ที่เพิ่มเข้ามาพิเศษซึ่งมีประเภทค่าเป็นint เมื่อเพิ่มระเบียนลงในตาราง SQL จะตั้งค่าของคอลัมน์นี้โดยอัตโนมัติ

มีหลายสิ่งหลายอย่างเชื่อมโยงกับกุญแจเหล่านี้:

  • เชื่อมโยงตารางต่าง ๆ เข้าด้วยกัน
  • ค้นหาอย่างรวดเร็วและกรองตาม id;
  • ความสมบูรณ์ของข้อมูลในฐานข้อมูล (ไม่มีการอ้างอิงถึง ID ที่ไม่มีอยู่จริง);
  • การลบข้อมูลที่ไม่มีใครอ้างถึง
  • และอื่น ๆ อีกมากมาย

อย่างไรก็ตาม มีบางสถานการณ์ที่ตารางมีสิ่งที่เรียกว่าคีย์ธรรมชาติ . นี่คือเมื่อมีคอลัมน์ที่มีเนื้อหาบ่งบอกถึงเอกลักษณ์ ตัวอย่างเช่น เราตัดสินใจที่จะเพิ่มในตารางพนักงาน:

  • ลำดับการมาถึงบริษัท
  • หมายเลขภาษี;
  • หมายเลขและชุดของหนังสือเดินทาง

บางครั้งผู้ออกแบบฐานข้อมูลใช้คีย์ธรรมชาติเป็นคีย์หลัก แต่ส่วนใหญ่มักจะใช้แยกกัน ท้ายที่สุดแล้ว บันทึกสามารถลบ เปลี่ยนแปลง และอื่นๆ ได้

ฉันคิดว่าคุณอ่านเรื่องราวบนอินเทอร์เน็ตเมื่อปลัดอำเภอแขวนหนี้ของบุคคลที่มีชื่อเต็มของเขา? สิ่งนี้เกี่ยวข้องกับแนวคิดของคีย์เฉพาะ สะดวกมากสำหรับธนาคารและปลัดอำเภอในการค้นหาบุคคลด้วยชื่อเต็มและปีเกิด และใน 99% ของกรณีนี้ก็เพียงพอที่จะระบุตัวบุคคลได้

แต่ส่วนที่เหลือ <1% เป็นชื่อเต็มที่มีปีเกิดเดียวกัน ในชีวิตของเราแต่ละคนมักไม่มีคนแบบนี้ แต่ในระดับชาติก็มี โดยทั่วไป หากคุณกำลังเขียนซอฟต์แวร์หรือออกแบบฐานข้อมูล การรู้ว่าสิ่งนี้อาจเป็นเช่นนั้นก็เป็นประโยชน์เช่นกัน