• בלוג
  • SQL
  • סדרת SQL בסיסי - פוסט 15 - משפט WHERE

סדרת SQL בסיסי - פוסט 15 - משפט WHERE

24/08/2024
SQL

פוסט זה כולל טיפ קצר לעבודה עם SQL. אם אתם רוצים ללמוד איתי SQL מההתחלה ובצורה מקצועית תשמחו לשמוע שבניתי קורס וידאו מלא הכולל שיעורים מוקלטים ותרגולים.
לפרטים נוספים והרשמה בקרו בדף קורס SQL כאן באתר.
 

פקודות select ו update יכולות להסתיים ב where כדי לדייק את השורות עליהן עובדים. ראינו בשיעורים קודמים איך להשתמש ב where כדי למצוא שורות עם ערך ששווה לערך קבוע מסוים או שורות עם ערכי NULL. בשיעור זה נראה עוד כמה אפשרויות לשימוש במשפטי where.

1. שונה, גדול מ, קטן מ

אחרי השווה כמובן שצריכים להמשיך לשונה גדול וקטן. בואו ניצור קצת נתונים:

CREATE TABLE paper_clips (
    id INTEGER PRIMARY KEY,
    type VARCHAR(50) NOT NULL,
    size VARCHAR(20),
    color VARCHAR(20),
    quantity INTEGER
);

INSERT INTO paper_clips (type, size, color, quantity) VALUES
('standard', 'medium', 'silver', 100),
('binder', 'large', 'black', 50),
('mini', 'small', 'red', 200),
('jumbo', 'extra_large', 'blue', 30),
('colored', 'medium', 'green', 150);

ולשאילתות:

  1. נציג את כל השורות שצבען שונה מכסף:
SELECT * FROM paper_clips WHERE color != 'silver';
  1. נציג את כל השורות שהכמות שלהן גדולה מ 100:
SELECT * FROM paper_clips WHERE quantity > 100;
  1. כמות קטנה מ 100:
SELECT * FROM paper_clips WHERE quantity < 100;
  1. כמות גדולה או שווה 50:
SELECT * FROM paper_clips WHERE quantity >= 50;
  1. גודל גדול יותר מ hello:
SELECT * FROM paper_clips WHERE size > 'hello';

השאילתה האחרונה נשמעת מוזרה - מה זה אומר שהגודל גדול יותר מהמילה hello? הרי גודל הוא מחרוזת? התשובה שב SQL אנחנו משווים מחרוזות לפי המיקום שלהן בסדר מילוני, לדוגמה מילה שמתחילה ב d תהיה גדולה יותר ממילה שמתחילה ב a.

2. בין

המילה between מאפשרת לבחור ערכים שנמצאים בטווח מסוים לדוגמה כל השורות בהן הכמות היא בין 20 ל 50:

SELECT * FROM paper_clips WHERE quantity between 20 and 50;

תנאי between כולל את שני הערכים שבקצה ולכן השאילתה תחזיר גם שורות בהן ה quantity היא 20, 50 וכל מה שביניהם.

3. אחד מ

המילה in מאפשרת לבחור שורות בהן הערך שאנחנו מחפשים הוא אחד מכמה ערכים קבועים. לדוגמה הצגת כל השורות בהן הגודל הוא large או small:

select * from paper_clips where size in ('large', 'small');

4. חיבור תנאים (או, וגם, לא)

ניתן לחבר מספר תנאים בפקודת WHERE באמצעות המילים AND, OR ו NOT. המילה OR תחזיר תנאי שיצליח אם אחד מהתנאים שמרכיבים אותו הוא אמיתי, המילה AND דורשת שכל התנאים שמרכיבים את התנאי הגדול יהיו אמיתיים והמילה NOT הופכת תנאי. כמה דוגמאות:

  1. נציג את כל השורות בהן הגודל הוא בינוני או גדול וגם הכמות מעל 100:
select * from paper_clips where size in ('large', 'small') AND quantity > 100;
  1. נציג את כל השורות בהן הכמות קטנה מ 50 או גדולה מ 150:
select * from paper_clips where quantity < 50 OR quantity > 150;
  1. הצגת כל השורות בהן הגודל הוא "קטן" או "בינוני" והכמות קטנה מ 50, או שהכמות גדולה מ 150:
select * from paper_clips where
  (quantity < 50 AND size in ('small', 'medium'))
  OR quantity > 150;
  1. הצגת כל השורות בהן הצבע אדום והכמות גדולה מ 100:
select * from paper_clips where color = 'red' AND quantity > 100;
  1. הצגת כל השורות מלבד אלה שהתאימו ל-4:
select * from paper_clips where NOT (color = 'red' AND quantity > 100);

שימו לב שאני משתמש בסוגריים כדי לחבר תנאים כשהחיבור מסובך כדי להבהיר לקורא ולמחשב מה סדר הפעולות לביצוע - בדוגמה האחרונה כדי להבהיר שה NOT מופעל על כל התנאי שאחריו, וה AND מופעל רק על שני התנאים שצמודים אליו.