Câu lệnh DDL (Data Definition Language) trong SQL là gì?
TM Data School - DDL (Data Definition Language) - nhóm câu lệnh định nghĩa và quản lý đối tượng và cấu trúc của một cơ sở dữ liệu là một phần kiến thức rất quan trọng cần nắm được khi sử dụng SQL, đặc biệt là khi bạn cần thực hiện các thao tác như tạo bảng mới, thêm cột vào bảng hiện tại, hoặc thiết lập các ràng buộc giữa các bảng.
Vậy DDL là gì, các câu lệnh thường dùng bao gồm những câu lệnh nào? Và chúng được dùng như thế nào trong thực tế? Hãy cùng khám phá trong bài viết này nhé!
Đọc thêm: SQL là gì? Tất tần tật những điều bạn cần biết về SQL
1. DDL (Data definition language) là gì?
Data Definition Language (DDL) là nhóm các câu lệnh SQL giúp quản lý các đối tượng trong cơ sở dữ liệu, bao gồm bảng, views,... Với câu lệnh DDL, bạn có thể thực hiện các lệnh với cơ sở dữ liệu, ví dụ tạo bảng, thay đổi hoặc xóa bỏ một đối tượng. Câu lệnh DDL thường được sử dụng trong một SQL browser hoặc stored procedure ( đoạn programming scripts với các câu lệnh SQL nhúng được lưu dưới dạng đã được biên dịch và thi hành thực tiếp).
Đọc thêm: Hướng dẫn tự học SQL và các nguồn luyện tập dành cho người mới bắt đầu
2. Các câu lệnh DDL thường dùng:
CREATE
Câu lệnh CREATE được dùng để tạo ra các đối tượng mới trong database. Một số đối tượng phổ biến như bảng, schema, view hoặc một function. Không giống câu lệnh DROP, ALTER hay TRUNCATE, chạy câu lệnh CREATE thường không có nhiều rủi ro bởi bạn hoàn toàn có thể drop những đối tượng mới được tạo nếu không hữu ích.
Để tạo ra một bảng hoặc một view với câu lệnh CREATE đòi hỏi bạn cần có hiểu biết chắc chắn về kiến trúc của dữ liệu, bao gồm việc thiết kế các schema, mối quan hệ giữa các đối tượng, cấu trúc dữ liệu và loại dữ liệu,...
Sau khi tạo một đối tượng mới, bạn có thể sử dụng câu lệnh DML để INSERT, hoặc thiết kế kết hợp đường ống dữ liệu và công cụ chuyển đổi như dbt để đưa dữ liệu mới vào đối tượng.
Syntax chung của câu lệnh CREATE là:
CREATE <database object type> <database object name>;
Ví dụ, tạo ra một bảng dữ liệu mới với CREATE bằng cách:
CREATE TABLE prod.jaffle_shop.jaffles (
id varchar(255),
jaffle_name varchar(255)
created_at timestamp,
ingredients_list varchar(255),
is_active boolean
);
Lưu ý rằng bạn phải xác định cụ thể tên cột và dạng dữ liệu của cột đó.
Nhóm lệnh CREATE có thể tạo ra các đối tượng như:
CREATE DATABASE dùng để định nghĩa một cơ sở dữ liệu trong thư mục gốc. Cơ sở dữ liệu thường bao gồm một thư mục con cùng tên chứa bảng vật lý và các tệp chỉ mục. Người dùng có thể sử dụng stogroup để chỉ định ngầm các thư mục lưu trữ khác nhau cho các đối tượng cơ sở dữ liệu riêng lẻ.
CREATE TABLE được dùng để tạo ra một bảng dữ liệu mới và định nghĩa tên, loại dữ liệu và độ dài chấp nhận của một trường dữ liệu. Câu lệnh cũng có thể dùng để tạo khóa chính (primary key) và khóa ngoại (foreign key) của bảng.
CREATE STOGROUP được dùng để tạo một nhóm ngẫu nhiên để xác định vùng thư mục vật lý nhằm lưu trữ các đối tượng cơ sở dữ liệu. Một nhóm stogroup được liên kết với nhau thông qua đường dẫn thư mục (directory path).
CREATE TABLESPACE được dùng để lưu trữ các bảng từ cùng một cơ sở dữ liệu trong nhiều đường dẫn thư mục.
CREATE ALIAS được dùng để xác định tên tạm của bảng hoặc views.
CREATE SYNONYM được dùng để tạo một bản thay thế cho bảng hoặc view hiện có.
CREATE INDEX được dùng để tạo chỉ mục (index) cho một hoặc nhiều cột của bảng để truy xuất dữ liệu nhanh hơn và thực hiện các ràng buộc (constraints - các yêu cầu được đặt ra để quy định các nguyên tắc dành cho dữ liệu trong bảng) của cột.
CREATE LOCATION được dùng để tạo một vị trí máy chủ XDB mới trong thư mục con do người dùng chỉ định.
CREATE SEQUENCE được dùng tạo một chuỗi (sequence) tại application server.
CREATE VIEW được dùng để tạo một chế độ xem và có thể thể giới hạn dữ liệu, nhằm hạn chế việc truy xuất và cập nhật dữ liệu cho các bảng trong cơ sở dữ liệu.
CREATE GLOBAL TEMPORARY được dùng để tạo mô tả của bảng tạm tại máy chủ hiện tại.
ALTER
Với câu lệnh ALTER, bạn có thể thay đổi các đối tượng đã tồn tại trong cơ sở dữ liệu, cụ thể:
Bổ sung, xóa bỏ hoặc thay đổi tên cột trong views/bảng dữ liệu
Thay đổi tên hoặc cấu trúc của view hoặc bảng dữ liệu
…
Syntax chung của câu lệnh ALTER là:
ALTER <loại đối tượng trong cơ sở dữ liệu> <tên của đối tượng>;
Để thay đổi một cột của một bảng, bạn có thể sử dụng câu lệnh:
ALTER TABLE customers rename column last_name as last_initial;
Trong ví dụ này, bạn phải thay đổi tên cột chứa tên của khách hàng (last_name) của một cửa hàng thành last_initial.
Một số câu lệnh thường dùng bao gồm:
ALTER DATABASE được dùng để sửa đổi các tham số thông tin của cơ sở dữ liệu trong vị trí máy chủ XDB hiện tại.
ALTER STOGROUP được dùng để thay đổi các thông số kỹ thuật của một nhóm (stogroup) được xác định tại vị trí máy chủ XDB hiện tại.
ALTER TABLE được dùng để thêm mới, bỏ đi hoặc thay thế cột và loại dữ liệu đã có trong bảng. Câu lệnh này cũng có thể thực thi tính toàn vẹn tham chiếu và miền bằng cách tạo hoặc loại bỏ các ràng buộc UNIQUE, PRIMARY, FOREIGN KEY và CHECK trong chế độ XDB.
ALTER TABLESPACE được dùng để thay đổi thông số kỹ thuật của vùng bảng trong vị trí máy chủ XDB hiện tại.
ALTER VIEW được dùng để sử dụng chế độ xem hiện có tại máy chủ hiện tại và tái tạo lại chế độ xem.
ALTER SEQUENCE được dùng để thay đổi các thuộc tính trình tự (sequence attributes) tại máy chủ hiện tại.
ALTER INDEX thay đổi cấu hình của một chỉ mục (index) hiện có. Máy chủ XDB về mặt cú pháp hỗ trợ lệnh để đảm bảo khả năng tương thích với Db2.
DROP
Câu lệnh DROP có rủi ro cao nhất, do đó cần cân nhắc khi sử dụng câu lệnh này. DROP sẽ xóa đối tượng khỏi cơ sở dữ liệu, bao gồm xóa bảng dữ liệu, view, schemas, cơ sở dữ liệu, người dùng, function,...
Một số nhà kho dữ liệu như Snowflake có thể bổ sung các bước cản để cảnh báo trước khi bạn xóa bỏ đối tượng khỏi cơ sở dữ liệu.
Syntax chung của câu lệnh DROP là:
DROP <loại đối tượng trong cơ sở dữ liệu> <tên của đối tượng>;
Bạn có thể DROP một bảng với truy vấn:
DROP TABLE customers;
Câu lệnh DROP thường dùng:
DROP DATABASE thực hiện ngược lại với CREATE DATABASE - bằng cách xóa bỏ một cơ sở dữ liệu được xác định tại một vị trí nhất định, cùng với tất cả các đối tượng được liên kết với nó. DROP cũng xóa bỏ thư mục con cơ sở dữ liệu ngay cả khi nó trống rỗng và không chứa đối tượng nào được liên kết với cơ sở dữ liệu.
DROP STOGROUP xóa một stogroup bằng cách cắt đứt kết nối sử dụng stogroup và đường dẫn thư mục được chỉ định giữa các đối tượng dữ liệu. Tuy nhiên, DROP không xóa các đối tượng liên quan đến nhóm stogroup. Với câu lệnh DROP, DROP STOGROUP cần được sử dụng một cách thận trọng.
DROP TABLE xóa một bảng trong cơ sở dữ liệu và các đối tượng liên quan bao gồm chỉ mục (index), view và các synonyms dựa trên bảng dữ liệu đó.
DROP TABLESPACE xóa một vùng bảng được xác định ở vị trí hiện tại và tất cả các bảng được liên kết trong đó.
DROP ALIAS được dùng để xóa tên thay thế cho bảng hoặc của một view trong cơ sở dữ liệu
DROP SYNONYM được dùng để xóa tên thay thế cho bảng hoặc view
DROP INDEX được dùng để xóa bỏ một chỉ mục (index), nhưng chỉ với những index không được tạo như khóa chính (primary key) và khóa ngoại (foreign key). Để xóa index, các ràng buộc đang tồn tại cần được xóa trước với câu lệnh ALTER.
DROP LOCATION được dùng để xóa vị trí máy chủ XDB do người dùng xác định và các bảng danh mục, cấu trúc thư mục và các đối tượng được liên kết với nó.
DROP VIEW được dùng để xóa chế độ xem và tất cả các chế độ xem khác có liên quan tới chế độ xem đó khỏi danh mục hệ thống của vị trí hiện tại.
TRUNCATE
Câu lệnh TRUNCATE sẽ xóa bỏ tất cả bản ghi của một bảng trong khi vẫn giữ nguyên cấu trúc của bảng. Câu lệnh TRUNCATE chỉ áp dụng cho các đối tượng bảng trong cơ sở dữ liệu. Khác với câu lệnh DROP, TRUNCATE không xóa bảng thực tế khỏi cơ sở dữ liệu mà chỉ xóa dữ liệu được lưu trữ trong đó.
Syntax chung của câu lệnh TRUNCATE là:
TRUNCATE TABLE <table name>;
Bạn có thể xóa bớt bản ghi trong bảng lưu trữ các giao dịch thanh toán của jaffle_shop bằng cách thực hiện câu lệnh sau:
TRUNCATE TABLE payments;
Trước đây, bảng này có 113 bản ghi. Sau khi thực hiện câu lệnh này, bảng vẫn còn trong cơ sở dữ liệu của bạn nhưng hiện không có bản ghi nào.
RENAME:
Câu lệnh RENAME được dùng để đổi tên của một bảng hoặc một đối tượng đang tồn tại trong cơ sở dữ liệu. Ví dụ, RENAME TABLE, RENAME COLUMN,...
Syntax chung của câu lệnh RENAME là:
RENAME TABLE old_table_name1 TO new_table_name1, old_table_name2 TO new_table_name2;
Lưu ý rằng chúng ta có thể đổi tên nhiều bảng bằng một câu lệnh RENAME.
Ví dụ, để đổi tên của bảng student_details thành student_info, chúng ta có thể truy vấn:
RENAME TABLE student_details TO student_info;
COMMENT:
Câu lệnh này dùng để đưa các dòng lệnh truy vấn SQL về dạng nhận xét/nháp để bỏ qua khi chạy cả đoạn lệnh. Những dòng nhận xét này nhằm mục đích tài liệu hóa, giải thích logic bên dưới của những câu lệnh, giúp dễ dàng tìm ra lỗi sai hoặc thay đổi truy vấn khi logic của business có sự thay đổi, đồng thời cũng dễ dàng đọc hiểu khi có sự tham gia của nhiều người, nhiều team trong thiết kế và xây dựng cơ sở dữ liệu.
Đọc thêm: Phân biệt các vị trí Data Analyst, Data Engineer, Data Scientist
Có hai loại comment:
Single Line comment: Sử dụng kí tự “--”, thường dùng khi chỉ cần comment một dòng truy vấn
Multi-Line comment: Sử dụng kí tự “/**/”, thường dùng khi cần comment một đoạn truy vấn dài
3. DDL và DML có gì khác nhau?
DDL và DML thường bị nhầm lẫn với nhau, đặc biệt với những bạn mới làm quen với SQL hoặc không thường xuyên sử dụng SQL.
Các câu lệnh SQL cơ bản - Slide khóa học Data System with SQL
Có thể tóm tắt sự khác biệt của DDL và DML với bảng dưới đây:
Đọc thêm: Câu lệnh DML (Data Manipulation Language) trong SQL là gì?
Tạm kết
Trên đây là những kiến thức tổng quan nhất mà bạn cần phải biết về nhóm lệnh DDL - công cụ dùng để quản lý, thêm mới, xóa hoặc chỉnh sửa các đối tượng trong cơ sở dữ liệu. Phần lớn database administrator là người làm việc với cơ sở dữ liệu sẽ sử dụng các câu lệnh này.
Nếu bạn có định hướng trở thành người làm dữ liệu và muốn trang bị kiến thức căn bản về hệ thống cơ sở, cách xây dựng một hệ thống dữ liệu bài bản, cách “tương tác” với hệ thống qua ngôn ngữ SQL hãy tham khảo khóa học Data System with SQL của TM Data School.
Khóa học sẽ mang đến cho bạn:
Kiến thức bài bản về hệ thống dữ liệu (Data System): Hiểu rõ cấu trúc và từng thành phần của một hệ thống dữ liệu: Data Collector, Data Pipeline, Data Warehouse, Data Mining Tool.
Tạo và quản lý dữ liệu trong nhà kho dữ liệu với SQL: Sử dụng các câu lệnh SQL để tạo và quản lý dữ liệu: tạo bảng, chỉnh sửa cấu trúc bảng, tạo ràng buộc (constraints), update bảng, xóa bảng,...
Truy vấn dữ liệu từ cơ bản đến nâng cao với SQL: Nắm vững các câu lệnh truy vấn SQL nhằm hỗ trợ Data Analyst/Data Scientist lấy dữ liệu từ hệ thống phục vụ quá trình phân tích.
Project thực tế thêm vào portfolio: Capstone project xây dựng hệ thống dữ liệu và truy vấn bằng SQL xuyên suốt qua cả khoá học để học viên có thể thêm vào portfolio ứng tuyển công việc.
Ngoài khi tham gia khóa học bạn còn được hướng dẫn bài bản từ các anh chị trainers được đào tạo về Data Science ở nước ngoài.
Tham khảo chi tiết khóa học tại đây!