Nội dung chính
Trong thế giới của cơ sở dữ liệu, ngôn ngữ định nghĩa dữ liệu (DDL) đóng vai trò trung tâm và quyết định trong việc xây dựng và quản lý cấu trúc dữ liệu. DDL không chỉ là một phần của SQL mà còn là công cụ mạnh mẽ cho các nhà phát triển và quản trị cơ sở dữ liệu để tạo, điều chỉnh và xóa các đối tượng như bảng, chỉ mục và ràng buộc. Bài viết này sẽ dẫn bạn khám phá sâu hơn về DDL, với những lệnh quan trọng và tầm quan trọng của nó trong việc định hình kiến trúc dữ liệu của bạn.
Đọc bài viết này để hiểu về:
- Ngôn ngữ định nghĩa dữ liệu là gì?
- Các lệnh của ngôn ngữ định nghĩa dữ liệu
- Ưu – nhược điểm của ngôn ngữ định nghĩa dữ liệu
Ngôn ngữ định nghĩa dữ liệu là gì?
Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language – DDL) là một tập hợp con các lệnh trong SQL, được sử dụng để định nghĩa và quản lý các cấu trúc dữ liệu trong cơ sở dữ liệu. DDL cung cấp các lệnh để định nghĩa, sửa đổi hoặc xóa các cấu trúc cơ sở dữ liệu như bảng, sơ đồ, chỉ mục và các ràng buộc.
Chức năng chính của DDL là quản lý các đối tượng cơ sở dữ liệu, tập trung vào việc xây dựng và duy trì cấu trúc tổng thể của cơ sở dữ liệu. Khi một câu lệnh DDL được thực thi, nó sẽ cập nhật danh mục hệ thống của cơ sở dữ liệu – nơi lưu trữ thông tin về cấu trúc của cơ sở dữ liệu, nhưng không thay đổi dữ liệu bên trong các bảng. Các lệnh DDL thường được thực thi trong một trình duyệt SQL hoặc quy trình lưu trữ.
Đọc thêm: SQL Database – Ngôn ngữ truy vấn mạnh mẽ cho cơ sở dữ liệu
Các lệnh trong ngôn ngữ định nghĩa dữ liệu
Create
Được sử dụng để tạo ra các đối tượng mới trong cơ sở dữ liệu. Các đối tượng này có thể bao gồm bảng, chỉ mục, cơ sở dữ liệu, sơ đồ, chế độ xem (views), thủ tục lưu trữ và các đối tượng khác.
Cú pháp tạo CSDL mới (database)
CREATE DATABASE database_name;
Ví dụ: để tạo 1 CSDL mới để lưu trữ thông tin nhân viên, ta dùng cú pháp sau:
CREATE DATABASE Info_Employee;
Cú pháp tạo bảng mới
CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, ... );
Ví dụ: Để tạo một bảng mới để lưu trữ các thông tin của nhân viên như mã nhân viên, họ tên, ngày sinh, vị trí…. ta dùng cú pháp như sau:
CREATE TABLE Employees ( EmployeeID int PRIMARY KEY, FirstName varchar(10), LastName varchar(50), BirthDate date, Position varchar(50) );
Cú pháp tạo chỉ mục
Lệnh này tạo ra một chỉ mục cho bảng. Chỉ mục là cấu trúc dữ liệu giúp cơ sở dữ liệu truy cập nhanh hơn đến các hàng trong bảng mà không cần quét toàn bộ bảng.
CREATE INDEX index_name ON table_name (column1, column2, ...);
Ví dụ: Để tạo chỉ mục trên cột FirstName để tối ưu hóa việc tìm kiếm nhân viên theo tên, ta sử dụng cú pháp sau:
CREATE INDEX idx_firstname ON Employees (FirstName);
Alter
Là lệnh được sử dụng để thay đổi cấu trúc của các đối tượng cơ sở dữ liệu hiện có chẳng hạn như các thành phần của bảng. Nó cho phép thêm, sửa đổi hoặc xóa các cột và các ràng buộc khác trong một bảng mà không cần phải xóa và tạo lại bảng đó. Đây là một công cụ quan trọng giúp quản trị viên cơ sở dữ liệu và nhà phát triển dễ dàng duy trì và cập nhật cấu trúc cơ sở dữ liệu theo yêu cầu thay đổi.
Tuy nhiên, Cú pháp của lệnh ALTER có thể khác nhau giữa các hệ quản trị cơ sở dữ liệu (DBMS). Ví dụ, cú pháp của ALTER trong MySQL có thể khác với cú pháp trong PostgreSQL hoặc SQL Server.
Vì vậy, khi làm việc với các DBMS khác nhau, hãy tham khảo tài liệu của từng hệ quản trị để biết cú pháp chính xác.
Cú pháp thêm cột mới hoặc xóa một cột
Ta sử dụng ADD và DROP tương ứng:
ALTER TABLE table_name ADD column_name datatype;
Ví dụ: để thêm thông tin Email và cột ManagerID vào bảng Employees, ta sử dụng cú pháp sau:
ALTER TABLE Employees ADD COLUMN ManagerID INT NOT NULL, ADD Email varchar(100);
Ví dụ: Để xóa cột Email trong bảng Employees ta sử dụng cú pháp sau:
ALTER TABLE Employees DROP COLUMN Email;
Cú pháp thêm ràng buộc vào một bảng
Cú pháp:
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition;
Ví dụ: Để thêm khóa ngoại (foreign key) đảm bảo rằng giá trị của cột ManagerID trong bảng Employees phải tồn tại trong cột EmployeeID của cùng bảng Employees (trường hợp một nhân viên có thể là quản lý của nhân viên khác), ta sử dụng cú pháp sau:
ALTER TABLE Employees ADD CONSTRAINT FK_Manager FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID);
Ví dụ: Để thêm ràng buộc kiểm tra (CHECK constraint) đảm bảo rằng giá trị của cột Salary trong bảng Employees lớn hơn 0, ta sử dụng cú pháp sau:
ALTER TABLE Employees ADD CONSTRAINT CHK_PositiveSalary CHECK (Salary > 0);
Cú pháp thêm sửa đổi kiểu dữ liệu hoặc các ràng buộc của cột hiện có
Ta sử dụng MODIFY.
Ví dụ, để thay đổi kiểu dữ liệu của cột FirstName trong bảng Employee, ta sử dụng cú pháp:
ALTER TABLE Employees MODIFY COLUMN FirstName varchar(50);
Cú pháp đổi tên cột hoặc tên bảng
Ta sử dụng RENAME.
Ví dụ, để đổi tên cột Position thành JobTitle, ta sử dụng cú pháp như sau:
ALTER TABLE Employees RENAME COLUMN Position TO JobTitle;
DROP
Là lệnh được sử dụng để xóa hoàn toàn các đối tượng khỏi cơ sở dữ liệu, chẳng hạn như cơ sở dữ liệu, bảng, chỉ mục hoặc ràng buộc. Khi một đối tượng bị xóa bằng lệnh DROP, tất cả dữ liệu bên trong đối tượng đó cũng bị xóa và không thể phục hồi lại.
Cú pháp:
DROP <database object type> <database object name>;
Ví dụ: Để viết cú pháp xoá hoàn toàn một cơ sở dữ liệu và tất cả các đối tượng bên trong nó, ta sử dụng cú pháp sau:
DROP DATABASE Employee_Info;
Ví dụ: để xóa bảng Employees, ta sử dụng cú pháp sau:
DROP TABLE Employees;
Ví dụ: để xóa ràng buộc CHK_PositiveSalary trên bảng Employees, ta sử dụng cú pháp sau:
ALTER TABLE Employees DROP CONSTRAINT CHK_PositiveSalary;
TRUNCATE
Là lệnh được sử dụng để xóa toàn bộ dữ liệu trong một bảng mà vẫn giữ lại cấu trúc bảng. Khác với lệnh DROP, lệnh TRUNCATE chỉ xóa dữ liệu mà không xóa bảng và các ràng buộc, chỉ mục liên quan.
Khi sử dụng lệnh TRUNCATE, cơ sở dữ liệu không xóa từng hàng dữ liệu một, mà nó đánh dấu toàn bộ các trang dữ liệu (data pages) của bảng đó là trống và có sẵn để tái sử dụng. Điều này giúp thực hiện việc xóa dữ liệu nhanh chóng và hiệu quả hơn.
Cú pháp:
TRUNCATE TABLE <table name>;
Ví dụ, để xóa tất cả các hàng trong bảng Employees, ta sử dụng cú pháp sau:
TRUNCATE TABLE Employees;
Lưu ý: Cú pháp của các lệnh DDL có thể khác nhau giữa các hệ quản trị cơ sở dữ liệu (DBMS) như MySQL, PostgreSQL, Oracle, SQL Server,…
Bài viết này chỉ đề cập đến cú pháp khái quát và có thể không hoàn toàn chính xác đối với tất cả các DBMS. Khi triển khai thực tế, bạn nên tham khảo tài liệu của DBMS cụ thể mà bạn đang sử dụng để đảm bảo cú pháp chính xác.
Ưu – nhược điểm của ngôn ngữ định nghĩa dữ liệu
Ưu điểm | Nhược điểm |
Cho phép thiết kế và chỉnh sửa cấu trúc cơ sở dữ liệu một cách có hệ thống. | Một số lệnh DDL như DROP, không thể hoàn tác và có thể dẫn đến mất dữ liệu. |
Đảm bảo sự nhất quán trong định nghĩa cấu trúc cơ sở dữ liệu. | Khi thực thi một số câu lệnh DDL, đặc biệt trên tập dữ liệu lớn hoặc có cấu trúc phức tạp có thể tốn nhiều thời gian. |
DDL cho phép người dùng thay đổi cấu trúc cơ sở dữ liệu mà không ảnh hưởng đến dữ liệu bên trong. | Thay đổi cấu trúc bảng có thể dẫn đến lỗi nếu các đối tượng hoặc ứng dụng khác trong cơ sở dữ liệu phụ thuộc vào nó. |
Câu hỏi thường gặp về ngôn ngữ định nghĩa dữ liệu
Các cách sử dụng DDL là gì?
DDL (Data Definition Language) có nhiều ứng dụng quan trọng trong quản lý cơ sở dữ liệu. Dưới đây là các cách sử dụng chính của DDL:
- Tạo các đối tượng cơ sở dữ liệu: Tạo bảng, views, chỉ mục (indexes) và thủ tục lưu trữ (stored procedures).
- Sửa đổi các đối tượng cơ sở dữ liệu:
-
- Thêm hoặc xóa cột trong bảng.
- Thay đổi kiểu dữ liệu của cột.
- Đổi tên bảng hoặc cột.
- Quản lý các ràng buộc cơ sở dữ liệu: Tạo hoặc sửa đổi các ràng buộc như khóa chính (primary keys), khóa ngoại (foreign keys), ràng buộc duy nhất (unique constraints) và ràng buộc kiểm tra (check constraints).
- Tạo chỉ mục: Tạo hoặc sửa đổi các chỉ mục trên bảng cơ sở dữ liệu để cải thiện hiệu suất của các truy vấn SQL.
- Phân vùng: Tạo hoặc sửa đổi các bảng phân vùng để cải thiện hiệu suất của các truy vấn truy cập lượng dữ liệu lớn.
DDL có gì khác với DML?
DDL (Data Definition Language) và DML (Data Manipulation Language) là hai thành phần của ngôn ngữ SQL có mục đích và chức năng khác nhau trong quản lý cơ sở dữ liệu.
DDL được sử dụng để định nghĩa và quản lý cấu trúc của cơ sở dữ liệu, bao gồm các lệnh như CREATE, ALTER, DROP, TRUNCATE, RENAME và COMMENT. Trong khi đó, DML được sử dụng để thao tác dữ liệu bên trong các cấu trúc đó, bao gồm các lệnh như SELECT, INSERT, UPDATE và DELETE.
Bạn có thể tìm hiểu sâu hơn về DML là gì và các lệnh DML cơ bản thông qua bài viết về Ngôn ngữ thao tác dữ liệu.
Ngoài các lệnh chính thì DDL còn lệnh nào không?
Có, ngoài các lệnh chính như CREATE, ALTER, DROP và TRUNCATE, DDL còn bao gồm các lệnh như RENAME và COMMENT.
Lệnh RENAME được sử dụng để đổi tên bảng hoặc cột trong cơ sở dữ liệu. Cú pháp:
RENAME TABLE old_table_name TO new_table_name;
Lệnh COMMENT được sử dụng để thêm, thay đổi hoặc xóa chú thích (comment) cho các đối tượng trong cơ sở dữ liệu như bảng, cột. Cú pháp:
COMMENT ON TABLE table_name IS 'comment_text';
hoặc:
COMMENT ON COLUMN table_name.column_name IS'comment_text';
Tổng kết
Ngôn ngữ định nghĩa dữ liệu (DDL) không chỉ đơn giản là một phần của SQL mà còn là trụ cột quan trọng trong việc quản lý cấu trúc dữ liệu của một hệ thống cơ sở dữ liệu. Từ việc định nghĩa bảng và chỉ mục đến việc áp dụng ràng buộc dữ liệu, DDL cung cấp các công cụ mạnh mẽ để kiểm soát và bảo vệ tính toàn vẹn của dữ liệu.
Qua bài viết này, chúng ta đã được chiêm nghiệm sâu hơn về vai trò và cách thức hoạt động của DDL trong SQL, đồng thời nhận thức được tầm quan trọng của việc áp dụng chính sách quản lý dữ liệu chặt chẽ và hiệu quả. ITviec hy vọng bài viết trên đã giúp bạn có cái nhìn tổng quan về DDL và cách sử dụng trong các ứng dụng cụ thể.