۱۴۰۴/۰۷/۰۳
DDL و DML در SQL Server
راهنمای کامل DDL و DML در SQL Server
SQL Server دستورات SQL را به چند دسته تقسیم میکند. مهمترین آنها:
- DDL – Data Definition Language (زبان تعریف داده)
- DML – Data Manipulation Language (زبان مدیریت داده)
- سایر دستهها مثل DCL و TCL هم هستند که بعداً توضیح کوتاه میدهم.
۱. DDL – Data Definition Language
تعریف:
- دستورات DDL برای تعریف و تغییر ساختار پایگاه داده و اشیاء داخل آن استفاده میشود.
- با DDL ما جدول، ستون، ایندکس، فانکشن، استور پروسیجر و … را میسازیم یا تغییر میدهیم.
- اجرای DDL معمولاً خودکار COMMIT میشود (یعنی تغییرات دائمی است).
۱-۱. دستورات اصلی DDL
| دستور | کاربرد | مثال |
|---|---|---|
| CREATE | ایجاد اشیاء جدید (Table, View, Function, Procedure, Index, Database) | CREATE TABLE Employees (ID INT PRIMARY KEY, Name NVARCHAR(50)) |
| ALTER | تغییر ساختار اشیاء موجود | ALTER TABLE Employees ADD Salary INT |
| DROP | حذف کامل اشیاء از دیتابیس | DROP TABLE Employees |
| TRUNCATE | حذف تمام ردیفهای جدول بدون حذف جدول و ساختار آن | TRUNCATE TABLE Employees |
| RENAME / sp_rename | تغییر نام جدول یا ستون | EXEC sp_rename 'Employees.Name', 'FullName', 'COLUMN' |
| COMMENT / sp_addextendedproperty | اضافه کردن توضیح (اختیاری) به جدول یا ستون | EXEC sp_addextendedproperty 'Description', 'Employee Name', 'SCHEMA', 'dbo', 'TABLE', 'Employees', 'COLUMN', 'Name' |
۱-۲. محدودیتها (Constraints) در DDL
Constraints محدودیتهایی هستند که روی ستونها یا جدول اعمال میشوند تا دادهها معتبر و منظم باشند:
| Constraint | توضیح | مثال |
|---|---|---|
| PRIMARY KEY | ستون(ها) را یکتا و غیر NULL میکند | ID INT PRIMARY KEY |
| FOREIGN KEY | رابطه با جدول دیگر ایجاد میکند | DeptID INT FOREIGN KEY REFERENCES Departments(ID) |
| UNIQUE | فقط مقادیر یکتا اجازه دارد | Email NVARCHAR(100) UNIQUE |
| NOT NULL | ستون نمیتواند NULL باشد | Name NVARCHAR(50) NOT NULL |
| CHECK | شرط سفارشی برای داده | Salary INT CHECK (Salary > 0) |
| DEFAULT | مقدار پیشفرض اگر داده وارد نشود | CreateDate DATETIME DEFAULT GETDATE() |
⚡ نکته: Constraints معمولا هنگام CREATE TABLE اضافه میشوند ولی میتوان بعداً با ALTER TABLE هم افزود یا حذف کرد.
۱-۳. ویژگیهای DDL
- تغییرات در ساختار جدول، ستون، یا دیتابیس انجام میدهد.
- معمولاً خودکار commit میشود (Rollback ندارد مگر با Transaction پیچیده).
- روی دیتابیس و metadata کار میکند، نه دادهها به صورت مستقیم.
۲. DML – Data Manipulation Language
تعریف:
- DML برای مدیریت دادههای داخل جداول استفاده میشود.
- عملیات DML شامل درج، حذف، تغییر، و خواندن دادهها است.
۲-۱. دستورات اصلی DML
| دستور | کاربرد | مثال |
|---|---|---|
| SELECT | خواندن دادهها | SELECT Name, Salary FROM Employees WHERE Salary > 5000 |
| INSERT | درج ردیف جدید | INSERT INTO Employees (ID, Name, Salary) VALUES (1, 'Ali', 5000) |
| UPDATE | تغییر دادههای موجود | UPDATE Employees SET Salary = 6000 WHERE ID = 1 |
| DELETE | حذف ردیفها | DELETE FROM Employees WHERE ID = 1 |
| MERGE | ادغام دادهها (INSERT, UPDATE, DELETE همزمان) | MERGE INTO Target t USING Source s ON t.ID = s.ID WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ... |
۲-۲. ویژگیها و محدودیتهای DML
- دادههای جدول را خوانده یا تغییر میدهد.
- میتوان با WHERE مشخص کرد کدام ردیفها تغییر کنند.
- میتوان Transaction روی آنها استفاده کرد تا قابلیت Rollback داشته باشند:
BEGIN TRANSACTION
UPDATE Employees SET Salary = Salary + 500
WHERE DeptID = 2;
-- اگر مشکلی بود
ROLLBACK;
-- اگر درست بود
COMMIT;
- تفاوت با DDL: DML روی دادههاست، DDL روی ساختار جداول و اشیاء.
۲-۳. نکات مهم DML
- INSERT، UPDATE و DELETE → تغییر دادهها
- SELECT → فقط خواندن دادهها
- MERGE → ترکیبی از عملیات تغییر دادهها
- میتوان با JOIN یا Subquery دادهها را دستکاری کرد.
۳. دستهبندیهای دیگر SQL (مختصر)
| دسته | کاربرد | مثال |
|---|---|---|
| DCL (Data Control Language) | کنترل دسترسی کاربران | GRANT, REVOKE |
| TCL (Transaction Control Language) | کنترل تراکنشها | COMMIT, ROLLBACK, SAVEPOINT |
۴. جدول مقایسه DDL و DML
| ویژگی | DDL | DML |
|---|---|---|
| هدف | تعریف و تغییر ساختار | مدیریت دادهها |
| دستورات اصلی | CREATE, ALTER, DROP, TRUNCATE | SELECT, INSERT, UPDATE, DELETE, MERGE |
| تغییرات دائمی؟ | بله (commit خودکار) | بله، ولی با Transaction میتوان rollback کرد |
| روی داده یا ساختار؟ | ساختار | دادهها |
| استفاده در SELECT؟ | خیر | بله (SELECT) |
💡 خلاصه حفظ کردنی :
- DDL = ساختار → CREATE / ALTER / DROP / TRUNCATE / Constraints
- DML = داده → SELECT / INSERT / UPDATE / DELETE / MERGE
- Constraints مهم: PK, FK, UNIQUE, NOT NULL, CHECK, DEFAULT
- Index با CREATE INDEX ساخته میشود
- Transactions برای امنیت تغییر دادهها در DML استفاده میشوند
Accept Cookies
[your-shortcode]