الفرق بين المراجعتين لصفحة: «SQL/where»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 183: | سطر 183: | ||
* [https://sqlite.org/lang_select.html توثيق WHERE في محرك SQLite] | * [https://sqlite.org/lang_select.html توثيق WHERE في محرك SQLite] | ||
* [https://docs.microsoft.com/en-us/sql/t-sql/queries/where-transact-sql توثيق WHERE في محرك SQLServer] | * [https://docs.microsoft.com/en-us/sql/t-sql/queries/where-transact-sql توثيق WHERE في محرك SQLServer] | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL Select]] | [[تصنيف:SQL Select|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:39، 28 يناير 2018
تُستخدم عبارة WHERE
ضمن استعلام SELECT
لتحديد الشروط التي تُعرض أو تحذف السجلات أو تُعدل قيم حقولها وفقًا لها، إذ يُمكن أن تستخدم أيضًا مع استعلامَي DELETE
و UPDATE
، وتعتمد اعتمادًا أساسيًا على المُعاملات المنطقية والحسابية وبعض المعاملات الأخرى في صياغة تلك الشروط.
الحصول على البيانات وفق شرطٍ بسيط
إن كان الجدول الآتي موجودًا في قاعدة البيانات:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
الاستعلام الآتي يُحدد شرط وجود قيمة السلسلة النصية 'Amin'
في الحقل Name
:
SELECT *
FROM students
WHERE Name=’Amin’;
وتكون نتيجة تنفيذه:
GPA | Age | Name | StudentID |
---|---|---|---|
1.96 | 22 | Amin | 1066 |
حذف السجل المُحقِّق لشرط معين
يمكن حذف سجل أو أكثر إن كان مُحقِّقًا لشرط يُحدد من خلال عبارة WHERE
.
إن تنفيذ الاستعلام الآتي يؤدي لحذف جميع سجلات الطلاب بمعدل أقل من 2.5 وذلك بالاعتماد على استعلام DELETE
:
DELETE FROM students
WHERE GPA<2.5;
تعديل القيم في السجلات وفق شرطٍ مُحدَّد
تحدد عبارة WHERE
الشرط الذي من خلاله ستُحدد السجلات التي ستُعدَّل قيمها بالاستفادة من الاستعلام UPDATE
، إذ يمكن تعديل قيمة أو أكثر.
الاستعلام الآتي سيُعدِّل قيمتي العمر والمعدل للسجل الذي يكون فيه الاسم بقيمة Yusuf
:
UPDATE students
SET Age = 24, GPA= 3.4
WHERE Name = 'Yusuf';
ويُلاحظ هنا أنه إن لم تُذكر عبارة WHERE
في هذا الاستعلام فسيشمل التعديل كافة السجلات الموجودة في الجدول.
ربط الشروط باستخدام المعاملات المنطقية
يُستفاد من المُعاملات المنطقية (AND, OR, NOT) بربط أكثر من شرط أو نفيها ضمن عبارة WHERE
.
إن تنفيذ الاستعلام الآتي يُحدد شرط وجود قيمة أكبر من 3.00 في حقل المعدل الوسطيّ وقيمة أكبر من 24 سنة في حقل العمر، ويُرتِّب النتائج بحسب المعدل الوسطيّ ترتيبًا تنازليًا وتصبح تسمية Top Students بدلًا من Name في الجدول بالاستفادة من التسمية عبر الكلمة المفتاحية AS:
SELECT Name AS Top Students, Age, GPA
FROM students
WHERE GPA>3.00 AND age>24
ORDER BY GPA DESC;
وستظهر النتائج الآتية:
GPA | Age | Top Students |
---|---|---|
4.00 | 26 | Sarah |
3.68 | 25 | Mona |
عرض عدد السجلات المُحقِّقَة لشرط معيّن
تمكن معرفة عدد السجلات التي تُحقِّق شرطًا معينًا بالاعتماد على الدالة count، مع تحديد الشرط المطلوب في عبارة WHERE
، فلدى تنفيذ الاستعلام الآتي على الجدول السابق (باستخدام المعامل BETWEEN
الذي يقوم بتحديد مجال للقيم المحتملة في الحقل Age):
SELECT count(*) AS Count
FROM students
WHERE age BETWEEN 23 AND 25;
ستظهر النتيجة:
Count |
---|
4 |
المعاملات المساعدة في عبارة WHERE
يُوضح الجدول الآتي بعض المعاملات المُستخدمة لدى صياغة الشرط الذي تحدده الكلمة المفتاحية WHERE
:
المعامل | الوصف |
---|---|
= | حالة التساوي |
<> | حالة عدم التساوي |
< | أكبر من |
> | أصغر من |
=< | أكبر من أو يساوي |
=> | أصغر من أو يساوي |
BETWEEN | واقعٌ ضمن مجال محدَّد |
LIKE | مماثل لنمط محدد يلي الكلمة المفتاحية |
IN | لتحديد عدة قيم ممكنة للقيمة المأخوذة من العمود |
ويُمكن كذلك استخدام المعاملات المنطقية الآتية للربط ما بين عدة شروط أو نفيها:
المعامل | الوصف |
---|---|
AND | لعرض السجل إذا تحققت كافة الشروط |
OR | لعرض السجل إذا تحقق واحدٌ من الشروط أو أكثر |
NOT | إذا تحقق نفي الشرط |
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |