انتقل إلى محتوى الدرس
الدرس 09
دورة MySQL

أنواع البيانات النصية والثنائية والتعداد في MySQLMySQL String and Text Data Types

تعلّم أنواع البيانات النصية والثنائية والتعداد في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
8
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تقسّم MySQL السلاسل النصية القصيرة إلى فئتين أساسيتين: النوع CHAR(M) للسلاسل ثابتة الطول (من 0 إلى 255 حرفاً)، والنوع VARCHAR(M) للسلاسل متغيرة الطول (ضمن سقف الصف البالغ 65,535 بايت). بينما يملأ CHAR الفراغات المتبقية بمسافات عند الحفظ ويزيلها عند القراءة، يحفظ VARCHAR الحروف الفعلية فقط متبوعة ببادئة طول حجمها 1 أو 2 بايت.

مخطط أنواع البيانات النصية والثنائية والتعداد في MySQL 8
SQL
-- Measure character count vs byte length in UTF8MB4
SELECT
  CHAR_LENGTH('MySQL 8') AS en_chars,
  LENGTH('MySQL 8') AS en_bytes,
  CHAR_LENGTH(_utf8mb4 0xD8A8D98AD8A7D986D8A7D8AA) AS mb_chars,
  LENGTH(_utf8mb4 0xD8A8D98AD8A7D986D8A7D8AA) AS mb_bytes;

يحدّد نظام الترميز (Character Set) كيفية تمثيل الحروف كسلاسل بايتات ثنائية، بينما تحدّد قواعد المقارنة (Collation) قوانين ترتيب ومطابقة تلك الحروف. في MySQL 8، أصبح الترميز الافتراضي هو utf8mb4 الداعم لكامل حروف يونيكود رباعية البايت بما فيها اللغة العربية والرموز التعبيرية، مقترناً بقواعد المقارنة القياسية utf8mb4_0900_ai_ci.

SQL
-- Inspect string charset, collation, and case sensitivity
SELECT
  CHARSET(_utf8mb4'CloseTag') AS active_charset,
  COLLATION(_utf8mb4'CloseTag') AS active_collation,
  _utf8mb4'MySQL' = _utf8mb4'mysql' AS is_case_insensitive;

عندما يتجاوز المحتوى النصي مثل مقالات المدونات أو التوثيق البرمجي أو سجلات النظام حدود الصفوف القصيرة، توفّر MySQL أربع درجات للنصوص الطويلة: TINYTEXT بسعة 255 بايت، وTEXT بسعة 65,535 بايت (نحو 64 كيلوبايت)، وMEDIUMTEXT بسعة 16 ميجابايت تقريباً، وLONGTEXT بسعة تصل إلى 4 جيجابايت.

SQL
-- Extract snippets and byte sizes from long text literals
SELECT
  LEFT('MySQL 8 InnoDB off-page TEXT storage', 14) AS summary,
  CHAR_LENGTH('MySQL 8 InnoDB off-page TEXT storage') AS chars,
  LENGTH('MySQL 8 InnoDB off-page TEXT storage') AS bytes;

على عكس السلاسل النصية، تخزّن الأنواع الثنائية تدفقات البايتات الخام دون أي نظام ترميز حروف أو قواعد مقارنة لغوية. يُستخدم النوعان BINARY(M) وVARBINARY(M) لحفظ مصفوفات البايتات القصيرة مثل بصمات التشفير SHA-256 أو معرّفات UUID المضغوطة، بينما تُخصّص عائلة BLOB للكائنات الثنائية الأكبر حجماً.

SQL
-- Convert between hexadecimal representations and binary bytes
SELECT
  HEX('MySQL') AS hex_encoded,
  CAST(UNHEX('4D7953514C') AS CHAR) AS decoded_text,
  LENGTH(UNHEX('4D7953514C')) AS raw_byte_count;

يقيّد النوع ENUM الحقل النصي بقيمة واحدة فقط تُختار من قائمة محددة مسبقاً (تصل إلى 65,535 خياراً)، ويحفظها داخلياً كفهرس رقمي مضغوط بحجم 1 أو 2 بايت. أما النوع SET فيسمح باختيار قيمة أو أكثر من أصل 64 خياراً كحد أقصى، ويمثّلها داخلياً كقناع بتات ثنائي.

SQL
-- Inspect ENUM index positions and SET comma-separated lists
SELECT
  FIELD('active', 'pending', 'active', 'archived') AS enum_code,
  FIND_IN_SET('editor', 'reader,editor,admin') AS set_match_pos,
  MAKE_SET(1 | 4, 'read', 'write', 'delete') AS active_flags;
