آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش عملگر BETWEEN در Sql

دوره های مرتبط با این مقاله

مباحث دیگر در خصوص عطف و فصل منطقی: عملگر BETWEEN

اگر یک مجموعه مقادیر در اختیار دارید و می خواهید بدانید مقدار مورد نظر در آن محدود قرار دارد یا خیر، می بایست از BETWEEN استفاده نمایید. عملگر BETWEEN در sql برای انتخاب و واکشی داده هایی که در يک محدوده معین و بين دو مقدار تعيين شده بکار می رود (به عبارتی صریح تر، BETWEEN یک عملگر است که برای گزینش مقادیری که بین یک محدوده ی خاص قرار می گیرد به کار می رود).


آموزش کاربردی

1. SQL Server را اجرا کرده و در پنجره ی محاوره ی اتصال به سرور بر روی دکمه ی Connect کلیک نمایید.
2. در پنجره ی Object Explorer، گره Databases را باز کنید.
3. در این پنجره باید پایگاه داده ای به نام Department Store1 وجود داشته باشد. بر روی علامت + در سمت چپ آن کلیک نموده و آن را باز کنید.
4. بر رویDepartment Store1 راست کلیک کرده و گزینه ی New Query را انتخاب کنید.
5. حال گره Tables را در پنجره ی Object Explorer را باز کنید.
6. بر روی Inventory.StoreItems راست کلیک کرده و گزینه ی Edit Top 200 Rows را انتخاب کنید.
7. در نوارابزار Query Designer، دکمه ی هایآموزش sql، آموزش sql،آموزش sqlرا به ترتیب کلیک نمایید.
8. در کادر SQL، دستور را به صورت زیر ویرایش کنید:


