Khám phá chi tiết các thành phần quan trọng trong MySQL bao gồm: Câu lệnh, Mệnh đề, Biểu thức, Hàm, Toán tử, Liên kết và Tham chiếu. Bài viết cung cấp cái nhìn toàn diện, giúp bạn nắm vững cách sử dụng và ứng dụng từng yếu tố trong việc truy vấn và quản lý cơ sở dữ liệu, từ các lệnh cơ bản đến những kỹ thuật phức tạp. Tìm hiểu để tối ưu hóa hiệu suất và cải thiện khả năng xử lý dữ liệu của bạn trong MySQL.
1. Câu lệnh (Statement)
Câu lệnh là các câu lệnh SQL hoàn chỉnh được sử dụng để thao tác và quản lý cơ sở dữ liệu. Các câu lệnh thường kết thúc bằng dấu chấm phẩy ;
. Có nhiều loại câu lệnh SQL khác nhau, bao gồm:
- Câu lệnh thao tác dữ liệu (DML – Data Manipulation Language):
SELECT
: Truy vấn dữ liệu từ bảng.
INSERT
: Thêm dữ liệu mới vào bảng.
UPDATE
: Cập nhật dữ liệu hiện có trong bảng.
DELETE
: Xóa dữ liệu từ bảng.
- Câu lệnh định nghĩa dữ liệu (DDL – Data Definition Language):
CREATE TABLE
: Tạo một bảng mới.
ALTER TABLE
: Thay đổi cấu trúc của bảng.
DROP TABLE
: Xóa bảng.
- Câu lệnh điều khiển dữ liệu (DCL – Data Control Language):
GRANT
: Cấp quyền truy cập.
REVOKE
: Thu hồi quyền truy cập.
- Câu lệnh điều khiển giao tác (TCL – Transaction Control Language):
COMMIT
: Xác nhận một giao tác.
ROLLBACK
: Hoàn tác giao tác đang thực hiện.
2. Mệnh đề (Clause)
Mệnh đề là các thành phần con của câu lệnh SQL. Một mệnh đề cung cấp thêm điều kiện hoặc thông tin để chỉ định chính xác hơn những gì cần được thực thi trong câu lệnh SQL. Mệnh đề không thể tự tồn tại độc lập, chúng phải được sử dụng trong câu lệnh SQL. Một số mệnh đề phổ biến:
WHERE
: Được sử dụng để lọc kết quả dựa trên điều kiện cụ thể.
- Ví dụ:
SELECT * FROM users WHERE age > 30;
ORDER BY
: Sắp xếp kết quả trả về theo một cột cụ thể.
- Ví dụ:
SELECT * FROM users ORDER BY age DESC;
GROUP BY
: Nhóm các hàng có cùng giá trị trong một cột.
- Ví dụ:
SELECT department, COUNT(*) FROM employees GROUP BY department;
HAVING
: Được sử dụng với GROUP BY
để lọc kết quả sau khi nhóm.
- Ví dụ:
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
LIMIT
: Giới hạn số lượng kết quả trả về.
- Ví dụ:
SELECT * FROM users LIMIT 10;
Ví dụ minh họa:
SELECT name, age FROM users
WHERE age > 18
ORDER BY age DESC
LIMIT 5;
- Câu lệnh ở đây là
SELECT name, age FROM users WHERE age > 18 ORDER BY age DESC LIMIT 5;
.
- Các mệnh đề là:
WHERE age > 18
, ORDER BY age DESC
, và LIMIT 5
.
Tóm lại, câu lệnh là một câu SQL hoàn chỉnh, trong khi mệnh đề là các thành phần nhỏ hơn được sử dụng để cung cấp điều kiện hoặc bổ sung cho câu lệnh SQL.
3. Biểu thức (Expression)
Biểu thức là các tổ hợp của cột, hằng số, toán tử và hàm có thể được sử dụng để tính toán giá trị. Biểu thức có thể được sử dụng trong câu lệnh SELECT
, mệnh đề WHERE
, hoặc bất kỳ vị trí nào cần tính toán giá trị.
Ví dụ:
age + 10
: Là một biểu thức tính toán tuổi của một người cộng thêm 10.
CONCAT(first_name, ' ', last_name)
: Là biểu thức nối hai chuỗi.
salary * 1.1
: Tăng lương lên 10%.
4. Hàm (Function)
Hàm là các chức năng được MySQL cung cấp để thực hiện các phép tính hoặc thao tác cụ thể trên dữ liệu. Hàm được sử dụng trong các biểu thức và câu lệnh SQL. Có nhiều loại hàm khác nhau, như:
- Hàm toán học:
ABS()
, ROUND()
, CEIL()
, FLOOR()
.
- Ví dụ:
SELECT ROUND(123.456);
trả về 123.46
.
- Hàm chuỗi:
CONCAT()
, LENGTH()
, SUBSTRING()
.
- Ví dụ:
SELECT CONCAT('Hello', ' World');
trả về 'Hello World'
.
- Hàm ngày giờ:
NOW()
, DATE()
, YEAR()
.
- Ví dụ:
SELECT NOW();
trả về thời gian hiện tại.
- Hàm tổng hợp (Aggregate Functions):
COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
.
- Ví dụ:
SELECT AVG(salary) FROM employees;
tính lương trung bình của nhân viên.
5. Toán tử (Operator)
Toán tử là các ký hiệu hoặc từ khóa đặc biệt được sử dụng trong các biểu thức để thực hiện các phép toán, so sánh, hoặc logic. Có nhiều loại toán tử:
- Toán tử số học:
+
, -
, *
, /
, %
.
- Ví dụ:
SELECT salary * 1.2 FROM employees;
tăng lương lên 20%.
- Toán tử so sánh:
=
, !=
, >
, <
, >=
, <=
.
- Ví dụ:
SELECT * FROM users WHERE age >= 18;
chọn người dùng từ 18 tuổi trở lên.
- Toán tử logic:
AND
, OR
, NOT
.
- Ví dụ:
SELECT * FROM users WHERE age >= 18 AND city = 'Hanoi';
chọn người từ 18 tuổi trở lên và sống ở Hà Nội.
6. Liên kết (JOIN)
Liên kết (JOIN) là một kỹ thuật để kết hợp dữ liệu từ nhiều bảng dựa trên một cột chung. Có nhiều loại JOIN
trong MySQL:
- INNER JOIN: Chỉ trả về các hàng có giá trị chung ở cả hai bảng.
- LEFT JOIN: Trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải.
- RIGHT JOIN: Trả về tất cả các hàng từ bảng bên phải và các hàng khớp từ bảng bên trái.
- FULL JOIN: Trả về tất cả các hàng khi có sự khớp từ bất kỳ bảng nào (MySQL không hỗ trợ trực tiếp FULL JOIN, nhưng có thể giả lập).
SELECT users.name, orders.order_id
FROM users
INNER JOIN orders ON users.id = orders.user_id;
Câu lệnh này kết hợp dữ liệu từ hai bảng users
và orders
dựa trên cột chung user_id
.
7. Tham chiếu (Alias)
Tham chiếu (Alias) là cách tạm thời đặt tên khác cho bảng hoặc cột trong một truy vấn SQL để làm cho truy vấn dễ đọc hơn hoặc để rút gọn.
Ví dụ:
SELECT u.name, u.age FROM users u;
Ở đây, u
là tham chiếu của bảng users
, giúp truy vấn ngắn gọn hơn.
Hoặc:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
Ở đây, full_name
là tham chiếu cho cột kết quả của biểu thức CONCAT(first_name, ' ', last_name)
.