إنشاء الجداول في MySQL

Ali Majrashiمنذ 8 سنوات

قواعد البيانات تتكون من جداول Tables ، حيث أن كل جدول يجب ان يكون اسمه فريد unique غير مكرر ، و هذه الجداول تحتوي على أعمدة Columns ، و صفوف Rows.

إنشاء جداول في MySQL

نستطيع في PHP إنشاء جدول في قاعدة بيانات محددة بإستخدام الجملة CREATE TABLE عند بناء جملة SQL.

سوف نقوم بإنشاء جدول باسم users ويحتوي على 4 أعمدة كالتالي:

  • id
  • name
  • email
  • date

نستطيع إنشاء هذا الجدول بإستخدام جملة SQL التالية:


CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `email` varchar(50) NOT NULL,
  `date` timestamp,
  PRIMARY KEY (`id`)
)

لاحظ بعد إستخدام جملة CREATE TABLE كتبنا اسم الجدول `users` داخل علامتي `Backtick` ، بعدها قمنا بفتح علامتي القوس () ، و بداخل الأقواس قمنا بتعريف مسميات الأعمدة داخل علامتي `Backtick` ، ثم تعريف مميزات وخصائص كل عمود ، جدا مهمة علامتي `Backtick` اذا كانت المسميات تحتوي على رموز مثل علامة الشزطة - او underscore ــــ ، تستطيع بناء جملة SQL بدونها اذا كانت المسميات لاتحتوي على اي رموز.

ملاحظة: تستطيع إنشاء ماتريد من الأعمدة  Columns ، ولكن تأكد أن كل عمود يفصله عن العمود الثاني علامة الفاصلة , لكي لاينتج لديك خطأ عند تنفيذ الأمر.

مباشره بعد كتابة اسم العمود ، نقوم بتعريف نوع البيانات Data Type التي سوف تخزن في هذا العمود مثلا: نص ، رقم ، تاريخ ، تاريخ مع وقت الخ... حيث أن MySQL تدعم العديد من أنواع البيانات ، بعض هذه الأنواع تدعم تعريف عدد الأحرف ، او الخانات المطلوب تخزينها مثل: id حددنا النوع int للأعداد ، ولكن حددنا كحد أقصى يتم تخزين عدد من 11 خانة لكل عملية حفظ بهذا الحقل ، ولو تلاحظ عند تعريف العمود name حددنا النوع الى نص varachar ، وحددنا عدد الحروف كحد أقصى 30 حرف ، لو قام المستخدم بإدخال قيمة تحتوي أكثر من 30 حرف لن يتم حفظها ، وينتج لدينا خطأ عند تنفيذ الإستعلام.

عند تعريف أي عمود بعد كتابة اسمه ، وتحديد نوع البيانات نستطيع تعريف مميزات ، و خصائص العمود نلخصها في التالي:

  • NULL : تعني أن الحقل يقبل تخزين القيم الفارغة.
  • NOT NULL : تعني أن الحقل لا يقبل تخزين القيم الفارغة.
  • UNSIGNED : تستخدم مع الأعداد فقط ، حيث عند تعريفها سوف يسمح بتخزين الأعداد الموجبة فقط.
  • AUTO INCREMENT : تقوم MySQL بزيادة قيمة هذا الحقل بواحد عند حفظ جميع البيانات ، و إنشاء سجل Record جديد بالجدول.
  • PRIMARY KEY : قيمة فريدة Unique ، غير قابلة للتكرار ، تستخدم كمعرف Identifier للصفوف Rows داخل الجدول ، بواسطتها تسطتيع MySQL الوصول لأي صف Row مخزن داخل الجدول ، غالبا تستخدم مع AUTO INCREMENT لضمان عدم تكرار القيم المخزنة.
  • DEFAULT : تحديد قيمة إفتراضية ، في حالة لم يقم المستخدم بإضافة قيمة جديدة للحقل ، و ترك الحقل فارغ يتم إستخدام هذه القيمة بدلا عنها عند الحفظ.

