<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های zahra behzadi</title>
        <link>https://virgool.io/feed/@m_91640705</link>
        <description>مقالاتی که منتشر میکنم برای افرادی که در مسیر شغلی BI هستند ، کاربردی تر خواهد بود . امیدوارم براتون مفید باشه</description>
        <language>fa</language>
        <pubDate>2026-06-30 22:45:53</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2923804/avatar/Lu1jXs.jpg?height=120&amp;width=120</url>
            <title>zahra behzadi</title>
            <link>https://virgool.io/@m_91640705</link>
        </image>

                    <item>
                <title>Stored Procedures</title>
                <link>https://virgool.io/@m_91640705/stored-procedures-rvzcknbbvvrk</link>
                <description>مقدمهstored procedure ها دارای نام مشخص هستند که در دل آنها مجموعه ای از دستورات کوئری ساختاریافته وجود دارند که در یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) ذخیره می شود و می توان آن را بارها و بارها مورد استفاده قرار داد.مزایای استفاده از stored procedure1. یک stored procedure یک لایه امنیتی مهم بین رابط کاربری و پایگاه داده فراهم می کند2. از طریق کنترل‌های دسترسی به داده‌ها از امنیت پشتیبانی می‌کند، زیرا کاربران نهایی ممکن است داده‌ای را وارد یا تغییر دهند، اما نیازی به نوشتن procedure نخواهند داشت.3. یک stored procedure یکپارچگی داده ها را حفظ می کند زیرا اطلاعات به شیوه ای ثابت وارد می شوند.4. بهره وری را بهبود می بخشد زیرا دستورات در یک stored procedure فقط باید یک بار نوشته شوند.5. کوئری ها به طور مستقیم در رابط گرافیکی نوشته میشوند و این میتواند برای کارهای ساده مفید باشد اما برای کارهای پیچیده مشکل ساز میشود به همین دلیل stored procedure جایگزین خوبی هستند6. به دلیل این که stored procedure را میتوان به واحدهای کوچک تر و مستقل تر تقسیم کرد ، در صورت بروز مشکل در یک برنامه می توان مشکل را به راحتی در یک واحد کوچک تر تجزیه و تحلیل کرد و علت ان را تشخیص داد . این امر می تواند فرایند رفع عیب را آسان تر و سریع تر کند.7. اگر عملکرد یک رابط کاربر گرافیکی ضعیف باشد ، به جای این که کد منبع رابط کاربر گرافیکی را اصلاح کنیم ، میتوانیم عملکرد stored procedure را که رابط کاربری گرافیکی از آن استفاده میکند با تنظیم پارامترهای مختلف بهبود بخشیم . این امر می تواند به بهبود عملکرد رابط گرافیکی کمک کند بدون اینکه نیاز به اصلاح کد منبع رابط گرافیکی باشیمstored procedure در SQLstored procedure در SQLمی توانند برای انجام عملیات مختلف در پایگاه داده استفاده شوند. آنها می توانند پارامترهای ورودی را بپذیرند و مقادیر متعددی از پارامترهای خروجی را برگردانند .stored procedure  در پایگاه داده تعریف شده توسط کاربر یا در همه پایگاه‌های داده سیستم ایجاد می‌شوند، به جز زمانی که از پایگاه داده منبع استفاده میشود.procedureهای موقت در Tempdbذخیره می شوند و دو نوع procedureموقت وجود دارد: محلی و سراسری (local and global)procedure‌های محلی فقط برای اتصال کاربر فعلی قابل مشاهده هستند، در حالی که procedure‌های جهانی پس از ایجاد برای هر کاربری قابل مشاهده هستند.syntax stored procedure به صورت زیر استCREATE PROCEDURE procedure_name AS sql_statement GO;و برای اجرای ان از EXEC استفاده میکنیم :EXEC procedure_nameیک بخش از جدول customer را در اینجا داریم:بخشی از پایگاه داده northwinمثال زیر یک procedure با نام Allcustomers میسازد که در آن تمام جدول customer را نمایش میدهد.CREATE PROCEDURE AllCustomers AS SELECT * FROM Customers GO;و برای اجرای این کوئری داریم :EXEC AllCustomers;در storeprocedure ها از متغییرها نیز میتوان استفاده کردبه عنوان مثال procedure زیر از جدول Customers شهر خاصی رو انتخاب می کندCREATE PROCEDURE AllCustomers @City nvarchar(30) AS SELECT * FROM Customers WHERE City = @City GOو هنگام اجرای آن می خواهیم شهر لندن را به عنوان خروجی برگرداندEXEC AllCustomers @City = &#x27;London&#x27;می توان به جای لندن هر شهر دیگری را قرار داد تا رکورد مربوط به آن شهر را برگرداند.اگر بخواهیم در storeprocedure از چند متغیر استفاده کنیم ، کافیست آنها را با &quot; ,&quot; از هم جدا کنیم.به عنوان مثال اگر بخواهیم از جدول customer شهر و کد پستی خاصی را به عنوان خروجی دریافت کنیم ، داریم :CREATE PROCEDURE AllCustomers @City nvarchar(30), @PostalCode nvarchar(10) AS SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode GOحال برای خروجی میخواهیم شهر لندن و کد پستی WA1 1DP را داشته باشیم ، پس:EXEC AllCustomers @City = &#x27;London&#x27;, @PostalCode = &#x27;WA1 1DP&#x27;منابعw3schools . (11-07-2023) . https://www.w3schools.com/sql/sql_stored_procedures.aspHughes,Adam,(2019),store procedure,  https://www.techtarget.com/searchoracle/definition/stored-procedure</description>
                <category>zahra behzadi</category>
                <author>zahra behzadi</author>
                <pubDate>Tue, 07 Nov 2023 12:42:04 +0330</pubDate>
            </item>
                    <item>
                <title>مبحث join در sql</title>
                <link>https://virgool.io/@m_91640705/%D9%85%D8%A8%D8%AD%D8%AB-join-%D8%AF%D8%B1-sql-zgbutgdys6xh</link>
                <description>تسلط بر Join در SQL: تقویت مهارت جست و جو در پایگاه دادهراهنمای جامع برای درک و بهینه سازی انواع join ها در SQL برای بهبود عملکرد و دقتمقدمه یک ابزار قوی برای مدیریت و آنالیز دیتا در دیتابیسهای رابطه ای SQL استیک مفهوم اساسی در SQL عمل join استکه به شما امکان می دهد داده ها را از دو یا چند جدول بر اساس یک ستون مرتبط ترکیب کنید.تسلط بر Join برای بازیابی کارآمد و دقیق داده ها ضروری استدر این مقاله، انواع مختلف Join را مورد بحث قرار می‌دهیم و مثال‌هایی ارائه می‌کنیم تا به شما در درک و استفاده مؤثر از آنها کمک کنیم.کتاب راهنما SQLکتاب راهنما SQL، یک منبع استثنایی و بسیار آموزنده برای کاربران SQL در تمام سطوح است.این راهنمای جامع مجموعه گسترده ای از راه حل ها و تکنیک های کوئری نویسی را ارائه می دهد که به خوانندگان اجازه می دهد تا درک عمیق تری از مفاهیم SQL به دست آورند و در عین حال مهارت های عملی خود را افزایش دهند.توضیحات واضح و مختصر کتاب، همراه با مثال‌های واقعی، آن را به یک دارایی ارزشمند برای هر کسی تبدیل می‌کند که به دنبال تسلط بر پیچیدگی‌های SQL و بهینه‌سازی کوئری های پایگاه داده خود است.انواع Join در SQLچندین نوع Join در SQL وجود دارد که هر کدام هدف منحصر به فردی را انجام می دهند. در اینجا، ما شش نوع Join رایج را پوشش خواهیم داد:1.inner join این نوع Join ردیف‌هایی را از هر دو جدول برمی‌گرداند که با شرایط مشخص شده، مطابقت دارد. اگر مطابقت پیدا نشد، هیچ ردیفی برگردانده نخواهد شد.2. Left Join (or Left Outer Join)این نوع Join همه سطرهای جدول سمت چپ و سطرهای منطبق با ان را از جدول سمت راست برمی گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون های جدول سمت راست بازگردانده می شود.3. Right Join (or Right Outer Join)مورد سوم ، right join مانند left join عمل می کند، اما تمام سطرها را از جدول سمت راست و ردیف های منطبق با ان را از جدول سمت چپ برمی گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون های جدول سمت چپ برگردانده می شود.4. Full Join (or Full Outer Join)مورد چهارم ، full join نتایج left join  و right join را ترکیب می‌کند و تمام ردیف‌های هر دو جدول را برمی‌گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون‌های جدول بدون تطابق برگردانده می‌شود.5. Self Joinمورد پنجم ، self join یک نوع منحصر به فرد از join است که در آن یک جدول با خودش متصل می شود. این زمانی مفید است که شما نیاز به مقایسه سطرها در یک جدول دارید.6. Cross Joinمورد اخر ، cross join  به عنوان  Cartesian join ( Join دکارتی)  نیز شناخته می شود که حاصل ضرب دکارتی دو جدول را برمی گرداند، به این معنی که هر ردیف از جدول اول با هر ردیف از جدول دوم ترکیب می شود.مثالهایی برای هر جوین:برای درک هر نوع join بیایید ابتدا syntax ان را بررسی کنیم و سپس یک مثال از آن را تحلیل کنیم:1.inner join syntax:SELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name = table2.column_name;مثال:SELECT employees.employee_id, employees.name, departments.department_nameFROM employeesINNER JOIN departmentsON employees.department_id = departments.department_idاین کوئری نام کارمندان و نام بخش مربوط به آنها را با تطبیق department_id در هر دو جدول  employees و departments بازیابی می کند. به عبارتی اشتراک این دو جدول را بر حسب department_id می دهد2.Left Join Syntax:SELECT column_name(s)FROM table1LEFT JOIN table2ON table1.column_name = table2.column_nameمثال :SELECT orders.order_id, customers.customer_nameFROM ordersLEFT JOIN customersON orders.customer_id = customers.customer_idاین کوئری همه order_id و نام‌های مشتری مربوطه آنها را بازیابی می‌کند، از جمله سفارش‌هایی که هیچ مشتری مرتبطی ندارند. خروجی ، تمام مقادیر جدول سمت چپ را برمی گرداند و تنها مقادیر مشترک هر دو جدول است که پر میشود و بقیه NULL خواهد شد.3. Right Join Syntax:SELECT column_name(s)FROM table1RIGHT JOIN table2ON table1.column_name = table2.column_nameمثال:SELECT orders.order_id, customers.customer_nameFROM ordersRIGHT JOIN customersON orders.customer_id = customers.customer_idاین کوئری همه نام‌های مشتریان و order_id مربوط به آنها را بازیابی می‌کند، از جمله مشتریانی که هیچ سفارش مرتبطی ندارند . خروجی آن شبیه به left join است با این تفاوت که تمام مقادیر جدول سمت راست را برمی گرداند و مشترک های دو جدول پر میشود و بقیه NULL خواهد شد.4. Full Join Syntax:SELECT column_name(s)FROM table1FULL JOIN table2ON table1.column_name = table2.column_nameمثال:SELECT orders.order_id, customers.customer_nameFROM ordersFULL JOIN customersON orders.customer_id = customers.customer_idاین کوئری همه order_id و نام‌های مشتری را بازیابی می‌کند، از جمله سفارش‌هایی که هیچ مشتری مرتبطی ندارند و مشتریان بدون سفارش مرتبط.5. Self Join Syntax:SELECT column_name(s)FROM table1 AS alias1JOIN table1 AS alias2ON alias1.column_name = alias2.column_nameمثال:SELECT e1.name AS employee, e2.name AS managerFROM employees AS e1INNER JOIN employees AS e2ON e1.manager_id = e2.employee_idاین کوئری نام کارمندان و نام مدیر مربوطه آنها را از  join  جدول کارکنان با خودش بازیابی می کند6. Cross Join Syntax:SELECT column_name(s)FROM table1CROSS JOIN table2مثال:SELECT products.product_name, categories.category_nameFROM productsCROSS JOIN categoriesاین کوئری همه ترکیبات ممکن از product_name و category_name را بازیابی می کند.تکنیک های بهینه سازی joinبرای اطمینان از اجرای کارآمد کوئری های SQL، تکنیک های بهینه سازی زیر را در نظر بگیرید:1. از index ها روی ستون های مورد استفاده در join استفاده کنید2. نوع join مناسب را برای به حداقل رساندن تعداد ردیف های خروجی join انتخاب کنید.3. با استفاده از عبارت WHERE، داده ها را  فیلتر کنید4. در صورت امکان از عبارت های exists و in به جای subqueries استفاده کنید.تله‌های رایج و نحوه اجتناب از آنهاهنگام کار با جوین به نکات زیر دقت کن :1.در cross join بند on را نداریم.2.در انتخاب صحیح جوین برای رسیدن به جواب درست باید دقت کرد3. استفاده بیش از حد از subqueries میتواند بر عملکرد تاثیر بگذاردبرای جلوگیری از این مشکلات syntax join خود را مرور کن  تا از join مناسب استفاده کرده باشی و کوئری های خود را برای عملکرد بهتر بهینه سازی کننتیجه گیریتسلط بر join ها در SQL برای بازیابی و تجزیه و تحلیل موثر داده ها بسیار مهم استبا درک انواع مختلف join و موارد استفاده از آنها، می توانید کوئری های کارآمد و دقیقی ایجاد کنید که بینش های مورد نیاز را ارائه می دهد. تمرین و آزمایش کلید تسلط بر این مهارت ضروری SQL است.سوالات متداول1.تفاوت inner join و outer join چیست؟یک inner join ردیف‌هایی را برمی‌گرداند که دارای مقادیر مشترک در هر دو جدول هستند، در حالی که outer join (left , right و full) ردیف‌های بی‌همتا را از یک یا هر دو جدول، با مقادیر NULL برای ستون‌هایی که مطابقت ندارند، برمی‌گرداند.2.ایا یک کوئری میتواند شامل بیش از یک join باشد؟بله، می‌توانید چندین جدول را در یک کوئری با زنجیره‌ کردن join ها به یکدیگر پیوند دهید. اما مطمئن شوید که از نوع و شرط join صحیح برای بازیابی داده های مورد نظر استفاده می کنید.3.استفاده از انواع مختلف جوین چه پیامدی دارد؟عملکرد می تواند بر اساس نوع join ، اندازه جدول و index متفاوت باشد. inner join  سریعتر از outer join هستند، زیرا فقط ردیف های مشترک را برمی گرداند. استفاده از index های مناسب و بهینه سازی join  عملکرد کوئری به میزان قابل توجهی بهبود می یابد.4. چه موقع باید از self join استفاده کرد؟هنگامی که نیاز به مقایسه یا ترکیب سطرها در یک جدول دارید، مانند بازیابی روابط سلسله مراتبی یا یافتن رکوردهای تکراری، از self join استفاده کنید.5.چگونه هنگام استفاده از join ها از ردیف های تکراری جلوگیری می کنید؟برای جلوگیری از تکرار ردیف‌ها، مطمئن شوید که جداول را در ستون‌های کلیدی منحصربفرد می‌پیوندید یا از کلمه کلیدی DISTINCT برای برگرداندن تنها ردیف‌های منحصربه‌فرد استفاده می‌کنید. همچنین، هنگام استفاده از  cross join مراقب باشید، زیرا می تواند تعداد زیادی ردیف تکراری ایجاد کند.ممنون برای زمانی که جهت مطالعه این مقاله گذاشتید.منبعhttps://medium.com/gitconnected/mastering-sql-joins-boost-your-database-query-skills-69649618769d</description>
                <category>zahra behzadi</category>
                <author>zahra behzadi</author>
                <pubDate>Wed, 18 Oct 2023 12:09:37 +0330</pubDate>
            </item>
            </channel>
</rss>