มาตรฐาน ANSI092 มีไวยากรณ์ที่น่ากลัวบางอย่าง Natural Joinsเป็นอีกหนึ่งข้อและข้อใช้อีกข้อหนึ่ง IMHO การเพิ่มคอลัมน์ลงในตารางไม่ควรทำลายโค้ด แต่ NATURAL JOIN จะแตกในลักษณะที่ร้ายแรงที่สุด วิธีที่ "ดีที่สุด" ในการทำลายคือข้อผิดพลาดในการคอมไพล์ ตัวอย่างเช่นถ้าคุณเลือก * ที่ไหนสักแห่งการเพิ่มคอลัมน์อาจทำได้ไม่สามารถรวบรวม วิธีที่ดีที่สุดต่อไปในการล้มเหลวคือข้อผิดพลาดขณะทำงาน แย่กว่านั้นเพราะผู้ใช้ของคุณอาจเห็น แต่ก็ยังเตือนคุณได้ดีว่าคุณทำบางอย่างพัง หากคุณใช้ ANSI92 และเขียนคิวรีด้วยการรวม NATURAL จะไม่แตกในเวลาคอมไพล์และจะไม่หยุดทำงานเมื่อรันไทม์คิวรีจะเริ่มให้ผลลัพธ์ที่ไม่ถูกต้อง โรคจิตประเภทนี้ร้ายกาจ รายงานผิดพลาดการเปิดเผยข้อมูลทางการเงินอาจไม่ถูกต้อง
สำหรับผู้ที่ไม่คุ้นเคยกับ NATURAL Joins พวกเขารวมสองตารางกับทุกชื่อคอลัมน์ที่มีอยู่ในทั้งสองตาราง ซึ่งเจ๋งมากเมื่อคุณมีคีย์ 4 คอลัมน์และคุณเบื่อที่จะพิมพ์ ปัญหาเกิดขึ้นเมื่อ Table1 มีคอลัมน์ที่มีอยู่แล้วชื่อ DESCRIPTION และคุณเพิ่มคอลัมน์ใหม่ใน Table2 ชื่อโอ้ฉันไม่รู้บางสิ่งที่ไม่มีอันตรายเช่น mmm DESCRIPTION และตอนนี้คุณกำลังเข้าร่วมสองตารางบน VARCHAR2 (1,000) ฟิลด์ที่เป็นรูปแบบอิสระ
ประโยค USING อาจนำไปสู่ความคลุมเครือทั้งหมดนอกเหนือจากปัญหาที่อธิบายไว้ข้างต้น ในโพสต์อื่น ๆ มีคนแสดง ANSI-92 SQL นี้และขอความช่วยเหลือในการอ่าน
SELECT c.*
FROM companies AS c
JOIN users AS u USING(companyid)
JOIN jobs AS j USING(userid)
JOIN useraccounts AS us USING(userid)
WHERE j.jobid = 123
นี่เป็นความคลุมเครืออย่างสมบูรณ์ ฉันใส่คอลัมน์ UserID ทั้งใน บริษัท และตารางผู้ใช้และไม่มีข้อร้องเรียนใด ๆ จะเกิดอะไรขึ้นถ้าคอลัมน์ UserID ใน บริษัท ต่างๆเป็น ID ของบุคคลสุดท้ายที่แก้ไขแถวนั้น
ฉันจริงจังใครช่วยอธิบายได้ไหมว่าทำไมความคลุมเครือถึงจำเป็น? เหตุใดจึงสร้างตรงตามมาตรฐาน
ฉันคิดว่า Bill ถูกต้องที่มีฐานนักพัฒนาจำนวนมากที่คัดลอก / วางผ่านการเข้ารหัส ในความเป็นจริงฉันยอมรับได้ว่าฉันเป็นคนประเภทหนึ่งเมื่อพูดถึง ANSI-92 ทุกตัวอย่างที่ฉันเคยเห็นแสดงให้เห็นการรวมหลายรายการที่ซ้อนกันอยู่ในวงเล็บ ความซื่อสัตย์ที่ทำให้การเลือกตารางใน sql ทำได้ยากที่สุด แต่จากนั้นนักพัฒนา SQL92 ได้อธิบายว่าจะบังคับให้มีคำสั่งเข้าร่วม พระเยซู ... ผู้คัดลอกทั้งหมดที่ฉันเคยเห็นตอนนี้บังคับให้เข้าร่วมคำสั่ง - งานที่ 95% ของเวลาที่เหลือดีกว่าสำหรับเครื่องมือเพิ่มประสิทธิภาพโดยเฉพาะสำเนา / paster
โตมาลักษณ์เข้าใจถูกเมื่อเขาพูดว่า
ผู้คนไม่ได้เปลี่ยนไปใช้ไวยากรณ์ใหม่เพียงเพราะมันอยู่ที่นั่น
มันต้องให้บางอย่างกับฉันและฉันไม่เห็นกลับหัว และหากมีการกลับหัวเชิงลบจะเป็นอัลบาทรอสที่มีขนาดใหญ่เกินกว่าจะละเลยได้