المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : لمحة عن لغة Sql باللغة العربية


الملك كاظم
Mar 2005, 03:41 PM
أخوتي الأكارم / حياكم الله
لغة SQL:
سأشرح بعض مفردات هذه اللغة مباشرةً ودون وجع راس (من الأخير)!!
فكما هو معروف لا بد من وجود جداول Tables في قاعدة البيانات Database تحتوي على سجلات Records ، كل سجل منها يحتوي على حقل Field أو مجموعة من الحقول.

والمثال التالي يوضح جدولاً باسم Persons:
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh

ففي الجدول السابق توجد خمسة سجلات تحتوي على أربعة حقول هي (LastName وFirstName وCountry وCity).

الاستعلامات في SQL:
يمكننا إنشاء استعلام في SQL واستجلاب نتيجة تنفيذه. يكون شكل الاستعلام العام كما يلي:
X استعلام SQL

SELECT LastName FROM Persons


وتكون نتيجة تنفيذه كما يلي:
LastName
Swedan
Waer
Kaskeen
Marakbi
Aseeri

ملاحظة /
بعض أنظمة قواعد البيانات تشترط وجود الفاصلة المنقوطة في نهاية جملة SQL.

الجملة Select:
وتستخدم لاستخلاص البيانات من جدول أو مجموعة جداول. وتكون نتيجة تنفيذها عبارة عن جدول من البيانات.
والصورة العامة لهذه الجملة:
X استعلام SQL

SELECT column_name(s)
FROM table_name


حيث Column_Name(s) هو اسم الحقل أو أسماء الحقول.
وTable_name: هو اسم الجدول.

اختيار بعض الحقول:
لنفرض أننا نريد عرض الحقلين FirstName وLastName من الجدول السابق ، نصدر استعلاماً كالتالي:
X استعلام SQL

SELECT LastName,FirstName FROM Persons


فتكون نتيجة تنفيذ هذا الاستعلام كالتالي:
LastName FirstName
Swedan Abubaker
Waer Walid
Kaskeen Mohammed
Marakbi Amr
Aseeri Turki


اختيار كل الحقول:
نستعمل المعامل (*) للدلالة على كافة الحقول. وفيما يلي عرض كل الحقول في الجدول Persons:
X استعلام SQL

SELECT * FROM Persons


وتكون نتيجة الاستعلام كالتالي:
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh

الجملة SELECT DISTINCT:
ونستخدمها لاستجلاب السجلات بدون تكرار قيمة الحقل المحدد.
فلو فرضنا أننا أصدرنا الاستعلام التالي:
X استعلام SQL

SELECT Country FROM Persons


لكانت نتيجة الاستعلام كالتالي:
Country
Libya
Libya
Libya
Egypt
Saudi Arabia
حيث تكررت Libya ثلاث مرات أليس كذلك؟ والآن: لنفرض أننا نريد عرض أسماء الدول المسجلة في الحقل Country دون تكرار اسم أي دولة. عندها سيكون الحل كالتالي:
X استعلام SQL

SELECT DISTINCT Country FROM Persons

وتكون نتيجة تنفيذه:
Country
Libya
Egypt
Saudi Arabia
نلاحظ أن اسم Libya ظهر مرة واحد فقط.
الفقرة WHERE Clause:
كنا في الفقرات السابقة نصدر الاستعلامات دون قيد أو شرط ، ولكن لو أننا أردنا إصدار استعلام مشروط نستخدم العبارة Where.

فمثلاً: لو أردنا إصدار استعلام يختار الحقلين FirstName وLastName لكافة السجلات التي يكون اسم البلد فيها Libya نكتب الاستعلام التالي:
X استعلام SQL

SELECT LastName, FirstName FROM Persons WHERE Country = 'Libya'

وتكون نتيجة تنفيذ الاستعلام كما يلي:
LastName FirstName
Swedan Abubaker
Waer Walid
Kaskeen Mohammed

