# 2.1. SELECT

Mệnh đề **SELECT** chỉ định danh sách các cột sẽ được trả về bởi truy vấn. Mặc dù nó xuất hiện đầu tiên trong câu lệnh, nhưng về mặt logic, các biểu thức trong mệnh đề này chỉ được thực thi ở giai đoạn cuối cùng. Mệnh đề **SELECT** có thể chứa các biểu thức biến đổi đầu ra, cũng như các hàm tổng hợp.

**<span style="mso-list: Ignore;">a)<span style="font-style: normal; font-variant: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';"> </span></span>Cú pháp:**

![](https://book.inetcloud.vn/uploads/images/gallery/2024-07/embedded-image-xzq0tsih.png)

**<span style="mso-list: Ignore;">b)<span style="font-style: normal; font-variant: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';"> </span></span>Ví dụ:**

Chọn tất cả các cột từ bảng "**table"**:

```mssql
SELECT *
FROM table
```

Thực thiện phép tính toán trên cột và thêm bí danh:

```mssql
SELECT add(col1,col2) as res, sqrt(col1) as root
FROM table
```

Trả về tổng số hàng trong bảng:

```mssql
SELECT count(*)
FROM table
```

**SELECT - \***

Chọn tất cả các cột từ bảng “**mat\_hang**”:

```mssql
SELECT *
FROM mat_hang
```

Biểu thức ngôi sao (\*) hoạt động như một ký tự đại diện (wildcard), chỉ định tất cả các cột từ một hoặc nhiều bảng trong truy vấn.

**SELECT - DISTINCT**

Chọn tất cả các mặt hàng duy nhất từ bảng "**mat\_hang".**

```mssql
SELECT DISTINCT *
FROM table
```

Mệnh đề **DISTINCT** có thể được sử dụng để chỉ trả về các hàng duy nhất trong kết quả – do đó, bất kỳ hàng trùng lặp nào cũng sẽ bị lọc ra.

<p class="callout info"><span class="" data-mention="Lưu ý:" id="bkmrk-l%C6%B0u-%C3%BD%3A" style="color: rgb(0, 0, 0);">**Lưu ý:** </span><span class="" data-mention="Các truy vấn bắt đầu bằng SELECT DISTINCT thực hiện việc loại bỏ các bản ghi trùng lặp, đây là một thao tác tốn kém tài nguyên. Do đó, chỉ sử dụng DISTINCT khi thực sự cần thiết." id="bkmrk-c%C3%A1c-truy-v%E1%BA%A5n-b%E1%BA%AFt-%C4%91%E1%BA%A7u">Các truy vấn bắt đầu bằng **SELECT DISTINCT** thực hiện việc loại bỏ các bản ghi trùng lặp, đây là một thao tác tốn kém tài nguyên. Do đó, chỉ sử dụng **DISTINCT** khi thực sự cần thiết.</span></p>

**SELECT – Hàm tổng hợp**

Trả về tổng số hàng trong bảng "**mat\_hang":**

```mssql
SELECT count(*)
FROM table
```

Trả về tổng số hàng trong bảng mat\_hang nhóm theo cột "**mat\_hang":**

```mssql
SELECT city, count(*)
FROM addresses
GROUP BY city;
```