Thao tác Dữ liệu MySQL: INSERT, UPDATE, DELETE an toàn

Đăng ngày: 18-09-2025 06:12
mariadbSQLMySQLINSERTUPDATEDELETECRUDThao tác dữ liệuMệnh đề WHEREAn toàn dữ liệuTransactionsSQL Injection

Chào mừng bạn đến với bài viết thứ 7 trong loạt bài "Làm chủ MySQL & MariaDB: Từ Cơ bản đến Tối ưu". Hôm nay, chúng ta sẽ khám phá các thao tác dữ liệu cơ bản: Thêm (INSERT), Sửa (UPDATE) và Xóa (DELETE). Đây là những thành phần cốt lõi của CRUD (Create, Read, Update, Delete), nền tảng của hầu hết các ứng dụng cơ sở dữ liệu.

1. Thêm Dữ Liệu (INSERT INTO)

Lệnh INSERT INTO dùng để thêm dữ liệu mới vào bảng. Cú pháp cơ bản như sau:

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Bạn có thể chỉ định các cột muốn chèn dữ liệu. Nếu không chỉ định, giá trị sẽ được chèn vào tất cả các cột theo thứ tự được định nghĩa trong bảng. Hãy xem một ví dụ cụ thể:

INSERT INTO customers (customer_id, first_name, last_name, email) VALUES (1, 'John', 'Doe', '[email protected]');

Trong ví dụ trên, chúng ta thêm một khách hàng mới vào bảng customers. Chúng ta cung cấp giá trị cho các cột customer_id, first_name, last_name và email.

Bạn cũng có thể chèn nhiều bản ghi cùng một lúc:

INSERT INTO customers (customer_id, first_name, last_name, email) VALUES
(2, 'Jane', 'Smith', '[email protected]'),
(3, 'Peter', 'Jones', '[email protected]');

Lưu ý rằng kiểu dữ liệu của giá trị phải phù hợp với kiểu dữ liệu của cột tương ứng. Ví dụ: bạn không thể chèn một chuỗi vào một cột số.

2. Sửa Dữ Liệu (UPDATE ... SET ... WHERE)

Lệnh UPDATE dùng để sửa đổi dữ liệu hiện có trong bảng. Cú pháp cơ bản là:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Mệnh đề WHERE là cực kỳ quan trọng. Nó xác định những bản ghi nào sẽ bị ảnh hưởng bởi lệnh UPDATE. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các bản ghi trong bảng sẽ bị cập nhật, điều này thường không mong muốn.

Ví dụ, để cập nhật email của khách hàng có customer_id là 1, bạn có thể sử dụng lệnh sau:

UPDATE customers SET email = '[email protected]' WHERE customer_id = 1;

Nếu bạn bỏ qua WHERE customer_id = 1, tất cả các khách hàng trong bảng customers sẽ có email được cập nhật thành [email protected].

Bạn có thể sử dụng nhiều điều kiện trong mệnh đề WHERE bằng cách sử dụng các toán tử logic như AND và OR:

UPDATE customers SET email = '[email protected]' WHERE first_name = 'John' AND last_name = 'Doe';

Điều này sẽ chỉ cập nhật email của những khách hàng có tên là 'John' và họ là 'Doe'.

3. Xóa Dữ Liệu (DELETE FROM ... WHERE)

Lệnh DELETE FROM dùng để xóa dữ liệu khỏi bảng. Cú pháp cơ bản là:

DELETE FROM table_name WHERE condition;

Tương tự như lệnh UPDATE, mệnh đề WHERE là rất quan trọng. Nó xác định những bản ghi nào sẽ bị xóa. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các bản ghi trong bảng sẽ bị xóa, khiến bảng trở nên trống rỗng.

Ví dụ, để xóa khách hàng có customer_id là 3, bạn có thể sử dụng lệnh sau:

DELETE FROM customers WHERE customer_id = 3;