ملاحظة: كل جدول يجب أن يحتوي على عمود له الخاصية PRIMARY KEY (كما هو في امثلتنا حددنا العمود id بهذه الخاصية) قيمته يجب ان تكون فريدة وغير مكررة لكل سجل يحفظ بالجدول ، ولهذا حددنا له الميزة AUTO INCREMENT لضمان عدم التكرار ويبقى مميز.

إنشاء قاعدة البيانات:

الآن سنقوم بطرح الأمثلة لطريقة إنشاء الجداول والأعمدة بواسطة PHP كالتالي:

مثال على MySQLi Object-Oriented:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

// إجراء الإتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الإتصال
if ($conn->connect_error) {
    die("فشل الإتصال: " . $conn->connect_error);
}

// لإنشاء جدول sql بناء
$sql = "CREATE TABLE `users` (
`id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
`name` VARCHAR(30) NOT NULL,
`email` VARCHAR(50),
`date` TIMESTAMP
)";

// تنفيذ الإستعلام لإنشاء الجدول
if ($conn->query($sql) === TRUE) {
    echo "تم إنشاء الجدول users بنجاح";
} else {
    echo "فشل إنشاء الجدول: " . $conn->error;
}

// إغلاق الإتصال 
$conn->close();

كما في الأمثلة السابقة قمنا بعملية الإتصال ، ثم قمنا ببناء جملة SQL ، و بعدها قمنا بتنفيذ الإستعلام بقاعدة البيانات ؛ لنحصل على الرد بنجاح او فشل العملية.

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

create-table.png

مثال على MySQLi Procedural:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

// إجراء الإتصال
$conn = mysqli_connect($servername, $username, $password);

// التحقق من الإتصال
if (!$conn) {
    die("فشل الإتصال: " . mysqli_connect_error());
}

// لإنشاء جدول sql بناء
$sql = "CREATE TABLE `users` (
`id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
`name` VARCHAR(30) NOT NULL,
`email` VARCHAR(50),
`date` TIMESTAMP
)";

// تنفيذ الإستعلام لإنشاء الجدول
if (mysqli_query($conn, $sql)) {
    echo "تم إنشاء الجدول users بنجاح";
} else {
    echo "فشل إنشاء الجدول: " . mysqli_error($conn);
}

// إغلاق الإتصال 
mysqli_close($conn);

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

create-table.png

مثال على PDO:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

try {
	// إجراء الإتصال
	$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
	// تعديل نوع معالج الأخطاء
	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	// لإنشاء جدول sql بناء
	$sql = "CREATE TABLE `users` (
	`id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
	`name` VARCHAR(30) NOT NULL,
	`email` VARCHAR(50),
	`date` TIMESTAMP
	)";
	// لتنفيذ الإستعلام لانه لن يكون هناك نتائج من عملية التنفيذ exec() نستخدم
	$conn->exec($sql);
	echo "تم إنشاء الجدول users بنجاح";
}
catch(PDOException $e) {
	echo $sql . "<br>" . $e->getMessage();
}

// إغلاق الإتصال
$conn = null;

لاحظ: في مثال PDO اننا قمنا بتحديد اسم قاعدة البيانات في المتغير dbname$ لقاعدة البيانات new-DB التي قمنا بإنشائها بالدرس السابق وذلك للتعامل مع هذه القاعدة وانشاء جدول بنجاح.

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

create-table.png

التعليقات (3)

ahmed wael:

first

Kakarotto:

يعطيك العافية سؤال لو سمحت في MySQLi Procedural

 

بعد إنشاء الأعمدة هل يمكن إرفاق عمود و حذفه عن طريق كود ما كيف يتم ذلك ؟

أستخدم phpmyadmin

maged esam:

درس وافي بارك الله فيك -

لكن ممكن درس كيف ازرع حقل داخل جدول موجود من قبل 

مثال داخل جدول يوزر الي انت انشأته بعدين بدي انشأ حقل اسمه نفترض : phoneNo

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !