תחביר וצורת כתיבה

כללי תחביר בסיסיים

1. מילות מפתח (Keywords)

מילות מפתח ב-SQL הן לא רגישות לאותיות (case-insensitive):

-- All אלה עובדים:
SELECT * FROM users;
select * from users;
Select * From Users;

-- ✅ מומלץ: מילות מפתח באותיות גדולות
SELECT * FROM users;

2. סיום פקודה

כל פקודה מסתיימת בנקודה-פסיק (;):

SELECT * FROM users;
SELECT * FROM orders;

3. רווחים ושורות חדשות

SQL מתעלם מרווחים ושורות חדשות:

-- All אלה זהים:
SELECT name, age FROM users WHERE age > 18;

SELECT name, age 
FROM users 
WHERE age > 18;

SELECT 
    name, 
    age 
FROM 
    users 
WHERE 
    age > 18;

סגנון כתיבה מומלץ

מבנה בסיסי של שאילתה

SELECT 
    column1,
    column2,
    column3
FROM 
    table_name
WHERE 
    condition
ORDER BY 
    column1;

דוגמה מעשית

-- ❌ Not recommended - קשה לקריאה
SELECT id,name,email,age FROM users WHERE age>18 AND status='active' ORDER BY name;

-- ✅ מומלץ - קריא וברור
SELECT 
    id,
    name,
    email,
    age
FROM 
    users
WHERE 
    age > 18 
    AND status = 'active'
ORDER BY 
    name;

הערות בקוד

הערת שורה בודדת

-- This הערה
SELECT * FROM users; -- הערה בסוף שורה

הערת בלוק (מרובת שורות)

/* 
    this
   זוהי הערה
   שמשתרעת על
   מספר שורות
*/
SELECT * FROM users;

דוגמה מעשית

-- ============================================
-- Query: משתמשים פעילים מעל גיל 18
-- מחבר: צוות פיתוח
-- תאריך: 2024-01-01
-- ============================================

SELECT 
    id,
    name,
    email
FROM 
    users
WHERE 
    age >= 18           -- רק בגירים
    AND status = 'active'   -- רק פעילים
ORDER BY 
    created_at DESC;    -- מהחדש לישן

מחרוזות וערכים

מחרוזות (Strings)

מחרוזות מוקפות בגרשיים בודדות:

-- ✅ Right 
SELECT * FROM users WHERE name = 'יוסי';

-- ❌ לא בכל מסדי נתונים
SELECT * FROM users WHERE name = "יוסי";

מספרים

מספרים ללא גרשיים:

SELECT * FROM users WHERE age = 25;
SELECT * FROM products WHERE price = 99.99;

ערכי NULL

NULL מייצג ערך חסר (לא אפס, לא ריק):

-- NULL check
SELECT * FROM users WHERE phone IS NULL;
SELECT * FROM users WHERE phone IS NOT NULL;

-- ❌ לא עובד!
SELECT * FROM users WHERE phone = NULL;

שמות ומזהים

כללי שמות טבלאות ועמודות

-- ✅ Recommended: snake_case
user_profiles
order_items
created_at

-- ✅ גם טוב: camelCase
userProfiles
orderItems
createdAt

-- ❌ נמנעים: רווחים ותווים מיוחדים
"user profiles"  -- דורש גרשיים
user-profiles    -- בעייתי

שימוש בגרשיים לשמות מיוחדים

-- MySQL: backticks
SELECT `order` FROM `users`;

-- PostgreSQL/SQL Server: מרכאות כפולות
SELECT "order" FROM "users";

-- SQL Server: סוגריים מרובעים
SELECT [order] FROM [users];

כינויים (Aliases)

כינוי לעמודה

SELECT 
    name AS שם,
    age AS גיל,
    email AS "כתובת מייל"  -- עם רווחים צריך גרשיים
FROM 
    users;

כינוי לטבלה

SELECT 
    u.name,
    o.total
FROM 
    users AS u
    JOIN orders AS o ON u.id = o.user_id;

-- AS אופציונלי:
SELECT 
    u.name,
    o.total
FROM 
    users u
    JOIN orders o ON u.id = o.user_id;

סדר הפקודות בשאילתה

שאילתת SELECT חייבת לעמוד בסדר הבא:

SELECT      -- 1. מה לבחור (עמודות)
FROM        -- 2. מאיפה (טבלאות)
JOIN        -- 3. חיבור טבלאות (אופציונלי)
WHERE       -- 4. תנאים לסינון שורות
GROUP BY    -- 5. קיבוץ (אופציונלי)
HAVING      -- 6. תנאים על קבוצות (אופציונלי)
ORDER BY    -- 7. מיון (אופציונלי)
LIMIT       -- 8. הגבלת תוצאות (אופציונלי)

דוגמה מלאה

SELECT 
    category,
    COUNT(*) AS count,
    AVG(price) AS avg_price
FROM 
    products
JOIN 
    categories ON products.category_id = categories.id
WHERE 
    price > 0
GROUP BY 
    category
HAVING 
    COUNT(*) >= 5
ORDER BY 
    avg_price DESC
LIMIT 10;

טיפים לכתיבה נקייה

  1. עקביות - בחרו סגנון ושמרו עליו
  2. הזחה - השתמשו ב-4 רווחים או TAB
  3. שורות - פקודה חדשה = שורה חדשה
  4. הערות - הסבירו את הלוגיקה, לא את הקוד
  5. שמות משמעותיים - user_id עדיף על uid

← יסודות | המשך לסוגי נתונים →

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. האם SQL רגישה לאותיות גדולות במילות מפתח?

    1. רק ב-MySQL
    2. כן
    3. רק ב-WHERE
    4. לא: SELECT ו-select זהים, אבל נהוג לכתוב מילות מפתח באותיות גדולות
    הצגת התשובה

    תשובה ד. האותיות הגדולות משפרות קריאות.

  2. איך כותבים מחרוזת ב-SQL?

    1. בסוגריים
    2. בלי גרשיים
    3. בגרשיים כפולים בלבד
    4. בגרשיים בודדים: 'דנה'
    הצגת התשובה

    תשובה ד. גרשיים בודדים הם התקן לערכי טקסט.