มีเหตุผลที่ดีที่จะใช้ตัวพิมพ์ใหญ่สำหรับคำหลัก SQL หรือไม่? [ปิด]


128

ค่าเริ่มต้นดูเหมือนจะเป็นตัวพิมพ์ใหญ่ แต่มีเหตุผลอะไรที่จะใช้ตัวพิมพ์ใหญ่สำหรับคำหลักหรือไม่? ฉันเริ่มใช้ตัวพิมพ์ใหญ่เพราะฉันแค่พยายามจับคู่สิ่งที่ SQL Server ให้ฉันเมื่อใดก็ตามที่ฉันพยายามสร้างบางสิ่งเช่นขั้นตอนการจัดเก็บใหม่ แต่ตอนนั้นฉันรู้สึกแย่มากกับนิ้วลูก (ที่ 5) ของฉันที่ต้องShiftกดปุ่มค้างไว้เสมอฉันจึงหยุดใช้ตัวพิมพ์ใหญ่ เหตุผลใดที่ฉันควรกลับไปใช้ตัวพิมพ์ใหญ่

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


9
ลองใช้ปุ่ม CAPS LOCK :)
MusiGenesis

7
ฉันยังคงต้องเปิด CAPS LOCK เมื่อฉันต้องการเขียนคีย์เวิร์ดและปิดเมื่อฉันไม่ได้เขียนคีย์เวิร์ดและเปิด CAPS LOCK อีกครั้งไปเรื่อย ๆ เป็นเพียงความยุ่งยาก
Hertanto Lie

17
CAPS wha ... โอ้คุณหมายถึงปุ่ม Ctrl ที่สามของฉันหรือเปล่า
Dave Sherohman

2
IIRC สิ่งที่ตลกก็คือถ้าคุณตรวจสอบ sp_ โพรซีเดอร์ใน MSSQL ทั้งหมดนี้เป็นตัวพิมพ์เล็ก
Benjol

1
@Benjol ไม่ใช่ทั้งหมด แต่มีจำนวนมากเช่น sp_who เป็นความคิดที่ดีที่อย่างน้อยควรพยายามทำให้สอดคล้องกันในsproc เดียวกันซึ่ง Microsoft ไม่ได้อยู่ใน "กรณี" มากนัก ปุ่นตั้งใจ. LOL
Gordon Bell

คำตอบ:


107

เป็นเพียงเรื่องของรูปแบบซึ่งอาจมีต้นกำเนิดในสมัยที่บรรณาธิการไม่ได้ทำโค้ดระบายสี

ฉันเคยชอบตัวพิมพ์ใหญ่ทั้งหมด แต่ตอนนี้ฉันเอนเอียงไปทางด้านล่างทั้งหมด


6
+1 ฉันเดาว่าฉันไม่ใช่คนเดียวที่ใช้ตัวย่อทั้งหมดสำหรับคำหลัก
dance2die

2
ฉันคิดว่ามันย้อนกลับไปในสมัยที่บรรณาธิการไม่ได้ทำโค้ดระบายสี
Benjol

10
ฉันค่อนข้างแน่ใจว่ามันย้อนกลับไปในสมัยที่เครื่องจำนวนมากไม่รองรับอักขระตัวพิมพ์เล็ก
Nate CK

1
ฉันเดาว่ามันย้อนกลับไปก่อนหน้าจอสี;)
walrii

150

โดยส่วนตัวฉันไม่ชอบ SQL ของฉันตะโกนใส่ฉัน มันเตือนฉันว่าเป็นพื้นฐานหรือโคบอล

ดังนั้นฉันชอบตัวพิมพ์เล็ก T-SQL ของฉันที่มีชื่อวัตถุฐานข้อมูล MixedCase

อ่านง่ายกว่ามากและตัวอักษรและความคิดเห็นก็โดดเด่น


8
มันเป็นเรื่องของรสชาติมาก จากประสบการณ์ของฉันปริมาณการตะโกนไม่มากเกินไปฉันชอบคีย์เวิร์ดตัวพิมพ์ใหญ่เพราะอ่านง่ายกว่ามากและตัวอักษรและความคิดเห็นก็โดดเด่น
Jonathan Leffler

93
+1 สำหรับ "I DON'T LIKE MY SQL YELLING AT ME"
dance2die

8
ฉันไม่ชอบภาษาใด ๆ ที่ตะโกนใส่ฉัน แต่นั่นไม่ได้เป็นคำถามที่ว่าตัวพิมพ์ใหญ่เป็นความคิดที่ดีใน SQL หรือไม่
bignose

86

SQL เก่า เคสด้านบนกำลังตะโกน มันดูแปลกและดำเนินไปอย่างน่าเกลียด

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

ซึ่งแตกต่างจากภาษาใหม่ ๆ SQL มีคำหลักจำนวนมากและอาศัยความสามารถของผู้อ่านในการแยกแยะคำหลักเทียบกับตัวระบุเพื่อแยกวิเคราะห์ไวยากรณ์ทางจิตใจ

ดังนั้นคำตอบโดยตรงสำหรับคำถามของคุณคือคำตอบสำหรับ "เหตุใดผู้อ่านโค้ด SQLจึงได้รับประโยชน์มากมายจากคำหลักตัวพิมพ์ใหญ่ในเมื่อนั่นไม่เป็นความจริงสำหรับภาษาสมัยใหม่ส่วนใหญ่":

  • ต้องพึ่งพาการรักษาคำหลักในหัวของคนเป็นที่เหมาะสมสำหรับภาษาที่ทันสมัยมาก แต่ไม่มีเหตุผลสำหรับ SQL ; มีคำหลักมากเกินไปและมีรูปแบบต่างๆมากเกินไป

  • ที่จะพึ่งพาตัวชี้นำเครื่องหมายวรรคตอนเป็นที่เหมาะสมสำหรับภาษาที่ทันสมัยที่สุด แต่ไม่มีเหตุผลสำหรับ SQL ; มีน้อยเกินไป แต่ขึ้นอยู่กับลำดับคำหลักที่แม่นยำเพื่อระบุไวยากรณ์

  • ที่จะพึ่งพาเน้นอัตโนมัติสำหรับความแตกต่างคำหลักที่เป็นที่เหมาะสมสำหรับภาษาที่ทันสมัยในกรณีปกติ แต่ไม่สนใจความเป็นจริงของสิ่งที่สามารถบรรลุเน้นสำหรับการ SQL ส่วนใหญ่ไม่ครอบคลุมคำหลักทั้งหมดของ SQL ทุกรูปแบบและไม่ว่า SQL จะอ่านบ่อยและเป็นประจำในบริบทที่ปากกาเน้นข้อความไม่สามารถช่วยได้

นี่คือเหตุผลบางประการเฉพาะสำหรับ SQL ที่ผู้อ่านโค้ด SQL จะได้รับการตอบสนองที่ดีที่สุดโดยการกำหนดมาตรฐานบนตัวพิมพ์ใหญ่สำหรับคีย์เวิร์ดและใช้เฉพาะกรณีที่ไม่ใช่ตัวบน (เช่นต่ำกว่าหรือแบบผสม) สำหรับตัวระบุ

การไฮไลต์บางครั้งอาจช่วยได้ แต่ถ้าปากกาเน้นข้อความรู้ว่าคุณมี SQL และเรามักจะมี SQL ในบริบทที่ตัวแก้ไข / ตัวจัดรูปแบบไม่สามารถทราบได้อย่างสมเหตุสมผลว่ากำลังจัดการกับ SQL ตัวอย่าง ได้แก่ การสืบค้นข้อมูลในบรรทัดเอกสารโปรแกรมเมอร์และสตริงข้อความภายในรหัสของภาษาอื่น สิ่งเดียวกันนี้ไม่เป็นความจริงในทุกๆที่สำหรับภาษาเช่น Python หรือ C ++ ใช่บางครั้งรหัสของพวกเขาจะปรากฏในตำแหน่งเหล่านั้น แต่ก็ไม่ได้ทำเป็นประจำอย่างที่เป็นรหัส SQL

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

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


ฉันรู้สึกว่าเหตุผลใกล้เคียงของคำถามนี้ค่อนข้างดี คำตอบของคุณอธิบายได้ดี แต่ยังดูเป็นความคิดเห็นเล็กน้อย ฉันไม่รู้สึกว่า SQL มีคีย์เวิร์ดมากมาย อย่างไรก็ตามหลังจากคำหลัก 50 คำขึ้นไปคุณเห็นคำอื่นบ่อยเพียงใด ยังคงมีความสำคัญที่จะแสดงตัวพิมพ์ใหญ่หรือไม่? เนื่องจากไม่บ่อยนักพวกเขาจึงมักจะดึงดูดความสนใจอยู่แล้วใช่ไหม แน่นอนว่า 'คีย์เวิร์ดที่ไม่สงวนลิขสิทธิ์' ที่ยุ่งยากเหล่านั้นเนื่องจาก sql-server throwสมควรได้รับการดูแลเป็นพิเศษ แต่ตัวพิมพ์ใหญ่เป็นเพียงตัวเลือกระหว่างหลาย ๆ
Frédéric

