الملك كاظم
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])
لغة 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])