أنت قلت:
قال ChatGPT:
جميل — سؤال واحد سريع قبل أن أبدأ لعلّي أبني الشرح على مستواك: ما مستواك أو هدفك من هذه الأمثلة؟ (مثلاً: طالب ثانوي / طالب جامعي سنة 1 / مطوّر قواعد بيانات / تحضير لمقابلة عمل).
إذا ما جاوبت أبدأ بشرح عملي ومبسّط مناسب لمستوى صفّ الـ10 — هل تفضل ذلك؟
أنت قلت:
قال ChatGPT:
رائع 👍 هذا ممتاز — نبدأ من الصفر خطوة بخطوة، وبأسلوب عملي على Oracle SQL.
سأشرح أولاً الفكرة، ثم نعطي أمثلة حقيقية يمكنك تنفيذها داخل Oracle SQL Developer أو أي بيئة SQL.
🧩 أولاً: إنشاء قاعدة بيانات بسيطة (مثلاً قاعدة بيانات طلاب)
سننشئ جدول اسمه STUDENTS لتخزين معلومات الطلاب.
🔹 إنشاء جدول
CREATE TABLE STUDENTS (
STUDENT_ID NUMBER PRIMARY KEY,
STUDENT_NAME VARCHAR2(50),
AGE NUMBER,
MAJOR VARCHAR2(50)
);
💡 الشرح:
-
STUDENT_IDرقم فريد (المفتاح الأساسي). -
VARCHAR2يعني نص بطول محدد. -
NUMBERيعني رقم.
🔹 إضافة سجل (صف جديد)
INSERT INTO STUDENTS (STUDENT_ID, STUDENT_NAME, AGE, MAJOR)
VALUES (1, 'Ahmed Ali', 20, 'Computer Science');
🔹 عرض جميع البيانات (استعلام)
SELECT * FROM STUDENTS;
🔹 إضافة حقل جديد (عمود جديد)
مثلاً نريد إضافة البريد الإلكتروني:
ALTER TABLE STUDENTS
ADD EMAIL VARCHAR2(100);
🔹 تعديل حقل موجود
نريد مثلاً جعل حقل AGE أكبر (مثلاً عدد أكبر من رقمين):
ALTER TABLE STUDENTS
MODIFY AGE NUMBER(3);
🔹 حذف حقل من الجدول
مثلاً حذف حقل MAJOR:
ALTER TABLE STUDENTS
DROP COLUMN MAJOR;
🔹 تعديل اسم الجدول أو الحقل
تغيير اسم الجدول من STUDENTS إلى STUDENT_INFO:
RENAME STUDENTS TO STUDENT_INFO;
🔹 حذف الجدول بالكامل
DROP TABLE STUDENT_INFO;
🔹 بعض الاستعلامات المفيدة
1. عرض أسماء الطلاب فقط
SELECT STUDENT_NAME FROM STUDENTS;
2. البحث عن طالب عمره أكبر من 18
SELECT * FROM STUDENTS WHERE AGE > 18;
3. ترتيب الطلاب حسب العمر
SELECT * FROM STUDENTS ORDER BY AGE DESC;
4. حساب عدد الطلاب
SELECT COUNT(*) FROM STUDENTS;
هل ترغب أن أكمل في الدرس التالي بـ العلاقات بين الجداول (مثل علاقة الطالب مع المواد الدراسية)، أم تفضل أن أريك الآن أمثلة تطبيقية إضافية على الاستعلامات (مثل JOIN وGROUP BY وLIKE وما شابه)؟
أنت قلت:
قال ChatGPT:
ممتاز 👌 خلّينا نكمل الجزأين الباقيين بالتفصيل العملي جدًا داخل Oracle SQL:
التعديل (UPDATE) و الحذف (DELETE).
سنستخدم نفس جدول الطلاب STUDENTS الذي أنشأناه في المثال السابق.
🧩 أولاً: التعديل (UPDATE)
الغرض: نغيّر بيانات موجودة في الجدول، مثل تعديل عمر الطالب أو تخصّصه.
🔹 مثال 1: تعديل عمر الطالب
UPDATE STUDENTS
SET AGE = 22
WHERE STUDENT_ID = 1;
🔍 الشرح:
-
SET AGE = 22→ القيمة الجديدة. -
WHERE STUDENT_ID = 1→ حتى لا يغيّر كل الصفوف! فقط الطالب رقم 1.
🔹 مثال 2: تعديل أكثر من حقل
UPDATE STUDENTS
SET STUDENT_NAME = 'Ahmed Hassan',
EMAIL = 'ahmed.hassan@example.com'
WHERE STUDENT_ID = 1;
💡 مهم جدًا:
إذا نسيت شرط WHERE فسيُحدِّث كل الصفوف في الجدول — خطأ شائع جدًا!
🗑️ ثانيًا: الحذف (DELETE)
الغرض: حذف صفوف من الجدول (بيانات معينة أو الكل).
🔹 مثال 1: حذف طالب واحد
DELETE FROM STUDENTS
WHERE STUDENT_ID = 1;
🔹 مثال 2: حذف كل الطلاب الأكبر من 25 سنة
DELETE FROM STUDENTS
WHERE AGE > 25;
🔹 مثال 3: حذف كل الصفوف (تفريغ الجدول فقط)
DELETE FROM STUDENTS;
أو (طريقة أسرع لكنها لا يمكن التراجع عنها):
TRUNCATE TABLE STUDENTS;
⚠️ تذكير
-
استخدم دائمًا
WHEREمعUPDATEوDELETEلتجنب تعديل أو حذف كل الجدول عن طريق الخطأ. -
يمكنك التأكد أولًا باستخدام
SELECT:sqlSELECT * FROM STUDENTS WHERE AGE > 25;لتتأكد من الصفوف التي ستتأثر.
هل ترغب أن أضيف الآن تطبيق عملي كامل صغير يجمع كل الأوامر من إنشاء الجدول إلى الحذف مع بيانات واقعية (كأنك تنفّذ مشروع بسيط داخل Oracle)؟
أنت قلت:
قال ChatGPT:
رائع 👌 — ممتاز أنك تميّز بين Oracle و SQL Server، لأن بينهما تشابه كبير لكن توجد فروق صغيرة في الصياغة (خاصة في أنواع البيانات وطريقة كتابة النصوص).
سنأخذ نفس الأمثلة تمامًا، لكن بصيغة SQL Server (Microsoft SQL Server).
🧩 إنشاء جدول (Students)
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
StudentName NVARCHAR(50),
Age INT,
Major NVARCHAR(50)
);
💡 الفرق:
-
في SQL Server نستخدم
INTبدلاً منNUMBER. -
نستخدم
NVARCHARبدلاً منVARCHAR2.
🟩 إضافة بيانات (INSERT)
INSERT INTO Students (StudentID, StudentName, Age, Major)
VALUES (1, N'Ahmed Ali', 20, N'Computer Science');
💡 الحرف N قبل النص يعني أنه يدعم العربية واللغات الأخرى (Unicode).
🔍 عرض البيانات (SELECT)
SELECT * FROM Students;
➕ إضافة حقل جديد (ALTER ADD)
ALTER TABLE Students
ADD Email NVARCHAR(100);
✏️ تعديل حقل (ALTER MODIFY → في SQL Server نستخدم ALTER COLUMN)
ALTER TABLE Students
ALTER COLUMN Age INT;
(يمكنك تعديل النوع أو الطول فقط، وليس الاسم بهذه الطريقة.)
❌ حذف حقل
ALTER TABLE Students
DROP COLUMN Major;
🔄 تعديل اسم الجدول أو الحقل
تغيير اسم الجدول:
EXEC sp_rename 'Students', 'StudentInfo';
تغيير اسم عمود:
EXEC sp_rename 'StudentInfo.Age', 'StudentAge', 'COLUMN';
🧹 حذف الجدول
DROP TABLE StudentInfo;
✏️ التعديل على البيانات (UPDATE)
UPDATE Students
SET Age = 22
WHERE StudentID = 1;
تعديل أكثر من حقل:
UPDATE Students
SET StudentName = N'Ahmed Hassan',
Email = N'ahmed.hassan@example.com'
WHERE StudentID = 1;
🗑️ الحذف (DELETE)
حذف طالب واحد:
DELETE FROM Students
WHERE StudentID = 1;
حذف كل الطلاب الأكبر من 25:
DELETE FROM Students
WHERE Age > 25;
حذف كل البيانات:
DELETE FROM Students;
أو لتفريغ الجدول بسرعة (بدون حفظ سجل الحذف):
TRUNCATE TABLE Students;
.png)