סוגי נתונים
סקירה כללית
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) |
טיפים
- בחרו את הסוג הקטן ביותר שמספיק לצרכים שלכם
- לכסף: DECIMAL - לעולם לא FLOAT
- לטקסט: VARCHAR - אלא אם צריך TEXT
- למפתחות: INT - אלא אם צריך BIGINT
- זכרו - סוגי נתונים משפיעים על ביצועים!
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
איזה טיפוס מתאים לסכום כסף מדויק?
הצגת התשובה
תשובה ב. FLOAT מקרב ויכול לאבד אגורות. DECIMAL מדויק.
-
מה ההבדל בין CHAR ל-VARCHAR?
הצגת התשובה
תשובה ד. VARCHAR(255) מתאים לרוב הטקסטים.