Chuyển đến nội dung chính

Các lệnh SQL DDL: Hướng dẫn toàn diện

Tìm hiểu về các lệnh SQL DDL và cách chúng giúp xác định, quản lý cấu trúc của các đối tượng trong cơ sở dữ liệu.
Đã cập nhật 5 thg 10, 2026  · 11 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

SQL rất cần thiết với các nhà khoa học dữ liệu và kỹ sư dữ liệu để truy xuất thông tin từ cơ sở dữ liệu. Một cơ sở dữ liệu gồm nhiều bảng và có nhiều “phiên bản” SQL khác nhau, từ PostgreSQL đến Snowflake.

Các lệnh Ngôn ngữ Định nghĩa Dữ liệu (DDL) trong SQL được dùng để xác định và quản lý cấu trúc của các đối tượng cơ sở dữ liệu. Trong bài viết này, tôi sẽ giải thích các lệnh DDL trong SQL kèm ví dụ với một Cơ sở dữ liệu Phim. Hãy bắt đầu nhé!

Các lệnh DDL trong SQL là gì?

Các lệnh Ngôn ngữ Định nghĩa Dữ liệu (DDL) cho phép tôi xác định và quản lý một schema trong SQL. Tóm lại, một schema trong SQL là bản thiết kế xác định cách dữ liệu được tổ chức trong cơ sở dữ liệu và cách quản lý các mối quan hệ giữa các bảng trong cơ sở dữ liệu.

Các lệnh DDL gồm nhiều lệnh với các chức năng khác nhau, mà tôi sẽ lần lượt trình bày theo thứ tự sau:

Lệnh DDL

MÔ TẢ

CÚ PHÁP

CREATE

Tạo một bảng và các cột của nó cùng kiểu dữ liệu tương ứng.

CREATE TABLE

ALTER

Sửa tên cột và thêm hoặc xóa cột.

ALTER TABLE

RENAME

Đổi tên bảng.

RENAME TABLE

COMMENT

Thêm giải thích vào mã SQL để các thành viên khác trong nhóm xem xét.

--

/* …

…*/

TRUNCATE

Xóa dữ liệu khỏi bảng mà không xóa bảng.

TRUNCATE TABLE

DROP

Xóa bảng cùng toàn bộ dữ liệu của nó.

DROP TABLE

Các lệnh DDL trong SQL kèm ví dụ

Giờ chúng ta đã hiểu cơ bản về các lệnh DDL và mục đích của chúng, hãy xem một vài ví dụ thực tế với cơ sở dữ liệu Phim.

Lệnh CREATE trong SQL

Khi tôi cần tạo một bảng mới, tôi dùng lệnh CREATE TABLE như sau:

CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    ...,
    column_n datatype
);

Trong ví dụ trên, tôi định nghĩa các cột với những kiểu dữ liệu khác nhau. SQL hỗ trợ nhiều kiểu dữ liệu, nhưng phổ biến nhất thường là STRING (văn bản), INT (số nguyên), FLOAT (số thập phân) và DATE (ngày).

Ví dụ, nếu tôi muốn tạo bảng actor, tôi dùng CREATE TABLE như sau:

CREATE TABLE actor (
    actor_id String(32767),
    first_name String(32767),
    last_name String(32767),
    last_update String(32767)
);

Trong đó:

  • actor là tên bảng
  • actor_id là tên cột có nội dung dự kiến ở dạng văn bản (String) và không vượt quá 32767 ký tự.
  • first_name là tên cột có nội dung dự kiến ở dạng văn bản (String) và không vượt quá 32767 ký tự.
  • last_name là tên cột có nội dung dự kiến ở dạng văn bản (String) và không vượt quá 32767 ký tự.
  • last_update là tên cột có nội dung dự kiến ở dạng văn bản (String) và không vượt quá 32767 ký tự.

Sau khi tôi thực thi truy vấn, bảng mới sẽ hiển thị cùng các bảng khác, và tôi có thể truy vấn từ đó bất cứ lúc nào.

Lệnh ALTER trong SQL

Dùng ALTER trong SQL, tôi có thể cập nhật một bảng mà không cần tạo bảng khác rồi xóa bảng cũ. Các tổ chức có thể sở hữu hàng nghìn bảng, nên biết cách giữ dữ liệu luôn cập nhật mà không làm mất dữ liệu là điều thiết yếu.

Lưu ý rằng có nhiều cách dùng ALTER, bao gồm:

  • Thêm cột mới vào bảng
  • Đổi tên cột trong bảng
  • Chỉnh sửa cột trong bảng
  • Xóa cột trong bảng

Lệnh ADD trong ALTER

