دورة MySQL للمبتدئين

4: بناء أول قاعدة بيانات – دورة MySQL

السلام عليكم و رحمة الله و بركاته

في هذا الدرس من دورة Mysql، سنقوم ببناء أول قاعدة بيانات و أول جدول لنا و نُعدل عليه!

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

يمكن أن نعتبر قاعدة البيانات كدرج كبير يحتوي على مجموعة من الملفات، و كل ملف يحمل بيانات تخص وحدة ما. فالدرج هو قاعدة البيانات و الملفات التي توجد فيه هي جداول البيانات. لذا، فقواعد البيانات تتضمن الجداول.

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

من أجل إنشاء ملف خاص بقواعد البيانات المبنية بلغة SQL، نضيف sql. لاسم الملف، مثلا: training.sql

الكود المُستعمل من أجل إنشاء قاعدة بيانات هو:

CREATE DATABASE training;

نكتب أولا الأمر CREATE DATABASE أو “أنشئ قاعدة بيانات”، متبوعا باسم القاعدة و بالرمز ;

ماذا لو كانت قاعدة البيانات التي أنشأناها موجودة مسبقا؟

إذا قمنا بإنشاء قاعدة بيانات تحمل نفس اسم قاعدة موجودة بالنظام مسبقا، سيظهر الخطأ 1007 التالي:

mysql> CREATE DATABASE example;
Query OK, 1 row affected (0.14 sec)

mysql> CREATE DATABASE example;
ERROR 1007 (HY000): Can't create database 'example'; database exists

لذا، لتجنب ظهور هذا الخطأ، يمكن إضافة الشرط IF NOT EXISTS للأمر CREATE DATABASE، بمعنى، أضف قاعدة البيانات التالية إذا لم تكن موجودة. و ذلك كالتالي:

mysql> CREATE DATABASE IF NOT EXISTS example;
Query OK, 1 row affected, 1 warning (0.07 sec)

و هكذا لم يظهر الخطأ.

استعمال قاعدة البيانات

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

الكود المستعمل من أجل استعمال قاعدة بيانات:

USE training;

نكتب أمر USE أو “استعمل” متبوعا باسم قاعدة البيانات التي نرغب في العمل عليها.

حذف قاعدة البيانات

عندما نرغب في حذف قاعدة بيانات ما، نستعمل الكود التالي:

DROP DATABASE training;

ملاحظة أولى: يجب الحذر ألف مرة قبل استعمال هذا الكود، فقد يتم محو قواعد بيانات ضخمة و مهمة عن غير قصد.

ملاحظة ثانية: نلاحظ أن كود إنشاء و حذف قاعدة البيانات كلاهما يحتويان على كلمة DATABASE. في حين كود استعمال قاعدة البيانات لا يتوفر سوى على أمر USE.
السبب هو من أجل التفريق بين قواعد البيانات و الجداول، فأمري CREATE و DROP يستعملان أيضا مع الجداول، و لتجنب المشاكل في حالة وجود جدول و قاعدة بيانات بنفس الاسم، نكتب DATABASE بعد الأمر عندما يتعلق الأمر بقواعد البيانات، و نكتب TABLE عندما يتعلق الأمر بالجداول.

ماذا لو قمنا عن غير قصد بكتابة أمر حذف قاعدة بيانات غير موجودة؟

إذا حاولنا حذف قاعدة بيانات غير موجودة، سيظهر الخطأ 1008 كالتالي:

mysql> DROP DATABASE customers;
ERROR 1008 (HY000): Can't drop database 'customers'; database doesn't exist

كما في السابق، نضيف الشرط IF EXISTS (إذا كانت موجودة) إلى أمر الحذف DROP DATABASE:

mysql> DROP DATABASE IF EXISTS customers;
Query OK, 0 rows affected, 1 warning (0.03 sec)

الجداول أو الوحدات (Entity)

إنشاء جدول

الجدول هو وحدة تجمع البيانات الخاصة بكيان واحد، في هذا المثال الكيان هو الموظف، أي سنقوم بإنشاء جدول يُسمى employees، حيث سيتضمن السمات التالية:

  • الاسم : النوع VARCHAR و عدد الأحرف 50
  • الوظيفة : النوع VARCHAR و عدد الأحرف 25
  • رقم الهاتف : النوع VARCHAR و عدد الأحرف 14
  • رقم خاص بكل موظف (ID) : النوع INT (مفتاح رئيسي)

يتم إنشاء الجدول باستعمال الكود التالي:

CREATE TABLE employees (
							id INT PRIMARY KEY,
							name VARCHAR(50),
							job VARCHAR(25),
							phoneNumber VARCHAR(14) );

 نكتب اسم الجدول مباشرة بعد أمر CREATE TABLE، و في نفس الأمر يجب أن نحدد أعمدة الجدول و أنواعها، فلن يشتغل الكود إن كتبنا ;CREATE TABLE example لأنه لا يمكن أن يتواجد جدول دون أعمدة.

