SQL Cheat Sheet: דף עזר לפקודות SQL
עודכן לאחרונה
שליפת נתונים (SELECT)
הליבה של SQL: קריאת שורות מטבלה אחת או יותר.
| פעולה | תחביר |
|---|---|
| בחירת כל העמודות | SELECT * FROM users; |
| בחירת עמודות מסוימות | SELECT id, name FROM users; |
| שינוי שם עמודה (alias) | SELECT name AS full_name FROM users; |
| ערכים ייחודיים | SELECT DISTINCT country FROM users; |
| הגבלת מספר השורות | SELECT * FROM users LIMIT 10; |
| דילוג ואז הגבלה (עימוד) | SELECT * FROM users LIMIT 10 OFFSET 20; |
| ספירת שורות | SELECT COUNT(*) FROM users; |
סינון שורות (WHERE)
צמצום השורות ששאילתה מחזירה.
| פעולה | תחביר |
|---|---|
| שוויון / השוואה | WHERE age >= 18 |
| כמה תנאים | WHERE age >= 18 AND country = 'US' |
| אחד מהתנאים | WHERE role = 'admin' OR role = 'owner' |
| בתוך קבוצה | WHERE country IN ('US', 'CA', 'MX') |
| בתוך טווח | WHERE price BETWEEN 10 AND 50 |
| התאמת תבנית | WHERE email LIKE '%@gmail.com' |
| הוא / אינו null | WHERE deleted_at IS NULL |
| שלילה | WHERE status NOT IN ('archived') |
מיון וקיבוץ
| פעולה | תחביר |
|---|---|
| מיון בסדר עולה (ברירת מחדל) | ORDER BY created_at |
| מיון בסדר יורד | ORDER BY created_at DESC |
| מיון לפי כמה עמודות | ORDER BY country, name DESC |
| קיבוץ שורות | SELECT country, COUNT(*) FROM users GROUP BY country; |
| סינון קבוצות | GROUP BY country HAVING COUNT(*) > 100 |
Joins
שילוב שורות משתי טבלאות לפי עמודה תואמת.
| סוג ה-join | מחזיר | תחביר |
|---|---|---|
| INNER JOIN | רק שורות שיש להן התאמה בשתי הטבלאות | FROM orders o INNER JOIN users u ON o.user_id = u.id |
| LEFT JOIN | כל השורות מהשמאלית + התאמות (אחרת null) | FROM users u LEFT JOIN orders o ON o.user_id = u.id |
| RIGHT JOIN | כל השורות מהימנית + התאמות | FROM orders o RIGHT JOIN users u ON o.user_id = u.id |
| FULL OUTER JOIN | כל השורות משני הצדדים | FROM a FULL OUTER JOIN b ON a.id = b.a_id |
| CROSS JOIN | כל הצירופים (מכפלה קרטזית) | FROM sizes CROSS JOIN colors |
| Self join | טבלה שמצורפת לעצמה | FROM employees e JOIN employees m ON e.manager_id = m.id |
פונקציות צבירה
חישוב ערך יחיד על פני קבוצת שורות.
| פונקציה | מה היא עושה |
|---|---|
COUNT(*) | מספר השורות |
COUNT(col) | מספר הערכים שאינם null |
SUM(col) | סכום של עמודה מספרית |
AVG(col) | ערך ממוצע |
MIN(col) / MAX(col) | הערך הקטן ביותר / הגדול ביותר |
STRING_AGG(col, ',') | שרשור ערכים (Postgres; GROUP_CONCAT ב-MySQL) |
פונקציות חלון
חישוב על פני קבוצת שורות בלי לכווץ אותן לשורה אחת.
| פונקציה | תחביר |
|---|---|
| מספר שורה | ROW_NUMBER() OVER (ORDER BY score DESC) |
| דירוג (עם פערים) | RANK() OVER (PARTITION BY country ORDER BY score DESC) |
| דירוג צפוף | DENSE_RANK() OVER (ORDER BY score DESC) |
| סכום מצטבר | SUM(amount) OVER (ORDER BY created_at) |
| השורה הקודמת / הבאה | LAG(score) OVER (ORDER BY date), LEAD(score) OVER (...) |
שינוי נתונים (INSERT, UPDATE, DELETE)
| פעולה | תחביר |
|---|---|
| הוספת שורה | INSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com'); |
| הוספת כמה שורות | INSERT INTO users (name) VALUES ('Ada'), ('Alan'); |
| עדכון שורות | UPDATE users SET active = true WHERE id = 1; |
| מחיקת שורות | DELETE FROM users WHERE active = false; |
| Upsert (Postgres/SQLite) | INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name; |
הגדרת טבלאות (DDL)
| פעולה | תחביר |
|---|---|
| יצירת טבלה | CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL); |
| הוספת עמודה | ALTER TABLE users ADD COLUMN age INTEGER; |
| מחיקת עמודה | ALTER TABLE users DROP COLUMN age; |
| מחיקת טבלה | DROP TABLE users; |
| יצירת אינדקס | CREATE INDEX idx_users_email ON users (email); |
| מפתח זר | FOREIGN KEY (user_id) REFERENCES users (id) |
כל פקודה, פסוקית ו-join של SQL שאתם צריכים, בעמוד אחד. ה-SQL cheat sheet הזה הוא דף עזר מהיר לשליפה ולשינוי של נתונים רלציוניים: פסוקיות SELECT, ארבעת סוגי ה-JOIN, צבירה, וה-DDL וה-DML שמשמשים ליצירה ולעדכון של טבלאות.
התחביר כאן הוא SQL ANSI סטנדרטי ועובד ב-PostgreSQL, MySQL, SQLite ו-SQL Server, אלא אם צוין אחרת. העתיקו את מה שאתם צריכים, או נסו כל שאילתה בזמן אמת בעורך האונליין של SQL, בלי להתקין מסד נתונים. חדשים במסדי נתונים? קורס ה-SQL האינטראקטיבי והחינמי של Coddy מלמד שאילתות, joins וצבירה.
שאלות נפוצות על ה-SQL cheat sheet
האם ה-SQL cheat sheet הזה חינמי?
האם זה עובד ב-MySQL, PostgreSQL ו-SQLite?
SELECT, WHERE, JOIN, GROUP BY ו-DDL שמוצג כאן הוא SQL ANSI סטנדרטי ורץ אותו דבר ב-MySQL, PostgreSQL, SQLite ו-SQL Server. כמה יכולות מתקדמות שונות בין הדיאלקטים, בעיקר upserts וצבירת מחרוזות, והשורות האלה מציינות את ההבדל.מה ההבדל בין INNER JOIN ל-LEFT JOIN?
INNER JOIN מחזיר רק את השורות שיש להן התאמה בשתי הטבלאות. LEFT JOIN מחזיר כל שורה מהטבלה השמאלית (הראשונה), וממלא NULL בעמודות של הטבלה הימנית כשאין התאמה. זה שימושי כשרוצים את כל המשתמשים גם אם לחלקם אין הזמנות.אפשר לתרגל את פקודות ה-SQL האלה אונליין?
SELECT ועד joins ופונקציות חלון.