Để thêm cột mới bằng ALTER, chúng ta kết hợp lệnh ALTER với ADD, như dưới đây:

ALTER TABLE table_name ADD column_name datatype;

Ở đây, chúng ta thêm cột mới nationality với kiểu dữ liệu STRING vào bảng actor.

ALTER TABLE actor ADD nationality String(32767);

Tất cả các lệnh ALTER trong SQL đều có cấu trúc tương tự, khiến SQL trở thành một ngôn ngữ lập trình tự nhiên để học và thành thạo.

Lệnh RENAME trong ALTER

Bất cứ khi nào tôi cần đổi tên cột, tôi dùng lệnh RENAME trong ALTER như sau:

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

Ví dụ, hãy đổi tên cột last_name thành family_name để tránh nhầm lẫn đó là tên đệm hay họ. Khi đó, tôi sẽ chạy truy vấn sau:

ALTER TABLE actor RENAME COLUMN last_name TO family_name;

Lệnh MODIFY trong ALTER

Kiểu dữ liệu xác định thuộc tính của cột và ảnh hưởng đến chất lượng dữ liệu. Chẳng hạn, last_update được đặt là String(text), nhưng dữ liệu rõ ràng thể hiện ngày và giờ.

Xem xét các kiểu dữ liệu khác nhau và đối chiếu với dữ liệu trong cột, kiểu dữ liệu phù hợp là TIMESTAMP.

Cập nhật đúng kiểu dữ liệu cho cột sẽ giúp tổng hợp và lọc dữ liệu theo ngày bằng các lệnh SQL khác. Đây là cách chúng ta dùng MODIFY trong SQL:

ALTER TABLE table_name ALTER COLUMN column_name datatype;

Áp dụng vào cột last_update như trên, tôi dùng truy vấn sau:

ALTER TABLE actor ALTER COLUMN last_update TIMESTAMP;

Lệnh DROP trong ALTER

Tùy chọn cuối cùng mà ALTER cung cấp là xóa một cột. Có rất nhiều lý do để tôi cần DROP một cột, bao gồm nhưng không giới hạn ở:

  • Thông tin không còn phù hợp,
  • Thông tin trùng lặp, cùng cột đó đã có ở bảng khác,
  • Vấn đề chất lượng dữ liệu,
  • Tối ưu hóa không gian lưu trữ.

Xóa cột trong SQL rất dễ, nhưng hãy thận trọng vì không phải lúc nào cũng có thể hoàn tác thao tác xóa cột.

ALTER TABLE table_name DROP COLUMN column_name;

Lệnh xóa cột tương tự với đổi tên cột, nhưng hai việc này không giống nhau. Đổi tên cột giữ nguyên dữ liệu trong cột nhưng thay đổi tiêu đề. Ngược lại, lệnh DROP xóa cả dữ liệu và tiêu đề, như thể cột đó chưa từng tồn tại.

Sau khi nhận ra cột last_update hầu như chỉ cho biết cơ sở dữ liệu được làm mới hay không, tôi quyết định xóa nó bằng truy vấn sau:

ALTER TABLE actor DROP COLUMN last_update; 

Lệnh RENAME trong SQL

Lệnh RENAME chỉ áp dụng để đổi tên bảng và không nên nhầm với khả năng RENAME của ALTER. Thực tế, để đổi tên một bảng, truy vấn đơn giản là:

RENAME TABLE old_table_name TO new_table_name;

Bảng actor chỉ chứa tên và không có thông tin khác về diễn viên. Vì vậy, hợp lý là làm rõ điều này bằng cách đổi tên bảng thành:

RENAME TABLE actor TO actor_names;

COMMENT trong SQL

Việc viết chú thích trong SQL rất quan trọng để rõ ràng và có ngữ cảnh, giúp truy vấn dễ hiểu và dễ bảo trì hơn. Nó giúp giải thích logic phức tạp, ghi lại thay đổi và lý giải một số lựa chọn. Trong SQL, bạn có thể thêm chú thích theo hai cách:

  • Chú thích một dòng
  • Chú thích nhiều dòng

Hãy xem chúng hoạt động thế nào.

Chú thích một dòng trong SQL

Chú thích một dòng thường được viết ngay cạnh mã, như dưới đây. Nhờ vậy, tôi có thể đọc bình luận của đồng nghiệp khi đọc mã.

Trong bảng actor, actor_id và last_update không trực quan và cần làm rõ bằng chú thích.

CREATE TABLE actor (
 actor_id String(32767), --unique identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

Chú thích trong SQL là một lệnh khác so với những lệnh còn lại trong bài vì nó không gọi hàm COMMENT. Hai dấu gạch ngang liền nhau ‘--’ biểu thị bắt đầu của chú thích. Bất cứ nội dung nào sau đó sẽ không được tính là một phần của mã.

Chú thích nhiều dòng trong SQL

Khi phần giải thích dài hơn, hãy dùng chú thích nhiều dòng. Cách này phù hợp để giải thích một hàm hoặc cung cấp ngữ cảnh chi tiết. Để thêm chú thích nhiều dòng trong SQL, bắt đầu bằng /* và kết thúc bằng */. Bộ máy SQL sẽ bỏ qua mọi thứ nằm giữa /* và */ và không thực thi chúng như một phần của truy vấn.

/* Create a table `actor` with the actors’ names. Store first and last name, and keep track of any updates*/
CREATE TABLE actor (
 actor_id String(32767), --unique internal identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

Lệnh TRUNCATE trong SQL

Cắt gọn (truncating) một bảng không giống xóa bảng. Truncating xóa toàn bộ dữ liệu nhưng giữ nguyên cấu trúc bảng, trong khi xóa sẽ loại bỏ cả bảng lẫn cấu trúc của nó. Cần thận trọng để chọn đúng lệnh phù hợp với mục đích.

Tương đương với TRUNCATE trong Excel là chọn toàn bộ dữ liệu dưới tên cột rồi nhấn delete. Trong SQL, tôi viết:

TRUNCATE TABLE table_name;

Nếu cần cắt gọn bảng actor, tôi thực thi:

TRUNCATE TABLE actor;

Kết quả sẽ là một bảng chỉ còn tên cột mà không có giá trị nào.

Lệnh DROP trong SQL

Trái với TRUNCATE, lệnh DDL DROP xóa hẳn bảng và toàn bộ giá trị của nó. Cần cẩn trọng khi thực thi các lệnh như vậy, vì hành động này không phải lúc nào cũng có thể đảo ngược. Lệnh DROP có cấu trúc tương tự truy vấn TRUNCATE:

DROP TABLE table_name;

Vì vậy, xóa bảng actor đơn giản như

DROP TABLE actor;

Mặc dù các “phiên bản” SQL khác nhau có thể yêu cầu thay đổi nhẹ về cú pháp, các lệnh DDL ở trên phần lớn là giống nhau bất kể bạn dùng phiên bản SQL nào.

So sánh lệnh DDL với các loại lệnh khác

Ở phần trước, tôi đã giải thích cách các lệnh DDL xác định cấu trúc bảng và cập nhật nội dung hoặc thuộc tính của chúng khi cần. Các loại lệnh SQL khác cho phép chọn, tổng hợp, cập nhật và thậm chí nối bảng để có góc nhìn khác về dữ liệu, và mỗi nhóm lệnh có một mục đích cụ thể.

Lệnh

Định nghĩa

Mục đích

DQL

Data Query Language

Lấy dữ liệu từ cơ sở dữ liệu dựa trên tiêu chí

DML

Data Manipulation Language

Thao tác các bảng trong cơ sở dữ liệu với nhiều chức năng hơn ALTER.

DCL

Data Control Language

Kiểm soát quyền truy cập và thẩm quyền.

TCL

Transaction Control Language

Cập nhật cơ sở dữ liệu với các thay đổi đã chỉnh bằng lệnh DML

Xây dựng kỹ năng SQL với DataCamp

Chất lượng dữ liệu tốt đạt được khi dữ liệu được định nghĩa rõ ràng và có cấu trúc. Các lệnh DDL trong SQL giúp chuyên gia dữ liệu xây dựng và duy trì cơ sở dữ liệu có cấu trúc. Các lệnh SQL khác, như lệnh DML, cho phép bạn xem, tổng hợp, chèn, lọc và hợp nhất dữ liệu. Tìm hiểu thêm về SQL và nâng cao kỹ năng của bạn qua các tài nguyên sau:


Deandra Cutajar's photo
Author
Deandra Cutajar
LinkedIn

Chuyên gia Dữ liệu và AI với bề dày kinh nghiệm xây dựng các mô hình khoa học dữ liệu theo yêu cầu, sử dụng cả kỹ thuật thống kê lẫn các mô hình tiên tiến như chuỗi thời gian, LLM, mạng nơ-ron và lý thuyết đồ thị.

Chủ đề
SQL

Tiếp tục hành trình SQL của bạn ngay hôm nay!

Khóa học

Nhập môn SQL

2 giờ
1.6M
Học cách tạo và truy vấn cơ sở dữ liệu quan hệ bằng SQL chỉ trong hai giờ.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm