با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به یادگیری دوره آموزش تی اس کیو ال T-SQL هستند. در جلسه گذشته علاقمندان دوره T-SQL با آموزش کار با Joins clause در تی اس کیو ال آشنا شدند؛ در این جلسه آموختیم که از MS SQL Server Joins clause برای ترکیب پرونده ها از دو یا چند table در پایگاه داده استفاده می شود و Join به معنای ترکیب فیلدها از دو table با استفاده از مقادیر آن ها است. در این جلسه با آموزش کار با sub-query در تی اس کیو ال شما خواهیم بود.
یک sub-query یا Inner query یا Nested query کوئری است که در within another جایگذاری شده است.
از یک sub query برای بازگردانی داده هایی که در main query به عنوان پیش شرط محدود کننده تعیین شده اند استفاده می شود.
sub query ها می توانند همراه SELECT, INSERT, UPDATE, و DELETE statements و اپراتورهایی نظیر =, <, >, >=, <=, IN, BETWEEN به کار روند.
یک سری قاعده و قانون وجود دارد که sub queries از آن پیروی می کنند.
Subqueries بیش از همه از SELECT statement استفاده می کند.
در زیر می توانید سینتکس اصلی آن را ببینید.
1 2 3 4 5 6 | SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR (SELECT column_name [, column_name ] FROM table1 [, table2 ] [WHERE]) |
CUSTOMERS table زیر را با رکوردهای زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
حالا بیایید این subquery را با SELECT statement اجرا نماییم.
1 2 | FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500) |
دستور بالا خروجی زیر را ایجاد خواهد کرد.
1 2 3 4 | ID NAME AGE ADDRESS SALARY 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 7 Muffy 24 Indore 10000.00 |
حالا فرض می کنیم یک CUSTOMERS_BKP table داریم که از CUSTOMERS table ما بکاپ گیری می کند.
دستور زیر مثالی است که حقوق یا SALLARY را به میزان ۰٫۲۵ بار برای همه مشتریانی که سن یا AGE آن ها در CUSTOMERS table برابر با بیشتر از ۲۷ است به روز سانی می کند.
1 2 3 | UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 ) |
این اقدام دو ردیف را تحت تاثیر می گذارد و سرانجام CUSTOMERS table دارای رکوردهای زیر خواهد بود.
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 500.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 2125.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
درست مانند همه statements هایی که به آن ها اشاره شد؛ subquery نیز می تواند درون conjunction از DELETE statement استفاده نماید.
در زیر می توانید سینتکس اصلی آن را مشاهده نمایید.
1 2 3 4 5 | DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ] |
حالا فرض می کنیم یک CUSTOMERS_BKP table داریم که از CUSTOMERS table ما بکاپ گیری می کند.
دستور زیر مثالی است که رکوردها را برای همه مشتریانی که سن آنها کمتر یا برابر با ۲۷ سال است از درون CUSTOMERS table حذف می نماید.
1 2 | DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 ) |
این اقدام دو ردیف را تحت تاثیر می گذارد و سرانجام CUSTOMERS table دارای رکوردهای زیر خواهد بود.
1 2 3 4 5 6 | ID NAME AGE ADDRESS SALARY 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
در این جلسه با آموزش کار با sub-query در تی اس کیو ال همراه شما بودیم.
در جلسه بعدی آموزش Stored Procedures را به شما ارائه خواهیم کرد.
با پی وی لرن همراه باشید.