آموزش T-SQL برای مبتدیان

Tsql مبتدی
parsakarimidev.ir

آموزش T-SQL برای مبتدیان

Tsqlزبان برنامه‌نویسی سطح: مبتدی 1405/07/03

آموزش T-SQL برای مبتدیان

⚡ خلاصه سریع — اصل کاری‌ها

این‌ها مهم‌ترین چیزهایی هستن که اگه هیچی ندونی، فقط اینا رو بدونی کافیه:

  • نکته ۱: T-SQL زبان مایکروسافت برای کار با SQL Server است.
  • نکته ۲: SELECT برای خواندن، INSERT برای اضافه‌کردن، UPDATE برای تغییر و DELETE برای حذف داده است.
  • نکته ۳: هر جدول باید یک کلید اصلی (Primary Key) داشته باشد تا هر سطر یکتا باشد.
  • نکته ۴: شرط‌ها را با WHERE دقیق کن و برای مرتب‌سازی از ORDER BY استفاده کن.
  • نکته ۵: NULL یعنی «مقدار نامشخص» و با = مقایسه نمی‌شود؛ باید از IS NULL استفاده کنی.
  • نکته ۶: JOIN برای ترکیب اطلاعات چند جدول است و INNER JOIN فقط رکوردهای مشترک را برمی‌گرداند.
  • نکته ۷: توابع جمعی مثل COUNT، SUM و AVG همراه GROUP BY خلاصه‌سازی می‌کنند.
  • نکته ۸: قبل از UPDATE یا DELETE همیشه اول با SELECT همان شرط را تست کن.

۳ اشتباه رایج که باید ازشون پرهیز کنی:

  1. فراموش‌کردن WHERE در UPDATE یا DELETE و تغییر کل جدول.
  2. مقایسه NULL با = به‌جای IS NULL.
  3. استفاده از SELECT * در برنامه واقعی به‌جای ستون‌های مشخص.

اگر فقط ۵ دقیقه وقت داری، این‌ها رو یاد بگیر:

  1. دستور SELECT با WHERE — پایه خواندن داده.
  2. INSERT INTO ... VALUES — اضافه‌کردن رکورد.
  3. ساخت جدول با CREATE TABLE و تعیین PRIMARY KEY.

۱. مقدمه

T-SQL چیست؟

T-SQL مخفف Transact-SQL است. این زبان، نسخهٔ توسعه‌یافته‌ای از SQL است که مایکروسافت برای کار با SQL Server و Azure SQL Database ساخته است. با T-SQL می‌توانی:

  • داده بخوانی
  • داده اضافه کنی
  • داده تغییر بدهی
  • داده حذف کنی
  • جدول و پایگاه داده بسازی
  • گزارش‌های ترکیبی و آماری بگیری

چرا باید T-SQL یاد بگیری؟

  • SQL Server یکی از پراستفاده‌ترین پایگاه‌های داده در دنیاست.
  • بسیاری از برنامه‌های سازمانی و وب‌سایت‌ها از SQL Server استفاده می‌کنند.
  • یادگیری T-SQL اولین قدم برای کار به‌عنوان توسعه‌دهنده بک‌اند، تحلیل‌گر داده یا مدیر پایگاه داده است.
  • مفاهیم اصلی SQL تقریباً در همه پایگاه‌های داده مشترک است.

کجا استفاده می‌شود؟

  • نرم‌افزارهای مالی، فروشگاهی، بانکی و سازمانی
  • گزارش‌گیری و تحلیل داده
  • ساخت API و برنامه‌های تحت وب
  • نگهداری و مدیریت داده‌های بزرگ

۲. پیش‌نیازها

قبل از شروع، لازم نیست چیز زیادی بدانی. کافی است:

  • با فایل‌ها و پوشه‌ها در کامپیوتر آشنا باشی.
  • مفهوم جدول را در حد یک جدول Excel بدانی: سطر و ستون.
  • علاقه به یادگیری و کمی دقت در نوشتن دستورها داشته باشی.

ابزارهای لازم

برای شروع به این دو ابزار نیاز داری:

