> For the complete documentation index, see [llms.txt](https://learnsql.gitbook.io/lernmysql/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learnsql.gitbook.io/lernmysql/welcome-to-the-mysql-tutorial/menh-de-where.md).

# Mệnh đề WHERE

**Mệnh đề `WHERE` được dùng để thiết lập điều kiện truy xuất.**

**Mệnh đề `WHERE`**

Để truy xuất dữ liệu trong bảng theo các điều kiện nào đó, một mệnh đề `WHERE` có thể được thêm vào câu lệnh `SELECT`.

**Cú pháp**

Cú pháp mệnh đề `WHERE` trong câu lệnh `SELECT` như sau:

> `SELECT tên_cột FROM tên_bảng`\
> `WHERE tên_cột phép_toán giá_trị`

Trong mệnh đề `WHERE`, các phép toán được sử dụng là

> **`Phép toán      Mô tả`**\
> `=              So sánh bằng`\
> `<>             So sánh không bằng`\
> `>              Lớn hơn`\
> `<              Nhỏ hơn`\
> `>=             Lớn hơn hoặc bằng`\
> `<=             Nhỏ hơn hoặc bằng`\
> `BETWEEN        Nằm giữa một khoảng`\
> `LIKE           So sánh mẫu chuỗi`

Lưu ý: Trong một số phiên bản của SQL, phép toán **<>** có thể được viết dưới dạng **!=**

**Sử dụng mệnh đề `WHERE`**

Để lấy danh sách những người sống ở thành phố **Sandnes**, ta sử dụng mệnh đề `WHERE` trong câu lệnh `SELECT` như sau:

> `SELECT * FROM Persons`\
> `WHERE City = 'Sandnes'`

Bảng **Persons**:

| LastName  | FirstName | Address      | City      | Year |
| --------- | --------- | ------------ | --------- | ---- |
| Hansen    | Ola       | Timoteivn 10 | Sandnes   | 1951 |
| Svendson  | Tove      | Borgvn 23    | Sandnes   | 1978 |
| Svendson  | Stale     | Kaivn 18     | Sandnes   | 1980 |
| Pettersen | Kari      | Storgt 20    | Stavanger | 1960 |

Kết quả trả về:

| LastName | FirstName | Address      | City    | Year |
| -------- | --------- | ------------ | ------- | ---- |
| Hansen   | Ola       | Timoteivn 10 | Sandnes | 1951 |
| Svendson | Tove      | Borgvn 23    | Sandnes | 1978 |
| Svendson | Stale     | Kaivn 18     | Sandnes | 1980 |

**Sử dụng dấu nháy**

Lưu ý rằng ở ví dụ trên ta đã sử dụng hai dấu nháy đơn (**'**) bao quanh giá trị điều kiện 'Sandnes'.

SQL sử dụng dấu nháy đơn bao quanh các giá trị ở dạng chuỗi văn bản (text). Nhiều hệ CSDL còn cho phép sử dụng dấu nháy kép (**"**). Các giá trị ở dạng số không dùng dấu nháy để bao quanh.

Với dữ liệu dạng chuỗi văn bản:

> Câu lệnh đúng:\
> `SELECT * FROM Persons WHERE FirstName = 'Tove'`
>
> Câu lệnh sai:\
> `SELECT * FROM Persons WHERE FirstName = Tove`

Với dữ liệu dạng số:

> Câu lệnh đúng:\
> `SELECT * FROM Persons WHERE Year > 1965`
>
> Câu lệnh sai:\
> `SELECT * FROM Persons WHERE Year > '1965'`

**Phép toán điều kiện `LIKE`**

Phép toán LIKE được dùng để tìm kiếm một chuỗi mẫu văn bản trên một cột.

**Cú pháp**

Cú pháp của phép toán LIKE như sau:

> `SELECT tên_cột FROM tên_bảng`\
> `WHERE tên_cột LIKE mẫu`

Một ký hiệu **%** có thể được sử dụng để định nghĩa các ký tự đại diện. **%** có thể được đặt trước và/hoặc sau mẫu.

**Sử dụng `LIKE`**

Câu lệnh SQL sau sẽ trả về danh sách những người có tên bắt đầu bằng chữ **O**:

> `SELECT * FROM Persons`\
> `WHERE FirstName LIKE 'O%'`

Câu lệnh SQL sau sẽ trả về danh sách những người có tên kết thúc bằng chữ **a**:

> `SELECT * FROM Persons`\
> `WHERE FirstName LIKE '%a'`

Câu lệnh SQL sau sẽ trả về danh sách những người có tên kết chứa chuỗi **la**:

> `SELECT * FROM Persons`\
> `WHERE FirstName LIKE '%la%'`