Nếu bạn bỏ qua WHERE customer_id = 3, tất cả các khách hàng trong bảng customers sẽ bị xóa.

Bạn cũng có thể sử dụng các toán tử logic trong mệnh đề WHERE:

DELETE FROM customers WHERE registration_date < '2023-01-01';

Điều này sẽ xóa tất cả các khách hàng đã đăng ký trước ngày 1 tháng 1 năm 2023.

4. Sử Dụng An Toàn các Lệnh DML

Việc sử dụng an toàn các lệnh INSERT, UPDATE và DELETE (Data Manipulation Language - DML) là rất quan trọng để bảo vệ dữ liệu của bạn. Dưới đây là một số lời khuyên:

  • Luôn sử dụng mệnh đề WHERE trong các lệnh UPDATE và DELETE. Kiểm tra kỹ điều kiện WHERE trước khi thực thi lệnh để đảm bảo rằng bạn chỉ đang tác động đến những bản ghi mong muốn.
  • Sử dụng các giao dịch (transactions). Giao dịch cho phép bạn nhóm nhiều lệnh DML lại với nhau thành một đơn vị công việc duy nhất. Nếu bất kỳ lệnh nào trong giao dịch thất bại, bạn có thể hoàn tác toàn bộ giao dịch, đảm bảo tính nhất quán của dữ liệu.
  • Sao lưu dữ liệu thường xuyên. Ngay cả khi bạn cẩn thận, vẫn có thể xảy ra lỗi. Việc sao lưu dữ liệu thường xuyên giúp bạn khôi phục dữ liệu nếu có sự cố xảy ra.
  • Sử dụng các tham số hóa (parameterized queries) hoặc prepared statements. Điều này giúp ngăn chặn các cuộc tấn công SQL injection. Thay vì chèn trực tiếp dữ liệu vào câu lệnh SQL, bạn sử dụng các tham số giữ chỗ và sau đó cung cấp dữ liệu riêng biệt.
  • Cấp quyền hạn chế cho người dùng. Chỉ cấp cho người dùng quyền truy cập cần thiết để thực hiện công việc của họ. Ví dụ, nếu một người dùng chỉ cần đọc dữ liệu, đừng cấp cho họ quyền UPDATE hoặc DELETE.

Ví dụ về sử dụng transactions:

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

Nếu một trong hai lệnh UPDATE thất bại, bạn có thể sử dụng ROLLBACK; để hoàn tác tất cả các thay đổi.

5. Ví dụ Tổng Quan

Giả sử chúng ta có bảng products với các cột product_id, product_name, price và quantity. Dưới đây là một số ví dụ về cách sử dụng các lệnh INSERT, UPDATE và DELETE:

  • Thêm một sản phẩm mới:
    INSERT INTO products (product_name, price, quantity) VALUES ('Laptop', 1200, 10);
  • Cập nhật giá của một sản phẩm:
    UPDATE products SET price = 1300 WHERE product_name = 'Laptop';
  • Xóa một sản phẩm:
    DELETE FROM products WHERE product_id = 5;

Hãy luôn nhớ kiểm tra kỹ các lệnh trước khi thực thi chúng để tránh các lỗi không mong muốn.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về các thao tác dữ liệu cơ bản: INSERT, UPDATE và DELETE trong MySQL và MariaDB. Chúng ta đã thảo luận về cú pháp, cách sử dụng an toàn và tầm quan trọng của mệnh đề WHERE. Việc nắm vững các lệnh này là rất quan trọng để xây dựng và quản lý các ứng dụng cơ sở dữ liệu hiệu quả. Hãy thực hành thường xuyên và áp dụng các biện pháp phòng ngừa để bảo vệ dữ liệu của bạn. Tiếp tục theo dõi các bài viết tiếp theo trong loạt bài để nâng cao kiến thức của bạn về MySQL và MariaDB!

0 Bình luận