1. דף הבית
  2. קורסים אונליין
  3. קורס MySQL אונליין
  4. מושגי יסוד במסדי נתונים וניהול טבלאות

מושגי יסוד במסדי נתונים וניהול טבלאות

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

הכרת מבנה מסד הנתונים

SQL (שפת שאילתות מובנית) מספקת דרך מובנית ליצור, לנהל ולתפעל מסדי נתונים יחסיים. לפני שאנו צוללים לכתיבת פקודות SQL, נכיר את המרכיבים הבסיסיים של עולם מסדי הנתונים.

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

טבלה (Table) היא מבנה בסיסי בתוך מסד נתונים. היא מאחסנת נתונים בשורות ובעמודות, בדומה לגיליון אלקטרוני. כל טבלה מורכבת מעמודות (שדות) המגדירים את סוג הנתונים המאוחסנים ושורות (רשומות) המכילות הזנות נתונים בודדים.

רשומה (Record) היא שורה בודדת בטבלה, המכילה נתונים קשורים. כל רשומה מייצגת ישות, כגון משתמש, מוצר או הזמנה.

סכמה (Scheme) היא רשימת שמות העמודות בטבלה, ולמעשה הכותרת של הטבלה.

דוגמה:

נניח שלפנינו מסד נתונים המשמש חנות וירטואלית באינטרנט. שם המסד db_vshop. מסד הנתונים כולל מספר טבלאות: טבלה בשם users המאחסנת את המשתמשים הרשומים, טבלה בשם products המאחסנת את רשימת המוצרים, טבלה בשם orders המאחסנת את ההזמנות שנעשו, טבלה בשם deals המאחסנת את המבצעים וכן הלאה.

נציג לדוגמה חלק מטבלת המוצרים באותו מסד הנתונים.

id - מזהה המוצר name - שם המוצר price_original - מחיר מקורי לפני הנחה price_final - מחיר סופי לאחר הנחה inventory - כמות זמינה במלאי
1 מסך מחשב 500 449 5
2 מקלדת 120 99 15

בטבלה זו אנו רואים את סכימת הטבלה שכוללת 5 שדות: id, name, price_original, price_final, inventory. בטבלה 2 רשומות, כאשר כל רשומה מתארת מוצר. לכל מוצר הגדרנו את ערכי הסכמה הרלוונטיים עבורו: מזהה המוצר (id), שם (name), מחיר מקורי לפני הנחה (price_original), מחיר סופי לאחר הנחה (price_final) וכמות זמינה במלאי (inventory).

יצירה, שימוש ומחיקה של מסדי נתונים

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

כאשר העבודה מול מסד הנתונים נעשית באמצעות ממשק מבוסס prompt (ממשק לביצוע פקודות בלבד) או באמצעות קוד, נעזר בשאילתות SQL לניהול מסד הנתונים.

יצירת מסד נתונים חדש

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

ניתן ליצור מסד נתונים חדש באמצעות שאילתת SQL עם הצהרת CREATE DATABASE. מומלץ לתת למסד הנתונים שם ברור שמשקף את תוכנו.

תחביר:

CREATE DATABASE database_name;

דוגמה:

CREATE DATABASE db_vshop;

בדוגמה זו, יצרנו את מסד הנתונים עם השם db_vshop מהדוגמה הקודמת.

שימוש במסד נתונים קיים

בכל פעם שנרצה לנהל מסד נתונים מסויים (למשל, כדי להוסיף לו טבלאות חדשות) נעזר בשאילתת SQL עם הצהרת USE.

תחביר:

USE database_name;

דוגמה:

USE db_vshop;

מחיקת מסד נתונים

ניתן למחוק מסד נתונים קיים באמצעות שאילתת SQL עם הצהרת DROP DATABASE.

תחביר:

DROP DATABASE database_name;

דוגמה:

DROP DATABASE db_vshop;

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

יצירה ומחיקה של טבלאות במסד נתונים

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

חשוב לזכור: לפני כל עבודה על טבלה במסד נתונים, נצטרך קודם כל לקבוע מה מסד הנתונים עליו אנו עובדים. בכלי כמו phpMyAdmin, פשוט נבחר את מסד הנתונים איתו אנו עובדים. בעבודה באמצעות שאילתות SQL, נעשה זאת באמצעות הצהרת USE כפי שראינו קודם לכן בפרק זה.

