ตัวจัดรูปแบบ SQL
การกำหนดค่า
สำเนียง SQL
การเยื้อง
รูปแบบการเยื้อง
รูปแบบตัวพิมพ์ของคีย์เวิร์ด
อินพุต
เอาต์พุต
รายละเอียดทางเทคนิค
ตัวจัดรูปแบบ SQL ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
ตัวจัดรูปแบบ SQL เป็นยูทิลิตีสำหรับนักพัฒนาที่นำคิวรี SQL ที่ยังไม่จัดรูปแบบมาแปลงให้เป็นโค้ดที่อ่านได้และเยื้องอย่างสม่ำเสมอ โดยจะพาร์สคำสั่ง SQL ระบุคีย์เวิร์ด คลอส และนิพจน์ จากนั้นจัดรูปแบบใหม่ด้วยการเยื้องและการขึ้นบรรทัดใหม่ที่เหมาะสม เครื่องมือนี้ทำหน้าที่ได้ทั้งเป็น SQL beautifier และ SQL prettifier ทำให้คิวรีบรรทัดเดียวที่กระชับอ่านได้ เมื่อคุณต้องการ format sql online เครื่องมือบนเบราว์เซอร์นี้ให้ผลลัพธ์ทันที มีพรีเซ็ตไดอะเล็กต์สำหรับ MySQL, PostgreSQL, SQL Server, SQLite, BigQuery, Snowflake และระบบฐานข้อมูลอื่น ๆ อีกมากมาย โดยรองรับไวยากรณ์เฉพาะผู้ขายแบบ best-effort ตัวจัดรูปแบบคิวรี SQL สามารถจัดการคำสั่ง SELECT, คิวรี INSERT, คำสั่ง UPDATE, นิยาม CREATE TABLE และคิวรีที่ซับซ้อนที่มี join, subquery และ CTE ตัวจัดรูปแบบยังทำให้รูปแบบตัวพิมพ์ของคีย์เวิร์ดเป็นมาตรฐาน (ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก) และใช้ระยะห่างที่สม่ำเสมอรอบตัวดำเนินการและคลอส
กรณีการใช้งานทั่วไปของนักพัฒนา
นักพัฒนาใช้ตัวจัดรูปแบบ SQL เพื่อทำให้คิวรีฐานข้อมูลอ่านได้ระหว่างการรีวิวโค้ด เมื่อดีบักประสิทธิภาพของคิวรี หรือเมื่อจัดทำเอกสารสคีมาฐานข้อมูล ตัวจัดรูปแบบ SQL ช่วยระบุข้อผิดพลาดเชิงตรรกะ join ที่ขาดหาย หรือโครงสร้างคิวรีที่ไม่มีประสิทธิภาพ นักพัฒนาจำนวนมากใช้ตัวจัดรูปแบบ SQL เพื่อ pretty print sql ทำให้สไตล์คิวรีเป็นมาตรฐานทั้งทีม และทำให้การเยื้องและรูปแบบตัวพิมพ์ของคีย์เวิร์ดสม่ำเสมอ เครื่องมือนี้มีประโยชน์เมื่อทำงานกับโค้ดเบสเก่าที่มี SQL จัดรูปแบบไม่ดี หรือเมื่อดึงคิวรีจากล็อกของแอปพลิเคชันที่มาเป็นสตริงบรรทัดเดียว ตัวจัดรูปแบบ SQL ยังช่วยเมื่อเตรียมคิวรีสำหรับเอกสาร การนำเสนอ หรือการแชร์กับสมาชิกทีม
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
ตัวจัดรูปแบบ SQL รองรับไดอะเล็กต์ SQL หลายแบบ ซึ่งแต่ละแบบมีฟีเจอร์ไวยากรณ์เฉพาะ ตัวจัดรูปแบบมีพรีเซ็ตไดอะเล็กต์สำหรับ MySQL, PostgreSQL, SQL Server, SQLite, BigQuery, Snowflake และระบบฐานข้อมูลอื่น ๆ อีกมากมาย โดยรองรับไวยากรณ์เฉพาะผู้ขายแบบ best-effort MySQL รองรับตัวระบุด้วย backtick และฟังก์ชันเฉพาะอย่าง CONCAT PostgreSQL ใช้สตริงแบบ dollar-quoted และไวยากรณ์อาร์เรย์ SQL Server มีส่วนขยาย T-SQL อย่าง TOP และชนิดข้อมูลเฉพาะ ตัวจัดรูปแบบรองรับสไตล์การเยื้องต่าง ๆ: แบบมาตรฐาน (จัดแนวคลอส), แบบตารางชิดซ้าย (คีย์เวิร์ดชิดขวา), และแบบตารางชิดขวา (คีย์เวิร์ดชิดซ้าย) สามารถจัดรูปแบบคำสั่ง DDL (CREATE, ALTER, DROP), คำสั่ง DML (SELECT, INSERT, UPDATE, DELETE) และคำสั่ง DCL (GRANT, REVOKE) คิวรีที่ซับซ้อนที่มี CTE, window function และ subquery ซ้อนกันจะถูกจัดการด้วยระดับการเยื้องที่เหมาะสม
ตัวอย่างเช่น คิวรีแบบกระชับอย่างนี้:
SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE u.created_at>'2024-01-01' ORDER BY o.total DESC LIMIT 10
จะถูกจัดรูปแบบด้วยการเยื้องที่เหมาะสม:
SELECT
u.id,
u.name,
o.total
FROM
users u
JOIN orders o ON u.id = o.user_id
WHERE
u.created_at > '2024-01-01'
ORDER BY
o.total DESC
LIMIT
10ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
ตัวจัดรูปแบบ SQL อาจมีปัญหากับส่วนขยายเฉพาะผู้ขายหรือไวยากรณ์ SQL ที่ไม่เป็นมาตรฐานซึ่งไม่เข้ากับกฎการพาร์สมาตรฐาน ตัวระบุที่ใส่เครื่องหมายคำพูดแตกต่างกันไปตามฐานข้อมูล: PostgreSQL ใช้ "User", SQL Server ใช้ [User], และ MySQL ใช้ backtick `user` ตัวแทนพารามิเตอร์ก็แตกต่างกัน: PostgreSQL ใช้ $1, MySQL ใช้ ?, และ SQL Server ใช้ @id ตัวจัดรูปแบบอาจจัดการสิ่งเหล่านี้ได้ไม่ถูกต้องเสมอไป ขึ้นอยู่กับไดอะเล็กต์ที่เลือก คอมเมนต์ใน SQL (ทั้งแบบบรรทัดเดียวและแบบบล็อก) ต้องถูกคงไว้ให้ถูกต้อง เพราะตัวจัดรูปแบบบางตัวอาจจัดการผิดพลาดได้ Stored procedure, ฟังก์ชัน และทริกเกอร์ที่มีโฟลว์การควบคุมซับซ้อนอาจจัดรูปแบบให้สม่ำเสมอได้ยาก SQL แบบไดนามิกที่ประกอบเป็นสตริงอาจจัดรูปแบบได้ไม่ถูกต้อง เพราะตัวจัดรูปแบบมองว่าเป็นสตริงลิเทอรัล ตัวจัดรูปแบบบางตัวอาจจัดการ CASE statement, window function หรือเงื่อนไข JOIN ที่ซับซ้อนได้ไม่ถูกต้อง นักพัฒนาควรตรวจสอบว่าการจัดรูปแบบไม่เปลี่ยนความหมายของคิวรี โดยเฉพาะกรณีขอบที่เกี่ยวข้องกับลำดับความสำคัญของตัวดำเนินการหรือการเรียกใช้ฟังก์ชัน
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้ตัวจัดรูปแบบ SQL บนเบราว์เซอร์สำหรับการจัดรูปแบบคิวรีอย่างรวดเร็ว งานแบบครั้งเดียว หรือเมื่อทำงานนอกสภาพแวดล้อมการพัฒนาของคุณ เหมาะสำหรับจัดรูปแบบคิวรี SQL ที่พบในล็อก เอกสาร หรือโค้ดสไนปเป็ตที่แชร์กัน สำหรับโค้ดโปรดักชัน ให้ใช้ตัวจัดรูปแบบที่ผสานใน IDE หรือเครื่องมือบรรทัดคำสั่งที่สามารถผสานเข้ากับ pre-commit hook และไปป์ไลน์ CI/CD ได้ เครื่องมือจัดการฐานข้อมูลมักมีตัวจัดรูปแบบในตัวที่เข้าใจสคีมาฐานข้อมูลของคุณโดยเฉพาะ เครื่องมือบนเบราว์เซอร์เด่นเรื่องการจัดรูปแบบเฉพาะหน้า ขณะที่โซลูชันที่อยู่ในโค้ดให้ความสม่ำเสมอ การทำงานอัตโนมัติ และการผสานกับระบบควบคุมเวอร์ชัน สำหรับโค้ดเบสขนาดใหญ่ การจัดรูปแบบ SQL แบบอัตโนมัติช่วยให้สไตล์สม่ำเสมอในคิวรีฐานข้อมูลทั้งหมด