Các Câu Lệnh MySQL Cơ Bản Cho Người Mới
Trần Thị Vân
- 131
- 23/07/2026
Tìm hiểu các câu lệnh MySQL cơ bản từ tạo database, bảng, truy vấn, thêm, sửa, xóa dữ liệu đến JOIN và GROUP BY với ví dụ dễ hiểu dành cho người mới bắt đầu, chi tiết như nào hãy cùng chúng tôi phân tích:
MySQL là một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay. Dù bạn đang học lập trình PHP, Python, Java, Node.js hay xây dựng website bằng bất kỳ công nghệ nào thì việc nắm vững các câu lệnh MySQL cơ bản luôn là nền tảng quan trọng. Khi hiểu rõ cách tạo cơ sở dữ liệu, thêm dữ liệu, truy vấn và cập nhật thông tin, bạn sẽ dễ dàng phát triển ứng dụng ổn định, tối ưu và thuận tiện trong quá trình bảo trì.
Bài viết này của Web Mới tổng hợp những câu lệnh MySQL quan trọng dành cho người mới bắt đầu. Nội dung được sắp xếp theo trình tự học thực tế, đi từ các thao tác đơn giản đến những kỹ thuật thường xuyên sử dụng trong quá trình phát triển website.

MySQL là gì và vì sao nên học trước khi lập trình?
MySQL là hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System - RDBMS), cho phép lưu trữ, quản lý và truy xuất dữ liệu thông qua ngôn ngữ SQL.
Hầu hết các website động đều cần một cơ sở dữ liệu để lưu thông tin như:
- Tài khoản người dùng.
- Sản phẩm.
- Bài viết.
- Đơn hàng.
- Bình luận.
- Cấu hình hệ thống.
Việc thành thạo các câu lệnh SQL cơ bản sẽ giúp bạn:
- Hiểu cách dữ liệu được lưu trữ.
- Đọc và chỉnh sửa dữ liệu nhanh chóng.
- Làm việc thuận lợi với các framework.
- Dễ dàng xử lý lỗi liên quan đến cơ sở dữ liệu.
- Tối ưu hiệu năng truy vấn.
Cấu trúc của một câu lệnh SQL
Một câu lệnh SQL thường gồm từ khóa và các thành phần liên quan đến bảng dữ liệu.
SELECT * FROM users;
Trong đó:
- SELECT là từ khóa lấy dữ liệu.
- * đại diện cho toàn bộ cột.
- FROM xác định bảng cần truy vấn.
- users là tên bảng.
Hầu hết câu lệnh SQL đều kết thúc bằng dấu chấm phẩy (;).
Tạo cơ sở dữ liệu
Trước khi làm việc với dữ liệu, bạn cần tạo một database.
CREATE DATABASE website_demo;
Để kiểm tra danh sách cơ sở dữ liệu hiện có:
SHOW DATABASES;
Muốn sử dụng một database:
USE website_demo;
Tạo bảng dữ liệu
Bảng là nơi lưu các bản ghi. Ví dụ tạo bảng thành viên:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100),
email VARCHAR(150),
age INT
);
Một số kiểu dữ liệu thường gặp:
| Kiểu | Mục đích |
|---|---|
| INT | Số nguyên |
| VARCHAR | Chuỗi có độ dài xác định |
| TEXT | Đoạn văn dài |
| DATE | Ngày |
| DATETIME | Ngày và giờ |
| FLOAT | Số thực |
| BOOLEAN | Giá trị đúng hoặc sai |
Xem danh sách bảng
Sau khi tạo bảng, có thể xem toàn bộ bảng bằng:
SHOW TABLES;
Muốn xem cấu trúc bảng:
DESCRIBE users;
Thêm dữ liệu vào bảng
Câu lệnh INSERT dùng để tạo bản ghi mới.
INSERT INTO users (fullname, email, age)
VALUES ('Nguyen Van A', 'a@example.com', 25);
Chèn nhiều dòng cùng lúc:
INSERT INTO users (fullname, email, age)
VALUES
('Tran Van B', 'b@example.com', 30),
('Le Thi C', 'c@example.com', 22),
('Pham Van D', 'd@example.com', 28);
Lấy dữ liệu từ bảng
Đây là câu lệnh được sử dụng nhiều nhất trong MySQL.
Lấy toàn bộ dữ liệu
SELECT * FROM users;
Lấy một số cột
SELECT fullname, email
FROM users;
Lấy dữ liệu theo điều kiện
SELECT *
FROM users
WHERE age > 25;
Tìm theo tên
SELECT *
FROM users
WHERE fullname = 'Nguyen Van A';
Tìm gần đúng
SELECT *
FROM users
WHERE fullname LIKE '%Van%';
Dấu % đại diện cho nhiều ký tự bất kỳ.
Sắp xếp dữ liệu
Để hiển thị dữ liệu theo thứ tự:
SELECT *
FROM users
ORDER BY age ASC;
Sắp xếp giảm dần:
SELECT *
FROM users
ORDER BY age DESC;
Giới hạn số lượng kết quả
Khi bảng có nhiều dữ liệu, LIMIT giúp lấy một phần kết quả.
SELECT *
FROM users
LIMIT 10;
Lấy từ dòng thứ 11:
SELECT *
FROM users
LIMIT 10, 10;
Cập nhật dữ liệu
Sau khi đã có dữ liệu trong bảng, bạn có thể thay đổi thông tin bằng câu lệnh UPDATE. Đây là câu lệnh thường được sử dụng khi người dùng chỉnh sửa hồ sơ, cập nhật thông tin sản phẩm hoặc thay đổi trạng thái đơn hàng.
Cập nhật tuổi của một người dùng:
UPDATE users
SET age = 26
WHERE id = 1;
Cập nhật nhiều cột cùng lúc:
UPDATE users
SET fullname = 'Nguyen Van B',
email = 'b@example.com'
WHERE id = 1;
Nên luôn sử dụng WHERE khi dùng UPDATE. Nếu bỏ điều kiện, toàn bộ dữ liệu trong bảng sẽ bị cập nhật.
Xóa dữ liệu
Câu lệnh DELETE dùng để xóa một hoặc nhiều bản ghi.
Xóa một người dùng theo ID:
DELETE FROM users
WHERE id = 5;
Xóa những người dùng dưới 18 tuổi:
DELETE FROM users
WHERE age < 18;
Trước khi thực hiện DELETE trên dữ liệu quan trọng, nên sao lưu cơ sở dữ liệu để tránh mất dữ liệu ngoài ý muốn.
Xóa toàn bộ dữ liệu trong bảng
Nếu muốn xóa tất cả dữ liệu nhưng vẫn giữ nguyên cấu trúc bảng:
TRUNCATE TABLE users;
TRUNCATE nhanh hơn DELETE khi cần xóa toàn bộ dữ liệu.
Xóa bảng
Khi không còn sử dụng bảng nữa, có thể xóa bằng:
DROP TABLE users;
Lưu ý rằng sau khi thực hiện, toàn bộ dữ liệu và cấu trúc bảng sẽ bị xóa hoàn toàn.
Xóa cơ sở dữ liệu
Để xóa một database:
DROP DATABASE website_demo;
Đây là thao tác không thể hoàn tác nếu không có bản sao lưu.
Lọc dữ liệu với WHERE
Điều kiện WHERE giúp truy vấn chính xác những dữ liệu cần thiết.
So sánh bằng
SELECT *
FROM users
WHERE age = 25;
So sánh lớn hơn
SELECT *
FROM users
WHERE age > 20;
So sánh nhỏ hơn
SELECT *
FROM users
WHERE age < 40;
Khác giá trị
SELECT *
FROM users
WHERE age != 30;
Nằm trong khoảng
SELECT *
FROM users
WHERE age BETWEEN 20 AND 30;
Nằm trong danh sách
SELECT *
FROM users
WHERE age IN (20, 25, 30);
Giá trị rỗng
SELECT *
FROM users
WHERE email IS NULL;
Kết hợp nhiều điều kiện
MySQL hỗ trợ các toán tử logic để tạo truy vấn linh hoạt.
Sử dụng AND
SELECT *
FROM users
WHERE age > 20
AND age < 30;
Sử dụng OR
SELECT *
FROM users
WHERE age = 18
OR age = 20;
Sử dụng NOT
SELECT *
FROM users
WHERE NOT age = 25;
Tìm kiếm bằng LIKE
LIKE rất hữu ích khi người dùng nhập từ khóa tìm kiếm.
Tìm tên bắt đầu bằng chữ "Nguyen":
SELECT *
FROM users
WHERE fullname LIKE 'Nguyen%';
Tìm tên kết thúc bằng chữ "An":
SELECT *
FROM users
WHERE fullname LIKE '%An';
Tìm tên có chứa chữ "Van":
SELECT *
FROM users
WHERE fullname LIKE '%Van%';
Sắp xếp theo nhiều cột
Bạn có thể kết hợp nhiều tiêu chí sắp xếp.
SELECT *
FROM users
ORDER BY age DESC, fullname ASC;
MySQL sẽ ưu tiên sắp xếp theo tuổi trước, sau đó mới đến tên.
Đếm số lượng bản ghi
Để biết bảng đang có bao nhiêu dữ liệu:
SELECT COUNT(*)
FROM users;
Đếm người dùng trên 18 tuổi:
SELECT COUNT(*)
FROM users
WHERE age >= 18;
Tính tổng, trung bình, lớn nhất và nhỏ nhất
MySQL hỗ trợ nhiều hàm thống kê.
Tổng:
SELECT SUM(age)
FROM users;
Trung bình:
SELECT AVG(age)
FROM users;
Giá trị lớn nhất:
SELECT MAX(age)
FROM users;
Giá trị nhỏ nhất:
SELECT MIN(age)
FROM users;
Các hàm này thường được dùng trong báo cáo, thống kê và dashboard quản trị.
Nhóm dữ liệu với GROUP BY
Khi cần thống kê dữ liệu theo từng nhóm, GROUP BY là câu lệnh không thể thiếu. Nó thường được sử dụng để đếm số lượng đơn hàng theo trạng thái, thống kê số bài viết theo chuyên mục hoặc tổng hợp doanh thu theo tháng.
Ví dụ đếm số người dùng theo độ tuổi:
SELECT age, COUNT(*) AS total
FROM users
GROUP BY age;
Kết quả sẽ trả về mỗi độ tuổi cùng số lượng người dùng tương ứng.
Lọc kết quả sau khi nhóm
Để lọc dữ liệu sau khi đã sử dụng GROUP BY, hãy dùng HAVING.
SELECT age, COUNT(*) AS total
FROM users
GROUP BY age
HAVING COUNT(*) > 2;
HAVING khác với WHERE ở chỗ nó hoạt động trên dữ liệu đã được nhóm.
Loại bỏ dữ liệu trùng lặp
Nếu chỉ muốn lấy các giá trị duy nhất, hãy sử dụng DISTINCT.
SELECT DISTINCT age
FROM users;
Câu lệnh trên chỉ hiển thị mỗi độ tuổi một lần dù có nhiều người dùng cùng tuổi.
Đổi tên cột bằng AS
Đặt bí danh giúp kết quả truy vấn dễ đọc hơn.
SELECT fullname AS ho_ten,
email AS dia_chi_email
FROM users;
AS chỉ thay đổi tên hiển thị trong kết quả, không làm thay đổi cấu trúc của bảng.
Sắp xếp kết hợp với giới hạn dữ liệu
Đây là cách rất phổ biến để lấy dữ liệu mới nhất hoặc nổi bật nhất.
SELECT *
FROM users
ORDER BY id DESC
LIMIT 5;
Ví dụ trên lấy 5 bản ghi được thêm gần nhất.
Đổi tên bảng
Khi cần thay đổi tên bảng:
RENAME TABLE users TO members;
Sau khi đổi tên, mọi câu lệnh truy vấn cần sử dụng tên bảng mới.
Thêm cột mới
Trong quá trình phát triển website, bạn thường cần bổ sung thêm trường dữ liệu.
ALTER TABLE users
ADD phone VARCHAR(20);
Sau câu lệnh này, bảng sẽ có thêm cột phone.
Sửa kiểu dữ liệu của cột
Nếu cần tăng độ dài hoặc thay đổi kiểu dữ liệu:
ALTER TABLE users
MODIFY fullname VARCHAR(255);
Việc thay đổi kiểu dữ liệu cần được thực hiện cẩn thận để tránh mất dữ liệu.
Đổi tên cột
MySQL hỗ trợ đổi tên cột mà không cần tạo lại bảng.
ALTER TABLE users
CHANGE phone mobile VARCHAR(20);
Sau khi thực hiện, tên cột phone sẽ được đổi thành mobile.
Xóa một cột
Nếu cột không còn sử dụng:
ALTER TABLE users
DROP COLUMN mobile;
Toàn bộ dữ liệu của cột đó sẽ bị xóa.
Tự động tăng giá trị với AUTO_INCREMENT
Thông thường khóa chính sẽ được cấu hình tự động tăng để mỗi bản ghi có một mã duy nhất.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100)
);
Mỗi lần thêm dữ liệu mới, MySQL sẽ tự động tạo giá trị ID tiếp theo.
Khóa chính là gì?
PRIMARY KEY là cột dùng để xác định duy nhất mỗi bản ghi trong bảng.
Ví dụ:
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);
Mỗi bảng chỉ nên có một khóa chính để đảm bảo tính toàn vẹn của dữ liệu.
Giá trị mặc định với DEFAULT
Bạn có thể khai báo giá trị mặc định khi người dùng không nhập dữ liệu.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100),
status INT DEFAULT 1
);
Nếu không truyền giá trị cho status, MySQL sẽ tự động gán bằng 1.
Không cho phép giá trị rỗng
NOT NULL giúp đảm bảo dữ liệu luôn được nhập.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL
);
Đây là cách thường dùng với các trường bắt buộc như họ tên, email hoặc mật khẩu.
Kiểm tra cấu trúc bảng
Trong quá trình làm việc, bạn nên kiểm tra lại cấu trúc bảng sau khi chỉnh sửa.
SHOW CREATE TABLE users;
Câu lệnh này hiển thị đầy đủ câu lệnh CREATE TABLE ban đầu, giúp kiểm tra kiểu dữ liệu, khóa chính, chỉ mục và các thuộc tính khác.
Xem phiên bản MySQL
Khi cần kiểm tra máy chủ đang sử dụng phiên bản nào:
SELECT VERSION();
Thông tin này rất hữu ích khi triển khai website lên máy chủ hoặc xử lý các lỗi liên quan đến sự khác biệt giữa các phiên bản MySQL.
Kết nối dữ liệu giữa nhiều bảng bằng JOIN
Trong các dự án thực tế, dữ liệu thường được chia thành nhiều bảng để tránh trùng lặp. Ví dụ, bảng người dùng, bảng đơn hàng và bảng sản phẩm sẽ được liên kết với nhau thông qua các khóa.
JOIN là nhóm câu lệnh giúp kết hợp dữ liệu từ nhiều bảng trong cùng một truy vấn.
INNER JOIN
INNER JOIN chỉ trả về những bản ghi có dữ liệu khớp ở cả hai bảng.
SELECT users.fullname, orders.total
FROM users
INNER JOIN orders
ON users.id = orders.user_id;
LEFT JOIN
LEFT JOIN lấy toàn bộ dữ liệu từ bảng bên trái, kể cả khi bảng bên phải không có dữ liệu tương ứng.
SELECT users.fullname, orders.total
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;
RIGHT JOIN
RIGHT JOIN hoạt động ngược lại với LEFT JOIN.
SELECT users.fullname, orders.total
FROM users
RIGHT JOIN orders
ON users.id = orders.user_id;
Trong đa số dự án website, INNER JOIN và LEFT JOIN được sử dụng phổ biến hơn RIGHT JOIN.
Sử dụng bí danh cho bảng
Khi câu lệnh JOIN dài hoặc có nhiều bảng, bí danh giúp truy vấn ngắn gọn và dễ đọc.
SELECT u.fullname, o.total
FROM users AS u
INNER JOIN orders AS o
ON u.id = o.user_id;
Việc đặt bí danh không ảnh hưởng đến dữ liệu, chỉ giúp câu lệnh rõ ràng hơn.
Sắp xếp kết quả sau khi JOIN
Bạn hoàn toàn có thể kết hợp ORDER BY sau JOIN.
SELECT u.fullname, o.total
FROM users u
INNER JOIN orders o
ON u.id = o.user_id
ORDER BY o.total DESC;
Tìm kiếm dữ liệu theo nhiều điều kiện
Trong thực tế, truy vấn thường phải kết hợp nhiều điều kiện khác nhau.
SELECT *
FROM users
WHERE age >= 18
AND fullname LIKE '%Nguyen%'
ORDER BY fullname ASC;
Câu lệnh trên lọc người dùng từ 18 tuổi trở lên, có tên chứa từ "Nguyen" và sắp xếp theo thứ tự bảng chữ cái.
Kiểm tra dữ liệu có tồn tại
Muốn biết một giá trị đã tồn tại hay chưa, có thể dùng EXISTS.
SELECT EXISTS(
SELECT 1
FROM users
WHERE email = 'admin@example.com'
);
Giá trị trả về là 1 nếu tồn tại và 0 nếu không tìm thấy.
Sao chép dữ liệu từ bảng khác
INSERT cũng có thể kết hợp với SELECT để sao chép dữ liệu.
INSERT INTO users_backup
SELECT *
FROM users;
Đây là cách nhanh để tạo bảng sao lưu hoặc chuyển dữ liệu.
Tạo bảng từ dữ liệu có sẵn
MySQL cho phép tạo bảng mới dựa trên kết quả truy vấn.
CREATE TABLE users_copy AS
SELECT *
FROM users;
Bảng mới sẽ chứa toàn bộ dữ liệu hiện có.
Xóa dữ liệu trùng lặp khi truy vấn
Kết hợp DISTINCT với nhiều cột.
SELECT DISTINCT fullname, age
FROM users;
Chỉ những cặp giá trị khác nhau mới được hiển thị.
Các toán tử so sánh thường dùng
| Toán tử | Ý nghĩa |
|---|---|
| = | Bằng |
| != hoặc | Khác |
| > | Lớn hơn |
| Nhỏ hơn | |
| >= | Lớn hơn hoặc bằng |
| Nhỏ hơn hoặc bằng | |
| LIKE | Tìm kiếm theo mẫu |
| IN | Nằm trong danh sách |
| BETWEEN | Nằm trong khoảng |
| IS NULL | Giá trị rỗng |
Những lỗi người mới thường gặp
Quên thêm điều kiện WHERE
Đây là lỗi phổ biến nhất. Khi UPDATE hoặc DELETE mà không có WHERE, toàn bộ dữ liệu trong bảng sẽ bị ảnh hưởng.
Viết sai tên bảng hoặc tên cột
Chỉ cần sai một ký tự, MySQL sẽ báo lỗi không tìm thấy bảng hoặc cột.
Không đặt dấu nháy cho chuỗi
Ví dụ đúng:
SELECT *
FROM users
WHERE fullname = 'Nguyen Van A';
Nếu bỏ dấu nháy đơn, MySQL sẽ hiểu đây là tên cột thay vì giá trị chuỗi.
Không sao lưu trước khi thao tác
Đối với dữ liệu thật, nên tạo bản sao lưu trước khi UPDATE hoặc DELETE số lượng lớn.
Không kiểm tra kết quả truy vấn
Một thói quen tốt là thực hiện SELECT với cùng điều kiện trước, sau đó mới UPDATE hoặc DELETE để chắc chắn rằng bạn đang tác động đúng dữ liệu mong muốn.
Kinh nghiệm học MySQL hiệu quả
- Thực hành trên một cơ sở dữ liệu mẫu thay vì chỉ đọc lý thuyết.
- Viết lại các câu lệnh nhiều lần để ghi nhớ cú pháp.
- Tập phân tích dữ liệu trước khi viết truy vấn.
- Làm quen với phpMyAdmin, MySQL Workbench hoặc dòng lệnh.
- Hiểu bản chất của dữ liệu thay vì học thuộc từng câu lệnh.
- Kết hợp MySQL với PHP hoặc ngôn ngữ lập trình bạn đang học để tạo các ví dụ thực tế.
Tổng kết
Các câu lệnh MySQL cơ bản là nền tảng mà bất kỳ lập trình viên hay quản trị website nào cũng nên nắm vững. Bắt đầu từ việc tạo cơ sở dữ liệu, xây dựng bảng, thêm dữ liệu, truy vấn, cập nhật và xóa bản ghi, bạn sẽ dần hiểu cách dữ liệu được tổ chức và vận hành trong một hệ thống thực tế.
Khi đã thành thạo những kiến thức cơ bản này, bạn có thể tiếp tục tìm hiểu các chủ đề nâng cao như Index, Transaction, View, Trigger, Stored Procedure, Foreign Key, tối ưu truy vấn và bảo mật cơ sở dữ liệu. Việc học theo từng bước, kết hợp thực hành thường xuyên sẽ giúp bạn sử dụng MySQL tự tin hơn trong mọi dự án phát triển website.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *