# SQL và cách sử dụng với relational database

Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn ngữ lập trình phục vụ việc lưu trữ và xử lý thông tin trong cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ lưu trữ thông tin dưới dạng bảng có các hàng và cột đại diện cho những thuộc tính dữ liệu và nhiều mối quan hệ khác nhau giữa các giá trị dữ liệu. Bạn có thể sử dụng các câu lệnh SQL để lưu trữ, cập nhật, loại bỏ, tìm kiếm và truy xuất thông tin từ cơ sở dữ liệu. Bạn cũng có thể sử dụng SQL để duy trì và tối ưu hóa hiệu suất cơ sở dữ liệu.

### Tại sao SQL lại quan trọng? <a href="#seo-faq-pairs-why-is-sql-important" id="seo-faq-pairs-why-is-sql-important"></a>

Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn ngữ truy vấn phổ biến thường được sử dụng trong tất cả các loại ứng dụng. Các nhà phân tích và phát triển dữ liệu tìm hiểu và sử dụng SQL do ngôn ngữ này tích hợp hiệu quả với nhiều ngôn ngữ lập trình khác nhau. Ví dụ: họ có thể nhúng truy vấn SQL với ngôn ngữ lập trình Java để xây dựng ứng dụng xử lý dữ liệu hiệu năng cao có các hệ thống cơ sở dữ liệu SQL chính như Oracle hoặc MS SQL Server. SQL cũng khá dễ tìm hiểu do nó sử dụng những từ khóa tiếng Anh phổ biến trong các câu lệnh

#### **Lịch sử của SQL**

SQL ra đời vào những năm 1970 dựa trên mô hình dữ liệu quan hệ. Ban đầu nó được gọi là ngôn ngữ truy vấn tiếng Anh có cấu trúc (SEQUEL). Thuật ngữ này sau đó được rút ngắn thành SQL. Oracle, trước đây được gọi là Relational Software, đã trở thành nhà cung cấp đầu tiên mang đến một hệ thống quản lý cơ sở dữ liệu quan hệ SQL thương mại.

### Một hệ thống SQL gồm những thành phần gì? <a href="#seo-faq-pairs-what-are-the-components-of-a-sql-system" id="seo-faq-pairs-what-are-the-components-of-a-sql-system"></a>

Hệ thống quản lý cơ sở dữ liệu quan hệ sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) để lưu trữ và quản lý dữ liệu. Hệ thống này lưu trữ nhiều bảng cơ sở dữ liệu có liên quan đến nhau. MS SQL Server, MySQL hoặc MS Access là những ví dụ về hệ thống quản lý cơ sở dữ liệu quan hệ. Một hệ thống như vậy có các thành phần sau.&#x20;

#### **Bảng SQL**

Bảng SQL là phần tử cơ bản của cơ sở dữ liệu quan hệ. Bảng cơ sở dữ liệu SQL bao gồm các hàng và cột. Kỹ sư cơ sở dữ liệu tạo ra các mối quan hệ giữa nhiều bảng cơ sở dữ liệu để tối ưu hóa không gian kho lưu trữ dữ liệu.

Giả sử kỹ sư cơ sở dữ liệu tạo một bảng SQL cho các sản phẩm trong cửa hàng:&#x20;

| **ID sản phẩm** | **Tên sản phẩm** | **ID màu** |
| --------------- | ---------------- | ---------- |
| 0001            | Đệm              | Màu 1      |
| 0002            | Gối              | Màu 2      |

Sau đó, kỹ sư cơ sở dữ liệu liên kết bảng sản phẩm với bảng màu có *ID màu:*

| **ID màu** | **Tên màu**  |
| ---------- | ------------ |
| Màu 1      | Màu xanh lam |
| Màu 2      | Màu đỏ       |

#### **Câu lệnh SQL**

Câu lệnh SQL, hoặc truy vấn SQL, là các lệnh hướng dẫn hợp lệ mà hệ thống quản lý cơ sở dữ liệu quan hệ hiểu được. Nhà phát triển phần mềm xây dựng các câu lệnh SQL bằng nhiều phần tử ngôn ngữ SQL khác nhau. Phần tử ngôn ngữ SQL là các thành phần như mã định danh, biến và điều kiện tìm kiếm tạo thành một câu lệnh SQL đúng.

Giả sử câu lệnh SQL sau sử dụng lệnh SQL INSERT để lưu trữ *Đệm thương hiệu A có giá 499 USD* vào bảng có tên *Mattress\_table* với các cột tên *brand\_name* và *cost:*

INSERT INTO *Mattress\_table (brand\_name, cost)*

