[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
فى هذا الدرس بإذن الله سنشرح كل مايلى
* اختيار ترميز قاعدة البيانات المناسب
* إنشاء قواعد البيانات
* إنشاء الجداول
نبدأ على بركة الله.
بجانب اختيار محرك الحفظ المناسب للجدول.
يجب ايضا تحديد الترميز. الترميز هو مصطلح يصعب شرحه بدقة.
لكنه ببساطة هو الوسيلة التى تخبر بها الـ MySql
بالطريقة المناسبة التى ستتعامل بها مع حروف اللغة التى ستستخدم فى البيانات التى يتم حفظها بقاعدة البيانات.
وايضا يمكن ان نعرف مصطلح الترميز على انه محتوى الحرف, والرموز (الخاصة بلغة البيانات التى يتم ادخالها, اذا كان عربية, يبانية, عبرية, الخ) وعملية الترميز تطبق فقط على الحقول النصية, لكن الأرقام فـ الترميز لن يشكل فرق معها.
يمكنك تعريف ترميز اى حقل من حقول الجداول ببساطة بإضافة
كود :
CHARACTER SET setname
الى كود انشاء الحقل (وسوف نناقش كل شئ بالتفصيل فى وقته)
بحيث يكون الـ setname هو اسم الترميز الذى نرغب فى استخدامه.
كما يمكنك ان تعرف مختلف الترميزات المتوفر لدى اصدار MySql الذى تستخدمه
بإجراء الإستعلام التالى داخل الـ MySql Console
كود :
SHOW CHARACTER SET;
الترميز الإفتراضى هو latin1 والذى يصلح مع اللغة الإنجليزية وبعض لغات الغرب.
لكن هناك ترميزات اخرى تصلح مع لغات كثيرة جدا, العربية, اليونانية, العبرية, الصينية, الخ. يوجد (فى الوقت الذى اكتب فيه هذا المقال) مايزيد عن 70 ترميز.
شئ اخر من بعد الترميز وهو المقارنات او مايعرف بالمسمى Collation
والذى يحدد عن طريقه كيف سيتم مقارنة الأحرف, هل الأحرف الكبيرة ستعامل مثلها مثل الصغيرة, ترميزات اخرى تحدد كيف سيتم ترتيب الأحرف. (صراحة اشياء لا اريد ان اتعمق بها كثيرا الأن حتى لا اشوش تفكيرك)
لكل ترميز هناك مايقرب من حوالى 30 Collation له.
مايهمك كامطور عربى, هو
1. الترميز العالمى utf8 (انا شخصيا افضل هذا الترميز حيث ان انتشاره يتزايد يوم بعد يوم)
2. الترميز cp1256 والخاص فقط بحروف اللغة العربية
الترميز utf-8 الـ collation الإفتراضى له هو utf8_general_ci
ولن تحتاج لإستخدام شئ غيره حيث انه صالح مع كل احرف ورموز اللغة العربية
والترميز الثانى cp1256 ايضا الـ collation الإفتراضى له هو cp1256_general_ci
والذى لن تحتاج لتغيره.
تفاصيل اكثر لإختيار الترميز والـ collation الذى يناسبك
1. قم بفتح الـ MySQL Console لمعرفة الإختيارات المتاحة لك, كما فعلنا مع اختيار محرك حفظ البيانات.
2. ابدأ بالتأكد من المحركات المتوفرة لك بإستخدام الإستعلام التالى
كود :
SHOW CHARACTER SET;
# ثم قرر اى ترميز الذى يناسب اللغة التى ستستخدمها.
كما اود ان اخبرك انه يمكنك ان تختر لكل حقل داخل الجدول ترميز غير الأخر.
بمعنى لدينا حقل نصى مثلا يستخدم اللغة الإنجليزية نختر له الترميز latin1
وحقل اخر نصى يحتوى على اللغة العربية نختر له الترميز utf8 او cp1256
# لإستعراض الـ collation المتوفر (كامثال للترميز utf8) وايضا معرفة اى collation الإفتراضى.
قم بإجراء الإستعلام التالى
كود :
SHOW COLLATION LIKE '%utf8%';
ملحوظات اضافية.
- كل من الترميز او الـ collation يمكن وضعهم على الخادم (ونحن لن نشرح حالة إعداد الخادم), او قاعدة البيانات, او احد الجداول, او حتى احد الحقول.
على سبيل المثال, ان لم تحدد ترميز قاعدة البيانات, سيتم وضع الترميز الإفتراضى الذى تم وضعه على الخادم نفسه.
ان لم تحدد ترميز احد الجداول, سيتم استخدام الإفتراضى الذى تم وضعه بقاعدة البيانات نفسها.
ان لم تحدد ترميز احد حقول الجدول, سيتم استخدام الإفتراضى الذى تم وضعه للجدول نفسه.
- يمكنك ايضا تحديد ترميز الإتصال بين الـ MySQL Console (او الإسكريبت الذى تبرمجه بأى لغة برمجة و يقوم بإدخال واستخراج بيانات من قاعدة البيانات)
عن طريق الإستعلام
كود :
SET NAMES 'utf8';
* وكما ترى بهذا المثال استخدمت الترميز utf8 ويمكن استبدالها بأى ترميز اخر
(تذكر ان هذا الإستعلام ضرورى جدا عند استخراج او ادخال البيانات باللغة العربية ويجب ان يتم فورا بعد انشاء الإتصال مع قاعدة بإستخدام لغة البرمجة التى تبرمج بها)
ندخل بالجزء الثانى من الدرس
وهو انشاء قاعدة البيانات (وبالطبع لن تتمكن من هذا الا اذا كنت قمت بتسجيل الدخول بإستخدام مستخدم لديه صلاحيات إنشاء قواعد البيانات, وهذا طبيعى اذا كنت تعمل على السيرفر المحلى, لكن الإستضافات لا تعطيك هذه الصلاحيات, لكنها تمكنك من انشاء قواعد البيانات بإستخدام لوحة تحكم الموقع الخاصة بك)
لإنشاء قاعدة بيانات جديدة تجرى الإستعلام التالى.
كود :
CREATE DATABASE dbname;
لكن ماذا عن الخصائص الإضافية لقاعدة البيانات مثل الترميز والـ Collation؟
يمكنك اضافة هذه الخصائص اثناء إنشاء قاعدة البيانات بالشكل التالى
كود :
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE 'utf8_general_ci';
فى الكود أعلاه اسم قاعدة البيانات هو dbname وترميزها هو utf8
والـ collation لها هو utf8_general_ci
للتأكد ان قاعدة البيانات تم إنشائها يمكنك إجراء الإستعلام التالى
كود :
SHOW DATABASES;
كما يمكنك ايضا ان تعرف خصائص احد قواعد البيانات بالكود التالى
كود :
SHOW CREATE DATABASE dbname;
هذا الإستعلام سوف يوضح لك الترميز الذى تستخدمه قاعدة البيانات.
اتمنى يكون كل شئ واضح لندخل بالجزء الثالث من هذا الدرس وهو إنشاء جداول قاعدة البيانات.
(سوف ابدأ بالأكواد شئ بشئ فلا تتعجل فى كتابة الأكواد قبل ان تقرأ الشرح)
اول شئ نقوم بإخبار الـ MYSQL عن القاعدة التى سنستخدمها, ولنفترض اننا انشأنا القاعدة dbname
نجرى الإستعلام التالى
كود :
USE dbname;
بعد ذلك نبدأ بإنشاء الجداول.
بالشكل التالى (الكود التالى ليس الا توضيح ولا يمكن استخدامه)
كود :
CREATE TABLE table_name(
column_1_name column_1_characteristics,
column_2_name column_2_characteristics
);
حيث
table_name هو اسم الجدول و
column_1_name
هو اسم الحقل الأول
و column_2_characteristics
هى خصائص هذا الحقل (نوعه مثلا INT(10) و NOT NULL الخ)
وكما تلاحظ يجب الفصل بين كل حقل والأخر بعلامة ,
ماذا اذا اردنا تحديد محرك حفظ معين لهذا الجدول؟ يتم هذا بالشكل التالى
كود :
CREATE TABLE table_name(
column_1_name column_1_characteristics,
column_2_name column_2_characteristics
)
ENGINE = INNODB;
ولقد حددت فى الكود اعلاه المحرك InnoDB
(نسخ mysql الأقدم من 4.0.18 يتم استخدام الكلمة TYPE بدلا من ENGINE )
كما اريد الإشارة اذا لم تقم بتحديد محرك الجدول سيتم تعيين المحرك InnoDB اذا كان نظام التشغيل للخادم هو الويندوز, او MyISAM اذا كان نظام التشغيل من عائلة يونكس.
ماذا اذا اردنا تحديد ترميز و Collation معين لهذا الجدول؟ يتم الأمر بالشكل التالى
كود :
CREATE TABLE table_name(
column_1_name column_1_characteristics,
column_2_name column_2_characteristics
)
ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
لا اظن ان الكود به شئ يحتاج للشرح.
ما رأيك بأن نقوم بإنشاء جدول صغير يحتوي على التالى
- user_id حقل هوية المستخدم وسيكون نوعه INT والحد الأقصى له هو 10 ارقام وله الخصائص NOT NULL و AUTO_INCREMENT و UNSIGNED وايضا سيكون هو الـ PK
- username حقل اسم المستخدم من النوع VARCHAR و الحد الأقصى لإسم المستخدم هو 60 حرف, وخصائصه NOT NULL ويجب ان يكون UNIQUE يعنى لا يمكن تكراره
- email وسيكون ايضا من النوع VARCHAR والحد الأقصى له هو 100 حرف.
ويجب ان يكون NOT NULL ايضا.
سيتم ماشرحناه بالكود التالى
كود :
CREATE TABLE members(
user_id INT(10) NOT NULL UNSIGNED AUTO_INCREMENT,
username VARCHAR(60) NOT NULL,
email VARCHAR(100) NOT NULL,
PRIMARY KEY(user_id),
UNIQUE(username)
);
لاحظ كيف وضعنا الخصائص لكل جدول
كما يمكنك بعد ان تقوم بإجراء استعلام اختيار قاعدة البيانات
كود :
USE dbname;
ان تستعرض الجداول الموجودة بها بالإستعلام التالى
كود :
SHOW TABLES;
كما يمكنك ايضا استعراض حقول (وكل بيانات الحقول) احد الجداول بالإستعلام التالى
كود :
SHOW COLUMNS FROM table_name;
حيث table_name هو اسم الجدول
ويمكنك فعل نفس الشئ بإستخدام الكود التالى
كود :
DESCRIBE table_name;
كما يمكنك إجراء الإستعلام التالى
كود :
SHOW CREATE TABLE table_name
لترى كيف تم انشاء هذا الجدول (القيام بهذا على جداول بها إعدادات لا تعرف كيف تقوم بصياغتها يساعدك فى التعلم الذاتى)
اعرف ان درس اليوم كان كبير نوعا ما, الا اننا بدأنا ندخل على الخطوات العملية شئ بشئ.
كما اتمنى ان يكون الدرس بكل جوانبه واضح بإذن الله.
مع خالص التمنيات بالتوفيق بإذن الله.
المصدر:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]