سلة مشترياتك فارغة في الوقت الحالي!
تعلم SQL من الصفر حتى الاحتراف: الدليل الكامل لبناء قواعد بياناتك باحترافية
بعد قراءة هذا الدليل، ستتمكن من تصميم قواعد بياناتك الخاصة بسهولة واحترافية
الأساسيات:
- ما هي SQL؟
- لغة لإدارة قواعد البيانات.
- تستخدم لإنشاء الجداول، إدخال البيانات، تعديلها، وحذفها.
- أنواع قواعد البيانات المشهورة:
- MySQL
- PostgreSQL
- SQLite
- SQL Server
- أساسيات قاعدة البيانات:
- جدول (Table): يحتوي على البيانات في شكل صفوف وأعمدة.
- صف (Row): يُمثل سجلاً واحدًا من البيانات.
- عمود (Column): يُمثل نوعًا معينًا من البيانات.
الجداول:
إنشاء جدول:
CREATE TABLE Users (
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100),
Created_At TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
- ID: معرف فريد لكل صف.
- Name: اسم المستخدم، نص بطول 100 حرف.
- Email: بريد إلكتروني، نص بطول 100 حرف.
- Created_At: وقت الإنشاء تلقائيًا.
عرض الجداول الموجودة:
SHOW TABLES;
وصف جدول:
DESCRIBE Users;
أنواع القيم (Data Types):
- INT: أرقام صحيحة.
- VARCHAR: نصوص بطول محدد.
- TEXT: نصوص طويلة.
- DATE: تاريخ.
- TIMESTAMP: تاريخ ووقت.
- BOOLEAN: صحيح أو خطأ.
مثال:
CREATE TABLE Products (
ProductID INT AUTO_INCREMENT PRIMARY KEY,
ProductName VARCHAR(255),
Price DECIMAL(10, 2),
InStock BOOLEAN
);
العلاقات (Relationships):
1. علاقة واحد لواحد (One-to-One):
CREATE TABLE UsersDetails (
UserID INT PRIMARY KEY,
Address VARCHAR(255),
FOREIGN KEY (UserID) REFERENCES Users(ID)
);
2. علاقة واحد لمتعدد (One-to-Many):
CREATE TABLE Orders (
OrderID INT AUTO_INCREMENT PRIMARY KEY,
UserID INT,
OrderDate DATE,
FOREIGN KEY (UserID) REFERENCES Users(ID)
);
3. علاقة متعدد لمتعدد (Many-to-Many):
CREATE TABLE CourseStudent (
CourseID INT,
StudentID INT,
FOREIGN KEY (CourseID) REFERENCES Courses(ID),
FOREIGN KEY (StudentID) REFERENCES Students(ID),
PRIMARY KEY (CourseID, StudentID)
);
سكريبتات (CRUD Operations):
1. إضافة بيانات (INSERT):
INSERT INTO Users (Name, Email) VALUES (‘Ahmed’, ‘ahmed@example.com’);
2. عرض البيانات (SELECT):
- كل البيانات:
SELECT * FROM Users;
- أعمدة محددة:
SELECT Name, Email FROM Users;
- فلترة البيانات:
SELECT * FROM Users WHERE Name = ‘Ahmed’;
3. تحديث البيانات (UPDATE):
UPDATE Users SET Email = ‘newemail@example.com’ WHERE ID = 1;
4. حذف البيانات (DELETE):
DELETE FROM Users WHERE ID = 1;
ملاحظات هامة:
- الفرق بين DELETE و TRUNCATE:
- DELETE: يحذف سجلات محددة مع وجود إمكانية الاسترجاع إذا تم استخدام معاملات (Transactions).
- TRUNCATE: يحذف كل البيانات من الجدول نهائيًا ولا يمكن استرجاعها.
- الفرق بين DROP و DELETE:
- DROP: يحذف الجدول بالكامل بما فيه من هيكل.
- DELETE: يحذف فقط البيانات داخل الجدول.
مثال:
DROP TABLE Users; — يحذف الجدول بالكامل.
TRUNCATE TABLE Users; — يحذف كل البيانات ويعيد الجدول فارغًا.
أمثلة عملية:
إنشاء قاعدة بيانات جديدة:
CREATE DATABASE MyDatabase;
USE MyDatabase;
إضافة بيانات متعددة مرة واحدة:
INSERT INTO Users (Name, Email)
VALUES
(‘Ali’, ‘ali@example.com’),
(‘Sara’, ‘sara@example.com’);
عرض البيانات المرتبطة:
SELECT Users.Name, Orders.OrderDate
FROM Users
JOIN Orders ON Users.ID = Orders.UserID;
خليني أوضح لك موضوع الـ ID وفائدته مع شرح Primary Key وعلاقة التاريخ بالسجلات.
ID وفائدته في الجداول:
- ID هو عمود يُستخدم كـ معرّف فريد (Unique Identifier) لكل صف (Row) في الجدول.
- أهميته:
- تمييز السجلات: كل سجل (Row) يكون ليه رقم فريد يميّزه عن غيره.
- سهولة الربط بين الجداول: لما تعمل علاقات بين جداول (مثلًا Users وOrders)، الـ ID يكون المفتاح الأساسي للربط.
- تفادي التكرار: يضمن إنك متقدرش تضيف سجل بنفس المعرف مرتين.
مثال:
CREATE TABLE Users (
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100)
);
- AUTO_INCREMENT: يخلي الـ ID يزيد تلقائيًا مع كل سجل جديد.
- PRIMARY KEY: يضمن أن كل قيمة في عمود الـ ID تكون فريدة وغير فارغة.
فايدة Primary Key:
- فريد (Unique): ماينفعش يكون فيه سجلين بنفس المفتاح.
- أساسي (Not Null): لازم كل سجل يكون له مفتاح أساسي.
- أساس العلاقات: بيستخدم لربط الجداول مع بعضها.
فكرة وجود تاريخ (Timestamp) لكل Row:
- إضافة عمود خاص بالتاريخ يساعدك تتبع:
- متى تم إنشاء السجل (Created At).
- متى تم تعديله آخر مرة (Updated At).
مثال:
CREATE TABLE Users (
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100),
Created_At TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Updated_At TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
- Created_At: يخزن وقت إنشاء السجل تلقائيًا.
- Updated_At: يتحدث تلقائيًا عند تعديل السجل.
فكرة الجدول نفسه:
- الجدول عبارة عن هيكل منطقي لتخزين البيانات.
- كل صف (Row) يمثل سجل بيانات.
- كل عمود (Column) يمثل نوع البيانات (Name, Email, Age, إلخ).
مثال على جدول بسيط:
ID | Name | Created_At | Updated_At | |
1 | Ahmed | ahmed@example.com | 2024-12-19 10:00:00 | 2024-12-19 10:00:00 |
2 | Sara | sara@example.com | 2024-12-19 10:05:00 | 2024-12-19 10:10:00 |
- ID: يميّز كل سجل.
- Created_At: تاريخ الإضافة.
- Updated_At: تاريخ آخر تعديل.
ليه كل Row ليه نفس الـ ID في جدول جديد؟
- لما تعمل علاقة بين جدولين (One-to-Many):
- الجدول الأول (Users) يحتوي على Primary Key (ID).
- الجدول الثاني (Orders) يحتوي على Foreign Key يشير إلى الـ ID في الجدول الأول.
مثال:
جدول Users:
ID | Name | |
1 | Ahmed | ahmed@example.com |
2 | Sara | sara@example.com |
جدول Orders:
OrderID | UserID | OrderDate |
101 | 1 | 2024-12-19 |
102 | 1 | 2024-12-20 |
103 | 2 | 2024-12-21 |
- UserID في جدول Orders هو الـ ID من جدول Users.
- المستخدم أحمد (ID = 1) له أكثر من طلب (Rows مختلفة).
الخلاصة:
- ID مهم: للتمييز بين السجلات وضمان العلاقات الصحيحة.
- التاريخ مفيد: لتتبع التغييرات وتوثيق البيانات.
- الجدول هو الأساس: لبناء البيانات بشكل منظم وسهل التحليل.
يمكنك التواصل معي في اي وقت