יצירת טבלה חדשה במסד הנתונים

ניתן ליצור טבלה חדשה במסד הנתונים, באמצעות שאילתת SQL עם הצהרת CREATE TABLE.

תחביר:

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    column3 datatype constraints,
   ...
);

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

הערכים column1, column2, column3 משקפים את שמות השדות בטבלה. ניתן ליצור כמה שדות שרוצים בטבלה.

הערך datatype משקף את סוג השדה: INT למספר, VARCHAR למחרוזת בגודל קבוע, וכן הלאה.

הערך constraints משקף הגבלות שונות על השדה: הגדרה של שדה כמפתח, מספר שאינו שלילי, וכן הלאה. אין חובה לקבוע ערך זה, יתכנו שדות ללא הגבלות מיוחדות.

דוגמה:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price_original INT,
	price_final INT,
    inventory INT
);

בדוגמה זו, יצרנו את טבלת המוצרים products מהדוגמה בתחילת הפרק. הטבלה כוללת 5 שדות. הגדרנו את השדה id שיהיה מטיפוס INT (מספר) עם הגדרה AUTO_INCREMENT שאומרת שכל הוספה של רשומה חדשה תקבע id בסדר עולה (1, 2, 3, ...). כמו כן, קבענו את השדה הזה להיות PRIMARY KEY, כלומר, זהו המפתח של הטבלה. הדבר נועד לאופטימיזציה של הטבלה, נראה זאת בהמשך. כמו כן, הגדרנו את השדה name להיות מטיפוס VARCHAR (מחרוזת באורך קבוע) באורך של עד 100 תווים. שדה זה מוגדר גם כ- NOT NULL, כלומר, אינו יכול לקבל את הערך NULL (ערך המציין "ללא הגדרה"). הגדרנו גם את השדות price_original, price_final ו-inventory להיות מטיפוס INT (מספר) ללא הגבלות מיוחדות.

מחיקת טבלה ממסד הנתונים

ניתן למחוק טבלה ממסד הנתונים באמצעות שאילתת SQL עם ההצהרה DROP TABLE.

תחביר:

DROP TABLE table_name;

דוגמה:

DROP TABLE products;

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

טיפוסי שדות נפוצים ואילוצים על שדות

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

INT - שדה עם ערך מספרי שלם. יכול להיות חיובי או שלילי. לדוגמה: 75, 0, 9-. ניתן לקבוע לשדה את האילוץ UNSIGNED, ובכך המספר יהיה תמיד אי-שלילי (אפס או מספר חיובי).

DECIMAL(m, d) - שדה עם ערך של שבר, הכולל מספר בן m ספרות ועוד d ספרות אחרי הנקודה. לדוגמה: DECIMAL(3, 2) יכול לכלול את הערך 725.95.

VARCHAR(n) - שדה עם ערך מחרוזת באורך מקסימלי של n תווים. לדוגמה: VARCHAR(10) יכול לכלול את הערך דניאל.

TEXT - שדה עם ערך טקסטואלי ארוך במיוחד. לדוגמה: מאמר כלשהו או תאור מוצר.

BOOLEAN - שדה עם ערך בוליאני, שיכול להיות TRUE או FALSE. לעיתים מוצג כערכים 1 או 0 בהתאמה.

DATE - שדה עם ערך של תאריך בפורמט YYYY-MM-DD. לדוגמה: 2025-05-19.

DATETIME - שדה עם ערך של תאריך ושעה בפורמט YYYY-MM-DD HH:MM:SS. לדוגמה: 19:50:13 1994-03-24.

 

כל שדה יכול לכלול גם הגדרות ואילוצים שונים. נכיר את ההגדרות והאילוצים הנפוצים:

