סדרת SQL בסיסי - פוסט 11 - עדכון טבלאות

20/08/2024

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

1. הוספת עמודה

אם יצרתם טבלה ואתם צריכים להוסיף לה עמודה, ולא רוצים למחוק את הטבלה וליצור אותה מחדש (כי כבר יש בה מידע חשוב) תוכלו להפעיל את הפקודה alter table עם בלוק add. ניצור מחדש את דוגמת כוכבי הלכת שלנו מהשיעור הקודם:

CREATE TABLE planets (
    id INTEGER PRIMARY KEY,
    name VARCHAR(50),
    diameter_km FLOAT,
    distance_from_sun_mkm FLOAT,
    number_of_rings INTEGER
);

INSERT INTO planets (id, name, diameter_km, distance_from_sun_mkm, number_of_rings) VALUES
(1, 'Mercury', 4879.4, 57.9, 0),
(2, 'Venus', 12104, 108.2, 0),
(3, 'Earth', 12742, 149.6, 0),
(4, 'Jupiter', 139820, 778.5, 4),
(5, 'Saturn', 116460, 1434, 7);

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

alter table planets add moons integer default 0;

מבנה הפקודה:

  1. מתחילים עם alter table
  2. לאחר מכן שם הטבלה
  3. אחרי זה המילה add
  4. שם העמודה להוספה
  5. סוג המידע בעמודה והרחבות נוספות על סוג המידע (כמו ערך ברירת מחדל או UNIQUE או NOT NULL).

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

update planets set moons = 1 where name = 'Earth'

2. מחיקת עמודה

בשביל למחוק עמודה מטבלה אני משתמש בבלוק drop column אחרי התחילית alter table, לדוגמה בשביל למחוק את עמודת הירחים החדשה שיצרתי אני מפעיל:

alter table planets drop column moons;

3. שינוי שם עמודה

בשביל לשנות שם של עמודה אני משתמש בבלוק rename column אחרי התחילית alter table. לדוגמה בשביל לשנות את שם העמודה name ל planet_name אני יכול לכתוב:

alter table planets rename column name to planet_name;

4. מחיקת טבלה

ואם נמאס לכם לגמרי מהטבלה אתם לא צריכים למחוק את כל בסיס הנתונים. הפקודה drop table תמחק טבלה ואת כל הנתונים שבה:

drop table planets;