في مقالة 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، فيجب عليك اتباع الخطوات الواردة أدناه بنفس التسلسل:
- إنشاء قاعدة بيانات في SQL.
- قم بإنشاء جدول SQL الجديد.
- أدخل البيانات في الجدول.
- عرض البيانات المدرجة.
- استخدم عامل تشغيل 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 مع استعلام فرعي:
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، فيجب عليك اتباع الخطوات المذكورة بنفس التسلسل:
- إنشاء قاعدة بيانات في نظام SQL.
- قم بإنشاء الجدول الجديد في قاعدة البيانات.
- أدخل البيانات في الجدول
- عرض البيانات المدرجة
- استخدم عامل التشغيل 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 |