NOT NULL - כברירת מחדל, כל שדה מכל טיפוס (INT, TEXT וכו') יכול לכלול את הערך NULL, שמשמעותו "לא מוגדר" (יש להבדיל בין הערך NULL שמציין שהערך אינו מוגדר, לבין ערכים כמו מחרוזת ריקה או המספר אפס, שמציינים ערכים מוגדרים). קביעה ששדה הוא NOT NULL מונעת את האפשרות של הערכים בשדה להיות NULL, כלומר, מאלצת את השדה לקבל ערך מוגדר היטב.

UNIQUE - מוודא שערכי השדה בכלל הרשומות בטבלה שונים זה מזה. לדוגמה: אם קבענו כי שדה hierarchy הוא UNIQUE, לא יתכנו 2 רשומות עם הערך 5.

PRIMARY KEY - מגדיר את השדה כ"מפתח". שדה שמוגדר כמפתח הוא בהכרח אינו NULL ובהכרח עם ערכים שונים (כמו UNIQUE). מרגע שנקבע ערך שדה שהוא PRIMARY KEY, הוא חייב להשאר קבוע תמיד. הגדרה של שדה כמפתח גם מסייעת לארגון הטבלה באופן שהיא תהיה אופטימלית יותר מבחינת שמירה ואחזור הנתונים. לדוגמה: לכל מוצר חייב להיות מזהה מוצר יחודי, שאינו NULL ולא ישתנה לעולם. באופן כללי, ניתן לקבוע מפתחות שהם שילוב של כמה שדות יחד, אבל את זה נשאיר לפרקים הבאים. ברוב גדול של המקרים, מומלץ בכל טבלה לקבוע שדה אחד שישמש כמזהה של הרשומה: מזהה להזמנה, מזהה למשתמש, מזהה למאמר, מזהה לנרשם לרשימת התפוצה וכן הלאה.

AUTO_INCREMENT - קובע שהערכים בשדה הם ערכים מספריים עולים שנקבעים אוטומטית. לדוגמה: אם בטבלה cars השדה car_type מוגדר כ-AUTO_INCREMENT, והערך המקסימלי של השדה הזה ברשומות השונות הוא 10, אז הוספה של רשומה חדשה לטבלה cars תקבע בשדה car_type את הערך 11.

DEFAULT value - מגדיר את ערך ברירת המחדל של השדה. לדוגמה: בטבלה employees השדה manager הוא מטיפוס BOOLEAN וקובע אם העובד הוא מנהל או לא. נקבע עבור השדה DEFAULT FALSE, ובכך, כל הוספה של רשומה חדשה לטבלת employees קובעת את הערך manager להיות FALSE (אלא אם קבענו מפורשות את ערך השדה בעת ההוספה). במידת האפשר, נמליץ לקבוע לכל שדה לקבוע ערך ברירת מחדל: ערך 0 למחיר, ערך ריק לכמות במלאי, טקסט ריק לתוכן של מאמר וכן הלאה.

CHECK condition - מגדיר אילוץ ערכים על השדה. לדוגמה: בטבלה users השדה age מתאר את גיל המשתמש, וקובעים בו את האילוץ CHECK (age >= 18), כלומר, הגיל תמיד גדול או שווה ל-18.

 

דוגמה:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10,2) NOT NULL CHECK (price > 0),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

בדוגמה זו, יצרנו את הטבלה products הכוללת 4 שדות:

  • השדה id הוא מטיפוס INT. השדה מוגדר כמפתח ועם הגדלת ערך אוטומטית בכל הוספת רשומה.
  • השדה name הוא מטיפוס VARCHAR(255), כלומר, מחרוזת באורך מקסימלי של 255 תווים. השדה אינו יכול לקבל את הערך NULL.
  • השדה price הוא מטיפוס DECIMAL(10,2), כלומר, מספר בן 10 ספרות ו-2 ספרות אחרי הנקודה. השדה אינו יכול לקבל את הערך NULL. ערך השדה חייב תמיד להיות גדול ממש מ-0.
  • השדה created_at הוא מטיפוס DATETIME, כלומר, תאריך ושעה. השדה הוא עם ערך ברירת מחדל CURRENT_TIMESTAMP, שזה זמן היצירה הנוכחי. כלומר, כל הוספה של רשומה חדשה, תקבע בשדה created_at את זמן ההוספה.
הוספת תגובה
אנו משתמשים בעוגיות על מנת לשפר את חווית המשתמש באתר. מדיניות הפרטיותאני מסכים