logo

كيفية استخدام IN في SQL

في مقالة SQL هذه، ستتعلم كيفية استخدام الكلمة الأساسية IN في استعلامات قاعدة بيانات SQL.

ما هي الكلمة الأساسية IN في SQL؟

ال في هو عامل تشغيل منطقي في لغة الاستعلام الهيكلية يسمح لمستخدمي قاعدة البيانات بتحديد أكثر من قيمة واحدة في جملة WHERE.

تعرض جملة WHERE مع عامل التشغيل IN تلك السجلات في النتيجة المطابقة لمجموعة القيم المحددة. يمكننا أيضًا تحديد الاستعلام الفرعي بين قوسين لمشغل IN.

يمكننا استخدام عامل التشغيل IN مع استعلامات INSERT وSELECT وUPDATE وDELETE في قاعدة بيانات SQL.

يستبدل عامل التشغيل IN في SQL عملية شروط OR المتعددة في الاستعلامات.

بناء جملة عامل التشغيل IN:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Value_1, Value_2, Value_3, ......., Value_N); 

إذا كنت تريد استخدام عامل التشغيل IN في عبارات SQL، فيجب عليك اتباع الخطوات الواردة أدناه بنفس التسلسل:

  1. إنشاء قاعدة بيانات في SQL.
  2. قم بإنشاء جدول SQL الجديد.
  3. أدخل البيانات في الجدول.
  4. عرض البيانات المدرجة.
  5. استخدم عامل تشغيل SQL IN لعرض بيانات الجدول.

الآن، سنقوم بشرح كل خطوة واحدة تلو الأخرى باختصار مع أفضل مثال SQL:

الخطوة 1: إنشاء قاعدة بيانات جديدة بسيطة

الخطوة الأولى هي إنشاء قاعدة بيانات جديدة بلغة الاستعلام الهيكلية.

تقوم عبارة CREATE التالية بإنشاء الجديد كلية_الميكانيكا قاعدة البيانات في خادم SQL:

 CREATE Database Mechanical_College; 

الخطوة 2: إنشاء جدول جديد

الآن، استخدم بناء جملة SQL التالي الذي يساعد في إنشاء الجدول الجديد في قاعدة البيانات:

 CREATE TABLE table_name ( 1st_Column data type (character_size of 1st Column), 2nd_Column data type (character_size of the 2nd column ), 3rd_Column data type (character_size of the 3rd column), ... 
 Nth_Column data type (character_size of the Nth column) ); 

تقوم عبارة CREATE التالية بإنشاء معلومات_الكلية الجدول في كلية_الميكانيكا قاعدة البيانات:

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Joining_DateDATE, Faculty_City Varchar (80), Faculty_Salary INT ); 

الخطوة 3: أدخل البيانات في الجدول

تقوم استعلامات INSERT التالية بإدراج سجلات الكليات في جدول College_Info:

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 2020-01-02, Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 2019-12-31, Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 2020-10-10, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 2019-07-15, Kolkata, 42000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1006, Avinash, Sharma, 4002, 2019-11-11, Delhi, 28000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary)VALUES (1007, Shyam, Besas, 4003, 2021-06-21, Lucknow, 35000); 

الخطوة 4: عرض البيانات المدرجة

تعرض عبارة SELECT التالية بيانات جدول College_Info:

طريقة جافا tostring
 SELECT * FROM Faculty_Info; 

معرف الكلية College_First_Name الكلية_الاسم_الأخير College_Dept_Id تاريخ_الالتحاق بالكلية College_City College_Salary
1001 دُبٌّ شارما 4001 2020-01-02 دلهي 20000
1002 بلبل روي 4002 2019-12-31 دلهي 38000
1004 سوراب روي 4001 2020-10-10 مومباي 45000
1005 شيفاني سينغانيا 4001 2019-07-15 كولكاتا 42000
1006 أفيناش شارما 4002 2019-11-11 دلهي 28000
1007 شيام انت قبل 4003 2021-06-21 لكناو 35000

الخطوة 5: استخدم عامل التشغيل IN لعرض بيانات جدول College_Info بطرق مختلفة

يستخدم الاستعلام التالي قيمًا رقمية مع عامل التشغيل IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_Id, Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Salary IN ( 38000, 42000, 45000, 35000); 

يعرض هذا الاستعلام فقط سجل تلك الكليات التي تم تمرير رواتبها في عامل تشغيل جملة WHERE.

انتاج:

معرف الكلية College_First_Name College_Dept_Id تاريخ_الالتحاق بالكلية College_Salary
1002 بلبل 4002 2019-12-31 38000
1004 سوراب 4001 2020-10-10 45000
1005 شيفاني 4001 2019-07-15 42000
1007 شيام 4003 2021-06-21 35000

يستخدم الاستعلام التالي قيم نصية أو أحرف مع عامل التشغيل المنطقي IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Joining_Date, Faculty_City FROM Faculty_Info WHERE Faculty_City IN ( Mumbai, Kolkata, Lucknow); 

