با سلام، در جلسه ی قبل در رابطه با دستور WHERE صحبت کردیم و می دانیم که می توان با این دستور به کدهای SQL خود انعطاف بخشید اما مسئله آن جاست که هنوز هم به انعطاف بیشتری نیاز است. چطور می توان این انعطاف بیشتر را ایجاد کرد؟
ما می توانیم دستور WHERE را با اپراتورهای AND - OR - NOT ترکیب کنیم تا به انعطاف بیشتری برسیم و کدهای SQL را دقیق تر کنیم.
اپراتورهای AND و OR به ما اجازه می دهند شرط های بیشتری به دستور WHERE اضافه کنیم:
این مسئله نیازی به توضیح ندارد؛ بگذارید برایتان مثالی بزنم... کلمه ی AND به معنی "و" و کلمه ی OR به معنی "یا" است بنابراین:
Being 18 and male -> معنی: 18 ساله بودن و همچنین مرد بودن
Being 18 or male -> معنی: 18 ساله بودن یا مرد بودن
در دو مثال بالا دو شرط داریم؛ یکی مرد یا مذکر بودن و دیگری 18 ساله بودن. اگر از AND استفاده کنیم یعنی فرد هم باید 18 ساله باشد و هم مذکر باشد اما اگر از OR استفاده کنیم یعنی فرد مورد نظر ما یا 18 ساله باشد یا مذکر! تفاوت بسیار فاحش آن را متوجه شدید؟
شاید بپرسید پس اپراتور NOT چه کار می کند؟
اپراتور NOT (به معنی "غیر" یا "بدون" یا "نه" و ...) یک شرط را برعکس می کند. بدین معنی که اگر شرط ما FALSE (غلط) باشد آن گاه کوئری اجرا می شود! در ادامه بیشتر توضیح خواهم داد.
سوال: کوئری چیست؟
هنگامی که با زبان SQL (یک زبانِ کوئری) یک دستور می نویسید تا به پایگاه داده برود و کاری انجام دهد، یک کوئری نوشته اید!
کوئری در لغت به معنای "درخواست" یا "پرسش" است.
ویکی پدیای فارسی در مورد زبان های کوئری یا پرسمان می گوید:
زبانهای پرسمان (Query languages) (زبان کوری یا کوئری) زبانهای برنامهنویسی برای اعمال پرسشهای گوناگون بر پایگاههای دادهها و سیستمهای اطلاعات است. به برنامهای رایانهای که حاوی دستورهایی برای پایگاه داده است، پرسمان یا کوئری (به انگلیسی: query) گفته میشود.
بگذارید به زبان ساده تر برایتان بگویم، تمام دستوراتی که تا این جلسه با آن ها کار کرده ایم کوئری بوده اند. البته بنده به شما پیشنهاد می کنم به جای "پرسمان" از همان کلمه ی کوئری استفاده کنید تا از سر در گمی و سوء تفاهم های احتمالی دور بمانید!
قبل از بررسی ساختار های کلی، باید معنی چند کلمه ی انگلیسی را بدانید. گرچه معنی برخی از آن ها را در جلسات قبل و یا همین جلسه توضیح داده ایم اما همه را به صورت یک جا آورده ایم تا به راحتی متوجه معانی دستورات SQL شوید:
ستون | Column |
جدول | Table |
ردیف | Row |
شرط | Condition |
شما معنی اش را "به شکلی که" در نظر بگیرید | Where |
انتخاب کن | Select |
از | From |
و | And |
یا | Or |
غیر، نه، نباشد و ... | Not |
ساختار کلی (syntax) اپراتور AND به شکل زیر است:
SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;
ساختار کلی (syntax) اپراتور OR به شکل زیر است:
SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;
ساختار کلی (syntax) اپراتور NOT به شکل زیر است:
SELECT column1, column2, ... FROM table_name WHERE NOT condition;
اگر دقت کنید، متوجه می شوید که با دانستن زبان انگلیسی به سادگی می توانید کوئری ها را مانند زبان انسانی ترجمه کنید. در واقع کوئری های SQL واقعا ساده هستند و بسیار به زبان انسان ها شبیه می باشند. به طور مثال ساختار کلی OR را برایتان ترجمه می کنم:
SELECT column1, column2, ... (ستون های 1 و دو را انتخاب کن)
FROM table_name ((table_name) از جدولِ فلان)
WHERE condition1 OR condition2 OR condition3 ...; (به صورتی که شرط 1 یا شرط 2 یا شرط 3 و ... برقرار باشد)
مثال اول از اپراتور AND
به کد زیر دقت کنید:
SELECT * FROM Customers WHERE Country='Germany' AND City='ز';
آیا می دانید معنی این کد چیست و چه کاری می کند؟ میخواهم این کد را تحت اللفظی و فقط بر اساس کلمات اش ترجمه کنم تا بهتر آن را درک کنید.
این کد به این صورت ترجمه می شود که "از جدول Customers، هر چیزی (*) را انتخاب کن به صورتی که مقدار Country مساوی با Germany و مقدارِ City برابر با Berlin باشد"
برای مشاهده ی نتیجه ی کد بالا روی این لینک کلیک کنید.
مثال دوم از اپراتور OR
به کد زیر دقت کنید:
SELECT * FROM Customers WHERE City='Berlin' OR City='München';
ترجمه ی این کد می شود "از جدول Customers، هر چیزی (*) را انتخاب کن به صورتی که مقدارِ City برابر با Berlin یا München باشد"
برای مشاهده ی نتیجه ی کد بالا روی این لینک کلیک کنید.
مثال سوم از اپراتور NOT
SELECT * FROM Customers WHERE NOT Country='Germany';
بالاتر گفتیم که اپراتور NOT شرط را برعکس می کند. در اینجا هم همین طور است. معنی کد بالا این است که همه را انتخاب کن، به غیر از آن هایی که در آن ها مقدار country برابر Germany باشد. در واقع تمام کشور ها به جز آلمان انتخاب می شوند.
برای مشاهده ی نتیجه ی کد بالا روی این لینک کلیک کنید.
نکته: می توانید تمام این اپراتورها را به هم ترکیب کنید و در یک شرط به کار ببرید:
SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
این کد می گوید مقدار Country برابر با Germany بوده و مقدار City نیز یا Berlin باشد و یا München.
برای مشاهده ی نتیجه ی کد بالا روی این لینک کلیک کنید.
مثال دیگر:
SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
این کد تمام کشور هایی را انتخاب می کند که مقدارشان نه Germany باشد و نه USA.
برای مشاهده ی نتیجه ی کد بالا روی این لینک کلیک کنید.
در این قسمت با اپراتورهای AND و OR و NOT آشنا شدیم و فهمیدیم می توان با استفاده از این اپراتورها یا ترکیبی از آن ها، انعطاف پذیری بسیار بیشتری به دستورات SQL خود بدهیم. امیدوارم از این قسمت لذت برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.