MySQL Aliases

AS dùng để đặt tên tạm (alias) cho cột hoặc bảng.

Cú pháp:

SELECT column_name AS alias_name
FROM table_name;

Ví dụ: đặt tên cột tạm thời để dễ đọc kết quả.

SELECT order_id AS id, price_usd AS revenue
FROM orders
LIMIT 10;

MySQL JOIN

JOIN dùng để kết hợp dữ liệu từ nhiều bảng dựa trên khóa liên kết.

Cú pháp:

SELECT a.col, b.col
FROM table_a a
JOIN table_b b ON a.key = b.key;

Ví dụ: nối phiên truy cập với đơn hàng.

SELECT s.website_session_id, s.created_at, o.order_id
FROM website_sessions s
JOIN orders o ON s.website_session_id = o.website_session_id
LIMIT 10;

MySQL LEFT JOIN/RIGHT JOIN

LEFT JOIN giữ toàn bộ dòng của bảng trái, bảng phải khớp thì lấy, không khớp thì NULL.

Cú pháp:

SELECT a.col, b.col
FROM table_a a
LEFT JOIN table_b b ON a.key = b.key;

Ví dụ: phiên truy cập có/không có đơn hàng.

SELECT s.website_session_id, o.order_id
FROM website_sessions s
LEFT JOIN orders o ON s.website_session_id = o.website_session_id
LIMIT 10;

MySQL GROUP BY

GROUP BY nhóm dữ liệu để tính tổng hợp theo từng nhóm.

Cú pháp:

SELECT col, COUNT(*)
FROM table_name
GROUP BY col;

Ví dụ: đếm số đơn theo sản phẩm chính.

SELECT primary_product_id, COUNT(*) AS total_orders
FROM orders
GROUP BY primary_product_id;

MySQL HAVING

HAVING lọc dữ liệu sau khi đã GROUP BY.

Cú pháp:

SELECT col, COUNT(*)
FROM table_name
GROUP BY col
HAVING COUNT(*) > n;

Ví dụ: chỉ lấy sản phẩm có hơn 500 đơn.

SELECT primary_product_id, COUNT(*) AS total_orders
FROM orders
GROUP BY primary_product_id
HAVING COUNT(*) > 500;

MySQL CASE

CASE dùng để tạo giá trị có điều kiện.

Cú pháp:

SELECT CASE WHEN condition THEN value1 ELSE value2 END AS alias
FROM table_name;

Ví dụ: phân loại đơn hàng theo giá trị.

SELECT order_id,
       CASE
         WHEN price_usd >= 100 THEN 'High'
         ELSE 'Low'
       END AS order_value_group
FROM orders
LIMIT 10;

MySQL IF

IF dùng để trả về giá trị theo điều kiện đơn giản (dạng if-else).

Cú pháp:

SELECT IF(condition, value_if_true, value_if_false) AS alias
FROM table_name;

Ví dụ: gắn nhãn đơn hàng cao/thấp theo giá trị.

SELECT order_id,
       IF(price_usd >= 100, 'High', 'Low') AS order_value_group
FROM orders
LIMIT 10;

MySQL Comments

Dùng để ghi chú trong SQL, không ảnh hưởng kết quả.

Cú pháp:

-- comment một dòng
/* comment nhiều dòng */

Ví dụ: ghi chú truy vấn.

-- Lấy 5 phiên đầu tiên
SELECT website_session_id, created_at
FROM website_sessions
LIMIT 5;

MySQL Operators

Toán tử so sánh và logic thường dùng: =, <>, >, <, >=, <=, AND, OR.

Cú pháp:

WHERE column1 >= 10 AND column2 <> 'test'

Ví dụ: lọc đơn hàng giá trị cao và không thuộc sản phẩm 1.

SELECT order_id, price_usd
FROM orders
WHERE price_usd >= 80
  AND primary_product_id <> 1;