การเปลี่ยนชื่อคอลัมน์
เราต้องจัดการกับชื่อคอลัมน์ด้วย มิฉะนั้น เราจะทำซ้ำชื่อ 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% เป็นชื่อเต็มที่มีปีเกิดเดียวกัน ในชีวิตของเราแต่ละคนมักไม่มีคนแบบนี้ แต่ในระดับชาติก็มี โดยทั่วไป หากคุณกำลังเขียนซอฟต์แวร์หรือออกแบบฐานข้อมูล การรู้ว่าสิ่งนี้อาจเป็นเช่นนั้นก็เป็นประโยชน์เช่นกัน
GO TO FULL VERSION