I: Giới thiệu về SQL
Đây là bài đầu tiên trong seri về SQL này nên mình xin phép được nói qua một chút về khái niệm SQL:
- SQL (Structured Query Language) là ngôn ngữ lập trình được thiết kế để quản lý và thao tác dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ. Nó là một ngôn ngữ tiêu chuẩn được sử dụng bởi các hệ thống quản lý cơ sở dữ liệu (DBMS) có thể tạo, sửa đổi và truy vấn cơ sở dữ liệu.
- SQL được sử dụng để thực hiện nhiều tác vụ khác nhau, chẳng hạn như:
- Create và update struct của các đối tượng cơ sở dữ liệu, chẳng hạn như table và index
- Insert, update , delete dữ liệu trong cơ sở dữ liệu
- Lấy dữ liệu từ cơ sở dữ liệu
- Tạo view và stored procedures
- Setting permissions trên các đối tượng cơ sở dữ liệu
==> SQL là một ngôn ngữ mạnh mẽ được sử dụng rộng rãi trong ngành để quản lý và thao tác dữ liệu trong cơ sở dữ liệu. Đó là một kỹ năng có giá trị cho bất kỳ ai làm việc với dữ liệu, dù là nhà khoa học dữ liệu, nhà phân tích dữ liệu hay quản trị viên cơ sở dữ liệu.
II: Câu lệnh SELECT
Câu lệnh SELECT
là một thao tác SQL cơ bản được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu. Đây là một trong những câu lệnh SQL được sử dụng phổ biến nhất và nó được dùng để chọn các cột hoặc hàng dữ liệu cụ thể từ một bảng.
Đây là cú pháp cơ bản của câu lệnh SELECT
:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Mệnh đề SELECT
chỉ định các cột mà bạn muốn truy xuất từ bảng. Bạn có thể chỉ định một hoặc nhiều cột, được phân tách bằng dấu ,
.
Mệnh đề FROM
chỉ định tên của bảng mà bạn muốn lấy dữ liệu từ đó.
Mệnh đề WHERE
là optional và được sử dụng để chỉ định một điều kiện phải được đáp ứng để một hàng được đưa vào tập kết quả. Nếu bạn bỏ qua mệnh đề WHERE
, tất cả các hàng trong table sẽ được đưa vào tập kết quả.
Dưới đây là một ví dụ về câu lệnh SELECT
truy xuất tất cả các hàng từ bảng nhân viên, chỉ chọn các cột first_name
, last_name
và salary
:
SELECT first_name, last_name, salary
FROM employees;
Câu lệnh này sẽ trả về một tập hợp kết quả chứa các cột first_name
, last_name
và salary
cho tất cả các hàng trong table employees
.
III: Câu lệnh WHERE
Trong SQL, mệnh đề WHERE
được sử dụng để lọc kết quả của câu lệnh SELECT
, UPDATE
, DELETE
hoặc SELECT INTO
. Nó chỉ định một điều kiện phải được đáp ứng để một hàng được đưa vào tập kết quả hoặc bị ảnh hưởng bởi câu lệnh.
Mệnh đề WHERE là optional và được sử dụng để chỉ định một điều kiện phải được đáp ứng để một hàng được đưa vào tập kết quả. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các hàng trong table sẽ được đưa vào tập kết quả.
Đây là một ví dụ về câu lệnh SELECT
với mệnh đề WHERE
:
SELECT * FROM employees WHERE salary > 50000;
Câu lệnh này sẽ trả về tất cả các hàng từ bảng employees
có cột salary
lớn hơn 50000.
Bạn có thể sử dụng các toán tử so sánh khác nhau trong mệnh đề WHERE
, chẳng hạn như =, <, >, <= và >=, để chỉ định điều kiện. Bạn cũng có thể sử dụng các toán tử logic như AND, OR và NOT để kết hợp nhiều điều kiện.
Dưới đây là một ví dụ về câu lệnh SELECT
với nhiều điều kiện:
SELECT * FROM employees WHERE salary > 50000 AND department = 'Sales';
Câu lệnh này sẽ trả về tất cả các hàng từ bảng employees
có cột salary
lớn hơn 50000 và cột department
là Sales
.
IV: Câu lệnh ORDER BY
Trong SQL, mệnh đề ORDER BY
được sử dụng để sắp xếp kết quả của câu lệnh SELECT
, UPDATE
, DELETE
hoặc SELECT INTO
. Nó chỉ định thứ tự sắp xếp các hàng trong tập hợp kết quả.
Mệnh đề ORDER BY
là tùy chọn và nếu nó bị bỏ qua, thứ tự của các hàng trong tập hợp kết quả sẽ không được xác định.
Đây là cú pháp cơ bản của mệnh đề ORDER BY
:
SELECT column1, column2, ... FROM table_name ORDER BY column1 ASC|DESC, column2 ASC|DESC, ...;
Từ khóa ASC
chỉ định rằng các hàng phải được sắp xếp theo thứ tự tăng dần (từ thấp nhất đến cao nhất). Từ khóa DESC
chỉ định rằng các hàng phải được sắp xếp theo thứ tự giảm dần (từ cao nhất đến thấp nhất).
Bạn có thể chỉ định một hoặc nhiều cột để sắp xếp, phân tách bằng dấu phẩy. Nếu bạn chỉ định nhiều cột, các hàng sẽ được sắp xếp đầu tiên theo cột đầu tiên, sau đó theo cột thứ hai, v.v.
Đây là một ví dụ về câu lệnh SELECT
với mệnh đề ORDER BY
:
SELECT * FROM employees ORDER BY salary DESC;
Câu lệnh này sẽ trả về tất cả các hàng từ bảng employees
, được sắp xếp theo thứ tự giảm dần theo cột salary
.
Bạn cũng có thể sử dụng mệnh đề ORDER BY
với mệnh đề LIMIT
để truy xuất một số hàng cụ thể từ tập hợp kết quả, được sắp xếp theo một thứ tự cụ thể.
SELECT * FROM employees ORDER BY salary DESC LIMIT 10;
Câu lệnh này sẽ trả về 10 record trên cùng từ bảng employees
, được sắp xếp theo thứ tự giảm dần theo cột salary
.
V: Câu lệnh LIMIT
Trong SQL, mệnh đề LIMIT
được sử dụng để hạn chế số lượng hàng được trả về bởi câu lệnh SELECT
, UPDATE
, DELETE
hoặc SELECT INTO
. Nó thường được sử dụng cùng với mệnh đề ORDER BY
để truy xuất một số hàng cụ thể từ một tập hợp kết quả.
Đây là cú pháp cơ bản của mệnh đề LIMIT
:
SELECT column1, column2, ... FROM table_name ORDER BY column1 ASC|DESC LIMIT number_of_rows;
Mệnh đề LIMIT
theo sau mệnh đề ORDER BY
và chỉ định số lượng hàng tối đa sẽ trả về.
Đây là một ví dụ về câu lệnh SELECT
với mệnh đề LIMIT
:
SELECT * FROM employees ORDER BY salary DESC LIMIT 10;
Câu lệnh này sẽ trả về 10 hàng trên cùng từ bảng employees
, được sắp xếp theo thứ tự giảm dần theo cột salary
.
Bạn cũng có thể sử dụng mệnh đề LIMIT
với giá trị offset
để bỏ qua một số hàng nhất định trước khi bắt đầu trả lại hàng. Cú pháp cho điều này là:
SELECT column1, column2, ... FROM table_name ORDER BY column1 ASC|DESC LIMIT offset, number_of_rows;
Dưới đây là một ví dụ về câu lệnh SELECT
với mệnh đề LIMIT
và giá trị offset
:
SELECT * FROM employees ORDER BY salary DESC LIMIT 10, 10;
Câu lệnh này sẽ bỏ qua 10 hàng trên cùng và trả về 10 hàng tiếp theo từ bảng employees
, được sắp xếp theo thứ tự giảm dần theo cột salary
.
VI: Câu lệnh GROUP BY & HAVING
Trong SQL, mệnh đề GROUP BY
được sử dụng để nhóm các kết quả của câu lệnh SELECT
dựa trên một hoặc nhiều cột. Nó thường được sử dụng cùng với các hàm tổng hợp như SUM
, AVG
, MAX
, MIN
và COUNT
để tính giá trị cho từng nhóm.
Đây là cú pháp cơ bản của mệnh đề GROUP BY
:
SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...;
Mệnh đề GROUP BY
theo sau mệnh đề WHERE
và đứng trước mệnh đề ORDER BY
. Nó chỉ định các cột mà bạn muốn nhóm các kết quả theo.
Đây là một ví dụ về câu lệnh SELECT
với mệnh đề GROUP BY
:
SELECT department, COUNT(*) FROM employees GROUP BY department;
Câu lệnh này sẽ trả về số lượng nhân viên
trong mỗi department
. Kết quả sẽ được nhóm theo cột department
.
Bạn có thể sử dụng mệnh đề HAVING
để chỉ định điều kiện cho các nhóm. Mệnh đề HAVING
hoạt động giống như mệnh đề WHERE, nhưng nó được áp dụng cho các nhóm chứ không phải cho các hàng riêng lẻ.
Đây là một ví dụ về câu lệnh SELECT
với mệnh đề GROUP BY
và HAVING
:
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
Câu lệnh này sẽ trả về số lượng nhân viên
trong mỗi department
có hơn 5 nhân viên
. Kết quả sẽ được nhóm theo cột department
.
VII: Tổng kết
Trên đây mình đã giới thiệu với các bạn tổng quan về SQL
và lý thuyết + cú pháp + ví dụ
về các câu lệnh truy vấn đơn giản như select
, where
, order by
, limit
, group by
, having
. Đây là những kiến thức đầu tiên để có thể làm quen và trên con đường trở thành master SQL . Trong bài viết sau, mình sẽ giới thiệu tới mọi người tất tần tật về JOIN
là những bước đi tiếp theo để có thể tự tin làm việc với SQL
!