Ngôn ngữ thao tác dữ liệu (DML) là gì?

Trong hệ thống thông tin, dữ liệu được biết đến là phần không thể thiếu. DML là ngôn ngữ dữ liệu chuyên dùng để tương tác, quản lý với dữ liệu trong cơ sở dữ liệu. Ở bài viết dưới đây, Bizfly Cloud sẽ giúp bạn hiểu rõ hơn ngôn ngữ thao tác dữ liệu là gì và các câu lệnh phổ biến trong DML.

Ngôn ngữ thao tác dữ liệu là gì?

Ngôn ngữ thao tác dữ liệu có tên tiếng anh là Data Manipulation Language, viết tắt là DML. Đây là nhóm ngôn ngữ chuyên dùng trong việc quản trị cơ sở dữ liệu giúp quá trình thao tác với dữ liệu của người dùng diễn ra hiệu quả hơn.

Ngôn ngữ thao tác dữ liệu là gì?

DML sẽ có các câu lệnh, thuật toán được dùng nhằm thao tác dữ liệu trong cơ sở dữ liệu thông qua việc truy xuất, chèn, sửa, xóa dữ liệu trong các bảng. Ngoài ra, ngôn ngữ này cũng sẽ được tích hợp trong RDBMS ( cơ sở dữ liệu quan hệ) để giúp quá trình quản lý, thao tác dữ liệu theo yêu cầu.

Các câu lệnh phổ biến trong DML

Trong DML sẽ có các câu lệnh phổ biến sau đây:

Lệnh SELECT

SELECT là một trong những lệnh cơ bản và quan trọng nhất trong SQL. Nó được sử dụng để truy xuất dữ liệu từ một hoặc nhiều bảng trong cơ sở dữ liệu. Lệnh SELECT cho phép người dùng chỉ định các cột cần lấy, áp dụng các điều kiện lọc, sắp xếp và nhóm dữ liệu.

Cú pháp của lệnh này là:

Trong đó:

Các tính năng nâng cao:

Lệnh INSERT

Lệnh INSERT được sử dụng để thêm dữ liệu mới vào bảng. Lệnh này cho phép chèn một hoặc nhiều hàng dữ liệu vào bảng.

Cú pháp của lệnh này là:

Trong đó:

Các tính năng nâng cao:

Lệnh UPDATE

Lệnh UPDATE được sử dụng để thay đổi dữ liệu trong bảng. Nó cho phép cập nhật một hoặc nhiều cột của các hàng đáp ứng điều kiện lọc.

Cú pháp của lệnh này là:

Trong đó:

Các tính năng nâng cao:

Lệnh DELETE

Lệnh DELETE được sử dụng để xóa dữ liệu trong bảng. Nó cho phép xóa một hoặc nhiều hàng đáp ứng điều kiện lọc.

Cú pháp của lệnh này là:

Trong đó:

Các tính năng nâng cao:

Lệnh MERGE

Lệnh MERGE được sử dụng để chèn hoặc cập nhật dữ liệu tùy thuộc vào việc dữ liệu đó đã tồn tại hay chưa. Lệnh MERGE kết hợp cả lệnh INSERT và UPDATE.

Cú pháp của lệnh này là:

Trong đó:

MERGE INTO xác định bảng đích cần chèn hoặc cập nhật dữ liệu.

USING chỉ định bảng nguồn chứa dữ liệu mới.

ON xác định điều kiện khớp giữa hai bảng.

WHEN MATCHED chỉ định hành động cập nhật khi có hàng khớp.

WHEN NOT MATCHED chỉ định hành động chèn khi không có hàng khớp.

Các Best practices để sử dụng DML hiệu quả

Để sử dụng DML hiệu quả sẽ cần dùng đến các Best practices sau đây:

Sử dụng để truy vấn tham số

Truy vấn tham số là một trong những best practices quan trọng nhất. Dạng này giúp tăng cường bảo mật và hiệu suất của các truy vấn SQL. Khi sử dụng truy vấn tham số, bạn sẽ tránh được các cuộc tấn công SQL Injection, một loại tấn công mà kẻ xấu có thể chèn mã độc vào các câu truy vấn SQL.

- Truy vấn không an toàn

query = "SELECT * FROM users WHERE username = '" + username + "';"

- Truy vấn tham số hóa

query = "SELECT * FROM users WHERE username = ?"

cursor.execute(query, (username,))

Xử lý các giao dịch về dữ liệu đúng cách

Quản lý giao dịch) là một phần quan trọng trong việc sử dụng DML. Giao dịch giúp đảm bảo rằng các thao tác DML (INSERT, UPDATE, DELETE) được thực hiện một cách nguyên tử. Điều này có nghĩa là hoặc tất cả các thao tác đều được thực hiện thành công, hoặc không có thao tác nào được thực hiện cả. Việc sử dụng giao dịch giúp đảm bảo tính nhất quán của cơ sở dữ liệu.