ابزار کاربرد
SQL Server موتور اصلی پایگاه داده
SQL Server Management Studio (SSMS) محیط گرافیکی برای نوشتن و اجرای T-SQL

اگر از مک یا لینوکس استفاده می‌کنی، می‌توانی از Docker و Azure Data Studio استفاده کنی.

۳. نصب و راه‌اندازی

گام ۱: دانلود و نصب SQL Server

  1. به سایت مایکروسافت برو و SQL Server 2022 Developer Edition را دانلود کن. این نسخه رایگان است.
  2. فایل نصب را اجرا کن.
  3. گزینه Basic را انتخاب کن تا نصب ساده‌تر انجام شود.
  4. محل نصب را مشخص کن و منتظر بمان تا نصب تمام شود.
  5. بعد از نصب، نام نمونه (Instance Name) معمولاً MSSQLSERVER یا SQLEXPRESS است. این را به خاطر بسپار.

گام ۲: دانلود و نصب SSMS

  1. از سایت مایکروسافت SQL Server Management Studio (SSMS) را دانلود کن.
  2. فایل نصب را اجرا و مراحل سادهٔ آن را طی کن.
  3. بعد از نصب، SSMS را باز کن.

گام ۳: اولین اتصال

  1. در پنجرهٔ بازشده، Server name را یکی از این مقادیر بگذار:
    • localhost
    • .
    • (local)
  2. Authentication را روی Windows Authentication بگذار.
  3. روی Connect بزن.

اگر صفحهٔ Object Explorer باز شد، یعنی اتصال برقرار است.

اولین پروژه: ساخت پایگاه داده

در SSMS یک پنجرهٔ New Query باز کن و این کد را اجرا کن:

CREATE DATABASE MyFirstDB;
GO

USE MyFirstDB;
GO
  • CREATE DATABASE یک پایگاه داده می‌سازد.
  • USE می‌گوید از این به بعد دستورها روی این پایگاه داده اجرا شوند.
  • GO یک جداکنندهٔ دسته است که در SSMS استفاده می‌شود.

۴. مفاهیم پایه

پایگاه داده (Database)

محفظه‌ای بزرگ که همه جدول‌ها، داده‌ها و اشیای مرتبط را نگه می‌دارد.

CREATE DATABASE ShopDB;

جدول (Table)

جدول از سطر و ستون تشکیل شده است. هر ستون یک نوع داده مشخص دارد.

CREATE TABLE Customers (
    CustomerId INT PRIMARY KEY,
    Name NVARCHAR(50),
    City NVARCHAR(50)
);
  • CustomerId ستون عددی و کلید اصلی است.
  • Name و City متن هستند.
  • NVARCHAR(50) یعنی متن حداکثر ۵۰ حرف.

انواع داده پرکاربرد

نوع داده کاربرد
INT عدد صحیح
DECIMAL(10,2) عدد اعشاری
VARCHAR(n) متن با طول متغیر
NVARCHAR(n) متن یونیکد (مناسب فارسی)
DATE تاریخ
DATETIME تاریخ و زمان
BIT ۰ یا ۱

کلید اصلی (Primary Key)

کلید اصلی تضمین می‌کند که هر سطر در جدول یکتا باشد.

CREATE TABLE Products (
    ProductId INT PRIMARY KEY,
    ProductName NVARCHAR(100) NOT NULL
);

NULL چیست؟

NULL یعنی «مقدار نامشخص» یا «خالی». برای مقایسه با NULL باید از IS NULL یا IS NOT NULL استفاده کنی.

SELECT * FROM Customers WHERE City IS NULL;

۵. مثال‌های کد ساده

مثال ۱: خواندن داده با SELECT

SELECT 1 AS Result;

این ساده‌ترین دستور است و عدد ۱ را برمی‌گرداند.

SELECT Name, City FROM Customers;

فقط ستون‌های Name و City را از جدول می‌خواند.

مثال ۲: فیلتر با WHERE

SELECT Name, City
FROM Customers
WHERE City = 'Tehran';

فقط مشتری‌های تهران را برمی‌گرداند.

مثال ۳: مرتب‌سازی با ORDER BY

