English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستعلم كيفية استخدام SQL لاختيار السجلات المحددة من الجدول.
في الفصل السابق تعلمنا كيفية الحصول على جميع السجلات من جدول أو عمود في الجدول. ولكن في العالم الحقيقي، عادةً ما نحتاج إلى اختيار، تحديث أو حذف السجلات التي تفي ببعض الشروط مثل المستخدمين الذين ينتمون إلى فئة معينة من العمر أو بلد/منطقة معينة إلخ.
جملة WHERE تستخدم معSELECT،UPDATEوDELETE، ولكن سترى في الفصول القادمة كيف يمكن استخدام هذه الجملة مع جمل أخرى.
جملة WHERE تستخدم مع جملة SELECT، لاستخراج فقط السجلات التي تفي بالشروط المحددة. يمكن تقديم الجملة الأساسية بالشكل التالي:
SELECT column_list FROM table_name WHERE condition;
في هذا السياق،column_listهي عمود/حقل في جدول البيانات الذي ترغب في الحصول على قيمتهالاسم،على سبيل المثالname،age،countryإلخ. ولكن، إذا كنت ترغب في الحصول على قيم جميع الأعمدة المتاحة في الجدول، يمكنك استخدام الجملة التالية:
SELECT * FROM table_name WHERE condition;
الآن، دعونا نرى بعض الأمثلة لعرض كيفية عمله في الواقع.
افترض أن لدينا في قاعدة البيانات اسمemployeesالجدول، الذي يحتوي على السجلات التالية:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
以下SQL语句将从employees表中返回其薪水大于7000的所有employee 。该WHERE子句只是过滤掉不需要的数据。
SELECT * FROM employees WHERE salary > 7000;
执行后,输出将如下所示:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
正如您看到的,输出仅包含薪水大于7000的那些雇员。类似地,您可以从特定列中获取记录,如下所示:
SELECT emp_id, emp_name, hire_date, salary FROM employees WHERE salary > 7000;
执行上面的语句后,您将获得如下输出:
+--------+--------------+------------+--------+ | emp_id | emp_name | hire_date | salary | +--------+--------------+------------+--------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | | 4 | Rick Deckard | 2007-01-03 | 7200 | +--------+--------------+------------+--------+
以下语句将获取其雇员ID为2的雇员的记录。
SELECT * FROM employees WHERE emp_id = 2;
该语句将产生以下输出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
في هذه المرة، نحصل فقط على سطر واحد في الناتج لأنemp_idمحددة بشكل فريد لكل موظف.
يدعم SQL العديد من العملاء الذين يمكن استخدامهم في فقرة WHERE، ويوضح الجدول أدناه أبرز العملاء.
المشغل | وصف | نماذج على الإنترنت |
---|---|---|
= | يساوي | WHERE id = 2 |
> | أفضل من... | WHERE age > 30 |
< | أقل | WHERE age < 18 |
>= | أكبر أو يساوي | WHERE rating >= 4 |
<= | أقل أو يساوي | WHERE price <= 100 |
LIKE | مطابقة بسيطة | WHERE name LIKE 'Dav' |
IN | التحقق من ما إذا كانت القيمة المحددة تتطابق مع أي قيمة في القائمة أو الاستعلام الفرعي | WHERE country IN ('USA', 'UK') |
BETWEEN | التحقق من ما إذا كانت القيمة المحددة تتكون من نطاق القيم | WHERE rating BETWEEN 3 AND 5 |