So sánh giữa DDL và DML
Chào mừng các bạn đến với “Tôi đi tét dạo” – nơi mà chúng ta tét mọi thứ từ A đến Z trong thế giới SQL. Hôm nay, chúng ta sẽ khám phá hai thuật ngữ quan trọng nhưng dễ bị lẫn lộn: DDL và DML. Nếu bạn mới bước chân vào thế giới SQL, đừng lo! Bài viết này sẽ giúp bạn hiểu rõ sự khác biệt và ứng dụng của DDL và DML với một phong cách vui vẻ nhưng vẫn đầy kiến thức sâu rộng.
Sẵn sàng chưa? Bắt đầu thôi nào!
DDL là gì?
DDL (Data Definition Language) là ngôn ngữ định nghĩa dữ liệu. Nó được sử dụng để tạo, chỉnh sửa cấu trúc của cơ sở dữ liệu và các thành phần bên trong như bảng, chỉ mục (index), schema,…
Khi bạn dùng các lệnh DDL, bạn đang thay đổi cách dữ liệu được lưu trữ và tổ chức, chứ không phải thay đổi bản thân dữ liệu. Hãy tưởng tượng bạn là kiến trúc sư xây dựng ngôi nhà (cấu trúc database), và DDL chính là bộ công cụ giúp bạn thiết kế ngôi nhà đó.
Các lệnh DDL phổ biến
- CREATE: Tạo ra các đối tượng trong database như bảng, chỉ mục, schema.
Ví dụ:sqlCopy codeCREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(100), Age INT );
- ALTER: Thay đổi cấu trúc của bảng, chẳng hạn như thêm cột, xóa cột, hoặc thay đổi kiểu dữ liệu.sqlCopy code
ALTER TABLE Students ADD COLUMN Gender VARCHAR(10);
- DROP: Xóa hoàn toàn một đối tượng trong database như bảng hoặc chỉ mục.sqlCopy code
DROP TABLE Students;
- TRUNCATE: Xóa tất cả các bản ghi trong bảng nhưng không ảnh hưởng đến cấu trúc bảng.sqlCopy code
TRUNCATE TABLE Students;
Lưu ý nhỏ: Hãy cẩn thận với lệnh DROP
và TRUNCATE
, vì chúng không thể khôi phục dữ liệu sau khi thực hiện. Nếu bạn thấy nhấp nháy chuột tay run run khi bấm Enter thì đó là điều hoàn toàn bình thường!
DML là gì?
Trong khi DDL lo về mặt “kiến trúc” của cơ sở dữ liệu, DML (Data Manipulation Language) lại tập trung vào việc thao tác với dữ liệu bên trong các bảng. Đây là nơi chúng ta thêm, sửa, xóa dữ liệu – kiểu như việc bạn thêm đồ đạc vào ngôi nhà sau khi xây xong.
Các lệnh DML phổ biến
- SELECT: Truy vấn dữ liệu từ bảng. Đây có lẽ là lệnh bạn sẽ sử dụng nhiều nhất.sqlCopy code
SELECT * FROM Students;
- INSERT: Thêm dữ liệu mới vào bảng.sqlCopy code
INSERT INTO Students (StudentID, Name, Age) VALUES (1, 'John', 20);
- UPDATE: Cập nhật dữ liệu đã có trong bảng.sqlCopy code
UPDATE Students SET Age = 21 WHERE StudentID = 1;
- DELETE: Xóa dữ liệu từ bảng nhưng không xóa cấu trúc bảng.sqlCopy code
DELETE FROM Students WHERE StudentID = 1;
DML là cách mà bạn tương tác với dữ liệu thực tế trong bảng, thêm sinh viên mới, cập nhật thông tin của họ, hoặc xóa họ ra khỏi hệ thống. Một điều thú vị là khi bạn sử dụng các lệnh DML, dữ liệu vẫn có thể được khôi phục lại (với điều kiện sử dụng lệnh ROLLBACK
) nếu bạn chưa commit thay đổi.
So sánh giữa DDL và DML
Đặc điểm | DDL | DML |
---|---|---|
Chức năng | Định nghĩa và quản lý cấu trúc dữ liệu | Thao tác và quản lý dữ liệu trong bảng |
Lệnh phổ biến | CREATE, ALTER, DROP, TRUNCATE | SELECT, INSERT, UPDATE, DELETE |
Ảnh hưởng | Thay đổi cấu trúc của database | Thay đổi dữ liệu bên trong bảng |
Khôi phục | Không thể khôi phục | Có thể khôi phục nếu chưa commit |
Khi nào nên dùng DDL và DML?
Một câu hỏi thú vị đúng không nào? Thực ra, hai nhóm lệnh này không phải đối lập nhau mà bổ trợ nhau. Khi bạn thiết kế cơ sở dữ liệu mới, việc dùng DDL là không thể tránh khỏi. Sau khi cơ sở dữ liệu đã sẵn sàng, bạn sẽ dùng DML hàng ngày để truy vấn và thao tác với dữ liệu.
Tình huống thực tế
Giả sử bạn đang xây dựng một hệ thống quản lý sinh viên. Bạn sẽ:
- Sử dụng DDL để tạo bảng sinh viên, định nghĩa các cột như
StudentID
,Name
, vàAge
. - Sử dụng DML để thêm sinh viên mới vào bảng, cập nhật thông tin sinh viên, xóa những sinh viên đã tốt nghiệp, và truy vấn thông tin của sinh viên.
Hãy thử tưởng tượng nếu bạn chỉ có DDL mà không có DML – mọi thứ chỉ là những cái vỏ rỗng! Và ngược lại, nếu chỉ có DML mà không có DDL, bạn sẽ không có nơi để lưu dữ liệu!
Tổng kết
Trong bài viết này, chúng ta đã phân biệt rõ ràng giữa DDL và DML – hai khái niệm cơ bản nhưng cực kỳ quan trọng trong SQL. DDL giúp bạn thiết kế cấu trúc cơ sở dữ liệu, trong khi DML giúp bạn thao tác với dữ liệu thực tế. Hiểu rõ sự khác biệt này sẽ giúp bạn tối ưu hóa công việc với SQL, từ thiết kế cho đến quản lý dữ liệu.
Nếu bạn có câu hỏi hoặc thắc mắc nào, đừng ngại để lại bình luận phía dưới. Và nhớ đón chờ các bài viết tiếp theo trong loạt bài về SQL tại “Tôi đi tét dạo” nhé!