SELECT Name, City
FROM Customers
ORDER BY Name ASC;

نتیجه را بر اساس نام، صعودی مرتب می‌کند.

مثال ۴: اضافه‌کردن رکورد با INSERT

INSERT INTO Customers (CustomerId, Name, City)
VALUES (1, 'Ali', 'Tehran');

یک مشتری جدید اضافه می‌کند.

مثال ۵: تغییر داده با UPDATE

UPDATE Customers
SET City = 'Shiraz'
WHERE CustomerId = 1;

فقط شهر مشتری شماره ۱ را تغییر می‌دهد.

مثال ۶: حذف داده با DELETE

DELETE FROM Customers
WHERE CustomerId = 1;

فقط رکورد شماره ۱ را حذف می‌کند.

مثال ۷: ترکیب دو جدول با JOIN

SELECT Customers.Name, Orders.TotalAmount
FROM Customers
INNER JOIN Orders ON Customers.CustomerId = Orders.CustomerId;

اطلاعات مشتری و سفارش‌های او را با هم نشان می‌دهد.

۶. مثال واقعی و کاربردی

یک فروشگاه کوچک را در نظر بگیر. می‌خواهیم مشتری‌ها و سفارش‌هایشان را نگهداری کنیم.

گام ۱: ساخت جدول‌ها

CREATE TABLE Customers (
    CustomerId INT IDENTITY(1,1) PRIMARY KEY,
    Name NVARCHAR(50) NOT NULL,
    City NVARCHAR(50)
);

CREATE TABLE Orders (
    OrderId INT IDENTITY(1,1) PRIMARY KEY,
    CustomerId INT NOT NULL,
    OrderDate DATE NOT NULL,
    TotalAmount DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)
);
  • IDENTITY(1,1) یعنی شماره از ۱ شروع شود و هر رکورد یکی اضافه شود.
  • FOREIGN KEY تضمین می‌کند که هر سفارش متعلق به یک مشتری معتبر است.

گام ۲: اضافه‌کردن داده نمونه

INSERT INTO Customers (Name, City)
VALUES ('Ali', 'Tehran'),
       ('Sara', 'Isfahan'),
       ('Reza', 'Tehran');

INSERT INTO Orders (CustomerId, OrderDate, TotalAmount)
VALUES (1, '2025-01-10', 250.00),
       (1, '2025-02-05', 120.50),
       (2, '2025-01-20', 80.00);

گام ۳: گزارش مشتری‌ها و سفارش‌ها

SELECT c.Name, c.City, o.OrderDate, o.TotalAmount
FROM Customers c
INNER JOIN Orders o ON c.CustomerId = o.CustomerId
ORDER BY o.TotalAmount DESC;

حرف c و o یک نام مستعار کوتاه برای جدول‌هاست.

گام ۴: جمع کل خرید هر مشتری

SELECT c.Name, SUM(o.TotalAmount) AS TotalSpent
FROM Customers c
LEFT JOIN Orders o ON c.CustomerId = o.CustomerId
GROUP BY c.Name;

LEFT JOIN باعث می‌شود مشتری‌هایی که سفارش ندارند هم نمایش داده شوند.

۷. مباحث پیشرفته

JOINهای مختلف

  • INNER JOIN: فقط رکوردهای مشترک دو جدول.
  • LEFT JOIN: همه رکوردهای جدول چپ + رکوردهای مشترک جدول راست.
  • RIGHT JOIN: همه رکوردهای جدول راست + رکوردهای مشترک جدول چپ.
SELECT c.Name, o.OrderId
FROM Customers c
LEFT JOIN Orders o ON c.CustomerId = o.CustomerId;

GROUP BY و HAVING

برای خلاصه‌سازی داده:

SELECT City, COUNT(*) AS CustomerCount
FROM Customers
GROUP BY City
HAVING COUNT(*) > 1;

HAVING برای فیلتر روی نتیجهٔ جمع‌بندی‌شده است.

View

یک نمای ذخیره‌شده از یک کوئری:

CREATE VIEW vw_CustomerOrders AS
SELECT c.Name, o.OrderDate, o.TotalAmount
FROM Customers c
INNER JOIN Orders o ON c.CustomerId = o.CustomerId;

بعد می‌توانی ساده بنویسی:

SELECT * FROM vw_CustomerOrders;

Index

ایندکس باعث سریع‌تر شدن جست‌وجو می‌شود:

CREATE INDEX IX_Orders_CustomerId ON Orders(CustomerId);

Transaction

چند دستور را با هم اجرا می‌کند؛ یا همه موفق شوند یا هیچ‌کدام:

BEGIN TRANSACTION;

UPDATE Accounts SET Balance = Balance - 100 WHERE AccountId = 1;
UPDATE Accounts SET Balance = Balance + 100 WHERE AccountId = 2;

COMMIT;

اگر خطایی رخ بدهد، می‌توانی بنویسی ROLLBACK; تا همه تغییرات برگردد.

۸. اشتباهات رایج

۱. فراموش‌کردن WHERE در UPDATE یا DELETE

-- اشتباه: همه رکوردها تغییر می‌کنند
UPDATE Customers SET City = 'Tehran';

همیشه اول با SELECT همان شرط را تست کن:

SELECT * FROM Customers WHERE CustomerId = 1;
-- بعد
UPDATE Customers SET City = 'Tehran' WHERE CustomerId = 1;

۲. مقایسه NULL با =

-- اشتباه
SELECT * FROM Customers WHERE City = NULL;

-- درست
SELECT * FROM Customers WHERE City IS NULL;

۳. استفاده از SELECT * در برنامه واقعی

-- غیربهینه
SELECT * FROM Customers;

-- بهتر
SELECT CustomerId, Name, City FROM Customers;

۴. فراموش‌کردن کلید اصلی

جدول بدون کلید اصلی خیلی زود به داده تکراری یا کندی می‌رسد. همیشه PRIMARY KEY تعریف کن.

۵. استفاده از نام ستون‌های رزروشده بدون کروشه

مثلاً کلمه Order رزروشده است. اگر مجبور شدی از [Order] استفاده کن.

۹. بهترین روش‌ها (Best Practices)

  • ستون‌ها را صریح بنویس: به‌جای SELECT *، فقط ستون‌های لازم را بیاور.
  • از CONSTRAINT استفاده کن: PRIMARY KEY، FOREIGN KEY، NOT NULL و UNIQUE داده را تمیز نگه می‌دارند.
  • برای جست‌وجو ایندکس بساز: روی ستون‌هایی که زیاد در WHERE یا JOIN می‌آیند.
  • از Transaction برای عملیات چندمرحله‌ای استفاده کن: مثل انتقال پول بین حساب‌ها.
  • دستورها را خوانات بنویس: با حروف بزرگ برای کلمات کلیدی و خط‌شکستن مناسب.
  • کد را کامنت بگذار: برای کارهای پیچیده توضیح کوتاه بنویس.
  • در برنامه از پارامتر استفاده کن: از چسباندن مستقیم مقدار در رشته SQL پرهیز کن تا از SQL Injection جلوگیری شود.

۱۰. منابع و ادامه مسیر

منابع آنلاین

  • Microsoft Learn: مسیر رایگان «Get started with Transact-SQL»
  • SQL Server Central: مقاله‌ها و آموزش‌های کاربردی
  • Stack Overflow: پرسش و پاسخ خطاها
  • SQLZoo و LeetCode Database: تمرین تعاملی SQL

کتاب پیشنهادی

  • T-SQL Fundamentals نوشته Itzik Ben-Gan
    این کتاب یکی از بهترین کتاب‌ها برای یادگیری عمیق T-SQL است.

مسیر پیشنهادی بعد از این آموزش

  1. تمرین بیشتر JOIN و GROUP BY
  2. یادگیری Subquery و Common Table Expression (CTE)
  3. آشنایی با Stored Procedure و Function
  4. کار با Index و تحلیل Execution Plan
  5. طراحی پایگاه داده و نرمال‌سازی

مهم‌ترین قدم بعد از خواندن این آموزش این است که خودت مثال‌ها را اجرا کنی و کمی تغییر بدهی. تمرین، بهترین معلم T-SQL است.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.