يعرض هذا الاستعلام فقط سجل الكليات التي تم تضمين مدينتها بين قوسين عامل التشغيل IN في جملة WHERE.

انتاج:

الاتصالات المحجوبة
معرف الكلية College_First_Name تاريخ_الالتحاق بالكلية College_City
1004 سوراب 2020-10-10 مومباي
1005 شيفاني 2019-07-15 كولكاتا
1007 شيام 2021-06-21 لكناو

يستخدم الاستعلام التالي تنسيق DATE مع العامل المنطقي IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_ID Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Joining_Date IN (2020-01-02, 2021-06-21, 2020-10-10, 2019-07-15); 

يعرض هذا الاستعلام فقط سجلات الكليات التي تم تمرير تاريخ انضمامها في عامل التشغيل IN لعبارة WHERE.

انتاج:

معرف الكلية College_First_Name College_Dept_Id تاريخ_الالتحاق بالكلية College_Salary
1001 دُبٌّ 4001 2020-01-02 20000
1004 سوراب 4001 2020-10-10 45000
1005 شيفاني 4001 2019-07-15 42000
1007 شيام 4003 2021-06-21 35000

يستخدم الاستعلام التالي أمر SQL UPDATE مع عامل التشغيل المنطقي IN:

 UPDATE Faculty_Info SET Faculty_Salary = 50000 WHERE Faculty_Dept_ID IN (4002, 4003); 

يقوم هذا الاستعلام بتحديث راتب الكليات التي تم تمرير Dept_Id إليها في عامل التشغيل IN لعبارة WHERE.

للتحقق من نتيجة الاستعلام أعلاه، اكتب استعلام SELECT التالي في SQL:

 SELECT * FROM Faculty_Info; 
معرف الكلية College_First_Name الكلية_الاسم_الأخير College_Dept_Id تاريخ_الالتحاق بالكلية College_City College_Salary
1001 دُبٌّ شارما 4001 2020-01-02 دلهي 20000
1002 بلبل روي 4002 2019-12-31 دلهي 50000
1004 سوراب روي 4001 2020-10-10 مومباي 45000
1005 شيفاني سينغانيا 4001 2019-07-15 كولكاتا 42000
1006 أفيناش شارما 4002 2019-11-11 دلهي 50000
1007 شيام انت قبل 4003 2021-06-21 لكناو 50000

مشغل SQL IN مع الاستعلام الفرعي

في لغة الاستعلام الهيكلية، يمكننا أيضًا استخدام الاستعلام الفرعي مع العامل المنطقي IN.

بناء جملة عامل IN مع الاستعلام الفرعي موضح أدناه:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Subquery); 

إذا كنت تريد فهم عامل التشغيل IN مع الاستعلام الفرعي، فيجب عليك إنشاء جدولين مختلفين في لغة الاستعلام الهيكلية باستخدام عبارة CREATE.

يقوم الاستعلام التالي بإنشاء جدول College_Info في قاعدة البيانات:

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Address Varchar (80), Faculty_City Varchar (80), Faculty_Salary INT ); 

يقوم الاستعلام التالي بإنشاء Department_Info الجدول في قاعدة البيانات:

 CREATE TABLE Department_Info ( Dept_Id INT NOT NULL, Dept_Name Varchar(100), Head_Id INT ); 

تقوم استعلامات INSERT التالية بإدراج سجلات الكليات في جدول College_Info:

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 22 street, New Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 120 street, New Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 221 street, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 501 street, Kolkata, 42000); 

تقوم استعلامات INSERT التالية بإدراج سجلات الأقسام في جدول Department_Info:

 INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4001, Arun, 1005); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4002, Zayant, 1009); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4003, Manish, 1007); 

تعرض عبارة SELECT التالية بيانات جدول College_Info:

 SELECT * FROM Faculty_Info; 

معرف الكلية College_First_Name الكلية_الاسم_الأخير College_Dept_Id عنوان الكلية College_City College_Salary
1001 دُبٌّ شارما 4001 شارع 22 نيو دلهي 20000
1002 بلبل روي 4002 شارع 120 نيو دلهي 38000
1004 سوراب روي 4001 شارع 221 مومباي 45000
1005 شيفاني سينغانيا 4001 شارع 501 كولكاتا 42000
1006 أفيناش شارما 4002 شارع 12 دلهي 28000
1007 شيام انت قبل 4003 شارع 202 لكناو 35000

الاستعلام التالي يوضح سجلات القسم من جدول Department_Info:

 SELECT * FROM Department_Info; 
كيفية استخدام IN في SQL

يستخدم الاستعلام التالي عامل التشغيل IN مع استعلام فرعي:

 SELECT * FROM Faculty_Info WHERE Faculty_Dept_Id IN ( Select Dept_Id FROM Department_Info WHERE Head_Id >= 1007); 

يعرض هذا الاستعلام سجل الكليات التي يتطابق جدول Dept_ID الخاص بـ College_Info مع جدول Dept_Id الخاص بـ Department_Info.

انتاج:

معرف الكلية College_First_Name الكلية_الاسم_الأخير College_Dept_Id عنوان الكلية College_City College_Salary
1002 بلبل روي 4002 شارع 120 نيو دلهي 38000
1006 أفيناش شارما 4002 شارع 12 دلهي 28000
1007 شيام انت قبل 4003 شارع 202 لكناو 35000

ما هو ليس في SQL؟

NOT IN هو عامل تشغيل آخر في لغة الاستعلام الهيكلية، وهو عكس عامل تشغيل SQL IN تمامًا. فهو يسمح لك بالوصول إلى تلك القيم من الجدول، والتي لا تمر بين قوسين عامل التشغيل IN.

يمكن استخدام عامل التشغيل NOT IN في استعلامات SQL INSERT وUPDATE وSELECT وDELETE.

بناء جملة NOT IN:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name NOT IN (Value_1, Value_2, Value_3, ......., Value_N); 

إذا كنت تريد استخدام عامل التشغيل NOT IN في عبارات SQL، فيجب عليك اتباع الخطوات المذكورة بنفس التسلسل:

  1. إنشاء قاعدة بيانات في نظام SQL.
  2. قم بإنشاء الجدول الجديد في قاعدة البيانات.
  3. أدخل البيانات في الجدول
  4. عرض البيانات المدرجة
  5. استخدم عامل التشغيل NOT IN لعرض البيانات.

الآن، سنقوم بشرح كل خطوة واحدة تلو الأخرى باختصار مع أفضل مثال SQL:

شجرة البحث الثنائية مقابل الشجرة الثنائية

الخطوة 1: إنشاء قاعدة بيانات جديدة بسيطة

الاستعلام التالي ينشئ الجديد الصناعة المدنية قاعدة البيانات في خادم SQL:

 CREATE Database Industry; 

الخطوة 2: إنشاء الجدول الجديد

يقوم الاستعلام التالي بإنشاء معلومات_العامل الجدول في الصناعة المدنية قاعدة البيانات:

 CREATE TABLE Worker_Info ( Worker_ID INT NOT NULL PRIMARY KEY, Worker_Name VARCHAR (100), Worker_Gender Varchar(20), Worker_Age INT NOT NULL DEFAULT 18, Worker_Address Varchar (80), Worker_Salary INT NOT NULL ); 

الخطوة 3: أدخل القيم

تقوم استعلامات INSERT التالية بإدراج سجلات العاملين في جدول Worker_Info:

 INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1001, Arush, Male, Agra, 35000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1002, Bulbul, Female, Lucknow, 42000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1004, Saurabh, Male, 20, Lucknow, 45000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1005, Shivani, Female, Agra, 28000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1006, Avinash, Male, 22, Delhi, 38000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1007, Shyam, Male, Banglore, 20000); 

الخطوة 4: عرض بيانات الجدول

متى خرج الفوز 7؟

يعرض الاستعلام التالي بيانات جدول Worker_Info.

 SELECT * FROM Worker_Info; 

معرف_العامل اسم_العامل Worker_Gender عمر_العامل عنوان_العامل Worker_Salary
1001 دُبٌّ ذكر 18 أغرا 35000
1002 بلبل أنثى 18 لكناو 42000
1004 سوراب ذكر عشرين لكناو 45000
1005 شيفاني أنثى 18 أغرا 28000
1006 أفيناش ذكر 22 دلهي 38000
1007 شيام ذكر 18 بنغالور 20000

الخطوة 4: استخدم عامل التشغيل NOT IN

يستخدم الاستعلام التالي عامل التشغيل NOT IN مع البيانات الرقمية:

 SELECT * FROM Worker_Info WHERE Worker_salary NOT IN (35000, 28000, 38000); 

يُظهر استعلام التحديد هذا جميع العاملين في المخرجات الذين لم يتم تمرير رواتبهم في عامل التشغيل NOT IN.

وتظهر نتيجة البيان أعلاه في الجدول التالي:

معرف_العامل اسم_العامل Worker_Gender عمر_العامل عنوان_العامل Worker_Salary
1002 بلبل أنثى 18 لكناو 42000
1004 سوراب ذكر عشرين لكناو 45000
1007 شيام ذكر 18 بنغالور 20000

يستخدم الاستعلام التالي عامل التشغيل المنطقي NOT IN مع قيم الأحرف أو النصوص:

 SELECT * FROM Worker_Info WHERE Worker_Address NOT IN (Lucknow, Delhi); 

يعرض هذا الاستعلام سجل كافة العمال الذين لم يتم تمرير عنوانهم في عامل التشغيل NOT IN.

انتاج:

معرف_العامل اسم_العامل Worker_Gender عمر_العامل عنوان_العامل Worker_Salary
1001 دُبٌّ ذكر 18 أغرا 35000
1005 شيفاني أنثى 18 أغرا 28000
1007 شيام ذكر 18 بنغالور 20000