1
@ Frédéricดูเหมือนว่าคุณกำลังโต้เถียงว่าผู้อ่านไม่จำเป็นต้องมีคำหลักที่รู้จักกันน้อยในการทำเครื่องหมายเป็นคำหลัก ไม่คำดังกล่าวไม่ดึงดูดความสนใจได้อย่างแม่นยำเนื่องจากผู้อ่านไม่สามารถคาดหวังได้ว่าคำเหล่านี้เป็นคำหลัก นั่นเป็นเหตุผลที่พวกเขาต้องแยกแยะเป็นคำหลักเหมือนคำอื่น ๆ
bignose

บางทีฉันอาจจะไม่รู้เกี่ยวกับ SQL มากเกินไปแม้ว่าฉันจะเขียนโปรแกรมด้วย SQL มาหลายปี แต่จนถึงตอนนี้ฉันเชื่อว่าฉันมักจะเห็นคำหลักเกือบจะในทันทีที่ฉันไม่รู้เพราะมันส่งผลให้เกิดการสร้าง SQL ที่ผิดปกติอย่างน้อยก็สำหรับคนที่ไม่ได้ รู้จักพวกเขา
Frédéric

33

ตัวอย่างของกอร์ดอนเบลล์ไม่ถูกต้อง โดยทั่วไปจะเน้นเฉพาะคำหลักเท่านั้นไม่ใช่ข้อความค้นหาทั้งหมด ตัวอย่างที่สองของเขาจะมีลักษณะดังนี้:

SELECT name, id, xtype, uid, info, status, 
base_schema_ver, replinfo, parent_obj, crdate, 
ftcatid, schema_ver, stats_schema_ver, type, 
userstat, sysstat, indexdel, refdate, version, 
deltrig, instrig, updtrig, seltrig, category, cache
FROM sysobjects
WHERE category = 0
AND xtype IN ('U', 'P', 'FN', 'IF', 'TF')
ORDER BY 1

ฉันพบว่าสิ่งนี้อ่านง่ายกว่ามากเนื่องจากคีย์เวิร์ดโดดเด่นมากขึ้น แม้ว่าจะมีการเน้นไวยากรณ์ แต่ฉันก็พบว่าตัวอย่างที่ไม่มีตัวอักษรอ่านยากกว่ามาก

ที่ บริษัท ของฉันเราไปไกลกว่าเล็กน้อยด้วยการจัดรูปแบบ SQL ของเรา

SELECT      name, id, xtype, uid, info, status, 
            base_schema_ver, replinfo, parent_obj, crdate, 
            ftcatid, schema_ver, stats_schema_ver, type, 
            userstat, sysstat, indexdel, refdate, version, 
            deltrig, instrig, updtrig, seltrig, category, cache
FROM sysobjects
LEFT JOIN systhingies ON
    sysobjects.col1=systhingies.col2
WHERE category = 0
    AND xtype IN ('U', 'P', 'FN', 'IF', 'TF')
ORDER BY 1

1
ใช่แล้วฉันก็ชอบมันเช่นกัน
David The Man

6
ปัญหาคือ ... ถ้าคุณใช้ตัวพิมพ์ใหญ่เมื่อเรียกใช้คำสั่ง ad-hoc ที่พรอมต์คุณจะเร็วเท่ากับคนที่ไม่ใช้ประโยชน์จากมันหากคุณต้องเรียกใช้คำสั่งเฉพาะกิจในการผลิตเมื่อมัน เรื่อง. ดังนั้นฉันจึงเขียนมันเป็นตัวพิมพ์เล็กทั้งหมดแล้วจึง "ตกแต่งให้สวยงาม" ก่อนเช็คอินเมื่อมีคนบ่นว่าอ่านไม่ออกเพราะไม่รู้วิธีเรียกใช้ปากกาเน้นข้อความไวยากรณ์ และฉันไม่รู้เกี่ยวกับคุณ แต่ 3 ครั้งต่อปีที่ฉันต้องเรียกใช้คำสั่งเฉพาะกิจในความเร็วในการผลิตนั้นมีความสำคัญมากดังนั้น 50% ของวันทำงานที่ฉันฝึกเขียนคำสั่งทดสอบในตัวพิมพ์เล็กทั้งหมดจะคุ้มค่าจริงๆ

7
และในฐานข้อมูล บริษัท ของฉัน (สร้างขึ้นที่ใดที่หนึ่งใน 90s) ชื่อตารางคอลัมน์ดัชนีกระบวนงานที่จัดเก็บ ฯลฯ ทั้งหมดเป็นตัวพิมพ์ใหญ่ดังนั้นเราจึงใช้คำหลัก SQL ตัวพิมพ์เล็ก ;)
Andreas

1
ว้าว 1/2 เร็ว ฉันไม่คิดอย่างนั้น!
Iharob Al Asimi

33

มีช่วงเวลาที่คนส่วนใหญ่ไม่ได้มีความเป็นไปได้ในการเข้ารหัสสิ่งใดก็ตามที่อยู่นอกเหนือจากตัวอักษรบนเคสเนื่องจากการเข้ารหัสที่เกี่ยวข้อง (ASCII) ยังไม่ได้รับการประดิษฐ์ มีเพียงหกบิตเท่านั้น ในขณะที่ SQL มีจำนวนมากขึ้นตัวอักษรกรณีที่ต่ำกว่านั้นไม่ใช่วิธีปฏิบัติทั่วไปในการเขียนโปรแกรม

โปรดทราบว่าบางคนเรียกร้องว่าฐานข้อมูลจะได้รับความรู้สึกเร่งรีบและเรียกใช้คำถามของคุณได้เร็วขึ้น


ดังนั้นไม่ใช่เหตุผลที่ดีในวันนี้
bignose

1
@ BIGNOSE: ไม่ไม่อย่างแน่นอน!
Lukas Eder

1
ผมคิดว่านี่คือคำตอบที่ดีที่สุด น่าเศร้าที่ฉันเกลียดตัวพิมพ์เล็กในคำหลัก SQL และฉันไม่สามารถหาวิธีที่จะชอบตัวพิมพ์เล็กได้ฉันบ้าไปแล้วเหรอ?
Iharob Al Asimi

@IharobAlAsimi ใช่คุณบ้า ทำไมคุณถึงเขียนภาษาอังกฤษในกรณีที่ต่ำกว่า แต่ MOT เน้นภาษาอังกฤษ?
Lukas Eder

24

ตัวอักษรน้อยกว่า 10% ในข้อความที่เราอ่านเป็นตัวพิมพ์ใหญ่ ดังนั้นสมองของเราจึงกระตือรือร้นในการจดจำตัวอักษรตัวพิมพ์เล็กมากกว่าตัวพิมพ์ใหญ่ การศึกษาพบว่าการอ่านข้อความตัวพิมพ์ใหญ่ใช้เวลานานกว่า นี่เป็นเพียงตัวอย่างเดียว:

http://www.guardian.co.uk/media/mind-your-language/2010/oct/04/new-york-street-signs-capitals

ตัวอย่างข้างต้นฉันคิดว่าเน้นย้ำว่าแม้ว่าคุณจะพูดถึงแค่หนึ่งหรือสองคำ แต่ก็สร้างความแตกต่าง


5
เราไม่ได้พูดถึงการอ่านนวนิยายแบบตัวพิมพ์ใหญ่ทั้งหมด เรากำลังพูดถึงคำหลักจำนวนหนึ่งซึ่งเป็นเพียงบางส่วนของข้อความ
Casey

6
คุณกำลังพลาดประเด็น ไม่ได้เกี่ยวกับจำนวนคำที่เรากำลังอ่านมันเกี่ยวกับสิ่งที่สมองของเราได้รับการฝึกฝนให้ทำอย่างรวดเร็ว ตัวอย่างเช่นป้ายบอกทางไม่ใช่นิยาย แต่ก็มีข้อสรุปเหมือนกัน เมื่อเราเรียนรู้ที่จะอ่านเราจะเริ่มอ่านแต่ละตัวอักษร แต่ในที่สุดสมองของเราก็เริ่มจดจำคำศัพท์เป็นกลุ่มรูปแบบ จะดีกว่าถ้ารูปแบบเหล่านั้นสอดคล้องกัน โปรดจำไว้ว่าตัวอักษรตัวพิมพ์ใหญ่มักจะเป็นรูปแบบที่แตกต่างจากตัวพิมพ์เล็กไม่ใช่แค่รุ่นใหญ่
AaronLS