VALUES(‘A’,’499’);

#### **Quy trình được lưu trữ**

Quy trình được lưu trữ là tập hợp bao gồm một hoặc nhiều câu lệnh SQL được lưu trữ trong cơ sở dữ liệu quan hệ. Nhà phát triển phần mềm sử dụng các quy trình được lưu trữ để cải thiện hiệu quả và hiệu suất. Ví dụ: họ có thể tạo một quy trình được lưu trữ để cập nhật bảng bán hàng thay vì viết cùng một câu lệnh SQL trong nhiều ứng dụng khác nhau.&#x20;

### SQL hoạt động như thế nào? <a href="#seo-faq-pairs-how-does-sql-work" id="seo-faq-pairs-how-does-sql-work"></a>

Việc triển khai ngôn ngữ truy vấn có cấu trúc (SQL) liên quan đến một máy chủ xử lý truy vấn cơ sở dữ liệu và trả về kết quả. Quá trình SQL đi qua một số thành phần phần mềm, bao gồm những thành phần sau.&#x20;

#### **Trình phân tích cú pháp**

Trình phân tích cú pháp bắt đầu bằng cách token hóa hoặc thay thế một số từ trong câu lệnh SQL bằng các ký hiệu đặc biệt. Sau đó, nó sẽ kiểm tra câu lệnh để tìm kiếm những yếu tố sau:

***Tính đúng đắn***

Trình phân tích cú pháp xác minh rằng câu lệnh SQL tuân theo ngữ nghĩa SQL, hay các quy tắc, đảm bảo tính đúng đắn của câu lệnh truy vấn. Ví dụ: trình phân tích cú pháp kiểm tra xem lệnh SQL có kết thúc bằng dấu chấm phẩy hay không. Nếu thiếu dấu chấm phẩy, trình phân tích cú pháp sẽ trả về lỗi.

***Quyền hạn***

Trình phân tích cú pháp cũng xác thực rằng người dùng đang chạy truy vấn có quyền cần thiết để thao tác với dữ liệu tương ứng. Ví dụ: chỉ người dùng quản trị mới có quyền xóa dữ liệu.&#x20;

#### **Công cụ quan hệ**

Công cụ quan hệ, hay bộ xử lý truy vấn, tạo kế hoạch truy xuất, ghi hoặc cập nhật dữ liệu tương ứng theo cách hiệu quả nhất. Ví dụ: công cụ này kiểm tra các truy vấn tương tự, sử dụng lại các phương pháp thao tác dữ liệu trước đó hoặc tạo một phương pháp mới. Công cụ quan hệ viết kế hoạch trong mã byte, một dạng biểu diễn trung cấp của câu lệnh SQL. Cơ sở dữ liệu quan hệ sử dụng mã byte để thực hiện tìm kiếm và điều chỉnh cơ sở dữ liệu một cách hiệu quả.&#x20;

#### **Công cụ lưu trữ**

Công cụ lưu trữ, hoặc công cụ cơ sở dữ liệu, là thành phần phần mềm xử lý mã byte và chạy câu lệnh SQL dự định. Công cụ này đọc và lưu trữ dữ liệu trong các tệp cơ sở dữ liệu trên ổ đĩa lưu trữ vật lý. Sau khi hoàn tất, công cụ lưu trữ trả về kết quả cho ứng dụng yêu cầu.

### &#x20;<a href="#seo-faq-pairs-what-are-sql-commands" id="seo-faq-pairs-what-are-sql-commands"></a>

### Tiêu chuẩn SQL là gì? <a href="#seo-faq-pairs-what-are-sqlstandards" id="seo-faq-pairs-what-are-sqlstandards"></a>

Tiêu chuẩn SQL là tập hợp các hướng dẫn được quy định chính thức về ngôn ngữ truy vấn có cấu trúc (SQL). Viện tiêu chuẩn quốc gia hoa kỳ (ANSI) và Tổ chức tiêu chuẩn hóa quốc tế (ISO) đã thông qua các tiêu chuẩn SQL vào năm 1986. Nhà cung cấp phần mềm sử dụng các tiêu chuẩn SQL theo ANSI để xây dựng phần mềm cơ sở dữ liệu SQL cho nhiều nhà phát triển.

### Hành động đưa SQL vào là gì? <a href="#seo-faq-pairs-what-is-sql-injection" id="seo-faq-pairs-what-is-sql-injection"></a>