BEGIN TRANSACTION;

- Thực hiện nhiều thao tác DML

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

- Nếu tất cả các thao tác đều thành công

COMMIT;

- Nếu bất kỳ thao tác nào thất bại

ROLLBACK;

Xử lý các lỗi phát sinh

Trong quá trình làm việc với DML, lỗi là điều không thể tránh khỏi. Khi thực hiện các thao tác DML, bạn nên kiểm tra kết quả và xử lý các lỗi có thể phát sinh. Trong đó cách xử lý lỗi hiệu quả nhất đó là sử dụng các khối try-catch trong ngôn ngữ lập trình. Nó có tác dụng trong việc bắt các lỗi và xử lý chúng một cách phù hợp, đảm bảo rằng hệ thống không bị gián đoạn hoặc rơi vào trạng thái không nhất quán.

try:

cursor.execute("INSERT INTO users (username, email) VALUES (?, ?)", (username, email))

connection.commit()

except sqlite3.Error as error:

print("Failed to insert data into sqlite table", error)

connection.rollback()

finally:

if connection:

connection.close()

Xác thực và bảo mật dữ liệu đầu vào

Đây là bước quan trọng để đảm bảo rằng dữ liệu được lưu trữ trong cơ sở dữ liệu là chính xác và an toàn. Dữ liệu không được xác thực đúng cách có thể dẫn đến các vấn đề bảo mật nghiêm trọng, bao gồm cả SQL Injection.

Bạn cần kiểm tra và xác thực dữ liệu đầu vào từ người dùng trước khi sử dụng nó trong các truy vấn DML. Nó bao gồm việc kiểm tra định dạng, độ dài, và giá trị của dữ liệu.

def validate_user_input(username, email):

if not username or not email:

raise ValueError("Username and email cannot be empty")

if len(username) > 50 or len(email) > 100:

raise ValueError("Input exceeds allowed length")

if not re.match(r"[^@]+@[^@]+.[^@]+", email):

raise ValueError("Invalid email format")

return True

Kiểm soát truy cập

Công đoạn này giúp đảm bảo rằng chỉ những người dùng hoặc ứng dụng có quyền mới có thể thực hiện các thao tác DML trên cơ sở dữ liệu. Nó giúp bảo vệ dữ liệu khỏi bị truy cập trái phép và đảm bảo các thao tác chỉ được thực hiện bởi những người có thẩm quyền.

Việc kiểm soát truy cập có thể được thực hiện thông qua việc sử dụng các quyền và vai trò trong hệ quản trị cơ sở dữ liệu. Bạn nên chỉ định quyền truy cập tối thiểu cần thiết cho từng người dùng hoặc ứng dụng, và thường xuyên xem xét và cập nhật các quyền này.

- Tạo vai trò và gán quyền truy cập

CREATE ROLE data_editor;

GRANT SELECT, INSERT, UPDATE, DELETE ON users TO data_editor;

- Gán vai trò cho người dùng

GRANT data_editor TO john_doe;

Sao lưu và giám sát

Sao lưu và giám sát là hai best practices giúp dữ liệu luôn an toàn và có thể khôi phục lại được trong trường hợp có sự cố. Việc sao lưu thường xuyên giúp bạn khôi phục lại dữ liệu trong trường hợp bị mất mát hoặc hỏng hóc.

Ngoài ra, giám sát các thao tác DML cũng giúp phát hiện sớm các vấn đề và xử lý chúng kịp thời. Bạn nên thiết lập các công cụ giám sát để theo dõi các truy vấn SQL, hiệu suất của cơ sở dữ liệu, và các sự kiện bất thường.

- Tạo bản sao lưu

BACKUP DATABASE my_database TO DISK = 'C:backupsmy_database.bak';

- Thiết lập giám sát

CREATE EVENT SESSION [MonitorDML]

ON SERVER

ADD EVENT sqlserver.sql_statement_completed

(SET collect_statement = (1))

ADD TARGET package0.event_file

(SET filename = 'C:monitoringDMLActivity.xel');

Trên đây là toàn bộ các thông tin liên quan đến ngôn ngữ quản lý dữ liệu. Có thể thấy DML là công cụ cần thiết giúp quá trình làm việc với cơ sở dữ liệu diễn ra hiệu quả hơn. Nhưng bạn cũng cần chú ý, trong quá trình sử dụng cần hết sức cẩn thận để tránh dữ liệu bị mất.

Link nội dung: https://ohanapreschool.edu.vn/ngon-ngu-thao-tac-du-lieu-thuc-chat-la-a57302.html