1
แต่มีคำหลักน้อยมากและปรากฏซ้ำแล้วซ้ำอีก ดังนั้นการรับรู้จึงควรเร็วพอ ๆ กันสำหรับทุกคนที่ใช้ SQL ในช่วงเวลาใดเวลาหนึ่ง
Casey

3
จริงอยู่มันไม่ใช่สิ่งที่ยากและรวดเร็ว แต่มีคำหลักเพียงไม่กี่คำที่ใช้บ่อยมาก มีชุดใหญ่ที่ไม่ใช่และบ่อยครั้งที่ผู้คนขยายแนวปฏิบัติด้านบนนี้ไปยังสิ่งที่มีฟังก์ชันในตัว แต่ไม่จำเป็นต้องใช้คำหลักภาษาวากยสัมพันธ์ ในทางปฏิบัติฉันยังคงเพิ่มคำหลักเล็ก ๆ น้อย ๆ เช่น SELECT / WHERE / GROUP BY ซึ่งระบุจุดเริ่มต้นของส่วนหลักของข้อความค้นหา แต่คำหลักอื่น ๆ ทั้งหมดเช่นฟังก์ชั่นในตัวชอบcast, rankผมกรณีที่ต่ำกว่า
AaronLS

19

เป็นเพราะ SQL เป็นภาษาเก่า ( 1974 ) ซึ่งเมื่อถูกสร้างขึ้นแป้นพิมพ์ส่วนใหญ่ไม่มีตัวพิมพ์เล็ก! เอกสารประกอบภาษาสะท้อนให้เห็นถึงเทคโนโลยีในยุคนั้น

การวิจัยได้พิสูจน์แล้วว่า CAPS ทั้งหมดอ่านยากกว่ามากดังนั้นการบริหารทางหลวงของรัฐบาลกลางแห่งสหรัฐอเมริกาจึงได้สั่งให้ใช้เครื่องหมายผสมในคู่มือของพวกเขาเกี่ยวกับอุปกรณ์ควบคุมการจราจรแบบเครื่องแบบซึ่งระบุว่า:

ตัวอักษรสำหรับชื่อสถานที่ถนนและทางหลวงบนป้ายบอกทางทั่วไปจะต้องผสมระหว่างตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เริ่มต้น

New York Post ยังเผยแพร่:

จากการศึกษาพบว่าการอ่านป้ายทั้งหมดเป็นเรื่องยากขึ้นและการใช้เวลาในการจ้องมองออกไปจากถนนเป็นเวลานานกว่ามิลลิวินาทีนั้นช่วยเพิ่มโอกาสในการเกิดอุบัติเหตุโดยเฉพาะในกลุ่มผู้ขับขี่ที่มีอายุมาก

ไม่มีเหตุผลที่ดีที่จะใช้ตัวพิมพ์ใหญ่และเหตุผลที่ดีที่จะไม่ใช้

โดยส่วนตัวฉันเกลียดการใช้ตัวพิมพ์ใหญ่สำหรับคำหลัก SQL ฉันคิดว่ามันยากที่จะอ่านและไร้สาระในสมัยนี้และในยุคนี้

ภาษา SQL ถูกกำหนดให้ไม่คำนึงถึงขนาดตัวพิมพ์ ถอดนิ้วของคุณออกจากปุ่ม Shift นั้น!


3
ฉันคิดว่าความแพร่หลายของเหตุผลที่ดีที่นำเสนอในคำตอบอื่น ๆ นั้นสวนทางกับคำยืนยันของคุณ“ ไม่มีเหตุผลที่ดีที่จะใช้ตัวพิมพ์ใหญ่”
bignose

7
@bignose โอ้มีเหตุผล ... ฉันไม่คิดว่าพวกเขาจะดี จากประสบการณ์ของฉันยิ่งโปรแกรมเมอร์ SQL รุ่นเยาว์มีแนวโน้มที่จะใช้ตัวพิมพ์ใหญ่มากขึ้น ในทางกลับกันฉันไม่เคยพบกับตัวเข้ารหัส SQL ที่มีความสามารถซึ่งใช้ตัวพิมพ์ใหญ่
โบฮีเมียน

