ข้ามไปยังเนื้อหา

เครื่องมือจัดรูปแบบและตรวจสอบ SQL - จัดรูปแบบคิวรี SQL ออนไลน์ฟรี

เครื่องมือจัดรูปแบบและตรวจสอบ SQL ฟรี จัดรูปแบบ SQL โดยอัตโนมัติด้วยการเยื้องและตัวพิมพ์ใหญ่ที่ถูกต้อง ตรวจสอบข้อผิดพลาดทางไวยากรณ์ได้ทันที ใช้งานได้กับ MySQL, PostgreSQL, SQL Server, Oracle

เครื่องมือจัดรูปแบบและตรวจสอบ SQL

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

ป้อนคิวรี SQL เพื่อดูผลลัพธ์ที่จัดรูปแบบ
เครื่องคำนวณโหลด...
📚

เอกสารประกอบการใช้งาน

SQL ฟอร์แมตเตอร์และตัวตรวจสอบ SQL คืออะไร?

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

วิธีจัดรูปแบบคำสั่ง SQL

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

กฎการจัดรูปแบบ SQL

การใช้ตัวพิมพ์ใหญ่กับคีย์เวิร์ด

ฟอร์แมตเตอร์จะเปลี่ยนคีย์เวิร์ด SQL ตามรายการที่กำหนดไว้ให้เป็นตัวพิมพ์ใหญ่ทุกแห่งที่คีย์เวิร์ดนั้นอยู่นอกสตริงหรือตัวระบุที่มีเครื่องหมายอัญประกาศ รายการนี้ครอบคลุมส่วนคำสั่งหลัก ได้แก่ SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT และ OFFSET คำที่ใช้เชื่อมตาราง ได้แก่ JOIN, LEFT, RIGHT, INNER, OUTER, FULL, CROSS, NATURAL, ON และ USING ตัวดำเนินการเซต ได้แก่ UNION, INTERSECT และ EXCEPT ประเภทคำสั่ง ได้แก่ INSERT, UPDATE, DELETE, CREATE, ALTER และ DROP รวมถึงตัวดำเนินการและคำเชื่อมที่ใช้บ่อย ได้แก่ AND, OR, NOT, IN, BETWEEN, LIKE, AS, CASE, WHEN, THEN, ELSE, END, ALL, DISTINCT, VALUES, SET และคำอื่นอีกเล็กน้อย

คำบางคำที่ดูเหมือนคีย์เวิร์ดจะคงรูปแบบตามที่พิมพ์ ฟังก์ชันรวมกลุ่ม เช่น COUNT, SUM และ AVG ไม่อยู่ในรายการ ดังนั้น count(*) จะยังเป็นตัวพิมพ์เล็กหากพิมพ์มาเป็นตัวพิมพ์เล็ก คำระบุทิศทางการเรียงลำดับ ASC และ DESC รวมถึงค่าลิเทอรัล TRUE, FALSE และ NULL เมื่ออยู่โดยลำพัง ก็จะไม่ถูกแก้ไขเช่นกัน ข้อความภายในลิเทอรัลสตริง ('...') ตัวระบุที่มีเครื่องหมายอัญประกาศ ("...", `...` หรือ [...]) หรือคอมเมนต์ จะไม่ถูกเปลี่ยนแปลงไม่ว่าจะมีข้อความใดอยู่ภายใน

การขึ้นบรรทัดและการเยื้อง

แต่ละส่วนคำสั่งหลักจะเริ่มบรรทัดใหม่ที่ขอบซ้าย ได้แก่ SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT และ OFFSET การเชื่อมตารางจะเริ่มบรรทัดใหม่เป็นหน่วยเดียว ดังนั้น LEFT JOIN, FULL OUTER JOIN และ CROSS JOIN จะอยู่ด้วยกันแทนที่จะแยกเป็นสองบรรทัด UNION และ UNION ALL จะมีบรรทัดว่างทั้งด้านบนและด้านล่าง เพื่อแยกคำสั่งที่นำมารวมกัน CASE และ END จะเริ่มบรรทัดใหม่ ส่วน WHEN, THEN และ ELSE จะเริ่มบรรทัดที่เยื้องเข้าไป เครื่องหมายจุลภาคทุกตัวจะเริ่มบรรทัดใหม่ด้วย ดังนั้นรายการคอลัมน์ใน SELECT หรือ GROUP BY จะแสดงคอลัมน์ละหนึ่งบรรทัด

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

ตัวอย่าง: ก่อนและหลังการจัดรูปแบบ

ก่อน:

1select id, first_name, last_name, email from customers where status = 'active' order by last_name, first_name;
2

หลัง:

1SELECT id,
2first_name,
3last_name,
4email
5FROM customers
6WHERE status = 'active'
7ORDER BY last_name,
8first_name;
9

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

