סוגי נתונים

סקירה כללית

SQL תומך במגוון סוגי נתונים המחולקים לקטגוריות עיקריות:

קטגוריה דוגמאות
מספרים INT, DECIMAL, FLOAT
טקסט VARCHAR, TEXT, CHAR
תאריכים DATE, DATETIME, TIMESTAMP
בוליאני BOOLEAN, BIT
בינארי BLOB, BINARY

סוגי נתונים מספריים

מספרים שלמים

טיפוס טווח שימוש
TINYINT -128 עד 127 גילאים, דגלים קטנים
SMALLINT -32,768 עד 32,767 מספרים קטנים
INT / INTEGER ±2 מיליארד שימוש כללי
BIGINT ±9 קווינטיליון מזהים ייחודיים גדולים
CREATE TABLE users (
    id INT,                    -- מזהה רגיל
    age TINYINT,              -- גיל (0-127 מספיק)
    views BIGINT,             -- צפיות (יכול להיות מספר עצום)
    followers INT UNSIGNED    -- לא שלילי (0 עד 4 מיליארד)
);

מספרים עשרוניים

טיפוס דיוק שימוש
DECIMAL(p,s) / NUMERIC מדויק כסף, מדידות מדויקות
FLOAT משוער מדע, חישובים
DOUBLE משוער (כפול) חישובים מדעיים
CREATE TABLE products (
    price DECIMAL(10, 2),    -- עד 99,999,999.99
    tax_rate DECIMAL(5, 4),  -- עד 9.9999 (אחוזים)
    weight FLOAT             -- משקל (לא צריך דיוק מלא)
);

⚠️ חשוב: לכסף תמיד השתמשו ב-DECIMAL, לא ב-FLOAT!


סוגי נתונים טקסטואליים

טקסט באורך קבוע/משתנה

טיפוס אורך שימוש
CHAR(n) קבוע (n תווים תמיד) קודי מדינה, מס' זהות
VARCHAR(n) משתנה (עד n תווים) שמות, כתובות
TEXT ארוך מאוד תיאורים, מאמרים
CREATE TABLE users (
    country_code CHAR(2),          -- 'IL', 'US'
    name VARCHAR(100),              -- שם באורך משתנה
    email VARCHAR(255),             -- מייל
    bio TEXT                        -- ביוגרפיה ארוכה
);

הבדלים בין מסדי נתונים

-- MySQL
CREATE TABLE articles (body LONGTEXT);

-- PostgreSQL
CREATE TABLE articles (body TEXT);

-- SQL Server
CREATE TABLE articles (body NVARCHAR(MAX));

סוגי נתונים לתאריכים

טיפוס פורמט דוגמה
DATE תאריך בלבד '2024-01-15'
TIME שעה בלבד '14:30:00'
DATETIME תאריך + שעה '2024-01-15 14:30:00'
TIMESTAMP תאריך + שעה (UTC) '2024-01-15 12:30:00'
YEAR שנה בלבד 2024
CREATE TABLE events (
    event_date DATE,                -- תאריך האירוע
    start_time TIME,                -- שעת התחלה
    created_at DATETIME,            -- מתי נוצר
    updated_at TIMESTAMP            -- עדכון אוטומטי
);

-- הכנסת נתונים
INSERT INTO events (event_date, start_time, created_at)
VALUES ('2024-06-15', '18:00:00', NOW());

סוג נתונים בוליאני

-- MySQL
CREATE TABLE users (
    is_active BOOLEAN,              -- TRUE/FALSE או 1/0
    is_admin TINYINT(1)             -- אלטרנטיבה נפוצה
);

-- PostgreSQL
CREATE TABLE users (
    is_active BOOLEAN
);

-- SQL Server
CREATE TABLE users (
    is_active BIT                   -- 0 או 1
);

-- שימוש
INSERT INTO users (is_active) VALUES (TRUE);
INSERT INTO users (is_active) VALUES (1);
INSERT INTO users (is_active) VALUES (FALSE);

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

JSON

-- MySQL 5.7+
CREATE TABLE settings (
    data JSON
);

INSERT INTO settings (data) 
VALUES ('{"theme": "dark", "language": "he"}');

-- שליפה
SELECT data->'$.theme' FROM settings;

ENUM (רשימת ערכים מוגדרת)

CREATE TABLE orders (
    status ENUM('pending', 'paid', 'shipped', 'delivered')
);

INSERT INTO orders (status) VALUES ('pending');

UUID

-- PostgreSQL
CREATE TABLE users (
    id UUID DEFAULT gen_random_uuid() PRIMARY KEY
);

-- MySQL
CREATE TABLE users (
    id CHAR(36) PRIMARY KEY
);
INSERT INTO users (id) VALUES (UUID());

טבלת השוואה מהירה

צורך טיפוס מומלץ
מזהה (ID) INT AUTO_INCREMENT או BIGINT
כסף/מחיר DECIMAL(10,2)
שם משתמש VARCHAR(50)
אימייל VARCHAR(255)
סיסמה (מוצפנת) VARCHAR(255)
טקסט ארוך TEXT
גיל TINYINT UNSIGNED
דגל כן/לא BOOLEAN או TINYINT(1)
תאריך לידה DATE
זמן יצירה TIMESTAMP
קואורדינטות DECIMAL(9,6)

טיפים

  1. בחרו את הסוג הקטן ביותר שמספיק לצרכים שלכם
  2. לכסף: DECIMAL - לעולם לא FLOAT
  3. לטקסט: VARCHAR - אלא אם צריך TEXT
  4. למפתחות: INT - אלא אם צריך BIGINT
  5. זכרו - סוגי נתונים משפיעים על ביצועים!

← תחביר | המשך לשאילתות →

בדקו את עצמכם

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

  1. איזה טיפוס מתאים לסכום כסף מדויק?

    1. FLOAT
    2. DECIMAL(10, 2)
    3. VARCHAR
    4. INT
    הצגת התשובה

    תשובה ב. FLOAT מקרב ויכול לאבד אגורות. DECIMAL מדויק.

  2. מה ההבדל בין CHAR ל-VARCHAR?

    1. VARCHAR רק למספרים
    2. CHAR ארוך יותר
    3. אין הבדל
    4. CHAR באורך קבוע, VARCHAR באורך משתנה עד מקסימום
    הצגת התשובה

    תשובה ד. VARCHAR(255) מתאים לרוב הטקסטים.