إذا كان هناك شرط لعرض السجلات نستخدم العبارة WHERE متبوعة بأحد المعاملات الرياضية أو المنطقية التالية:

Operator Description
= Equal
<> Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern

وفي بعض الأنظمة نستعمل المعامل != بدلاً من <>.

استعمال علامات الاقتباس في الاستعلامات:
كما نلاحظ من المثال السابق تم استعمال علامتي الاقتباس لتحيط بالقيمة الرمزية للحقل حسب الشرط. لكن القيم العددية والمنطقية لا نستعمل لها علامات الاقتباس.
For numeric values:
الاستعلام التالي صحيح:
SELECT * FROM Persons WHERE Year>1979
الاستعلام التالي خطأ:
SELECT * FROM Persons WHERE Year>'1979'

الشرط Like:
غالباً ما نستعمله عند البحث عن السجلات التي تبدأ بحرف معين.
والصورة العامة للاستعلام عندئذ كالتالي:
X استعلام SQL

SELECT column FROM table
WHERE column LIKE pattern


نستعمل المعامل % قبل و/أو بعد الحرف المطلوب.

مثال: اعرض كافة السجلات في الجدول Persons السابق التي يبدأ الحقل FirstName فيها بالحرف A.
X استعلام SQL

SELECT * FROM Persons WHERE fIRSTnAME LIKE 'A%'


وستكون نتيجة تنفيذه كالتالي:
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Marakbi Amr Egypt Mansoora

مثال: اعرض كل السجلات في الجدول Persons السابق التي ينتهي الحقل LastName فيها بالحرفين 'en'.
X استعلام SQL

SELECT * FROM Persons WHERE LastName LIKE '%en'


وستكون نتيجة تنفيذه كالتالي:
LastName FirstName Country City
Kaskeen Mohammed Libya Zaliten

مثال: اعرض كافة السجلات في الجدول Persons السابق التي تحتوي قيمة الحقل FirstName فيها على الحرف 'a'.
X استعلام SQL

SELECT * FROM Persons WHERE FirstName LIKE '%a%'


وستكون نتيجة تنفيذه كالتالي:
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora

مثال:
استعلام يبحث عن السجلات التي تبدأ قيمة الحقل FirstName فيها بالحرف 'a' وتنتهي بـ 'r'.
X استعلام SQL

SELECT * FROM Persons WHERE FirstName LIKE 'a%r'


إضافة سجلات جديدة عن طريق INSERT INTO:
تستخدم الجملة Insert لإدراج سجل جديد في الجدول ، والصورة العامة لها كما يلي:
X استعلام SQL

INSERT INTO table_name
VALUES (value1, value2,....)


مثال: في الجدول Persons السابق سندرج سجلاً جديداً ونعين له القيم التالية:
Sakal, Faraj, Libya, Zaliten

X استعلام SQL

INSERT INTO Persons VALUES ('Sakal', 'Faraj', 'Libya', 'Zaliten')


فلو كتبنا استعلاماً يعرض كافة السجلات لظهر السجل الجديد.
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh
Sakal Faraj Libya Zaliten

كما يمكننا أن ندرج سجلاً جديداً ونعين قيماً لبعض الحقول وليس كلها كما يلي:
X استعلام SQL

INSERT INTO Persons (LastName, Country) VALUES ('Orriyt', 'Libya')



فيتم إدراج سجل جديد ، وعند استعراض الجدول سيكون مشابهاً لما يلي:
LastName FirstName Country City
Swedan Abubaker Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh
Sakal Faraj Libya Zaliten
Orriyt Libya

الجملة Update:
تستخدم هذه الجملة لتأكيد التخزين وتنشيط بيانات الجدول. والصورة العامة لها:
X استعلام SQL

UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value


تنشيط حقل واحد فقط في سجل:
إذا أردنا تنشيط الحقل Country في الجدول السابق نكتب الاستعلام التالي:
X استعلام SQL

UPDATE Person SET FirstName = 'Yahiya' WHERE LastName = 'Swedan'