Hành động đưa SQL vào là một hình thức tấn công mạng liên quan đến việc đánh lừa cơ sở dữ liệu bằng các truy vấn SQL. Tin tặc đưa SQL vào để truy xuất, điều chỉnh hoặc phá hoại dữ liệu trong cơ sở dữ liệu SQL. Ví dụ: chúng có thể điền một truy vấn SQL thay vì tên của một người vào trong biểu mẫu gửi đi để thực hiện tấn công đưa SQL vào.

### MySQL là gì? <a href="#seo-faq-pairs-what-is-mysql" id="seo-faq-pairs-what-is-mysql"></a>

MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở do Oracle cung cấp. Nhà phát triển có thể tải xuống và sử dụng MySQL mà không phải trả phí cấp phép. Họ có thể cài đặt MySQL trên nhiều hệ điều hành hoặc máy chủ đám mây khác nhau. MySQL là một hệ thống cơ sở dữ liệu phổ biến cho các ứng dụng web.&#x20;

#### **SQL so với MySQL**

Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn ngữ tiêu chuẩn để tạo và thao tác với cơ sở dữ liệu. MySQL là một chương trình cơ sở dữ liệu quan hệ sử dụng các truy vấn SQL. Các lệnh SQL được quy định theo tiêu chuẩn quốc tế, còn phần mềm MySQL thì được nâng cấp và cải tiến liên tục.

### NoSQL là gì? <a href="#seo-faq-pairs-what-is-nosql" id="seo-faq-pairs-what-is-nosql"></a>

[NoSQL](https://aws.amazon.com/nosql/) là cơ sở dữ liệu phi quan hệ không sử dụng bảng để lưu trữ dữ liệu. Nhà phát triển lưu trữ thông tin trong nhiều loại cơ sở dữ liệu NoSQL khác nhau, bao gồm đồ thị, tài liệu và dạng khóa-giá trị. Cơ sở dữ liệu NoSQL rất phổ biến đối với các ứng dụng hiện đại nhờ khả năng thay đổi quy mô theo chiều ngang. Thay đổi quy mô theo chiều ngang tức là tăng khả năng xử lý bằng cách bổ sung thêm nhiều máy tính chạy phần mềm NoSQL.

#### **SQL so với NoSQL**

Ngôn ngữ truy vấn có cấu trúc (SQL) cung cấp một ngôn ngữ thao tác dữ liệu thống nhất, tuy nhiên việc triển khai NoSQL lại phụ thuộc vào nhiều công nghệ khác nhau. Nhà phát triển sử dụng SQL cho các ứng dụng giao dịch và phân tích, trong khi NoSQL lại phù hợp cho các ứng dụng phản hồi, thiên về mức sử dụng.&#x20;

### Máy chủ SQL là gì? <a href="#seo-faq-pairs-what-is-a-sql-server" id="seo-faq-pairs-what-is-a-sql-server"></a>

SQL Server là tên chính thức của hệ thống quản lý cơ sở dữ liệu quan hệ của Microsoft có thể thao tác dữ liệu với SQL. MS SQL Server có một số phiên bản và mỗi phiên bản đều được thiết kế dành cho các khối lượng công việc và yêu cầu cụ thể.

## Cách sử dụng relational database

{% content-ref url="sql-va-cach-su-dung-voi-relational-database/lenh-sql" %}
[lenh-sql](https://vick7-education.gitbook.io/freshforfresh/database/sql-va-cach-su-dung-voi-relational-database/lenh-sql)
{% endcontent-ref %}

{% content-ref url="sql-va-cach-su-dung-voi-relational-database/join-trong-sql" %}
[join-trong-sql](https://vick7-education.gitbook.io/freshforfresh/database/sql-va-cach-su-dung-voi-relational-database/join-trong-sql)
{% endcontent-ref %}

{% content-ref url="sql-va-cach-su-dung-voi-relational-database/group-by-trong-sql" %}
[group-by-trong-sql](https://vick7-education.gitbook.io/freshforfresh/database/sql-va-cach-su-dung-voi-relational-database/group-by-trong-sql)
{% endcontent-ref %}

{% content-ref url="sql-va-cach-su-dung-voi-relational-database/order-by-trong-sql" %}
[order-by-trong-sql](https://vick7-education.gitbook.io/freshforfresh/database/sql-va-cach-su-dung-voi-relational-database/order-by-trong-sql)
{% endcontent-ref %}

{% content-ref url="sql-va-cach-su-dung-voi-relational-database/truy-van-con-subquery-trong-sql-server" %}
[truy-van-con-subquery-trong-sql-server](https://vick7-education.gitbook.io/freshforfresh/database/sql-va-cach-su-dung-voi-relational-database/truy-van-con-subquery-trong-sql-server)
{% endcontent-ref %}
