סדרת SQL בסיסי - פוסט 9 - עדכון נתונים

18/08/2024

בסיסי נתונים תומכים ב-4 סוגים של פעולות על המידע שזכו לקיצור CRUD. הפעולות הן Create, Read, Update, Delete או בעברית "יצירה", "קריאה", "עדכון" ו"מחיקה". ראינו כבר איך לבצע את השתיים הראשונות ובחלק זה נעבור לדבר על עדכונים ומחיקות.

1. עדכון כל השורות

נתחיל ביצירת טבלה של שירים. הריצו את הפקודות הבאות ב SQLime או בבסיס הנתונים המועדף עליכם:

CREATE TABLE songs (
    id INT PRIMARY KEY,
    title VARCHAR(100),
    artist VARCHAR(100),
    album VARCHAR(100),
    release_year INT,
    genre VARCHAR(50),
    duration VARCHAR(50)
);

INSERT INTO songs (id, title, artist, album, release_year, genre, duration)
VALUES 
(1, 'Bohemian Rhapsody', 'Queen', 'A Night at the Opera', 1975, 'Rock', '05:55'),

(2, 'Shape of You', 'Ed Sheeran', '÷ (Divide)', 2017, 'Pop', '04:24'),

(3, 'Hotel California', 'Eagles', 'Hotel California', 1976, 'Rock', '06:30');

פקודת SELECT * FROM songs מחזירה כעת את הנתונים:

id  title   artist  album   release_year    genre   duration
1   Bohemian Rhapsody   Queen   A Night at the Opera    1975    Rock    05:55
2   Shape of You    Ed Sheeran  ÷ (Divide) 2017    Pop 04:24
3   Hotel California    Eagles  Hotel California    1976    Rock    06:30

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

UPDATE songs SET release_year = 1234;

בשביל לעדכן מספר עמודות אני מפריד אותן בפסיק לדוגמה:

update songs set artist = 'a', duration = '02:23';

בנוסף אפשר להשתמש בביטוי חשבוני בעדכון כדי לקבל ערך חדש המבוסס על הערך הקודם לדוגמה:

update songs set release_year = release_year + 5;

2. עדכון רק חלק מהשורות - פקודת WHERE

הפקודה where מאפשרת להריץ פקודת SQL רק על חלק מהשורות. בלוק where יעזור לנו גם בפקודות select כדי לקבל רק חלק מהשורות, ויהיה קריטי בפקודות update כדי לעדכן רק חלק מהשורות.

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

select * from songs where release_year > 2000;

והתוצאה היא רק השיר של אד שירן. או בשביל לקבל כמה שורות אני מפעיל את הפקודה:

select * from songs where genre = 'Rock';

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

כשמוסיפים את WHERE ל UPDATE אנחנו יכולים לעדכן רק חלק מהשורות לדוגמה הפקודה הבאה תעדכן את השנה רק לשיר של אד שירן:

update songs set release_year=1234 where release_year > 2000;

הרבה פעמים כשאנחנו רוצים להפעיל פקודת update רק על שורה בודדת נעדיף להשתמש ב id בתוך ה where, כי אנחנו יודעים שיש רק שורה אחת עם כל id. הפקודה הבאה מעדכן את הז'אנר של האיגלס:

update songs set genre = 'Pop' where id=3;

3. עכשיו אתם

  1. הפעילו את SQLime על בסיס הנתונים לדוגמה שלהם ושנו את שם המחלקה מ hr ל Human Resources לעובדים ב hr.

  2. העלו את המשכורת ב 5 לכל העובדים.

  3. ראינו איך להוסיף ערך מספרי למידע בעמודה עם set. מה קורה כשאתם מנסים לשנות כך עמודת טקסט? נסו להוסיף ערך קבוע לשמות של כל העובדים כדי לבדוק מה קורה.