วงเล็บทำให้ผลลัพธ์เปลี่ยนไป การจัดรูปแบบ (select count(*) from employees e where e.department_id = d.id) ซึ่งเป็นส่วนหนึ่งของคำสั่งขนาดใหญ่ จะเยื้อง SELECT, FROM และ WHERE ภายในสองช่องว่าง และคง count เป็นตัวพิมพ์เล็ก เนื่องจากเป็นชื่อฟังก์ชัน ไม่ใช่คีย์เวิร์ดในรายการ

ตัวตรวจสอบ SQL ตรวจสอบอะไรบ้าง

ตัวตรวจสอบจะค้นหาปัญหาด้านโครงสร้างโดยไม่เชื่อมต่อกับฐานข้อมูล:

  • เครื่องหมายอัญประกาศ วงเล็บเหลี่ยม และคอมเมนต์ที่ไม่ปิด เครื่องหมายอัญประกาศเดี่ยว ('), เครื่องหมายอัญประกาศคู่ ("), แบ็กทิก (`), วงเล็บเหลี่ยม ([) หรือคอมเมนต์แบบบล็อก (/*) ที่เปิดไว้แต่ไม่เคยปิด
  • วงเล็บไม่สมดุล จำนวน ( และ ) ที่อยู่นอกสตริงและคอมเมนต์ต้องเท่ากัน
  • คำสั่งย่อยที่ไม่มีวงเล็บ SELECT ตัวที่สองซึ่งอยู่นอกวงเล็บใด ๆ เช่น SELECT * FROM SELECT id FROM t คำสั่งสองคำสั่งที่เชื่อมด้วยตัวดำเนินการเซต (UNION, UNION ALL, INTERSECT, EXCEPT) จะไม่ถูกแจ้งเตือน เพราะตัวถูกดำเนินการเหล่านั้นไม่จำเป็นต้องมีวงเล็บ เช่นเดียวกับคำสั่งสองคำสั่งที่คั่นด้วยเครื่องหมายอัฒภาค
  • WHERE ที่เริ่มด้วย AND หรือ OR ตัวเชื่อมที่อยู่ต้นส่วนคำสั่งโดยไม่มีสิ่งใดอยู่ก่อนหน้า
  • JOIN ที่ไม่มีเงื่อนไขคู่กัน JOIN ต้องมีส่วนคำสั่ง ON หรือ USING CROSS JOIN และ NATURAL JOIN ได้รับการยกเว้น เนื่องจากไม่รับส่วนคำสั่งดังกล่าว
  • GROUP BY หรือ ORDER BY ที่ว่างเปล่า มีเพียงคีย์เวิร์ดของส่วนคำสั่งโดยไม่มีคอลัมน์ตามหลังเมื่ออยู่ท้ายคำสั่ง
  • เงื่อนไข WHERE ที่ไม่สมบูรณ์ การเปรียบเทียบที่ค้างอยู่ เช่น WHERE status = โดยไม่มีค่าตามหลัง หรือมีเพียง WHERE โดยไม่มีสิ่งใดตามหลังเมื่ออยู่ท้ายคำสั่ง
  • SELECT ที่ไม่มี FROM จะแจ้งเตือนเฉพาะเมื่อรายการที่เลือกเป็นชื่อคอลัมน์ธรรมดา นิพจน์ การเรียกใช้ฟังก์ชัน ลิเทอรัล หรือฟังก์ชันค่าที่เขียนโดยไม่มีวงเล็บ เช่น CURRENT_DATE สามารถใช้ได้โดยลำพัง ดังนั้น SELECT 1 + 1 และ SELECT CURRENT_DATE จึงไม่ถูกแจ้งเตือน
  • ลำดับของส่วนคำสั่ง ตรวจสอบเฉพาะสองกรณี ได้แก่ GROUP BY ต้องไม่มาก่อน WHERE และ ORDER BY ต้องไม่มาก่อน GROUP BY การตรวจสอบจะทำที่ระดับบนสุดของคำสั่ง โดยไม่นับสิ่งที่อยู่ภายในคำสั่งย่อย

สิ่งที่เครื่องมือนี้ไม่ตรวจสอบ

ตัวตรวจสอบไม่ทราบว่าตารางหรือคอลัมน์มีอยู่จริงหรือไม่ คอลัมน์ที่นำมาเชื่อมมีชนิดข้อมูลที่เข้ากันได้หรือไม่ หรือคำสั่งจะทำงานได้ดีเพียงใด นอกจากนี้ยังไม่แจ้งเตือนทุกกฎที่ฐานข้อมูลจริงบังคับใช้ ตัวอย่างเช่น ยอมรับการใช้ HAVING โดยไม่มี GROUP BY เพราะการจัดกลุ่มผลลัพธ์ทั้งหมดเป็นกลุ่มโดยปริยายหนึ่งกลุ่มเป็น SQL ที่ถูกต้อง ดังนั้นตัวตรวจสอบจึงไม่รายงานข้อผิดพลาดกรณีนี้ เช่นเดียวกัน ตัวตรวจสอบไม่ตรวจว่าคอลัมน์ที่ไม่ใช่ฟังก์ชันรวมทุกคอลัมน์ในรายการ SELECT ปรากฏอยู่ใน GROUP BY ด้วยหรือไม่ กฎนี้มีอยู่ในฐานข้อมูลส่วนใหญ่ แต่เครื่องมือนี้ไม่ตรวจสอบ การไม่มีเครื่องหมายอัฒภาคท้ายคำสั่งก็ไม่ถูกแจ้งเตือนเช่นกัน เพราะเครื่องหมายอัฒภาคเป็นตัวคั่นคำสั่ง ไม่ใช่ส่วนหนึ่งของคำสั่งเดียว

ตัวอย่าง: ข้อผิดพลาดที่ตัวตรวจสอบตรวจพบ

1SELECT id FROM orders
2JOIN users
3WHERE status =
4

คำสั่งนี้ทำให้เกิดข้อผิดพลาดสองรายการ:

  1. "คำสั่ง JOIN อย่างน้อยหนึ่งรายการไม่มีเงื่อนไข ON" — JOIN users ไม่มีส่วนคำสั่ง ON หรือ USING
  2. "เงื่อนไข WHERE ไม่สมบูรณ์" — status = ไม่มีค่าหลังเครื่องหมายเท่ากับ

คำถามที่พบบ่อย

เครื่องมือนี้ทำงานกับ MySQL, PostgreSQL, SQL Server และ Oracle ได้หรือไม่?

เครื่องมือนี้รองรับไวยากรณ์ SQL หลักที่ฐานข้อมูลเหล่านี้ใช้ร่วมกัน ได้แก่ SELECT, JOIN, WHERE, GROUP BY และส่วนคำสั่งอื่นที่คล้ายกัน ไวยากรณ์เฉพาะของฐานข้อมูล เช่น ลิเทอรัลอาร์เรย์ของ PostgreSQL หรือบล็อกโพรซีเยอร์ของ T-SQL จะไม่ทำให้ฟอร์แมตเตอร์ทำงานผิดพลาด แต่อาจไม่ได้รับการจัดการเป็นพิเศษ

คำสั่ง SQL ถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?

ไม่ การจัดรูปแบบและการตรวจสอบทำงานในเบราว์เซอร์ทั้งหมด ข้อความคำสั่งจะไม่ถูกส่งไปที่ใด

เครื่องมือนี้ทำให้ชื่อฟังก์ชันอย่าง COUNT, SUM และ AVG เป็นตัวพิมพ์ใหญ่หรือไม่?

ไม่ เฉพาะคีย์เวิร์ดของส่วนคำสั่ง คำที่ใช้เชื่อมตาราง และตัวดำเนินการตามรายการที่กำหนดไว้เท่านั้นที่เปลี่ยนเป็นตัวพิมพ์ใหญ่ ชื่อฟังก์ชัน เช่น count, sum และ avg รวมถึงคำว่า asc, desc, true, false และ null จะคงไว้ตรงตามที่พิมพ์

ตัวตรวจสอบแจ้งเตือนการใช้ HAVING โดยไม่มี GROUP BY หรือไม่?

ไม่ ส่วนคำสั่ง HAVING ที่ไม่มี GROUP BY จะจัดกลุ่มผลลัพธ์ทั้งหมดเป็นกลุ่มเดียว ซึ่งเป็น SQL ที่ถูกต้องตามมาตรฐาน ISO/IEC 9075 ดังนั้นตัวตรวจสอบจึงไม่ถือว่าเป็นข้อผิดพลาด

ตัวตรวจสอบตรวจพบข้อผิดพลาดของ SQL ได้ทุกประเภทหรือไม่?

ไม่ ตัวตรวจสอบโครงสร้าง เช่น วงเล็บ เครื่องหมายอัญประกาศ กฎเกี่ยวกับลำดับของส่วนคำสั่งบางรายการ และช่องโหว่ทางตรรกะที่พบบ่อย เช่น JOIN ที่ไม่มีเงื่อนไข แต่ไม่ตรวจชื่อของตารางหรือคอลัมน์ ชนิดข้อมูล หรือประสิทธิภาพของคำสั่ง ยังคงต้องเชื่อมต่อกับฐานข้อมูลจริงเพื่อยืนยันว่าคำสั่งทำงานได้อย่างถูกต้อง

การจัดรูปแบบเปลี่ยนวิธีทำงานของคำสั่งหรือไม่?

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

เอกสารอ้างอิง