آموزش مقدماتی T-SQL | فیلتر کردن داده‌ها در SQL Server

آموزش مقدماتی T-SQL | فیلتر کردن داده‌ها در SQL Server

نوشته شده توسط: حمید قلی پور
تاریخ انتشار: ۰۷ مرداد ۱۳۹۴
آخرین بروزرسانی: 25 اسفند 1403
زمان مطالعه: 8 دقیقه
۰
(۰)

با سلام و احترام به همه ی نیک آموزی های گرامی
مقاله که برای شما آماده کردم ترجمه و خلاصه بخشی از فصل سوم کتاب Beginning T-SQL انتشارات Apress هست.
از فصل سوم این کتاب  به صورت خلاصه مواردی که به نظرم مناسب، کاربردی و مهم بودهرو ارائه میدم :


مشاهده کامل‌ترین و بروزترین آموزش sql server در نیک آموز


فیلتر کردن داده ها

معمولا هر برنامه کاربردی بخشی از اطلاعاتی که مورد نیاز ما هست در قالب ردیف هایی به ما ارائه میدهد، برای مثال ما یک جدول با میلیون ها رکورد داریم اما می خواهیم اطلاعات کارمندانی با حقوق دو میلیون رو بدست بیاریم، بناربراین نیازی به تمامرکورد های جدول نداریم که برای ما توسط برنامه کاربردی به نمایش در بیاد، اینجاست که فیلتر کردن اهمیت پیدا می کنه.
فیلترکردن داده ها از مهمترین قسمت های T-SQL می باشد.

اضافه کردن قانون( بند )WHERE :

سرویس Database engine قانون (قوانین) مربوط به بخش WHERE را بعد از FROM مورد بررسی قرار می دهد.
شکل صحیح دستوری این قانون :

SELECT <column1>,<column2>
FROM <schema>.<table>
WHERE <column> = <value>

به مثال روبرو توجه کنید :

SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID = 11

خیلی مشخصه که ما می خواهیم مشخصات مشتری که CustomerID آن برابر ۱۱ هست رو بدست بیاریم.

عملگرهایی که به تناوب با WHERE مورد استفاده قرار می گیرند

شما در زیر با این عملگرها و علامت های آن آشنا می شوید.
< ( بزرگتراز )
> (کوچکتر از )
= ( برابر)
=> (کوچکتر از یا مساوی با )
=< ( بزرگتراز یا مساوی با )
=! (نامساوی )
<> (نامساوی )
>! (کوچکتر نباشد از )
<! (بزرگتر نباشد از )
البته برخی از این نمادها عملکرد یکسانی دارند مثل ( =!  <> )،( =<  >! )،( =>  <! )
حالا به مثال های  زیر دقت بفرمایید :

--۱
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID > 101
--۲
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID < 101
--۳
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID >= 101
--۴
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID <> 101
--۵
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID != 101
--۶
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID !> 101
--۷
SELECT Name, Family, CustomerID
FROM Customer
WHERE CustomerID !< 101

بکار بردن WHERE با دو پیش بینی (آینده نگری)

شما عزیزان می توانید WHERE را با یک شرط یا پیش بینی بکار ببرید ، اما می توانید پیش بینی های پیچیده تری نوشت.
می توان چندین پیش بینی ( آینده نگری ) را با استفاده از عملگرهای منطقی AND و OR داشته باشیم.

به مثال ها توجه کنید:

SELECT FirstName, LastName
FROM Person.Person
WHERE FirstName = 'Ken' AND LastName = 'Myer';

در همینجا لازم میدونم عملکرد این دو عملگر منطقی رو شرح بدهم

در عملگر AND ، عبارت هر دو طرف عملگر بایستی درست ( TRUE ) باشد تا مقادیر در خروجی نمایش داده بشود.( مانند ضرب عمل میکند)
اگر عبارت سمت چپ اشتباه باشد؛ عبارت سمت راست مورد بررسی قرار نمی گیرد.

SELECT FirstName, LastName
FROM Person.Person
WHERE FirstName = 'Ken' OR LastName = 'Myer';

در عملگر OR فقط کافیست یکی از عبارت ها ( TRUE ) باشد ؛ تا مقادیر در خروجی نمایش داده بشود.
اگر عبارت سمت  چپ صحیح باشد  دیگر نیازی به ارزیابی عبارت سمت چپ نمی باشد.

بکاربردن عملگر IN

این عملگر بسیار مفید است هنگامی که می خواهیم چندین مقدار مشخص را با مجموعه مقادیر یک ستون( فیلد ) مورد مقایسه قرار بدهیم.
 به شکل صحیح این دستور توجه بفرمایید :

SELECT <column1>,<column2>
FROM <schema>.<table>
WHERE <column> IN (<value1>,<value2>);

به مثال ها توجه کنید:

--۱
SELECT ID,FirstName,LastName
FROM Person.Person
WHERE FirstName = 'Ken' AND LastName IN ('Myer','Meyer');
--۲
SELECT ID, FirstName
FROM Person.Person
WHERE ID IN (1,200,404,373);

در مثال ۱ : باید FirstName برابر ken باشد و ستون LastName  با مقادیر Myer و Meyer مقایسه میشود و برابر هرکدام باشد در خروجی لیست می شود.
همچنین عملگر IN را می توان با NOT همراه کرد تا دقیقا  نتیجه عکس بدهد.

SELECT FirstName,LastName
FROM Person.Person
WHERE ID NOT IN(100,200,202,203)

نتیجه کوئری این خواهد بود که ID های ۱۰۰,۲۰۰,۲۰۲,۲۰۳ را در خروجی لیست نخواهد کرد.

جمع بندی

در این مقاله با مفاهیم فیلتر کردن داده‌ها در T-SQL آشنا شدیم. استفاده از WHERE برای استخراج داده‌های موردنیاز، همراه با عملگرهای مقایسه‌ای مانند >، <، = و <>، امکان محدود کردن نتایج را فراهم می‌کند. همچنین، AND و OR برای ترکیب شرایط و IN و NOT IN برای انتخاب یا حذف مجموعه‌ای از مقادیر به کار می‌روند. این تکنیک‌ها به بهینه‌سازی کوئری‌ها و افزایش سرعت پردازش کمک می‌کنند. با تسلط بر این مفاهیم، می‌توانید داده‌ها را دقیق‌تر و سریع‌تر مدیریت کنید.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
دانلود مقاله
آموزش مقدماتی T-SQL | فیلتر کردن داده‌ها در SQL Server
فرمت PDF
3 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
حمید قلی پور
مقالات
3 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
حمید قلی پور
title sign
دیدگاه کاربران

    • اقا لینک مطلبو من پیدا نکردم.میشه راهنماییم کنید؟

    •    سلام اگه اولت بود خوبه

    •  با سلام

      یه خسته نباشید جانانه بابت مطلب کاربردیتون

    •  با سلام و تشکر
      در مورد مثال گفته شده در مورد فیلتر کردن داده ها بهتر نیست همزمان با نمایش ID  و نام مقدار حقوق را هم نمایش دهیم؟

      • با سلام خدمت شما خواننده گرامی 

        باید بگم بله میتوان ؛ بستگی به گزارشی که می خواهید بدست بیاورید میتوانید فیلد های مورد نظرتون رو بنویسید.
        SELECT Name, Family, CustomerID, salary
        FROM Customer
        WHERE CustomerID = 11
         
    •  سلام
      با توجه به سئوال آقای شهریور
      فکر کنم در چنین موار باید ابتدا مقدار عددی به به یک مقدار کارکتری تبدیل شود تا امکان جستجو وجود داشته باشه..

    •  سلام
      در صورتی که بخواهیم در یک بانک اطلاعاتی که کد ملی یکی از فیلد هاست و ۵ رقم آخر شماره ملی را جستجو کنیم از چه روشی استفاده می کنیم.؟؟؟؟؟؟؟؟؟؟؟؟؟

      •  اگر Performance برایتان بسیار با اهمیت است ابتدا یک ستون Computed با نام فرضی cmpLastFiveDigit با فرمول زیر بنویسید:

        با فرض اینکه فیلد MeliCode از نوع int است:
        ۱۰۰۰۰۰ % MeliCode 
        و یک ایندکس روی این ستون بزنید و بعد کوئری را به این شکل بنویسید تا از ایندکس بتواند استفاده کند:
        select * from students 
        where cmpLastFiveDigit = 12345
        that’ it!
        •   با سلام و احترام

          خدمت جناب عزیزی ، مطالبی که بیان کردید برام جالب بود اما متوجه نشدم چرا (۱۰۰۰۰۰ % MeliCode ) کمی توضیح میدهید بنده ابتدای راه هستم و در کارهام Performance برام بسیار اهمیت داره. اگر امکان داره مثال بزنید تا واضح باشد.
          با تشکر
      •  به مثال های زیر توجه کنید

        –۱
        SELECT * FROM Students
        WHERE MeliCode LIKE ‘%12345’
        GO
        –۲
        SELECT * FROM Students
        WHERE RIGHT(MeliCode,5)=’12345′
        GO
    • با سلام و احترام

      بسیار عالی بود جناب آقای طاهری ، تدبیری که برای مقالات اتخاذ شده بسیار بجاست.
      آیا این امکان وجد داره که بتوانیم ویدیوهای آموزشی نیز در سایت قرار بدهیم؟
      با تشکر فراوان
      •  سلام.
        چرا که نه اتفاقا از ویدئوها بیشتر استقبال می گردد
        در این خصوص ایمیل برای شما ارسال خواهم کرد

        با تشکر

    •   با سلام و احترام 

      جناب مهندس طاهری ؛ اگر مقدوره روند رسیدگی و تایید مقالات رو کوتاه تر و سریع تر بفرمایید ممنون میشم ، قسمت دوم آموزش فرستادم اما یک هفته است منتظر تایید هست.
      با تشکر فراوان
      •  سلام دوست عزیز
        با توجه به اینکه می خواهیم مقالات جدید حداقل در یک هفته در صفحه اول باشد
        و همچنین مقالات ارسالی روز به روز زیاد می گردد به هیمن دلیل مقالات در صف قرار دارد و نمی خواهیم در یک روز مثلا ۳ مقاله منتر کنیم بعد روز بعد ۴ مقاله منتشر کنیم آن وقت مطمئن باشید کسی مقالات سایت را نخواهد خواند و سایت از بحث آموزشی به یک سایت خبری تبدیل خواهد شد.

        موفق باشید

    •  با سلام و احترام 

      تشکر می کنم بابت نظرات دوستان آموزش ها بله قطعا ادامه خواهد داشت بالاخره باید پایه یک کار مهم را خیلی خوب گذاشت و بنده هم در شروع راه هستم و  خواستم دانشم رو به اشتراک بزارم .
    • سلام
      خیلی خوب بود جناب قلی پور
      آموزشاتون ادامه دارن؟

  • 1
  • 2

دانلود رایگان: آموزش SQL Server

هر روز یک ویدئو آموزشی رایگان برای شما ایمیل خواهد شد!

پاپ آپ | SQL Server

  • این قسمت برای اهداف اعتبارسنجی است و باید بدون تغییر باقی بماند.