SELECT ItemNumber AS [Item #], 
       Manufacturer, 
       Category, 
       SubCategory AS [Sub-Category], 
       ItemName AS [Name/Description], 
       UnitPrice AS [Unit Price], 
       DiscountRate AS [%Discount]
FROM   Inventory.StoreItems

9. در منوی اصلی: Query Designer -> Execute SQL.


استفاده از عملگر BETWEEN در شرط

برای ایجاد یک عبارت شرطی BETWEEN به صورت ویژوال، در پنجره ی Criteria، بر روی کادر Filter مربوط به ستون که شرط برای آن اعمال می شود کلیک کرده و عبارت مورد نظر را در آن وارد کنید. ساختار نگارشی این دستور به صورت زیر می باشد:


BETWEEN Start AND End

برای ایجاد دستور با کدنویسی، عملگر BETWEEN را در شرط WHERE و همراه با عملگر عطف منطقی AND بکار می بریم. فرمول استفاده از BETWEENدر SQL به شرح زیر می باشد:


WHERE Expression BETWEEN Start AND End

در جایگاه Expression اسم ستون قرار می گیرد. Start مقدار آغازین است که محدوده از آن شروع می شود و End مقداری است که محدوده در آن پایان می یابد. پس از ارزیابی و اجرای شرط، لیستی از مقادیر موجود بین بازه ی Start و End استخراج شده و به نمایش گذاشته می شود.
رکوردهای زیر را درنظر بگیرید:


USE Exercise;
GO
CREATE TABLE Administration.Students
(
	StudentNumber int,
	FirstName nvarchar(20),
	LastName nvarchar(20),
	StudentName AS CONCAT(LastName, N', ', FirstName),
	Grade nvarchar(4)
);
GO
INSERT INTO Records.Students(StudentNumber, FirstName, LastName, Grade)
VALUES(960504, N'Paul', N'Yamo', N'D'),   (583115, N'Bertrand', N'Nguyen', N'B'),
      (284225, N'Alex', N'Alphey', N'D'), (429470, N'Lindsay', N'Womack', N'A'),
      (840051, N'Pamela', N'Nyat', N'B'), (928357, N'Ashley', N'Mann', N'F'),
      (275064, N'Jeanne', N'Ulm', N'A'),  (724857, N'Chrstine', N'Jeffers', N'C'),
      (929740, N'Richard', N'Fields', N'A'), (860402, N'Lois', N'Gibb', N'B');
GO

مقادیر ذکر شده در عبارت BETWEEN باید از نظر نوع یکسان باشند به طوری که مفسر SQL بتواند محدوده ی مشخص شده بین دو مقدار را تشخیص داده و شناسایی کند:
1. اگر مقداری که در جایگاه Expression وارد می شود (از نوع char یا nchar باشد، مفسر SQL ابتدا مقادیر ستون را به صورت داخلی مرتب سازی می کند، سپس مقادیر موجود بین محدوده ی تعیین شده از کاراکترهای حروف الفبا را بازیابی می کند


مثال:
SELECT * FROM Administration.Students
WHERE Grade BETWEEN N'a' AND N'c';

آموزش sql

2. اگر مقداری که در جایگاه Expression قرار می گیرد از نوع رشته باشد (varchar یا nvarchar)، مفسر SQL ابتدا ستون ها را به صورت داخلی مرتب می کند، سپس مقادیر را به ترتیب حروف الفبا و بر اساس محدوده ی مشخص شده در شرط بازیابی می کند.


مثال:
SELECT StudentNumber [Student #],
       FirstName [First Name],
       Lastname [Last Name],
       Grade
FROM Administration.Students
WHERE LastName  BETWEEN N'Jeffers' AND N'Nyat';
GO

آموزش sql

چنانچه مقداری که در جایگاه Expression قرار می گیرد مقدار عددی باشد (از نوع داده ای int، real و مشتقات آن ها)، مفسر SQL بازه ی عددی مقدار را از آغاز تا پایان درنظر می گیرد. سپس هر مقدار از آن ستون که بین محدوده ی مشخص شده قرار می گیرد را واکشی می کند


مثال:
SELECT StudentNumber [Student #],
       FirstName [First Name],
       Lastname [Last Name],
       Grade,
       CASE Grade
	       WHEN N'A' THEN N'Pass'
	       WHEN N'B' THEN N'Pass'
	       WHEN N'C' THEN N'Pass'
	       WHEN N'D' THEN N'Pass'
	       WHEN N'F' THEN N'Fail'
       END [Pass/Fail Status]
FROM Administration.Students
WHERE StudentNumber  BETWEEN 20000 AND 500000;
GO

آموزش sql

در صورتی که مقدار ستون از نوع date/time باشد، عملگر BETWEEN مقادیر را از تاریخ/زمان شروع تا تاریخ/زمان پایان درنظر گرفته و از ستون ذکر شده در دستور استخراج می کند.


آموزش کاربردی: استفاده از عملگر BETWEEN

1. برای مشاهده ی 10 رکورد اول، به پنجره ی Properties مراجعه کرده و سپس فیلد Top Specificiation را باز نمایید. با دوبار کلیک بر روی فیلد (Top) مقدار آن را به Yes تغییر دهید. حال اطمینان حاصل نمایید فیلد Expression مقدار 10 را نشان می دهد.
2. برای اجرای دستور و مشاهده ی نتیجه، در نوارابزار Query Designer، بر روی دکمه یآموزش Entity Frameworkکلیک نمایید.

آموزش sql

3. در کادر SQL، تابع TOP (10) را از دستور حذف کنید.
4. تب مجاور (SQLQuery1.sql) را انتخاب نموده و سپس دستورات زیر را در آن وارد نمایید:


USE LambdaSquare1;
GO
SELECT "Unit #" = aparts.UnitNumber,
       Beds = aparts.Bedrooms, 
       Baths = aparts.Bathrooms,
       [Monthly Rent] = aparts.Price, 
       "Primary Deposit" = aparts.Deposit,
       (aparts.Price + aparts.Deposit) "Due Before Moving", 
       CASE aparts.Available
	    WHEN 0 THEN N'No or Not Yet'
	    WHEN 1 THEN N'Yes'
       END "Available"
FROM Presentation.Units aparts
WHERE aparts.Price BETWEEN 1000 AND 1200
ORDER BY [Monthly Rent], "Primary Deposit";
GO

5. برای اجرای کد، کلید F5 را فشار دهید.
آموزش sql

نقیض کردن عبارت شرطی BETWEEN

برای واکشی اطلاعات خارج از محدوده ی مشخص شده، از يک عملگر نقیض NOT پیش از دستور Between ... And استفاده می شود. بنابراین به منظور نقیض کردن عبارت BETWEEN، بایستی عملگر NOT را قبل از آن در دستور تایپ کرد.


مثال:
SELECT * FROM Administration.Students
WHERE not Grade BETWEEN N'a' AND N'c';

نتیجه ی زیر را برمی گرداند:
آموزش sql

برای افزایش خوانایی دستور، می توان آن (بخش دستور پس از عملگر نقیض) را داخل کاراکتر پرانتز درج کرد.


مثال:
SELECT * FROM Students
WHERE NOT (Grade BETWEEN N'a' AND N'c');

بجای استفاده از کد فوق می توان برای دستیابی به نتیجه ی یکسان، دستور را بدین صورت تنظیم کرد: BETWEEN N'd' AND N'z'.


عبارت های شرطی BETWEEN ترکیبی

همان طور که قبلا گفته شد، عملگر BETWEEN در زبان sql برای گزینش داده ها در يک محدوده یا بازه ی مشخص، در بين دو مقدار تعریف شده بکار می رود. مقادير مورد استفاده در این دستور شرطی می تواند از نوع عددی، رشته ای يا تاريخ/زمان باشد .
می توان دو یا چند عبارت BETWEEN را با یکدیگر پیوند زده و چندین محدوده ی مقدار را در دستور خود برای استخراج مقادیر دلخواه از ستون تعریف کرد. در زیر مثالی را مشاهده می کنید که عبارت شرطی BETWEEN دو محدوده ی مقدار را به وسیله ی فصل منطقی OR با هم ترکیب کرده است:


BETWEEN Start1 AND End1 OR Start2 AND End2

برای افزایش خوانایی دستور، توصیه می شود هر دو عبارت را داخل پرانتز مجزا قرار دهید:


BETWEEN (Start1 AND End1) OR (Start2 AND End2)

هر عبارت به صورت جداگانه ارزیابی می شود. مفسر ابتدا محدوده ی تعیین شده در عبارت اول را ارزیابی می کند، سپس به عبارت دوم می پردازد.در نهایت رکوردهای حاصل از هر عبارت با یکدیگر ترکیب می شود.


مثال:
SELECT * FROM Students
WHERE (StudentNumber BETWEEN 100000 AND 300000)
      OR
      (StudentNumber BETWEEN 600000 AND 800000);

نتیجه ی زیر را برمی گرداند:
آموزش sql

در دستور بالا، محدوده ی مقدار از یک ستون را درنظر داشته باشید. می توان یک عبارت شرطی ترکیبی BETWEEN تنظیم کرد که محدوده ی مقدار از یک ستون را با محدوده ی مقدار از ستون دیگر توسط عملگر عطف منطقی AND به هم متصل می کند.


مثال:
SELECT * FROM Students
WHERE (StudentNumber BETWEEN 400000 AND 400000)
      OR
      (Grade BETWEEN 'A' AND N'B');

خروجی:
آموزش sql

استفاده از عملگر BETWEEN همراه با IN

فرض کنید فیلدی در دست دارید که مقادیر معینی از آن تکراری هستند.


مثال:
USE Exercise;
GO
DROP TABLE Employees;
GO
CREATE TABLE Employees([Empl #] nchar(10), [First Name] nvarchar(20),
	[Last Name] nvarchar(20), Salary money, [Full Time?] bit);
GO
INSERT INTO Employees
VALUES(N'29730', N'Philippe', N'Addy', 20.05, 1);
GO
INSERT INTO Employees([Empl #], [First Name], [Last Name], Salary)
VALUES(N'28084', N'Joan', N'Shepherd', 12.72);
GO
INSERT INTO Employees([Empl #], [First Name], [Last Name], Salary)
VALUES(N'79272', N'Joshua', N'Anderson', 18.26);
GO
INSERT INTO Employees
VALUES(N'22803', N'Gregory', N'Swanson', 15.95, 0);
GO
INSERT INTO Employees([Empl #], [Last Name], Salary, [Full Time?])
VALUES(N'28084', N'Shepherd', 12.72, 1),
      (N'39742', N'Anders', 8.88, 0);
GO
INSERT INTO Employees
VALUES(N'83084', N'Josephine', N'Anderson', 20.02, 1);
GO
INSERT INTO Employees([Empl #], [First Name], [Last Name], Salary)
VALUES(N'79272', N'James', N'Anders', 18.26),
      (N'27924', N'Gregory', N'Hope', 12.85),
      (N'39742', N'John', N'Anderson', 8.88);
GO
SELECT * FROM Employees;
GO

پس از اجرای این کد، نتیجه ی زیر حاصل می گردد:
آموزش sql

همان طور که مشاهده می کنید، برخی از اسم ها همچون Sheperd، Anders و Anderson تکراری هستند. از پیش با نحوه ی جستجو و یافتن رکوردهایی که در مقدار معینی مشترک هستند آشنا هستیم. مثال زیر لیستی از کارکنان که اسم فامیلی آن ها Anderson است را بدست می دهد:


SELECT [Empl #], [First Name],
	[Last Name], Salary,
	CASE [Full Time?]
		WHEN 1 THEN N'Yes'
		WHEN 0 THEN N'No'
		ELSE N'Unknown'
	END "Is Full Time?"
FROM Employees
WHERE [Last Name] = N'Anderson';
GO

نتیجه:
آموزش sql

اکنون می خواهیم مقدار دیگری را به جستجو یا پرس و جوی خود اضافه کنیم. این کار را با فصل منطقی OR انجام می دهیم.


مثال:
SELECT [Empl #], [First Name],
	[Last Name], Salary,
	CASE [Full Time?]
		WHEN 1 THEN N'Yes'
		WHEN 0 THEN N'No'
		ELSE N'Unknown'
	END "Is Full Time?"
FROM Employees
WHERE ([Last Name] = N'Anderson') OR ([Last Name] = N'Shepherd');

خروجی:
آموزش sql

به همین نحوه، می توان تعداد بی شماری عبارت OR به دستور مورد نظر اضافه کرد. قبلا با نحوه ی ایجاد فصل منطقی برای بازیابی مقدار یک یا چند ستون بر اساس از عبارت های شرطی آشنا شدیم. در زیر نمونه ای را مشاهده می کنید که مقدار دو ستون را بررسی می کند و در صورت منطبق بودن مقدار هر یک از دو عبارت شرطی با مقادیر ستون های مشخص شده، آن ها را استخراج می کند:


SELECT [Empl #], [First Name],
	[Last Name], Salary,
	CASE [Full Time?]
		WHEN 1 THEN N'Yes'
		WHEN 0 THEN N'No'
		ELSE N'Unknown'
	END "Is Full Time?"
FROM Employees
WHERE ([Last Name] = N'Anderson') OR ([Full Time?] IS NOT NULL);

نتیجه ی زیر را برمی گرداند:
آموزش sql

اگر فصل منطقی که تنظیم کرده اید تنها یک ستون را شامل می شود، SQL عملگر IN را به عنوان جایگزین ارائه می دهد.


تنظیم عبارت شرطی با عملگر IN

عملگر IN عملکردی مشابه OR که به یک ستون اعمال شده، دارد. اما هر یک به شیوه ی متفاوتی تنظیم می شود. عملگر IN عملا برای بازیابی داده هایی از رکوردهای جدول بکار می رود که مقدار دقیق حداقل یکی از فیلدهای آن ها را در دست داریم.
عبارت شرطی مورد نظر را به صورت ویژوال یا با کدنویسی ایجاد می کنیم. فرمول تنظیم این دستور به شرح زیر می باشد:


IN(Expression1, Expression2, Expression_n)

در ابتدا کلیدواژه ی IN را درج نموده و بلافاصله پس از آن کاراکتر پرانتز را اضافه می کنیم. داخل پرانتز لیست مقادیر را وارد کرده و آن ها را توسط ویرگول از یکدیگر جدا می کنیم.
به منظور تنظیم دستور شرطی به همراه عملگر IN به صورت ویزاردی، ابتدا یک جدول را در Query Designer باز می کنید. در کادر Filter متعلق به ستون مورد نظر کلیک کرده و سپس عبارت شرطی دلخواه را داخل آن وارد نمایید.
در زبان SQL، عملگر IN همیشه با دستور WHERE همراه خواهد بود. نحوه ی کلی نگارش آن به صورت زیر می باشد:


WHERE ColumnName IN(Expression1, Expression2, Expression_n)

دستور را با واژه ی کلیدی WHERE آغاز کرده و به دنبال آن اسم ستون حاوی مقدار مورد جستجو را ذکر نمایید. داخل پرانتز عملگر IN، لیست مقادیر مورد جستجو را درج نموده و سپس آن ها را به وسیله ی تفکیک گر ویرگول از هم جدا کنید. تنها یکی از مقادیر ذکر شده در پرانتز به ستون مشخص شده در دستور متعلق می باشد. این دستور معادل Expression1 OR Expression2 OR Expression_n می باشد.


آموزش کاربردی

1. در پنجره ی Criteria، بر روی کادر Filter متعلق به فیلد Manufacturer کلیک نمایید.
2. جهت واکشی آیتم های مربوط به Coach یا Giorgio Armani، عبارت شرطی IN(Coach, Giorgio Armani) را وارد کنید.
3. برای مشاهده ی نتیجه، داخل پنجره راست کلیک کرده و گزینه ی Execute SQL را انتخاب کنید.


آموزش sql

نقیض IN

راه های مختلفی برای نقیض کردن عملگر IN وجود دارد. مثال زیر را در نظر داشته باشید:


SELECT [Empl #], [First Name],
	[Last Name], Salary,
	CASE [Full Time?]
		WHEN 1 THEN N'Yes'
		WHEN 0 THEN N'No'
		ELSE N'Unknown'
	END "Is Full Time?"
FROM Employees
WHERE [Last Name] IN (N'Anderson', N'Shepherd');

آموزش sql

آسان ترین روش برای نقیض کردن، جای گذاری عملگر NOT پیش از آن می باشد. یک راه این است که NOT را قبل از اسم ستون درج کرد.


مثال:
SELECT [Empl #], [First Name],
	[Last Name], Salary,
	CASE [Full Time?]
		WHEN 1 THEN N'Yes'
		WHEN 0 THEN N'No'
		ELSE N'Unknown'
	END "Is Full Time?"
FROM Employees
WHERE NOT [Last Name] IN (N'Anderson', N'Shepherd');

آموزش sql

روش دیگر این است که عملگر نقیض را قبل از IN در دستور جای گذاری کرد:


SELECT * FROM Employees
WHERE [Last Name] NOT IN (N'Anderson', N'Shepherd');

اگر تعداد مقادیر موجود در ستون محدود باشد، برای نقیض کردن آن می توان، بجای مقادیر دلخواه، مقادیری را که نمی خواهید در خروجی به نمایش درآید را داخل پرانتز تایپ کنید.


قید شرطی Check Constraint


گاهی به هنگام اجرای عملیات درج داده، حتی پس از مشخص کردن نوع داده ای که باید از طرف کاربر در ستون مد نظر وارد شود، لازم است مجموعه مقادیری که اجازه ی درج در آن ستون دارد را محدود کنیم. به همین صورت، می توانید قاعده یا قیدی را تعریف کنید که باید در خصوص ترکیبی از ستون ها، پیش از ایجاد رکورد، رعایت گردد. به عنوان مثال، می توانید به موتور DB اعلان کنید که باید بررسی انجام داده و از وارد شدن مقدار در حداقل یکی از ستون ها اطمینان حاصل نماید. برای مثال، در یک جدولی که حاوی اطلاعاتی و داده هایی درباره ی مشتری ها می باشد، می توانید از موتور DB درخواست کنید بررسی کند آیا شماره ی تلفن یا آدرس ایمیل مشتری (برای هر رکورد) وارد شده است یا خیر.
قابلیت بررسی اینکه آیا قید یا محدودیتی که برای جدول تعریف کرده اید رعایت شده است یا خیر، در SQL تحت عنوان CHECK CONSTRAINT شناخته می شود.
به طور کلی Constraint ها (یا قیود و یا محدودیت ها) در sql، برای محدود کردن (اعمال محدودیت بر) نوع داده هایی که می تواند در جدول تعریف شود، بکار می رود. از محدودیت Check در sql زمانی استفاده می کنیم که لازم است برای یک فیلد، یک سری محدودیت خاص مشخص کنیم.
CHECK CONSTRAINT در واقع یک عمل بولی است که توسط مفسر SQL انجام می گیرد. مفسر مقداری که برای ستون ارائه شده است را بررسی می کند، اگر مقدار مجاز بود:
1. CONSTRAINT یا قید اعمال شده مقدار TRUE را برمی گرداند.
2. مقدار پذیرفته شده و ..
3. در نهایت به ستون مورد نظر تخصیص می یابد.
در صورتی که مقدار ارائه شده مجاز نباشد:
1. CONSTRAINT مقدار FALSE را برمی گرداند.
2. مقدار ورودی پذیرفته نمی شود و ..
3. مقدار به ستون مد نظر اختصاص نمی یابد (در آن درج نمی گردد).
Check constraint را در زمان ایجاد جدول تعریف و اعمال می کنیم.


ایجاد یک check constraint به صورت ویزاردی

به منظور ایجاد یک check constraint، در زمان ایجاد جدول، داخل جدول راست کلیک کرده و گزینه ی Check Constraints... را انتخاب نمایید. در پی کلیک بر روی این گزینه کادر محاوره ای Check Constraints پدیدار می شود. ابتدا در کادر ذکر شده بر روی دکمه ی Add کلیک نمایید. از آنجایی که constraint یک شی محسوب می شود، لازم است برای آن یک اسم درنظر بگیرید. مهم ترین اطلاعاتی که شی یاد شده در خود ذخیره می کند، مکانیزمی است که توسط آن مقدار فیلدی که قید بر روی اعمال شده است را بررسی می کند. این مکانیزم در قالب یک عبارت تعریف می شود. بنابراین، به منظور ایجاد یک constraint، می بایست در کادر محاوره ای، بر روی فیلد Expression و دکمه ی حاوی نقطه چین کلیک نمایید. با کلیک بر روی دکمه ی ذکر شده، پنجره ی محاوره ی Check Constraint Expression به نمایش در می آید.
جهت ایجاد عبارت قید، ابتدا اسم ستون مورد نظر که محدودیت بر روی آن اعمال می شود و سپس کاراکتر پرانتز را درج کنید. داخل پرانتز، عملگرهای ریاضی و/یا SQL که در مباحث پیشین آموختیم را استفاده نمایید. در زیر مثالی را مشاهده می کنید که اطمینان حاصل می کند مقدار جدیدی که برای ستون Student Number مشخص شده است، حتما بزرگتر از 1000 است:


آموزش sql

پس از ایجاد عبارت، کافی است دکمه ی OK را کلیک نمایید. چنانچه عبارت نامعتبر یا غیرمجاز باشد، شما با خطا مواجه شده و بایستی آن را تصحیح نمایید.
می توان هر تعداد قید و محدودیت که لازم می دانید برای جدول تعریف نمود:


آموزش sql

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

برای ایجاد یک constraint به صورت کد نویسی، ابتدا باید ستونی که محدودیت بر روی آن اعمال می شود را (داخل دستور CREATE TABLE) خلق کنید. پیش از بستن پرانتز تعریف جدول، فرمول زیر را بکار ببرید:


CONSTRAINT name CHECK (expression) 

کلیدواژه های CONSTRAINT و CHECK برای تعریف قید الزامی می باشند. همان طور که قبلا گفته شد، CONSTRAINT یک شی تلقی شده و از این رو باید یک اسم به آن اختصاص داد شود. برای این منظور داخل پرانتزی که بلافاصله بعد از عملگر CHECK جای می گیرد، عبارتی که به عنوان محدودیت اعمال می شود را وارد کنید. در زیر مثالی را مشاهده می کنید که در آن برای ستونی با نام hourly salary (میزان دستمزد ساعتی برای یک کارکن)، قید > 12.50 تعریف شده است (حقوق آن باید بیشتر از مقدار تعیین شده در قید باشد):


CREATE TABLE Employees
(
	[Employee Number] nchar(7),
	[Full Name] varchar(80),
	[Hourly Salary] smallmoney,
	CONSTRAINT CK_HourlySalary CHECK ([Hourly Salary] > 12.50)
);

یادآور می شویم که قید یا constraint برای محدود کردن داده های ورودی استفاده می شود.
لازم است به یاد داشته باشید که check constraint نه یک عبارت است و نه یک تابع، بلکه دربردارنده ی یک عبارت بوده و ممکن است تابع بخشی از تعریف آن باشد.
پس از ایجاد constraint های مورد نیاز برای جدول، به پنجره ی Object Explorer در محیط Microsoft SQL Server مراجعه کرده و داخل گره Table، بر روی علامت + نود Constraints کلیک کنید و سپس اسم قید اعمال شده را مشاهده نمایید.
پس از تعریف قید به صورت ویزاردی یا کدنویسی، در زمان درج داده، اگر کاربر (یا کد خود توسعه دهنده) مقداری غیرمجاز را وارد کند، با خطا مواجه خوهد شد. بجای عبارتی که فقط عملگرهای معمولی را شامل می شود، می توانید تابعی را بکار ببرید که در فرآیند بررسی مقدار ورودی فیلد به شما کمک کند. برای این منظور می توانید تابع خود را تعریف کرده و بکار ببرید یا یکی از توابع درون ساخته ی T-SQL را مورد استفاده قرار دهید.


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

جهت اصلاح و فیلتر تحلیل داده ها، می توانید توابع خود و یا توابع درون ساخته ی T-SQL را بکار ببرید. همان طور که قبلا تشریح شد، توصیه می شود تا حد امکان از توابع توکار و درون ساخته ی خود T-SQL استفاده کنید.
به منظور استفاده از توابع درون ساخته ی خود SQL، در جایگاهی که اسم ستون را در آن ذکر می کنید، اسم تابع و به دنبال آن پرانتز را تایپ کنید. اگر تابع مورد نظر دارای پارامتر ورودی می باشد، در آن صورت باید قوانین و اصول فراخوانی تابع را رعایت نمایید. می توانید تابع را در هریک از عملگرهایی که تاکنون با آن ها آشنا شدید، بگنجانید. همچنین می توانید تابع درون ساخته را در یک عبارت بکار ببرید.


توابع کاربر (user-defined) و گزینش و استخراج داده ها

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


USE ROSH;
GO
/* =============================================
   Author:      FunctionX
   Create date: Friday 6 April, 2007
   Description:	This function is used 
                to get the full name of a student
   ============================================= */
CREATE FUNCTION Registration.GetFullName
(
	@FName nvarchar(20),
	@LName nvarchar(20)
)
RETURNS varchar(41)
AS
BEGIN
	RETURN @LName + ', N' + @FName;
END;
GO
/* =============================================
   Author:	FunctionX
   Create date: Saturday 7 April, 2007
   Description:	This function is used 
                to display Yes or No
   ============================================= */
CREATE FUNCTION Registration.ShowYesOrNo
(
    @SingleParentHomeStatus bit
)
RETURNS nvarchar(3)
AS
BEGIN
    DECLARE @Result nvarchar(3);
    IF @SingleParentHomeStatus = 0
       SET @Result = N'No';
    ELSE
       SET @Result = N'Yes';
    RETURN @Result;
END;
GO   

زمانی که تابع آماده می باشد، در جایگاه دستور SQL، اسم schema، عملگر نقطه، اسم تابع، پرانتز باز، پارامترهای ورودی و در پایان پرانتز بسته را درج نمایید.


مثال:
SELECT StudentNumber [Student #],
       Registration.GetFullName(FirstName, LastName) AS [Student's Name],
       Gender,
       Registration.ShowYesOrNo(SingleParentHome) AS [Live's in a Single Parent Home?],
       ParentsNames AS [Parents' Names]
FROM   Registration.Students;
GO

نتیجه ی زیر را بدست می دهد:
آموزش sql
  • 4287
  •    1154
  • تاریخ ارسال :   1394/12/03

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .