Các Câu Lệnh MySQL Cơ Bản Cho Người Mới

Các Câu Lệnh MySQL Cơ Bản Cho Người Mới

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.

Các Câu Lệnh MySQL Cơ Bản Cho Người Mới

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
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Chia sẻ nội dung đánh giá của bạn về Các Câu Lệnh MySQL Cơ Bản Cho Người Mới
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Đăng ký tư vấn thiết kế website
Tìm hiểu 1 năm không bằng lắng nghe 1 câu tư vấn