مفهوم الترقيم التلقائي للأسطر
ببساطة فكرته أن يتم وضع رقم موحد لكل سطر يتم إضافته في الجدول و بشكل تلقائي مما يمكنك لاحقاً من العودة إلى هذا السطر بكل سهولة من خلال رقمه.
بشكل عام, كلما أنشأنا جدول جديد نضيف فيه حقل يتم ترقيمه بشكل تلقائي و في العادة نقوم بتسميته id و نقول له باللغة العربية رقم التعرفة.
في هذا الدرس ستتعلم كيف تجعل كل سطر يضاف يحصل على رقم موحد, و في دروس لاحقة ستتعلم كيف تستفيد من هذا الرقم في عمليات البحث, تحديث المعلومات, حذف المعلومات, إنشاء العلاقات بين الجداول, إنشاء فهارس إلخ..
الحصول على ترقيم تلقائي
لإنشاء عامود في الجدول يتم وضع ترقيم لأسطره بشكل تلقائي في قواعد بيانات MySQL يجب أن يتم تعريف نوع هذا العامود كالتالي.
column_name INT NOT NULL PRIMARY KEY AUTO_INCREMENT
مكان الكلمة
column_nameنضع إسم العامود الذي سيتم إنشاؤه في الجدول.INTتعني أن العامود سيوضع فيه أعداد صحيحة.NOT NULLتعني أن العامود لا يمكن أن يكون فارغ و هذا الأمر منطقي لأنه سيتم وضع رقم تلقائي لكل سطر يتم إضافته في الجدول.PRIMARY KEYتعني أن هذا الحقل لا يمكنه أن يحتوي على رقم متكرر و لهذا يعتبر المفتاح الرئيسي للوصول لأي سطر (أو سجل) موجود في الجدول.AUTO_INCREMENTتعني أن الأرقام التي ستزيد قيمتها بشكل تلقائي لكل سطر.
إختلاف الأوامر بين قواعد البيانات
نود الإشارة إلى أن الترقيم التلقائي موجود في كل قواعد البيانات و لكن قد تجد أنهم يستخدموا كلمة أخرى بدلاً من الكلمة AUTO_INCREMENT و إليك بعض الأمثلة:
في قواعد بيانات Access و SQLite نكتب
AUTOINCREMENTبدلاً منها.في قواعد بيانات SQL Server نكتب
IDENTITY(1,1)بدلاً منها.
في النهاية, مهما كان نوع قاعدة البيانات التي ستتعامل معها, فكرة الترقيم التلقائي هي نفسها تماماً.
تجهيز قاعدة البيانات التي سنطبق عليها
بما أننا سنتعلم كيف ننشئ عامود في الجدول يتم إعطاء كل سطر فيه رقم بشكل تلقائي, سنقوم بتجهيز قاعدة البيانات التي سنتعامل معها.
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash.
الإستعلام
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
DROP DATABASE IF EXISTS harmash;
-- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
CREATE DATABASE harmash;
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول users بداخلها كالتالي.
الآن, قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها.
إنشاء جدول يعطي ترقيم تلقائي لكل سطر يضاف فيه
قم بتنفيذ الإستعلام التالي لإنشاء جدول جديد إسمهusers و يتألف من 3 أعمدة.
لاحظ أننا قمنا بوضع خاصية AUTO_INCREMENT للعامود الأول لأننا نريد جعل قيمته تزيد بشكل تلقائي في كل سطر نضيفه في الجدول.
الإستعلام
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
email VARCHAR(100)
);
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيظهر الجدول في قاعدة البيانات كالتالي.
إضافة سطر في جدول يعطي ترقيم تلقائي
قم بتنفيذ الإستعلام التالي لإضافة خمسة سطور جديدة في الجدول users.
لاحظ أننا لم نذكر إسم العامود id و لم نمرر له قيمة و ذلك لأن قاعدة البيانات ستضع قيمة في الحقل id لكل سطر يتم إنشاؤه.
الإستعلام
INSERT INTO users (username, email) VALUES ('mhamad', 'mhamad@example.com');
INSERT INTO users (username, email) VALUES ('hassan', 'hassan@example.com');
INSERT INTO users (username, email) VALUES ('sara', 'sara@example.com');
INSERT INTO users (username, email) VALUES ('rami', 'rami@example.com');
INSERT INTO users (username, email) VALUES ('maria', 'maria@example.com');
الآن, أنقر على إسم الجدول users لرؤية جميع الأسطر التي أضفتها فيه كالتالي.
لاحظ كيف تم إعطاء رقم موحد لكل سطر في الحقل id بشكل تلقائي.
في الدرس التالي سترى كم هو مهم وضع رقم موحد لكل سطر و كيف نتعامل معها.
الأمر SELECT
الأمر SELECT يستخدم لجلب نسخة من البيانات التي تم إدخالها سابقاً في الجداول.
بشكل عام, يستخدم هذا الأمر للحصول على نسخة من البيانات الموجودة في الجداول بهدف عرضها سواء في صفحات الويب, التطبيقات أو الإحتفاظ بنسخة منها.
الشكل العام لإستخدامه
SELECT column1, column2, ...
FROM table_name;
مكان الكلمة table_name نضع إسم الجدول الذي سنجلب البيانات منه.
ملاحظة: يمكنك جلب البيانات من أكثر من جدول في نفس الوقت و لكن هذا الأمر سنتطرق له في دروس متقدمة.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.
الإستعلام
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
DROP DATABASE IF EXISTS harmash;
-- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
CREATE DATABASE harmash;
-- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
USE harmash;
-- يتألف من ستة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
-- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
CREATE TABLE employees (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(20),
is_married BOOLEAN,
salary DECIMAL(7,2),
birthday Date
);
-- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
-- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
-- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
-- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23");
INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08");
INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12");
INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04");
INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27");
INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12");
INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10");
INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14");
INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12");
INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
جلب جميع البيانات الموجودة في الجدول
عند استخدام الأمر SELECT لجلب أي معلومة تم إدخالها في الجدول يمكنك ذكر أسماء الحقول التي نريد رؤيتها فقط في كل سطر. و في حال أردت رؤية جميع الحقول الموجودة في كل سطر يمكنك وضع رمز النجمة * بعد الكلمة SELECT.
مثال
قم بتنفيذ الإستعلام التالي لجلب جميع البيانات المخزنة في الجدول employees.
إذاً هذا الإستعلام يعرض جميع المعلومات المتوفرة حول الموظفين.
الإستعلام
SELECT * FROM employees;
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
| id | first_name | last_name | is_married | salary | birthday |
|---|---|---|---|---|---|
| 1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
| 2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
| 3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
| 4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
| 5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
| 6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
| 7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
| 8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
| 9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
| 10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
تحديد أسماء الحقول التي سيتم جلبها من الجدول
قم بتنفيذ الإستعلام التالي لجلب جميع البيانات الموجودة في الحقول first_name و last_name و salary.
إذاً هذا الإستعلام يعرض أسماء جميع الموظفين و رواتبهم.
الإستعلام
SELECT first_name, last_name, salary
FROM employees;
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
| first_name | last_name | salary |
|---|---|---|
| Ahmad | Alhazem | 800.00 |
| Rami | Algharib | 750.00 |
| Said | Alnaja | 900.00 |
| Noura | Jamali | 845.00 |
| Amani | Sarrouf | 1000.00 |
| Mhamad | Harmush | 700.00 |
| Ahmad | Asaadi | 850.00 |
| Mostafa | Shawki | 920.00 |
| Jana | Alkassem | 780.00 |
| Houssam | Zahrani | 880.00 |
تغيير أسماء الأعمدة عند جلبها من الجدول
لتبديل إسم أي جدول سيتم إرجاعه في النتيجة نضع الكلمة AS بعد إسم أي جدول نريد تبديله و من ثم نضع الكلمة التي سيتم تبديل إسم الجدول بها.
ملاحظة: هناك عدة طرق للتعامل مع الكلمة AS و لكننا سنتطرق لبعضها فقط لأنها ليست موضوع الدرس.
مثال
الإستعلام التالي يجلب نفس المعلومات التي جلبها الإستعلام السابق مع فرق واحد و هو أننا قمنا بتبديل أسماء الأعمدة التي تم إرجاعها.
إسم العامود
first_nameقمنا بتبديله إلىFirst Nameإسم العامود
last_nameقمنا بتبديله إلىLast Nameإسم العامود
salaryقمنا بتبديله إلىSalary
الإستعلام
SELECT first_name AS 'First Name', last_name AS 'Last Name', salary AS 'Salary'
FROM employees;
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
| First Name | Last Name | Salary |
|---|---|---|
| Ahmad | Alhazem | 800.00 |
| Rami | Algharib | 750.00 |
| Said | Alnaja | 900.00 |
| Noura | Jamali | 845.00 |
| Amani | Sarrouf | 1000.00 |
| Mhamad | Harmush | 700.00 |
| Ahmad | Asaadi | 850.00 |
| Mostafa | Shawki | 920.00 |
| Jana | Alkassem | 780.00 |
| Houssam | Zahrani | 880.00 |