3
เห็นด้วยอย่างยิ่ง. ความแพร่หลายของ "คำตอบ" อื่น ๆ ไม่ได้ทำให้ถูกต้องเพียง แต่ทำให้พวกเขามีความเชื่อมั่น เคสชั้นบนทั้งหมดเป็นตัวยึดจากคอมพิวเตอร์ที่ไม่มีเคสอยู่บนคีย์บอร์ดของพวกเขาหรือในการแสดงตัวละครของพวกเขา วันนี้เป็นแค่งัวเงีย
Charles Bretana

ใช่และใส่กุญแจ CAPS LOCK ของคุณหรือทำให้นิ้วของคุณเป็นตะคริวที่กดปุ่ม Shift ค้างไว้โดยไม่จำเป็น
Gordon Bell

9
ฉันได้กลิ่นเหตุผลแบบวงกลมที่นี่ หากเหตุผลถูกนำเสนอเพื่อสนับสนุนการแยกแยะคำหลักด้วยตัวพิมพ์เล็กและใหญ่แสดงว่าคุณปฏิเสธคำหลักนั้นไม่ใช่เหตุผลที่ดี หากมีการนำเสนอเหตุผลโดยผู้เขียนโค้ด SQL แต่ไม่เห็นด้วยกับตำแหน่งของคุณคุณจะปฏิเสธพวกเขาว่าไม่ใช่ตัวเข้ารหัส SQL ที่มีความสามารถ ฉันคิดว่าบนพื้นฐานนั้นเราสามารถยกเลิกสิ่งนี้เป็นอาร์กิวเมนต์ที่ไม่ถูกต้องได้
bignose

8

ตัวพิมพ์ใหญ่สามารถเพิ่มการมองเห็นคำหลักได้ แต่คุณสามารถชดเชยได้ด้วยการเน้นโค้ดและการเยื้อง
เราใช้ตัวพิมพ์เล็กเนื่องจากตัวแก้ไขแบบสอบถามและเครื่องมืออื่น ๆ ทำสิ่งมหัศจรรย์ในการแก้ไขโค้ด t-sql และเราไม่จำเป็นต้องทรมานนิ้วก้อย


2
ตัวแก้ไขแบบสอบถามและ t-sql เป็นที่เดียวที่ทุกคนจะอ่านโค้ด SQL ของคุณหรือไม่? คุณรู้ได้อย่างไร?
bignose

8

ลิงเห็นลิงทำเพื่อฉัน การจับคู่รูปแบบ - ถ้าฉันทำในแบบที่ฉันเคยเห็นมาโครงสร้างของประโยคจะจัดเรียงทางจิตใจได้ง่ายขึ้น


7

ตัวพิมพ์ใหญ่อ่านได้น้อย โครงร่างของคำทั้งหมดมีรูปร่างเหมือนกล่อง ไม่มีลูกหลานหรือผู้สืบทอด FTW ตัวพิมพ์เล็ก!


3
เหตุผลที่คุณให้นั้นสนับสนุนตำแหน่งที่ตัวพิมพ์ใหญ่ช่วยแยกคำหลักออกจากส่วนที่เหลือ
bignose

5
@bignose ถ้า SQL อ่านเหมือนภาษามนุษย์ทำไมเราถึงต้องใช้ตัวพิมพ์ใหญ่? เราไม่จำเป็นต้องพิมพ์ใหญ่กริยาหรือคำบุพบทในภาษามนุษย์ ลองนึกภาพว่าทุกประโยคมีลักษณะเช่นนี้หรือไม่ ฉันพบว่าอ่านได้น้อยกว่าการเขียนปกติ คำที่เป็นตัวพิมพ์ใหญ่ในสองประโยคนั้นทำให้สมองของฉันหยุดและพูดช้ากว่าประโยคที่เหลือทำให้การอ่านของฉันช้าลงและทำให้การไหลไม่เป็นธรรมชาติ
Chris Middleton

1
ภาษาของมนุษย์เป็นสิ่งที่ให้อภัยไม่ได้กับความคลุมเครือในไวยากรณ์ ภาษาคอมพิวเตอร์ไม่ใช่นั่นเป็นเหตุผลที่ต้องลดความคลุมเครือเหล่านั้นลง ไวยากรณ์ SQL ไม่ได้ช่วยในเรื่องนั้นมนุษย์เราจึงจำเป็นต้องใช้เครื่องมือที่มีอยู่ ไวยากรณ์ SQL มีไม่มากนักดังนั้นเราจึงได้พัฒนารูปแบบการใช้ตัวพิมพ์ใหญ่สำหรับคำหลัก
bignose

