انتخاب انواع عدد صحیح در mysql & postgresql

انتخاب نوع عدد صحیح مناسب به این بستگی دارد اندازه ذخیره سازی ، دامنه و عملکردبشر در اینجا راهنمای انتخاب بهترین نوع بر اساس نیازهای شما آورده شده است.
نمای کلی انواع عدد صحیح
نوع داده | محدوده MySQL (امضا شده) | محدوده postgresql (امضا شده) | ذخیره سازی (بایت) | بهترین استفاده برای |
---|---|---|---|---|
ریزه | -128 تا 127 (بدون امضا: 0 تا 255) | ❌ در دسترس نیست | 1 | مقادیر بولی ، پیشخوان های کوچک |
کوچک | -32،768 تا 32،767 | -32،768 تا 32،767 | 2 | شناسه های کوچک ، شمارش |
واسطه | -8،388،608 تا 8،388،607 | ❌ در دسترس نیست | 3 | پیشخوان های بزرگ در mysql |
Int / Integer | -2،147،483،648 به 2،147،483،647 | همان MySQL | 4 | شناسه یا پیشخوان هدف عمومی |
با ابله | -9،223،372،036،854،775،808 تا 9،223،372،036،854،775،807 | همان MySQL | 8 | شناسه های بزرگ ، Timestamps |
چه موقع از هر نوع عدد صحیح استفاده کنیم؟
✅ استفاده کردن TINYINT
(mysql) وقتی:
✔ مقادیر بولی (0
یا 1
)
✔ پرچم ها یا وضعیت های کوچک (1-100
)
✔ مثال:
CREATE TABLE users (
is_active TINYINT(1) NOT NULL
);
✅ استفاده کردن SMALLINT
چه زمانی:
مقادیر عددی کوچک ، مانند سن ، تعداد کوچک یا رتبه بندی (-32,768
به 32,767
)
✔ مثال:
CREATE TABLE products (
stock SMALLINT UNSIGNED NOT NULL -- Only positive values (0-65,535)
);
✅ استفاده کردن MEDIUMINT
(فقط mysql) وقتی:
✔ پیشخوان های بزرگتر از SMALLINT
، اما INT
بیش از حد است
✔ مثال:
CREATE TABLE orders (
order_count MEDIUMINT UNSIGNED NOT NULL
);
✅ استفاده کردن INT / INTEGER
چه زمانی:
✔ هدف عمومی کلیدهای اصلی (شناسه خودکار)
✔ پیشخوان های بزرگتر (-2B to 2B range
)
✔ مثال:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
salary INT NOT NULL
);
✅ استفاده کردن BIGINT
چه زمانی:
✔ ذخیره Timestamps ، شناسه های بزرگ یا تعداد بسیار زیادی
✔ لازم برای کاربران رسانه های اجتماعی ، سوابق مالی یا شناسه های جهانی
✔ مثال:
CREATE TABLE transactions (
transaction_id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
amount BIGINT NOT NULL
);
آیا باید از امضا شده یا امضا نشده استفاده کنم؟
-
استفاده کردن
UNSIGNED
اگر شما فقط به اعداد مثبت احتیاج دارند (مقدار حداکثر را دو برابر می کند). -
استفاده کردن
SIGNED
اگر شما به مثبت و منفی نیاز دارید مقادیر - مثال:
-- UNSIGNED: allows 0 to 4,294,967,295
CREATE TABLE accounts (
balance INT UNSIGNED NOT NULL
);
یادداشت های خاص postgresql
-
هیچ
TINYINT
یاMEDIUMINT
→ استفاده کنیدSMALLINT
یاINTEGER
در عوض - حمایت
SERIAL
انواع شناسه های فعال کننده خودکار:
CREATE TABLE users (
id SERIAL PRIMARY KEY -- Equivalent to INT AUTO_INCREMENT
);
انتخاب نوع عدد صحیح مناسب
مورد استفاده | نوع mysql | نوع postgresql |
---|---|---|
پرچم های بولی (0/1) | TINYINT(1) |
BOOLEAN |
تعداد کمی (سن ، رتبه بندی) | SMALLINT |
SMALLINT |
پیشخوان متوسط | MEDIUMINT |
INTEGER |
شناسه های عمومی و کلیدهای اصلی | INT AUTO_INCREMENT |
SERIAL |
پیشخوان های بزرگ (پایگاه کاربر بزرگ ، داده های مالی) | BIGINT |
BIGINT |
اینجا وجود دارد موارد استفاده در دنیای واقعی برای هر نوع عدد صحیح.
1. Tinyint (1 بایت) – پرچم های کوچک و مقادیر بولی
** مثال: وضعیت کاربر و رتبه بندی **
- استفاده شده برای ایالات دوتایی (0/1) یا دامنه های عددی کوچکبشر
- mysql ندارد
BOOLEAN
نوع ، بنابراینTINYINT(1)
در عوض استفاده می شود
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
is_active TINYINT(1) NOT NULL DEFAULT 1, -- 0 = inactive, 1 = active
user_role TINYINT UNSIGNED NOT NULL DEFAULT 1 -- 1 = User, 2 = Admin, etc.
);
بهترین برای:
✔ وضعیت فعال/غیرفعال (0
یا 1
)
r نقش کاربر (1-10
)
✔ رتبه بندی (1-5
ستاره)
2. Smallint (2 بایت) – پیشخوان ها و دامنه های کوچک
** مثال: تعداد صندلی های یک تئاتر **
- سالن های سینما تا 65.535 صندلی، بنابراین
SMALLINT UNSIGNED
عالی است
CREATE TABLE cinemas (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
total_seats SMALLINT UNSIGNED NOT NULL CHECK (total_seats <= 65535)
);
بهترین برای:
✔ جمعیت یک شهر کوچک
✔ بازدید صفحه در هر وب سایت کوچک
✔ تعداد دانش آموزان در یک مدرسه
3. Mediomint (3 بایت ، فقط MySQL) – پیشخوان های بزرگ
** مثال: ردیابی نماهای YouTube **
- یک فیلم یوتیوب با میلیون ها بازدید به یک پیشخوان بزرگتر از
SMALLINT
بشر
CREATE TABLE videos (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
view_count MEDIUMINT UNSIGNED NOT NULL DEFAULT 0
);
بهترین برای:
✔ پیگیری تعداد متوسط (به عنوان مثال ، نماهای ویدئویی ، بازدید کنندگان فروشگاه).
✔ ارزان تر از INT
برای مواردی که SMALLINT
خیلی کوچک است
4. int / Integer (4 بایت) – شناسه های استاندارد و شمارش های بزرگ
** مثال: سفارشات تجارت الکترونیکی **
- فرآیندهای آمازون میلیون ها سفارش، نیاز به
INT
(یاBIGINT
برای سیستم های بسیار بزرگ).
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
total_price DECIMAL(10,2) NOT NULL,
order_status TINYINT(1) NOT NULL DEFAULT 0 -- 0 = Pending, 1 = Shipped, etc.
);
بهترین برای:
✔ کلیدهای اولیه و ورود خودکار
✔ شناسه های کاربر ، شماره سفارش ، شناسه معاملات
✔ مانده های بانکی (اگر بیش از 2B نباشد)
5. Bigint (8 بایت) – داده های مقیاس گسترده
** مثال: ذخیره شناسه های کاربر رسانه های اجتماعی (فیس بوک ، اینستاگرام ، توییتر) **
-
میلیاردها کاربر لازم بودن
BIGINT
برای شناسه های منحصر به فرد
CREATE TABLE social_users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
followers_count BIGINT UNSIGNED NOT NULL DEFAULT 0
);
بهترین برای:
✔ پیگیری پیگیری های بزرگ رسانه های اجتماعی
✔ معاملات مالی و بانکداری (مبالغ زیاد)
✔ Timestamps (ذخیره زمان یونیکس: 1700000000 در ثانیه)
6. مورد ویژه: انواع سریال PostgreSQL (شناسه های تقویت کننده خودکار)
پیشنهادات postgresql SERIAL
، که به طور خودکار اعداد منحصر به فرد را اختصاص می دهد.
** مثال: معاملات بانکی **
CREATE TABLE bank_transactions (
id BIGSERIAL PRIMARY KEY,
user_id INT NOT NULL,
amount DECIMAL(15,2) NOT NULL,
transaction_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
بهترین برای:
✔ شناسه های تقویت کننده خودکار بدون مدیریت سکانس ها به صورت دستی
از کدام نوع عدد صحیح استفاده شود؟
مورد استفاده | بهترین نوع عدد صحیح | مثال mysql | معادل postgresql |
---|---|---|---|
پرچم های بولی (0/1) | TINYINT(1) |
TINYINT(1) |
BOOLEAN |
پیشخوان های کوچک (رتبه بندی ، صندلی) | SMALLINT |
SMALLINT(5) UNSIGNED |
SMALLINT |
پیشخوان های متوسط (نمای ویدیو ، محصولات) | MEDIUMINT |
MEDIUMINT UNSIGNED |
INTEGER |
شناسه استاندارد (کاربران ، سفارشات ، کارمندان) | INT |
INT AUTO_INCREMENT |
SERIAL |
شناسه های بسیار بزرگ (فیس بوک ، کاربران Tiktok ، Timestamps) | BIGINT |
BIGINT AUTO_INCREMENT |
BIGSERIAL |
اعتبار تصویر