الأعمدة في هذا المثال هي السمات: name, job, phoneNumber. و أنواعها تكتب بجوارها.

  • للتفريق بين كل عمود و عمود نستعمل الفاصلة ,
  • لتحديد نهاية الأمر نستعمل الفاصلة المنقوطة ;
  • أما عن PRIMARY KEY بجوار الـ id فهو يُعَرِّف عمود id على أنه المفتاح الأولي للجدول. (هناك عدة كتابات للـ PRIMARY KEY، سنخصص موضوعا منفصلا لهذا)

إدخال بيانات في الجدول

من أجل إدخال البيانات نستعمل الكود التالي:

INSERT INTO employees (id, name, job, phoneNumber)
VALUES (1, "Ahmed", "Production Manager", "2256774389");

نكتب أمر INSERT INTO أو “أدخل في”، متبوعا باسم الجدول، في هذا المثال هو employees و بعدها نضيف السمات داخل قوسين. و نكتب القيم التي نريد إدخالها بعد الكلمة VALUES، مع احترام الترتيب المحدد للسمات.

كما يمكن كتابة الكود كاملا في سطر واحد، و لكن لجعل الكود أكثر وضوحا يفضل إضافة سطر بين اسم الجدول و القيم. ففي SQL، لا تُهم المساحات و الأسطر بين أجزاء الأمر، فنهاية الأوامر يتم تحديدها بالفاصلة المنقوطة ;

ملاحظة: يمكن أن نستغني عن إعادة كتابة أعمدة الجدول، و لكن في هذه الحالة:
– يجب إدخال البيانات في جميع الأعمدة دون نسيان واحد منها؛
– يجب اعتماد نفس ترتيب الأعمدة أثناء إدخال البيانات.

INSERT INTO employees VALUES (1, "Ahmed", "Production Manager", "2256774389");

لإدخال أكثر من صف:

يمكن كتابة نفس الكود كل مرة رغبنا في إدخال صف جديد:

INSERT INTO Students (ID, Name, Age) 
    VALUES ('12AE', 'AHMED ESSABER', '10');
INSERT INTO Students (ID, Name, Age) 
    VALUES ('07SW', 'SALMA WARDI', '08');
INSERT INTO Students (ID, Name, Age)
    VALUES ('09MK', 'MONA KHALID', '13');

و لكن هناك طريقة أخرى لإدخال أكثر من صف:

INSERT INTO Students (ID, Name, Age)
VALUES ('12AE', 'AHMED ESSABER', '10'),
       ('07SW', 'SALMA WARDI', '08'),
       ('09MK', 'MONA KHALID', '13');

التعديل على محتوى صف في الجدول:

إذا رغبنا في التعديل و تغيير قيمة ما في الجدول،  نستعمل الكود التالي:

UPDATE employees SET name = "Sara" WHERE id = 1;

 حيث سيتغير محتوى عمود الاسم name في الصف الذي يتوفر على id=1

ملاحظة: عندما نرغب في تغيير قيمة خاصة بصف واحد فقط، يُنصح باستعمال العمود المعتبر كمفتاح أولي رئيسي (PK). لكن، عندما نرغب في تعديل بيانات أكثر من صف، نستعمل العمود الذي يحتوي على قيم مشتركة بين الصفوف المرغوب التعديل عليها.

حذف قيم صف ما

من أجل حذف قيم ما، نستعمل الكود التالي:

DELETE FROM employees WHERE id=1;

سيتم حذف السطر الخاص بالمفتاح الرئيسي 1.

الاستعلام

عندما نرغب بإظهار محتويات الجدول، نستعمل الكود التالي:

SELECT * FROM employees;

تسير النجمة * إلى جميع البيانات (ALL).

من أجل إظهار صف واحد مثلا، نستعمل الكود التالي:

SELECT * FROM employees WHERE name = "Sara";

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

العمل المطلوب:

  • إنشاء قاعدة بيانات تجريبية؛
  • إنشاء الجدول التالي و إدخال البيانات به:
عنوان الكتاب اسم الكاتب تاريخ الإنتاج نوع الكتاب
Disappearing Earth Julia Phillips 2019 Novel
Educated Tara Westover 2019 Biography
Millennial money makeover Conor Richardson 2019 Self-help book
Anything is possible Elizabeth Strout 2017 Novel
  • تغيير تاريخ الجدول الخاص بالكتاب Educated إلى 2018.
  • الاستعلام على الصف الذي تم تغييره.

يمكنكم مشاركة أعمالكم في منتدى الموقع.

السابق
3: أنواع البيانات – دورة MySQL
التالي
5: التعديل على الجداول – دورة MySQL