برای فیلتر کردن دادهها در کوئری براساس شرایط خاصی که مورد نظر مدیر پایگاه داده است، SQL علمگرهای زیادی را معرفی کرده و یکی از این عملگرهای بسیار کاربردی، دستور BETWEEN در SQL است. در زمان نیاز به دادههای درون محدودهای خاص، میتوانیم از دستور BETWEEN استفاده کنیم. برای مثال، یکی از موارد کاربرد مناسب دستور BETWEEN میتواند زمانی باشد که دادههای مربوط به کودکان بین ۵ تا ۱۰ ساله را باید فرخوانی کنیم. دستور BETWEEN را بر روی انواع داده مانند متن، تاریخ و عدد میتوان استفاده کرد. بیشترین کاربرد این دستور بر روی ویژگیهای زمانی و در پایگاههای داده سری زمانی است.
در این مطلب از مجله فرادرس، روش استفاده از دستور BETWEEN را به صورت قدم به قدم همراه با مثالهای کدنویسی شده میآموزیم. انواع موارد کاربرد دستور BETWEEN را بررسی کرده و مواردی که نباید از این دستور استفاده کرد را نیز اعلام کردهایم. با کمک مثالهای مختلف، ترکیب دستور BETWEEN را با سایر عملگرهای SQL نمایش میدهیم و در نهایت توضیح مختصری درباره پایگاههای داده سری زمانی دادهایم.
دستور BETWEEN در SQL چیست؟
از عملگر BETWEEN میتوان برای انتخاب ردیفهایی استفاده کرد که درون محدوده خاصی قرار دارند. از آنجا که این دستور، شامل مقادیر مساوی با نقاط شروع و پایان محدوده نیز در ردیفها است، نوعی دستور فراگیر محسوب میشود. از دستور BETWEEN برای فیلتر کردن دادههای از نوع متن، عدد و تاریخ استفاده میشود.
سینتکس پایه برای دستور BETWEEN
را در کادر زیر پیادهسازی کردهایم.
1SELECT column1, column2, ...
2FROM table
3WHERE column BETWEEN value1 AND value2;
معمولا داخل متن کوئری، دستور BETWEEN
بعد از ماده WHERE در SQL بهکار برده میشود. این دستور، محل استفادهای شبیه به سایر دستورات منطقی SQL دارد. در فهرست زیر، پارامترهای سینتکس مربوط به کوئری بالا را توضیح دادهایم.
- column1, column2, …
نمایانگر ستونهایی هستند که باید دادههایشان را در جدول فیلتر شده نمایش دهیم.
- table
نام جدولی است که عملیات بر روی دادههای آن انجام میشود.
- column
نام ستون خاصی است که باید محدوده خاصی از مقادیر را درون آن مشخص کنیم. عملیات فیلترکردن را بر روی دادههای این ستون انجام میدهیم.
- BETWEEN
کلمه کلیدی است که برای مشخص کردن محدوده مقادیر موجود در ستون بهکار میبریم.
- value1
و value2
نماینده حدهای پایین و بالای محدوده هستند.
در چه مواردی باید از دستور BETWEEN در SQL استفاده کرد؟
در این بخش موارد کاربرد دستور BETWEEN در SQL را بررسی میکنیم. موقعیتها و مشکلات زیادی وجود دارند که با استفاده از دستور BETWEEN
میتوانیم به سادگی مدیریتشان کنیم. چند مورد از این موارد را در پایین فهرست کردهایم.
- واکشی دادههای درون محدوده زمانی خاص: وقتی که نیاز به انتخاب دادههای درون محدوده زمانی خاصی داریم، مثلا دادههای درون تاریخهای مشخصی -تاریخ شروع و پایان مشخص- را در نظر گرفتهایم. دستور BETWEEN
گزینه بسیارخوبی برای استخراج دادههای مورد نیاز است. برای مثال، نیاز به استخراج دادههای همه نقل و انتقالات مالی بین اول فوریه تا ۱۵ مارس داریم. اینجور مسائل در اپلیکیشن اقتصادی میزبان پایگاه داده رخ میدهد.
- گرفتن دادههای درون محدوده عددی خاص: با کمک دستور BETWEEN
میتوانیم دادههای درون محدوده عددی خاصی را با نقاط شروع و پایان مشخص بدست بیاوریم. به عنوان مثال، یکی از کاربردهای مناسب این دستور میتواند واکشی اطلاعات کالاهای درون انبار فروشگاه است. به شرطی که تعداد موجودی آنها بین ۱۰ تا ۲۰ عدد باشد.
- جستوجو متن درون محدوده خاص: میتوانیم از دستور BETWEEN
برای بدست آوردن ردیفهای درون محدوده خاصی استفاده کنیم. درحالی که حد بالا و پایین این محدوده توسط دو رشته مختلف تعیین شدهاند. برای مثال، در جدولی که شامل دادههای مربوط به دانشآموزان و نمرات آنها است، میتوانیم اطلاعات مربوط به دانشآموزانی را استخراج کنیم که محدوده نمراتی A
تا C
دارند.
چه زمانی از دستور BETWEEN استفاده نکنیم؟
یکی از مثالهای خوبی که در آن نباید از دستور BETWEEN
استفاده کرد مربوط به زمانی است که نباید یک یا هر دو انتهای محدوده درون دادههای واکشی شده باشند. به این صورت میتوان بیان کرد که میخواهیم همه دادههای درون محدوده A
تا C
را به غیر از خود دادههای A
و C
واکشی کنیم. نتایج کوئری درون این مورد خاص فقط شامل همه دادههای با نمره B
میشود. یا برای مثال، اگر بخواهیم که مقدار حد پایین محدوده را استثنا کنیم، به عنوان مثال در واکشی ردیفهای بین ۴ تا ۸، فقط باید دادههای ردیفهای بین ۵ و ۶ و ۷ و ۸ واکشی شوند. دادههای مربوط به ردیف ۴ باید نادیده گرفته شوند.
تسلط بیشتر بر SQL Server با فرادرس
SQL Server یکی از نرمافزارهای پایگاه دادهای است که از زبان SQL برای مدیریت دادهها استفاده میکند. برای کار با SQL Server باید کلاسهای آموزشی مربوط به این پایگاه داده محبوب و پرطرفدار را بگذرانید. بعضی از این دورهها تمام مراحل کار با SQL Server را آموزش میدهند و دانشجو را برای ورود به بازار کار آماده میکنند. اما همه این دورهها کیفیت یکسانی ندارند و حتی گاهی هزینه اضافه نیز بر دوش دانشجویان تحمیل میکنند.
یکی از بهترین موسساتی که دورههای بسیار مناسبی را به صورت فیلمهای آموزشی، برای کار با این پایگاه داده تولید کرده، وبسایت آموزشی فرادرس است. در این وبسایت فیلمهای مختلفی برای آموزش SQL Server در سطوح مختلف علمی تولید شده، بنابراین میتوانید با توجه به سطح خود گزینه مناسب را انتخاب کنید. از مزایای فیلمهای آموزشی فرادرس میتوان به کیفیت بالای علمی، آموزش مطالب کاربردی و بهروز، هزینه مقرونبهصرفه و عدم وجود محدودیت زمانی برای یادگیری توسط فیلمهای فرادرس اشاره کرد.
در ادامه چند مورد از این فیلمهای آموزشی را برای مخاطبان عزیز، فهرست کردهایم. در صورت تمایل با کلیک بر روی تصویر بالا میتوانید وارد صفحه اصلی این مجموعه آموزشی شده و فیلمهای بیشتری در موضوعات متنوع مشاهده کنید.
روش استفاده از دستور BETWEEN در SQL
در این بخش از مطلب، به بررسی روش استفاده از دستور BETWEEN
برای واکشی دادهها پرداختهایم. کدهای کوئریهای این بخش را در پایگاههای داده MySQL و SQL Server نوشتهایم.
پایگاه داده SQL Server یکی از مشهورترین و قویترین پایگاههای داده در دنیای نرمافزار است. این پایگاه داده در پروژههای بزرگ و صنعتی نیز استفاده میشود. برای آموختن روش کار با این نرمافزار ذخیرهسازی دادهها میتوانید فیلم آموزش کار با پایگاه داده SQL Server از فرادرس را مشاهده بکنید. برای راحتی شما لینک مربوط به فیلم آموزشی را در پایین نیز قرار دادهایم.
مرحله اول ساخت جدول SQL
برای اینکه مطلب را همراه با نمایش مثالهای مرتبط، ادامه دهیم. در ابتدای کار جدول جدید را در پایگاه داده خود ایجاد میکنیم.
کوئری زیر را برای ساخت جدول در نرمافزارهای پایگاه داده MySQL یا SQL Server اجرا کنید.
کوئری مربوط به پایگاه داده MySQL
1CREATE TABLE students_record(id int AUTO_INCREMENT PRIMARY KEY, full_name varchar(100) NOT NULL, grade varchar(20) NOT NULL, subject varchar(150) NOT NULL, date_of_birth date NOT NULL);
کوئری مربوط به پایگاه داده SQL Server
1CREATE TABLE students_record(id int PRIMARY KEY IDENTITY(1,1), full_name varchar(100) NOT NULL, grade varchar(20) NOT NULL, subject varchar(150) NOT NULL, date_of_birth date NOT NULL);
کوئریهای بالا جدول جدیدی را برای ذخیره دادههای دانشآموزان به نام students_record
ایجاد میکنند. در این جدول ستونهای شماره شناسایی id
، نام full_name
، نمره grade
، درس subject
، و تاریخ تولد date_of_birth
برای هر دانشآموز قرار دارد.
بعد از آن جدول را با دادههای زیر پر میکنیم.
مرحله دوم انتخاب دانش آموزان درون محدوده نمرهای خاص
در این مرحله، روش نوشتن کوئری را نشان میدهیم. در این کوئری میخواهیم تمام دانشآموزان با نمره B
تا D
را از درون جدول انتخاب کرده و در خروجی به کاربر نمایش دهیم.
برای انجام این کار باید کوئری SQL پایین را اجرا کنیم.
1SELECT * FROM students_record WHERE grade BETWEEN 'B' AND 'D';
در کد بالا میبینیم که دستور BETWEEN در داخل عبارت WHERE استفاده شده که این عبارت خود مادهای از عبارت SELECT است. عبارت SELECT یکی از کلیدیترین و اصلیترین عبارتها در کوئریهای SQL است. برای آشنایی با این عبارت، پیشنهاد میکنیم که مطلب دستور SELECT در SQL همراه با راهنمای استفاده به زبان ساده و مثال از مجله فرادرس را مطالعه کنید.
جدولی که در زیر آمده، تمام نتایج حاصل از اجرای کوئری بالا را نشان میدهد.
اگر دستور BETWEEN
از مقادیر متنی به عنوان محدوده اجرای عملیات استفاده کند، در آن صورت، عملیات جستوجو با ترتیب واژگان انجام میشود. برای درک بهتر این نوع جستوجو، کوئری زیر را اجرا میکنیم.
1SELECT * FROM students_record WHERE full_name BETWEEN 'Mary West' AND 'Phil Jack';
با اجرای کوئری بالا، جدول زیر به عنوان نتیجه از روی دادههای جدول اصلی students_record
ساخته میشود.
نتایج کوئری بالا شامل نامهایی از Mary West
گرفته تا Phil Jack
میشود. این مسئله بهخاطر این است که فقط همه مقادیری از ستون full_name
انتخاب شدهاند درون محدوده متنی مشخص شدهاند. این محدوده مشخص شده در کوئری شامل کلماتی است که کاراکتر اول آنها بزرگتر از حرف M
-همچنین شامل حرف M
– است و در انتها به کلمه Phil
میرسد. توجه کنید که این کوئری در کلمه Phoden
متوقف میشود. زیرا به ترتیب حروف که پیش برویم، کاراکتر سوم o
بزرگتر از کاراکتر i
در Phil
است.
مرحله سوم انتخاب دانش آموزان با تاریخ تولد درون محدوده مشخص شده
برای انتخاب کردن ردیفهایی در محدوده دو تاریخ مختلف، باید کوئری SQL زیر را اجرا کنیم.
1SELECT * FROM students_record WHERE date_of_birth BETWEEN '1994-01-01' AND '1999-12-31';
با اجرای کوئری بالا، دادههای نتیجه اجرای کوئری مانند جدول زیر در خروجی نمایش داده میشوند.
برای اجرای این کوئری لازم است که تاریخ شروع و پایان را به صورت رشته به کوئری ارائه دهیم. برای انجام این کار تاریخها را درون علامت کوتیشن قرار میدهیم.
مرحله چهارم انتخاب ردیف های خارج از محدوده
با استفاده از عملگر NOT
میتوانیم دادههای خارج از محدوده مورد نظر را با استفاده از دستور BETWEEN در SQL انتخاب کنیم. برای انجام این کار باید از دستور BETWEEN
به صورت NOT BETWEEN
استفاده کنیم.
برای مثال، کوئری زیر را اجرا میکنیم تا دادههای مربوط به دانشآموزانی را از جدول خارج کنیم که تاریخ تولدشان خارج از محدوده اول ژانویه ۱۹۹۷ تا ۳۱ دسامبر ۲۰۰۱ است.
1SELECT * FROM students_record WHERE date_of_birth NOT BETWEEN '1997-01-01' AND '2001-12-31';
با اجرای کد بالا دادههای زیر به عنوان جواب کوئری به صورت جدول در خروجی نمایش داده میشوند.
مرحله پنجم استفاده از دستور BETWEEN همراه با عملگر IN
عملگر IN
لیستی از مقادیر را میپذیرد که با علامت کاما از هم جدا شدهاند. سپس همه ردیفها را با مقادیر موجود درونشان مقایسه میکند که آیا جزوی از لیست IN
هستند یا نه. برعکس دستور BETWEEN
که دادههای درون محدوده خاصی را انتخاب میکند. عملگر IN
دادهها را با توجه به مقادیر درون لیستی فیلتر میکند که برایش تعیین کردهایم.
در این مثال، میخواهیم که دستور BETWEEN
را با عملگر IN
ترکیب کنیم تا دادههای درون جدول students_record
را به روش جدیدی فیلتر کنیم.
برای اینکه روش ترکیب دستور BETWEEN
را با عملگر IN
به صورت تجربی ببینیم به کوئری زیر دقت کنید.
1SELECT * FROM students_record WHERE grade BETWEEN 'A' AND 'C' AND date_of_birth IN('1998-11-05', '1994-02-13');
بر اثر اجرای کوئری بالا، دادههای نتیجه به صورت جدول زیر نمایش داده میشوند.
در کوئری بالا چند عملیات دقیق در کنار هم به صورت مرتب انجام میشوند که در فهرست زیر بیان کردهایم.
- در قسمت اول از بند WHERE
با استفاده از دستور BETWEEN
دانشآموزانی را بررسی میکنیم که نمرههای بین A
و C
دارند.
- سپس عملگر IN
نتیجه را به میزان بیشتری فیلتر میکند. در واقع، در نهایت دانشآموزانی انتخاب میشوند که شرط اول را داشته باشند و علاوه بر آن در تاریخهای 1998-11-05
یا 1994-02-13
متولد شده باشند.
آموزش کار با انواع پایگاه های داده SQL
برای آشنا شدن با انواع پایگاههای دادهی رابطهای که با زبان SQL کار میکنند و آموختن روش کار با آنها، فیلمهای آموزشی بسیار خوبی در فرادرس تولید شدهاند. آشنایی با اصول زبان کدنویسی SQL، مقدمهای برای آشنایی با پایگاههای داده بر مبنای SQL است. این پایگاههای داده انواع گوناگونی دارند. هر کدام در رابطه با نوع خاصی از زبانهای برنامه نویسی و پلتفرمها یا با توجه به نوع خاصی از پروژهها یا سختافزارهای در دسترس، برتریهای منحصر به خود را دارند. فرادرس برای شما مخاطبان عزیز فیلمهای آموزش تخصصی متناسب با انواع پایگاههای داده را از سطح مبتدی تا حرفهای، تهیه کرده است. هدف اصلی فرادرس، آمادهسازی جویندگان علم برای رفع نیازهای خود و ورود قدرتمند به بازار کار است.
در پایین چند مورد از فیلمهای آموزشی مورد اشاره را فهرست کردهایم. این فیلمها بعضی از پایگاههای داده مختلف را پوشش میدهند. برای دیدن فیلمها آموزشی بیشتر میتوانید بر روی تصویر بالا کلیک کرده و وارد صفحه مربوط به مجموعه آموزش پایگاه داده فرادرس شوید.
پایگاه های داده سری زمانی چیست؟
پایگاههای داده سری زمانی، گروه خاصی از پایگاههای داده هستند که برای ذخیرهسازی دادهها از زمان به عنوان فاکتور کلیدی استفاده میکنند. این پایگاههای داده معمولا دادهها را به صورت کلید و مقدار ذخیره میکنند. در این ساختارهای ذخیرهسازی، واحدهای زمانی به عنوان کلید در نظر گرفته میشوند و در جایگاه مقدار، میتوان هر نوع دادهای حتی پیامهای متنی قرار داد.
در قسمتهای بالاتر این مطلب، دیدیم که چگونه میتوان با استفاده از دستور BETWEEN
دادهها را درون محدوده تاریخی خاصی فیلتر کرد. از آنجا که پایگاه داده سری زمانی، هر مقدار را با استفاده از زمان اولویت بندی میکند، فیلتر کردن دادهها بر اساس دو یا چند محدوده زمانی آسان است.
جمع بندی
در این مطلب از مجله فرادرس به بررسی دستور BETWEEN در SQL پرداختهایم. فهمیدیم که دستور BETWEEN
، یکی از عملگرهای SQL است که کار فیلتر کردن دادهها را با توجه به محدوده مشخص شده ساده میکند. به علاوه، با استفاده از دستور BETWEEN در SQL چند مثال کاربردی درباره فراخوانی دادهها را به صورت فیلتر شده نمایش دادیم. در مثالهای مورد استفاده از محدودههای متنی و تاریخی برای فراخوانی دادهها استفاده کردیم.
همچنین دیدیم که چگونه از دستور BETWEEN
همراه با عملگر IN
استفاده کنیم. با ترکیب این دستورها میتوانیم دو سطح مختلف از فیلتر کردن را بر روی دادهها در یک کوئری SQL اعمال کنیم. استفاده کردن از ترکیب این دستورها نسبت به عملگرهای منطقی مانند >
و <
و AND
و =
برای بدست آوردن نتایج یکسان، سادهتر و برای انسان خواناتر است.
source