رد این اپ تاروتسد اب لصفیهای SQL Server (T-SQL) م انشآیوش یم ارب هکی اب راک
زاب ،هداد جرد ،لوادجیبای ناسرزورب ،تاعلاطای م هدافتسا اهدروکر فذح و یدنوش لاثم . اه
س لوادج ساسا ربیمتس رخید حارط لوا لصف زا شورف وی هدش.دنا
۲.۱ اب هداد جردINSERT INTO
-- اهلااک جرد
INSERT INTO Products (Name, Price, Stock)
VALUES
(N ب سوام'یسیم ,'850000 ,20 ,)
(N ک'یدروب ناکمی کی ,'1200000 ,15 ,)
(N پل'ا پاتیسوس ,'35000000 ,8 ;)
8
SELECT * FROM Products
WHERE Price > 2000000;
۲.۳ ناسرزوربی هداد اب اهUPDATE
-- ازفایش دوجومی یک لااک
UPDATE Products
SET Stock = Stock + 10
WHERE Name = N ب سوام' یسیم;'
-- غتییر باسح فرط سامت هرامش
UPDATE Accounts
SET Phone = '09125555555 '
WHERE Name = N هداد تکرش'رآ زادرپیا;'
۲.۴ هداد فذح اب اهDELETE
-- فذحیک آیمت صاخ شورف
DELETE FROM SalesItems
WHERE ItemID = 2;
-- فذحیک صاخ لااک
DELETE FROM Products
WHERE Name = N ک'یدروب ناکمی کی ;'
-- باسح فرط دنراد سامت هرامش هک ییاه
SELECT * FROM Accounts
WHERE Phone IS NOT NULL;
عمج موس لصف یدنب
رگلمع دربراک
WHERE اهدروکر یور طرش لامعا
AND, OR طورش بیکرت
IN هعومجم رد تیوضع یسرربریداقم زا یا
BETWEEN ای یددع هزاب یسررب یخیرات
LIKE هتشر یوجتسج وگلا اب یا
IS NULL, IS NOT NULL رادقم ندوبن ای ندوب یهت یسررب
غارس ،دعب لصف رد بترمجیاتن یزاسدودحم و یزاس یم زا هدافتسا اب میورORDER BY و
TOP شور نینچمه و هحفص یاهیدنب (Pagination).
بترم :مراهچ لصف و یزاس رد جیاتن یزاسدودحم SQL Server
Chapter 4: Sorting and Limiting Results in SQL Server
بترم شرازگ تخاس یارب جیاتن ندرک دودحم و یزاس ،دراد تیمها رایسب یدربراک یاه
طقف دیهاوخب هک ینامز ًاصوصخم لااب نییاپ ای نیرتریداقم نیرت هداد ای دینیبب ار یارب ار اه
هحفص یدنب (Pagination) دینک تیریدم.
۴.۱ بترم اب یزاسORDER BY
روتسدORDER BY تروص هب ،نوتس دنچ ای کی ساسا رب ار جیاتن یدوعص (ASC) ای
یلوزن (DESC) یم بترمدنک.
-- هدب شیامن یدوعص تمیق ساسا رب ار اهلااک
SELECT * FROM Products
ORDER BY Price ASC;
-- نک بترم یلوزن یدوجوم ساسا رب ار اهلااک
SELECT * FROM Products
ORDER BY Stock DESC;
راعتسم مان (Alias) رد SQL Server یم هزاجا امش هبنوتس یارب دهد ،لوادج و اه
مان هاتوک یاه هداس ،رت رتاناوخ ای رت هب تیلباق نیا .دینک فیرعت شرازگ رد هژیو و یریگ
زا هدافتساJOIN تسا دیفم رایسب.
۵.۱ نوتس یارب راعتسم مان اب اهAS
زا ،)لودج راتخاس رد رییغت نودب( یجورخ رد نوتس مان رییغت یاربAS یم هدافتسا دوش.
-- ناونع اب تمیق و لااک مان شیامن یشرافس یاه
SELECT Name AS ProductName, Price AS UnitPrice
FROM Products;
یم زا دیناوتAS )دنربتعم ود ره( دیراذگب هلصاف طقف و دینکن هدافتسا:
SELECT Name ProductName, Price UnitPrice
FROM Products;
۵.۳ رد لوادج یارب راعتسم مان JOIN
یرئوک ،لوادج یارب راعتسم مان زا هدافتسا هاتوک ار اهیم رتاناوخ و رتهب ،دنک یتقو هژیو
رد لودج نیدنچJOIN یم هدافتسادوش.
-- رادقم و لااک مان شیامنهتخورف هدش
SELECT p.Name AS ProductName, si.Quantity
FROM SalesItems si
JOIN Products p ON si.ProductID = p.ProductID;
۵.۴ زا هدافتسا Alias رد Subquery
-- سرپریز راعتسم مان اب وجو
SELECT ProductName, TotalSales
FROM (
SELECT Name AS ProductName,
SUM(Quantity * UnitPrice) AS TotalSales
FROM Products p
25
دوش بیکرت لااک تاعلاطا اب تسا رتهب:
-- لااک مان ساسا رب شورف عومجم
SELECT p.Name AS ProductName, SUM(si.Quantity * si.UnitPrice) AS
TotalSales
FROM SalesItems si
JOIN Products p ON si.ProductID = p.ProductID
GROUP BY p.Name;
۷.۲ هورگ کیکفت هب شرامش اه
-- دادعتتبث یاهروتکاف یرتشم ره یارب هدش
SELECT a.Name AS CustomerName, COUNT(si.InvoiceID) AS InvoiceCount
FROM SalesInvoices sih
JOIN Accounts a ON sih.AccountID = a.AccountID
GROUP BY a.Name;
-- نآ شورف عومجم هک ییاهلااک زا شیب اه۱۰ تسا نویلیم
SELECT p.Name AS ProductName, SUM(si.Quantity * si.UnitPrice) AS
TotalSales
FROM SalesItems si
JOIN Products p ON si.ProductID = p.ProductID
GROUP BY p.Name
HAVING SUM(si.Quantity * si.UnitPrice) > 10000000;
۷.۴ توافتWHERE وHAVING
یگژیو WHERE HAVING
زا لبق ارجاGROUP BY
زا دعب ارجاGROUP BY
یم درک هدافتسا یعیمجت عباوت زا ناوت
27
یگژیو WHERE HAVING
رتلیف صوصخم فیدراه
هورگ رتلیف صوصخماه
عمج متفه لصف یدنب
موهفم دربراک
GROUP BY هتسدفیدر یدنبو ،نیگنایم ،عمج هبساحم یارب اه ...
HAVING هورگ جیاتن یور رتلیف یدنب هدش
اب بیکرتJOIN هب ...و یرتشم ،لااک مان شیامن یاربهسانش طقف یاجاه
عباوت یهورگ شرازگ رد یعیمجت یرتشم ای لااک کیکفت هب شورف لثم
یطرش راتخاس زا هدافتسا :متشه لصفCASE رد SQL Server
Chapter 8: Conditional Logic with CASE in SQL Server
راتخاسCASE رد SQL Server یم ناکما امش هب طرش ساسا رب دهد ،صخشم ییاه
دیهد شیامن یجورخ رد ار یتوافتم ریداقم. روتسد هباشم تیلباق نیاIF...ELSE رد
-- متیآ ره شورف تمیق ساسا رب تایلام شیامن
SELECT si.Quantity, si.UnitPrice,
si.Quantity * si.UnitPrice AS TotalPrice,
CASE
WHEN si.UnitPrice > 10000000 THEN N' تایلام لماش'
ELSE N' تایلام نودب'
END AS TaxStatus
FROM SalesItems si;
۸.۴ زا هدافتساCASE بترم رد اب یزاسORDER BY
-- بترمنازرا :موس ،طسوتم :مود ،نارگ :لوا بیترت هب اهلااک یزاس
SELECT Name, Price
FROM Products
ORDER BY
CASE
30
WHEN Price >= 5000000 THEN 1
WHEN Price BETWEEN 1000000 AND 4999999 THEN 2
ELSE 3 END;
۸.۵ زا هدافتساCASE ردUPDATE
-- نآ تمیق ساسا رب اهلااک یدوجوم شیازفااه
UPDATE Products
SET Stock = Stock +
CASE
WHEN Price < 1000000 THEN 10
WHEN Price BETWEEN 1000000 AND 5000000 THEN 5
ELSE 2
END;
32
عونJOIN حیضوت
INNER JOIN طقفیمرب ار لودج ود نیب کرتشم یاهدروکر دنادرگ
LEFT JOIN تسار لودج زا طبترم یاهدروکر + پچ لودج یاهدروکر همه
RIGHT JOIN پچ لودج زا طبترم یاهدروکر + تسار لودج یاهدروکر همه
FULL JOIN )کرتشمریغ و کرتشم( لودج ود ره یاهدروکر همه
CROSS JOIN نیزتراک برض– بیکرت همه یاهدروکر ود لودج اب مه
۹.۲ اب لاثمINNER JOIN
-- روتکاف متیآ ره رد نآ شورف دادعت و لااک مان شیامن
SELECT si.InvoiceID,
p.Name AS ProductName,
si.Quantity
FROM SalesItems si
INNER JOIN Products p ON si.ProductID = p.ProductID;
۹.۳ اب لاثمLEFT JOIN
-- شورف دادعت و اهلااک همه شیامن)دوجو تروص رد( ناش
SELECT p.Name,
33
si.Quantity
FROM Products p
LEFT JOIN SalesItems si ON p.ProductID = si.ProductID;
رادقم ،دشاب هدشن هتخورف نونکات ییلااک رگا ،لاثم نیا ردQuantity اب رباربNULL
دوب دهاوخ.
۹.۴ اب لاثمRIGHT JOIN
-- متیآ همه شیامن )لااک دوجو تروص رد( لااک تاعلاطا هارمه هب شورف یاه
SELECT si.InvoiceID, si.Quantity, p.Name AS ProductName
FROM SalesItems si
RIGHT JOIN Products p ON si.ProductID = p.ProductID;
۹.۵ اب لاثمFULL JOIN
-- متیآ و اهلااک همه شیامننآ یتح ،شورف یاهدنرادن طابترا هک ییاه
SELECT p.Name AS ProductName, si.Quantity
FROM Products p
FULL JOIN SalesItems si ON p.ProductID = si.ProductID;
34
-- باسح فرط همه اب اهلااک همه بیکرتهداد تخاس ای تست یارب( اه )یضرف یاه
SELECT p.Name AS ProductName, a.Name AS AccountName
FROM Products p
CROSS JOIN Accounts a;
۹.۷ مه لودج دنچ لاصتا نامز
-- شورف غلبم و ،دادعت ،لااک مان ،یرتشم مان شیامن
SELECT a.Name AS CustomerName,
p.Name AS ProductName,
si.Quantity,
si.Quantity * si.UnitPrice AS TotalPrice
FROM SalesItems si
JOIN Products p ON si.ProductID = p.ProductID
JOIN SalesInvoices sih ON si.InvoiceID = sih.InvoiceID
JOIN Accounts a ON sih.AccountID = a.AccountID;
۱۰.۴ Subquery ردFROM
-- زا رتشیب تمیق اب ییاهلااک شیامن۲ یتقوم لودج زا هدافتسا اب نویلیم
SELECT *
FROM (
SELECT Name, Price FROM Products
) AS Temp
WHERE Temp.Price > 2000000;
۱۰.۵ Subquery مه هتسب (Correlated)
-- کی لقادح هک ییاهلااک شیامن هدش هتخورف رابدنا
SELECT Name
FROM Products p
WHERE EXISTS (
SELECT 1
FROM SalesItems si
WHERE si.ProductID = p.ProductID
);
۱۰.۶ زا هدافتسا Subquery ابIN, NOT IN, EXISTS
-- چیه هک ییاهلااک شیامن هدشن هتخورف هاگدنا
SELECT Name
FROM Products
WHERE ProductID NOT IN (
SELECT ProductID FROM SalesItems
);
عمج مهد لصف یدنب
دربراک Subquery هنومن
ردSELECT یتابساحم نوتس ندوزفا
ردWHERE ساسا رب ندرک رتلیفرگید جیاتن
ردFROM یتقوم لودج نتخاس
مههتسب فیدر ره یازا هب صاخ طرش ای دوجو یسررب
ابIN, EXISTS, NOT IN جیاتن زا یتسیل اب قیبطت
۱۱.۳ کی داجیا View هداس
CREATE VIEW vw_SalesReport AS
SELECT si.InvoiceID,
p.Name AS ProductName,
si.Quantity,
si.UnitPrice,
si.Quantity * si.UnitPrice AS TotalPrice
FROM SalesItems si
JOIN Products p ON si.ProductID = p.ProductID;
۱۲.۷ هتشر لاصتا اب اه+
-- باسح فرط عون و مان لاصتا
SELECT Name + ' - ' + Type AS FullDescription
FROM Accounts;
۱۲.۸ عباتCHARINDEX() – رگید هتشر رد هتشر کی تیعقوم
-- یب" هملک تیعقوم ندرک ادیپلااک مان رد "میس
SELECT Name, CHARINDEX(N' یبمیس', Name) AS Position
FROM Products;
اب ،دعب لصف ردنامز و خیرات عباوت رد SQL Server یم انشآلیلحت رد هک میوش یاه
،ینامزشرازگ هرود یاهدنراد دربراک رایسب یخیرات دانسا تیریدم و ،یا.
رد نامز و خیرات عباوت :مهدراهچ لصف SQL Server
Chapter 14: Date and Time Functions in SQL Server
هداد هاگیاپ رد نامز تیریدممتسیس رد ًاصوصخم ؛تسا مهم رایسب اه رودص دننام ییاه
،روتکاف شرازگ ،تخادرپ دیسررسهریغ و هنلااس ای هناهام یاه. SQL Server هعومجم زا یا
اب راک یارب عباوتنامز و خیرات تسا هدرک مهارف.
۱۴.۱ عباتGETDATE() – متسیس یراج نامز و خیرات
SELECT GETDATE() AS CurrentDateTime;
۱۴.۲ عباتGETUTCDATE() – یناهج نامز و خیرات (UTC)
SELECT GETUTCDATE() AS UtcNow;
۱۴.۳ شخب جارختسا اب خیرات زا ییاهDATEPART()
-- روتکاف خیرات زا لاس جارختسا
SELECT InvoiceDate,
DATEPART(YEAR, InvoiceDate) AS Year,
DATEPART(MONTH, InvoiceDate) AS Month,
DATEPART(DAY, InvoiceDate) AS Day
FROM SalesInvoices;
۱۴.۴ بلاق اب خیرات یدنبFORMAT() (زا SQL Server 2012 دعب هب)
-- هب خیرات شیامن یشرافس تروص
SELECT FORMAT(InvoiceDate, 'yyyy/MM/dd') AS FormattedDate
FROM SalesInvoices;
غارس هب ،دعب لصف رد هتشر قیبطت و اهوگلا یوجتسجاه زا هدافتسا ابLIKE,
PATINDEX, CHARINDEX رد ینتم یوجتسج یاهرازبا رگید و SQL Server یممیور.
لصف هتشر قیبطت و اهوگلا یوجتسج :مهدزناپ رد اه SQL Server
Chapter 15: Pattern Matching in SQL Server
یم دای لصف نیا رد دننام ینتم عباوت و اهرگلمع زا هدافتسا اب روطچ میریگLIKE,
PATINDEX, CHARINDEX, هدعاقاب تارابع یتح و (رد SQL Server 2022) ، یاهوگلا
ینتم مینک لیلحت و وجتسج ار.
۱۵.۱ اب وجتسجLIKE
رگلمعLIKE یارب هتشر یور هداس یقیبطت یوجتسجاه یم هدافتسادوش.
دامن حیضوت
% هاوخلد رتکاراک دنچ ای رفص
_ هاوخلد رتکاراک کی طقف
لاثم اه:
-- پل" اب هک ییاهلااک یم عورش "پات دنوش
55
۱۵.۳ اب وجتسجPATINDEX
عباتPATINDEX هباشمCHARINDEX زا اما تسا یاهوگلاLIKE اب% و_ ینابیتشپ
یمدنک.
-- هملک نیلوا تیعقوم یم عورش "دروبیک" اب هک یا دوش
SELECT Name, PATINDEX(N'%دروبیک%', Name) AS Position
FROM Products
WHERE PATINDEX(N'%دروبیک%', Name) > 0;
56
-- فورح هب ساسح ریغ یوجتسج
SELECT * FROM Products
WHERE Name COLLATE Latin1_General_CI_AI LIKE '%usb%';
CI = Case Insensitive
AI = Accent Insensitive
هداد عون لیدبت :مهدزناش لصف رد اه SQL Server
Chapter 16: Data Type Conversion in SQL Server
رد SQL Serverمیهد رییغت رگید یعون هب ار هداد کی عون تسا مزلا یهاگ ،—for
example عباوت اب تایلمع نیا .هتشر هب ددع ای ،نتم هب خیرات ،ددع هب هتشر لیدبت ،
CAST(), CONVERT(), یهاگ وPARSE() یم ماجنادوش.
۱۶.۱ عباتCAST() – هداد عون درادناتسا لیدبت
-- ددع هب هتشر لیدبت
SELECT CAST('12345' AS INT) AS NumberValue;
-- خیرات هب هتشر لیدبت
SELECT PARSE('2025-04-13' AS DATE USING 'en-US') AS ParsedDate;
زا هدافتسا یاربPARSE() دیابUSING گنهرف نابز هارمه ار (culture) درک دراو.
۱۶.۴ ینتم ای یضایر تایلمع رد راکدوخ لیدبت
-- هب هتشر و ددع عمج یم لیدبت راکدوخ تروص دوش
SELECT 'غلبم: ' + CAST(1000000 AS VARCHAR(20)) + ' ناموت' AS PriceText;
۱۶.۵ اب هداد عون یسرربSQL_VARIANT_PROPERTY() هتفرشیپ
-- رادقم کی یعقاو هداد عون یسررب
SELECT SQL_VARIANT_PROPERTY(CAST(123.45 AS DECIMAL(10,2)),
'BaseType') AS DataType;