5

ฉันพบว่ามันน่าอ่านมากขึ้น เช่นเดียวกับการขึ้นบรรทัดใหม่สำหรับจุดเริ่มต้นของแต่ละประโยคและการเยื้องระหว่างอนุประโยค


2

ลองใช้ผลิตภัณฑ์จัดรูปแบบ (ฉันใช้ SQL Prompt / SQL Refactor จาก Red Gate) คุณสามารถตั้งค่าว่าต้องการให้ตัวพิมพ์ใหญ่ทำงานอย่างไรและรหัสของคุณจะได้รับการจัดรูปแบบอย่างสม่ำเสมอ พักพิงค์กี้ของคุณและปล่อยให้คอมพิวเตอร์ทำงานแทนคุณ


1
คำแนะนำนี้ไม่สนใจบริบทจำนวนมากที่กำลังอ่าน SQL ไม่สามารถใช้งานได้ทั้งหมดสำหรับการอ่านโค้ดที่เขียนโดยคนอื่นแล้ว หากจำเป็นต้องใช้เครื่องมือเช่นนี้เพียงเพื่อทำให้ SQL ที่จัดรูปแบบไม่ดีสามารถอ่านได้นั่นเป็นข้อโต้แย้งที่สนับสนุนการประชุมเช่นเดียวกับคำถามนี้
bignose

แต่แนวทางนี้ดีถ้าคุณต้องการมาตรฐานในองค์กรของคุณ หากคุณต้องการมาตรฐานความคิดเห็นก็ไม่สำคัญ
Trubs

2

สาเหตุหนึ่งของการใช้ตัวพิมพ์ใหญ่อย่างต่อเนื่องคือเมื่อคุณ (หรือคนอื่น) กำลังดูโค้ดในบางอย่างเช่นแผ่นจดบันทึกทำให้อ่านง่ายขึ้น กล่าวคือคุณสามารถแยกความแตกต่างได้อย่างง่ายดายระหว่าง "คำหลัก" และชื่อตาราง, SP, udf ฯลฯ


1

นอกเหนือจากความสอดคล้องเพื่อประโยชน์ในการปฏิบัติตามข้อกำหนดแล้วหมายเลข แม้ว่าจะเป็นหัวข้อที่เป็นส่วนตัว แต่ฉันชอบใช้กรณีผสมสำหรับ SQL ทั้งหมด SQL นั้นอ่านง่ายกว่ามากและไม่มีอะไรจะหายไปใน IDE สมัยใหม่ที่คำหลักทั้งหมดมีรหัสสีอยู่แล้ว


ในฐานะที่เป็นคำตอบอื่น ๆ มากมายที่นี่ได้นำเสนอเหตุผลที่ผมไม่คิดว่าคำตอบของคุณถูกต้อง: มีมีเหตุผล“อื่น ๆ ที่ไม่ใช่เพื่อประโยชน์ในการปฏิบัติตามตามมาตรฐานของ”
bignose

... แล้วพวกเขาคืออะไร? แม้ว่าจะเปิดรับข้อมูลใหม่ ๆ อยู่เสมอ แต่ฉันไม่เคยรับรู้เรื่องใด ๆ เลย
Charles Bretana

ฉันได้ให้เหตุผลหลายประการแล้วตอนนี้คุณก็รู้แล้ว
bignose

2
ไม่มีเหตุผลใดที่เป็นเหตุผลที่ถูกต้องพวกเขาเป็นความชอบส่วนบุคคล อย่าลังเลที่จะทำตามความต้องการส่วนตัวของคุณเอง แต่อย่าระบุลักษณะของความชอบเป็นกฎเกณฑ์หรือแนวทางปฏิบัติที่ดีที่สุด
Charles Bretana

1

Intellisense / การเติมข้อความอัตโนมัติใน Microsoft SQL Server Management Studio อนุญาตให้ใช้ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กสำหรับคำสงวน แต่ตัวพิมพ์ใหญ่จะเรียกฟังก์ชันเช่น MAX (), SUM ()

ถึงกระนั้นโปรแกรมแยกวิเคราะห์ยังคงอนุญาตให้ประมวลผล max () และ sum () รุ่นตัวพิมพ์เล็กได้

นี่หมายถึงความสับสนเกี่ยวกับลักษณะของการประหารชีวิตดังนั้นจึงเป็นเพียงเรื่องของความชอบส่วนบุคคล


4
ได้และใน SSMS "Options -> Text Editor -> Transact-SQL -> Intellisense" คุณสามารถตั้งค่าเริ่มต้นเป็น "ตัวพิมพ์เล็ก" ได้หากต้องการ
Gordon Bell

0

ฉันไม่ชอบสิ่งที่เขียนด้วยตัวพิมพ์ใหญ่ทั้งหมด (และเกลียดการพิมพ์ตัวพิมพ์ใหญ่ทั้งหมดมากยิ่งขึ้น) แต่ไม่สามารถโน้มน้าวตัวเองให้ต่อต้านชุมชนได้ ตามปกติ Vim และแพ็คเกจที่เกี่ยวข้องเป็นวิธีแก้ปัญหามากมาย:

http://www.vim.org/scripts/script.php?script_id=305

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


-2

ฉันเรียกโค้ด mySQL ส่วนใหญ่จากภายใน PHP และฉันทำการแก้ไข PHP ทั้งหมดภายในกลุ่ม (หรือฉันคิดว่าในกรณีนี้คือ VIM ;-) ตอนนี้ฉันแน่ใจว่ามีปลั๊กอินสำหรับเน้นโค้ด mySQL ภายใน PHP แต่ฉันไม่พบและฉันไม่ต้องเสียเวลาไปหามัน ดังนั้นฉันชอบที่จะมีทุกอย่างใน allcaps ฉันพบสิ่งนี้:

if ( !$bla ) 
{
   echo "select something from something where something";
}

if ( !$beepboop ) 
{
   echo "create table if not exists loremIpsum;
}

$query = "
CREATE TABLE IF NOT EXISTS HISTORY
(
   ID INT NOT NULL AUTO_INCREMENT,
   INSERTDATE TIMESTAMP DEFAULT NOW(),
   ALTERDATE TIMESTAMP(8) DEFAULT NOW(),
   DELETEDATE TIMESTAMP(8),
   ALTERCOUNT INT DEFAULT 0,
   SELECTCOUNT INT DEFAULT 0,

   PRIMARY KEY(ID),
)ENGINE=InnoDB
";

mysqlQuery( $query, $con );

ช่วยให้ฉันแยกแยะระหว่าง PHP กับ SQL ได้ดีกว่านี้มาก:

if ( !$bla ) 
{
   echo "select something from something where something";
}

if ( !$beepboop ) 
{
   echo "create table if not exists loremIpsum;
}

$query = "
create table if not exists history
(
   id int not null auto_increment,
   insertdate timestamp default now(),
   alterdate timestamp(8) default now(),
   deletedate timestamp(8),
   altercount int default 0,
   selectcount int default 0,

   primary key(id),
)engine=InnoDB
";

mysqlQuery( $query, $con );

นอกจากนี้ด้วยเหตุผลบางประการฉันเกลียดการผสม allcaps กับกรณีอูฐดังนี้:

CREATE TABLE IF NOT EXISTS history
(
   ID INT NOT NULL AUTO_INCREMENT,
   insertDate TIMESTAMP DEFAULT NOW(),
   alterDate TIMESTAMP(8) DEFAULT NOW(),
   deleteDate TIMESTAMP(8),
   alterCount INT DEFAULT 0,
   selectCount INT DEFAULT 0,

   PRIMARY KEY(ID),
)ENGINE=InnoDB

นั่นทำให้IDฉันรำคาญ มันควรจะเป็นid? หรือiD?


3
ไม่ไม่ไม่ camelCase ใช้สำหรับชื่อตัวแปรไม่ใช่ชื่อคอลัมน์ ใช้กรณีที่เหมาะสมสำหรับชื่อคอลัมน์ ... InsertDate, AlterDate, ...
Gordon Bell

1
มาตรฐาน SQL ต้องการการใช้งานเพื่อละเว้นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในตัวระบุ (พับเป็นตัวพิมพ์ใหญ่) all_lower_caseดังนั้นรหัสของคุณไม่ควรขึ้นอยู่กับกรณีความแตกต่างในตัวบ่งชี้และวิธีการชุมนุมที่จะทำคือการทำให้ตัวระบุ
bignose

3
@bignose ฉันไม่ใช่แฟนตัวยงของขีดล่างเพราะมันลดลง wpm
puk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.