فيتم تبديل قيمة الحقل FirstName إلى 'Yahiya' عندما تكون قيمة الحقل LastName = 'Swedan' ، وبالتالي تنشيط الحقل. وعند استعراض محتويات الجدول تكون النتيجة مشابهة لما يلي:
LastName FirstName Country City
Swedan Yahiya Libya Msellata
Waer Walid Libya Tripoli
Kaskeen Mohammed Libya Zaliten
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh
Sakal Faraj Libya Zaliten
Orriyt Libya

تنشيط عدة حقول في سجل:
كما يمكننا تعديل قيم عدة حقول وتنشيطها باستعمال نفس الجملة. فإذا أردنا تعديل قيمة الحقل City إلى 'Libyan City' في كل سجل تكون قيمة الحقل Country فيه تساوي 'Libya' نكتب الاستعلام التالي:
X استعلام SQL

UPDATE Person SET City = 'Libyan City' WHERE Country = 'Libya'
وعند استعراض الجدول يكون مشابها للجدول التالي:
LastName FirstName Country City
Swedan Yahiya Libya Libyan City
Waer Walid Libya Libyan City
Kaskeen Mohammed Libya Libyan City
Marakbi Amr Egypt Mansoora
Aseeri Turki Saudi Arabia Riyadh
Sakal Faraj Libya Libyan City
Orriyt Libya

الجملة Delete:
ونستخدمها لحذف وإزالة سجل من الجدول. والصورة العامة لها:
X استعلام SQL
DELETE FROM table_name
WHERE column_name = some_value

هذا إن كان هناك شروطاً للحذف. أما لحذف كافة السجلات فيكفي كتابة:
X استعلام SQL

DELETE * FROM table_name
أو كتابة:
DELETE FROM table_name


بالطبع لستُ مسئولاً عن الأضرار التي (قد) تنتج عن هكذا حذف!!

مثال: احذف كل السجلات التي قيمة الحقل Country فيها ليست Libya.
X استعلام SQL

DELETE * FROM Persons WHERE country <> 'Libya'


وعند استعراض الجدول يكون مشابهاً للجدول التالي:
LastName FirstName Country City
Swedan Yahiya Libya Libyan City
Waer Walid Libya Libyan City
Kaskeen Mohammed Libya Libyan City
Sakal Faraj Libya Libyan City
Orriyt Libya



الجملة Create Table:
ونستخدمها لإنشاء جدول جديد في قاعدة البيانات.
والصورة العامة لها كالتالي:
X استعلام SQL

CREATE TABLE <table_name> (<fieldname>[, <Fieldname])


الجملة CREATE INDEX:
ونستخدمها لإنشاء فهرس جديد للجدول.
والصورة العامة لها كالتالي:
X استعلام SQL

CREATE TABLE <table_name> (<fieldname>[, <Fieldname])

صمت الجمال
Mar 2005, 02:09 AM
دائما يكون خلف الإبداع رجل واحد


هو الملك كاظم


شكرا لك

ومعلومات قيمة جدا

الملك كاظم
Mar 2005, 09:05 AM
شـــ صمت الجمال ـــكرا

والله انتي المبدعة

أمـ جود ـ
Mar 2005, 03:42 AM
شكرا لك الملك


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


هو الذي يسهل المعلومة لدينا

شكرا لك الملك كاظم

الملك كاظم
Mar 2005, 10:49 PM
لالالالالالالالالالالالالالا
شكر على واجب حبيبي القيصر

عبد الله الساهر
Apr 2005, 07:02 AM
جميله جدا


ورائعه اكيد تسلم لنا على هالمعلومات

وعبوود الشهر القادم داخل دورة sql همتك وياي عيوني

Abubaker Swedan
Oct 2008, 11:38 AM
السلام عليكم

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

عبير
Nov 2008, 09:49 PM
شكر لك

ساكت قهر
Nov 2008, 12:19 PM
المللك كاااظم يعطيك ربي العافيه يالغاااالي