איך להשתמש בו
- הדביקו שאילתת SQL אחת או יותר, או לחצו על “נסה דוגמה”.
- בחרו את הניב של מסד הנתונים שלכם, כך שמילות המפתח, אופן הציטוט והאופרטורים שלו יזוהו.
- הגדירו רישיות מילות מפתח והזחה. השאילתה המעוצבת מופיעה בצד ימין תוך כדי הקלדה.
- לחצו על Minify לקבלת גרסה בשורה אחת, ולאחר מכן העתיקו את התוצאה או הורידו אותה כקובץ .sql.
איך זה עובד
העיצוב משתמש בספריית הקוד הפתוח sql-formatter. היא מפצלת את השאילתה לאסימונים לפי כללי הדיאלקט שתבחרו, מציבה כל משפט ראשי (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) בשורה נפרדת, מוסיפה הזחה לרשימות העמודות ולתנאים, ומחילה את רישיות מילות המפתח שבחרתם. היא משנה רווחים, ואם ביקשתם, גם את רישיות האותיות של מילות המפתח; מזהים, מחרוזות והערות נשמרים. בחירת הדיאלקט הנכון חשובה: לדוגמה, backticks מצטטים שמות ב-MySQL, סוגריים מרובעים ב-SQL Server, ו-$$ מתחיל גוף פונקציה ב-PostgreSQL.
המעצב הוא כלי פריסה, לא מסד נתונים. הוא אינו בודק אם טבלאות או עמודות קיימות ואינו מאמת את הדקדוק המלא, כך שחלק מה-SQL השגוי מעוצב ללא התראה. כאשר אינו מצליח להבין את הקלט, למשל סוגריים שלא נסגרו, הוא מדווח על השורה והעמודה שבהן עצר.
Minify פועל אחרת: הוא שומר כל אסימון, מצמצם כל רצף רווחים לרווח בודד ומסיר הערות (הערות אופטימיזציה כמו /*+ INDEX(t) */ והערות MySQL /*! … */ נשמרות, כי הן משנות התנהגות). מחרוזות, מזהים מצוטטים וגופים עם ציטוט דולר מועתקים ללא שינוי. אם ציטוט או הערה אינם נסגרים, Minify נעצר עם שגיאה במקום לנחש.
דוגמאות
קריאת שאילתה מתוך לוג
יומן שאילתות איטיות מציג שורה אחת באורך 400 תווים. עם הדיאלקט MySQL ומילות מפתח באותיות רישיות, היא הופכת לבלוק קריא שבו כל תנאי JOIN ו-WHERE נמצא בשורה משלו, וכך קל לזהות את האינדקס החסר.
סגנון עקבי לסקירת קוד
צוות מעצב כל מיגרציה עם הניב PostgreSQL, מילות מפתח באותיות קטנות והזחה של 4 רווחים לפני commit, כך שהשוואת diff מציגה רק שינויים אמיתיים.
שילוב SQL בקוד
הפעולה Minify הופכת שאילתת דוח עם הערות וריבוי שורות לשורה אחת, כגון SELECT id, name FROM users WHERE active = 1 ORDER BY name, מוכנה להדבקה כמחרוזת בסקריפט.
שאלות נפוצות
אילו מסדי נתונים נתמכים?
Standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark SQL, Hive, Trino/Presto, DuckDB, IBM Db2, SingleStoreDB, TiDB ו-Couchbase N1QL.
האם העיצוב ישנה את מה שהשאילתה עושה?
העיצוב לא אמור: רק רווחים, ואם נבחר, שינוי רישיות של מילות מפתח. רישיות מילות המפתח אינה משנה ב-SQL. בכל זאת, בדקו את הפלט שנוצר לפני הרצה על נתוני ייצור, במיוחד עבור תכונות חריגות של הניב.
מדוע קיבלתי “לא ניתן לעצב”?
המנתח נתקל במשהו שלא ניתן לשייך, בדרך כלל סוגר או מרכאות שלא נסגרו, או תחביר מניב אחר. בדקו את השורה והעמודה בהודעה וודאו שהניב שנבחר תואם למסד הנתונים שלכם.
האם הוא מאמת את ה-SQL שלי?
לא. הכלי אינו מחובר למסד נתונים ואינו מכיר את הסכמה שלכם. שאילתה יכולה לעבור עיצוב ועדיין להיכשל בהרצה.
פרטיות
ה-SQL שלך מעוצב בדפדפן באמצעות JavaScript. הוא אינו מועלה, נשמר או נכלל בניתוח נתונים, והכלי לעולם אינו מתחבר למסד נתונים.