نوع البياناتالسعة القصوىبادئة الطول / التمثيل الداخلييدعم ترميز الحروفحالة الاستخدام الهندسي المثلى
CHAR(M)255 حرفاًطول ثابت بدون بادئة طولنعم (utf8mb4)رموز الدول القياسية (SA) والأكواد الثابتة
VARCHAR(M)حتى 65,535 بايت (ضمن سقف الصف)1 بايت (≤255B) أو 2 بايت (>255B)نعم (utf8mb4)الأسماء، البريد الإلكتروني، العناوين، والروابط
TEXT / LONGTEXT64 كيلوبايت / 4 جيجابايت2 بايت / 4 بايت (تخزين فائض خارجي)نعم (utf8mb4)محتوى المقالات، التوثيق الطويل، وسجلات الأحداث
BINARY(M) / VARBINARY(M)حتى 255 بايت / 65,535 بايتبايتات خام (بدون بادئة / 1–2 بايت)لا (بايتات ثنائية خام)بصمات التشفير SHA-256 ومعرّفات UUID المضغوطة
BLOB / LONGBLOB64 كيلوبايت / 4 جيجابايت2 بايت / 4 بايت (بايتات خام)لا (بايتات ثنائية خام)الحمولات المشفرة والشهادات والبيانات الثنائية
ENUM / SET65,535 خياراً / 64 عضواًفهرس 1–2 بايت / قناع 1–8 بايتنعم (يخضع لقواعد المقارنة)حالات سير العمل الثابتة (draft، published)

ملخص الدرس: أتقنّا في هذا الدرس أنواع البيانات النصية والثنائية في MySQL 8، وقارنّا السلاسل الثابتة CHAR والمتغيرة VARCHAR، وفحصنا ترميز utf8mb4 وقواعد المقارنة، إلى جانب عائلات TEXT وBLOB وBINARY والتعداد ENUM وSET.
الخطوة التالية والدرس القادم: في الدرس القادم سنتناول أنواع بيانات التاريخ والوقت والطابع الزمني في MySQL، بما يشمل DATE وTIME والفرق الجوهري بين DATETIME وTIMESTAMP ودقة أجزاء الثانية.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنّا في هذا الدرس أنواع البيانات النصية والثنائية في MySQL 8، وقارنّا السلاسل الثابتة CHAR والمتغيرة VARCHAR، وفحصنا ترميز utf8mb4 وقواعد المقارنة، إلى جانب عائلات TEXT وBLOB وBINARY والتعداد ENUM وSET. الخطوة التالية: في الدرس القادم سنتناول أنواع بيانات التاريخ والوقت والطابع الزمني في MySQL، بما يشمل DATE وTIME والفرق الجوهري بين DATETIME وTIMESTAMP ودقة أجزاء الثانية.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 String Types الأنواع النصية
تعلّم أنواع البيانات النصية والثنائية والتعداد في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 Fixed and Variable Strings السلاسل الثابتة والمتغيرة الطول
المفهوم الهندسي الأساسي لقسم السلاسل الثابتة والمتغيرة الطول في قواعد بيانات MySQL 8 الحديثة.
للمراجعة
03 Character Sets and Collations ترميز الحروف وقواعد المقارنة
الصياغة القياسية وقواعد التنفيذ العملي لقسم ترميز الحروف وقواعد المقارنة.
للمراجعة
04 Long Text Storage Types أنواع النصوص الطويلة وتخزينها
آلية التخزين وأفضل ممارسات محرك InnoDB الخاصة بقسم أنواع النصوص الطويلة وتخزينها.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 UTF8MB4 UTF8MB4
UTF-8 Multibyte 4-Byte Character Encoding
الترميز الافتراضي في MySQL 8 الداعم لكامل محارف يونيكود بما فيها العربية والرموز التعبيرية بتمثيل من 1 إلى 4 بايت للحرف.
للمراجعة
02 BLOB BLOB
Binary Large Object
عائلة أنواع البيانات المخصصة لحفظ الكائنات الثنائية الخام كبيرة الحجم دون إخضاعها لترميز الحروف النصية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح عميل MySQL 8 المحلي ونفّذ استعلام SQL المشروح في قسم السلاسل الثابتة والمتغيرة الطول للتحقق من النتائج.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم ترميز الحروف وقواعد المقارنة وقارن مخرجات MySQL 8.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

أي دالة في SQL تُرجع عدد الحروف الفعلية في السلسلة النصية بدلاً من حجمها بالبايت؟

فرّق بين حساب عدد المحارف وحجم البايتات في النصوص متعددة البايت.

02

ما هو الحد الأقصى لعدد البايتات للحرف الواحد في نظام الترميز utf8mb4 داخل MySQL 8؟

تذكّر سبب اعتماد utf8mb4 بديلاً عن الترميز القديم ثلاثي البايت.

03

أي نوع بيانات هو الأمثل لتخزين بصمة SHA-256 الثنائية الخام بحجم 32 بايت دون عبء ترميز الحروف؟

اختر النوع الثنائي ثابت الطول المخصص لمصفوفات البايتات الخام.

04

كيف تخزّن MySQL قيمة حقل من نوع ENUM داخلياً على القرص؟

حدّد طريقة التمثيل الرقمي الداخلي لخيارات التعداد.