[Tài liệu học SQL] Phần 1 – SQL là gì? Tổng quan về SQL cho người mới

Đối với bất kỳ loại nghề nghiệp nào liên quan đến CNTT, bạn đều phải có kiến thức, kỹ năng, kinh nghiệm và chứng chỉ cần thiết về chuyên môn kỹ thuật và ngôn ngữ lập trình được chỉ định. Để tích lũy kinh nghiệm và nhận được mức lương hấp dẫn trong một số công việc công nghệ như kỹ thuật dữ liệu, phân tích dữ liệu, v.v., bạn cần phải thu thập bí quyết và đào tạo thực hành về một trong những ngôn ngữ lập trình quan trọng nhất - SQL!

Trong phần đầu tiên của bộ tài liệu tự học SQL được biên soạn bởi Datapot, các bạn sẽ được giới thiệu về những khái niệm cơ bản nhất và cũng rất quan trọng đối với một người mới học SQL cần nắm được.

Giới thiệu chung

Ngôn ngữ truy vấn SQL là gì?

SQL là viết tắt của “Structured Query Language” - Ngôn ngữ truy vấn có cấu trúc.

Cách đọc:

Các bạn có thể đọc SQL là “SQL” hoặc “sequel”.

SQL giúp bạn quản lý và thao tác với cơ sở dữ liệu.

Lược qua lịch sử hình thành SQL

Vào năm 1970, SQL được tạo ra bởi Donald D. Chamberlin và Raymond F. Boyce.

Ban đầu SQL được gọi là “SEQUEL” (Structured English Query Languaged) và được thiết kế nhằm truy vấn dữ liệu lưu trữ trong cơ sở dữ liệu của IBM. Tuy nhiên, sau tranh chấp về mặt thương hiệu, cái tên “SEQUEL” được thay thế thành “SQL”.

Giới thiệu chung về hệ thống quản trị cơ sở dữ liệu (DBMS)

Các hệ thống quản trị cơ sở dữ liệu (DBMS)

Hệ thống quản lý cơ sở dữ liệu (DBMS - Database Management System) là một hệ thống, phần mềm cho phép người dùng xác định, tạo, duy trì và kiểm soát truy cập vào cơ sở dữ liệu.

Các hệ thống quản trị cơ sở dữ liệu có quan hệ phổ biến (Relational DBMS)

Sau đây là 1 vài hệ Quản trị CSDL phổ biến trên thị trường:

Chuẩn ISO

Chuẩn ISO (International Organization for Standardization) cho SQL được ban hành lần đầu tiên vào năm 1987.

Hầu hết các ngôn ngữ truy vấn có cấu trúc đều được xây dựng tiêu chuẩn ISO. Vậy nên khi bạn làm việc được với một biến thể SQL (VD: T-SQL) bạn có thể làm việc với các biến thể khác mà không gặp khó khăn gì cả.

Một số khái niệm trong cơ sở dữ liệu

Có một số dạng dữ liệu phổ biến như cơ sở dữ liệu quan hệ (Relational Databases), cơ sở dữ liệu phi quan hệ NoSQL, dữ liệu theo thời gian (Time Series), dữ liệu NewSQL, ….

Tuy nhiên chúng ta sẽ tìm hiểu 2 nhóm hệ quản trị cơ sở dữ liệu thường được sử dụng phổ biến trên thị trường hiện nay:

Cơ sở dữ liệu quan hệ (Relational Database)

Cơ sở dữ liệu có quan hệ (Relational Database) được tạo ra dựa trên mô hình dữ liệu quan hệ. Cơ sở dữ liệu có quan hệ được cầu thành từ các bảng bao gồm hàng và cột.

Thuộc tính của cơ sở dữ liệu quan hệ:

a) Máy chủ cơ sở dữ liệu (Database Server)

Máy chủ cơ sở dữ liệu là một chương trình phần mềm hoặc nền tảng dùng để cung cấp các dịch vụ cơ sở dữ liệu như lưu trữ, tạo cơ sở dữ liệu và bảo mật dữ liệu.

b) Cơ sở dữ liệu (Database)

Cơ sở dữ liệu là tập hợp các dữ liệu được tổ chức bài bản và thường được truy cập từ hệ thống máy tính hoặc tồn tại dưới dạng tập tin trong hệ quản trị cơ sở dữ liệu.

Cơ sở dữ liệu được lưu trữ trong thẻ nhớ, ổ cứng, nền tảng điện toán đám mây, …

c) Lược đồ (Schema)

Lợi ích sử dụng lược đồ (Schema):

d) Bảng (Tables)

Hầu hết chúng ta đều quan sát dữ liệu ở trong bảng (Tables). Cơ sở dữ liệu thì bao gồm nhiều bảng và bảng bao gồm các thành tố sau:

Cơ sở dữ liệu phi quan hệ NoSQL

Thuộc tính của cơ sở dữ liệu phi quan hệ NoSQL:

Các nhóm câu lệnh SQL

Có nhiều cách để tương tác với dữ liệu khi sử dụng SQL. Hình dưới đây sẽ chỉ ra một số loại câu lệnh và chức năng của chúng.

A white sheet with black text Description automatically generated

Giải thích một câu lệnh SQL.

Các thuật ngữ (Terms) phổ biến trong SQL.

Cấu trúc câu lệnh SQL cơ bản

Mệnh đề SELECT và FROM

Để hiểu rõ hơn vai trò của 2 mệnh đề trên, chúng ta cùng xem những ví dụ sau:

Ví dụ: Từ bảng dbo.DimEmployee thuộc bộ dữ liệu AdventureWorksDW2019, truy vấn tất cả các dữ liệu có trong bảng.

Kết quả truy vấn gồm 25 cột và 296 hàng.

tự học sql mệnh đề select và from

Giải thích câu lệnh truy vấn:

Ví dụ: Từ bảng dbo.DimEmployee thuộc bộ dữ liệu AdventureWorksDW2019, truy vấn FirstName được gán tên là “Tên”, LastName được gán là “Họ”, FirstName + LastName được gán là “ Họ và tên”, Title được gán tên là “Chức vụ”, Vacationshours + SickLeaveHours được gán tên là “Tổng giờ nghỉ”.

Giải thích câu lệnh truy vấn:

-> Trên thực tế khi làm việc nên hạn chế và kiểm soát số lượng cột cần lấy ra bằng cách liệt kê tên cột.

Chỉ định điều kiện hàng dữ liệu được truy vấn bằng mệnh đề WHERE

Với mệnh đề WHERE, chỉ những hàng thỏa mãn điều kiện logic (Predicate) thì sau khi thực thi câu lệnh truy vấn, kết quả trả về thỏa mãn điều kiện logic (Predicate).

Ví dụ: Từ bảng dữ liệu SalesLT.Product thuộc bộ dữ liệu adventureworks, truy vấn các cột Name, ProductNumber, StandardCost, SellStarDate. Với điều kiện, Name bắt đầu với 2 ký tự “HL”, StandardCost lớn hơn 300 và SellStartDate nằm trong khoảng thời gian từ 01/07/2005 đến 01/07/2006.

tự học sql mệnh đề where

Giải thích câu lệnh truy vấn:

Lưu ý: Với trường hợp cột được chọn được lưu dưới dạng tên thay thế (Alias), mệnh đề WHERE sẽ không thể tìm truy vấn theo điều kiện của tên thay thế (Alias). Do mệnh đề WHERE được thực thi trước mệnh đề SELECT.

Nhóm các hàng bằng mệnh đề GROUP BY

Mệnh đề GROUP BY dùng để nhóm các hàng có cùng giá trị trong một hoặc nhiều cột thành các nhóm riêng biệt dựa trên các giá trị trong cột đó.

Để hiểu rõ hơn, ta cùng xem ví dụ dưới đây: Truy vấn tổng số lượng địa chỉ trong bảng Address được nhóm lại theo từng khu vực quốc gia (CountryRegion).

Giải thích câu lệnh truy vấn:

Giải thích câu lệnh truy vấn.

Chỉ định điều kiện các nhóm bằng mệnh đề HAVING

Mệnh để Having dùng để chỉ định điều kiện cho dữ liệu đã được nhóm với nhau.

Để hiểu rõ hơn, ta cùng xem ví dụ sau:

Vẫn với bộ dữ liệu ở ví dụ trên, truy vấn ra CountryRegion có tổng số lượng địa chỉ lớn hơn 40.

Giải thích câu lệnh truy vấn.

Do đó, chúng ta cần phân biệt rõ ràng giữa mệnh đề WHERE và mệnh đề HAVING:

Sắp xếp thứ tự dữ liệu bằng mệnh đề ORDER BY

Mệnh đề ORDER BY dùng để sắp xếp thứ tự dữ liệu theo cột hoặc các cột được chọn.

ORDER BY sắp xếp thứ tự theo 2 cách:

Giải thích câu lệnh truy vấn.

Giải thích câu lệnh truy vấn.

Lưu ý: ORDER BY sẽ mặc định sắp xếp thứ tự tăng dần từ (A-Z) khi không có ASC hoặc DESC đi kèm.

Giải thích câu lệnh truy vấn.

Giải thích câu lệnh truy vấn:

Giải thích câu lệnh truy vấn:

Logic thực thi câu lệnh (­­­­Logical query processing)

Thứ tự thực hiện câu lệnh truy vấn được thực hiện như sau:

Trước tiên, ta cần xác định xem dữ liệu được truy vấn ở đâu.

Thứ hai, ta cần xác định xem dữ liệu cần truy vấn kèm điều kiện gì.

Thứ ba, xác định xem dữ liệu có cần nhóm chung với nhau không.

Thứ tư, các dữ liệu được nhóm chung kèm điều kiện gì.

Thứ năm, kết quả truy vấn cần bao gồm những cột nào.

Cuối cùng, dữ liệu truy vấn sẽ được sắp xếp theo thứ tự như thế nào.

Lưu ý: Trên đây chỉ là một số câu lệnh cơ bản của SQL, vì vậy thứ tự viết cũng như thứ tự thực thi câu lệnh sẽ giới hạn trong một số câu lệnh đã đề cập ở trên. Tuy chỉ là mốt số câu lệnh cơ bản, nhưng những câu lệnh sẽ là nên tảng giúp bạn phát triển tư duy logic tự học SQL.

Một số lưu ý để viết một câu lệnh truy vấn SQL tốt hơn

Một số lưu ý khi viết câu lệnh SQL

Khi tự học SQL, có một số điều cần lưu ý để tối ưu hóa lệnh truy vấn tốt hơn.

Lưu ý 1: “Khoảng trống” không ảnh hưởng đến kết quả của một câu truy vấn.

Tuy nhiên, chúng ta nên sắp xếp và giãn cách cho phù hợp để câu lệnh có thể dễ dàng quan sát, không bị lộn xộn.

A screenshot of a computer Description automatically generated
Lưu ý 2: Câu lệnh được kết thúc với dấu “;”. Tuy nhiên vào thời điểm hiện tại không nhiều DBMS yêu cầu “;” để kết thúc câu lệnh nữa.

Có hay không có dấu “;” không làm ảnh hưởng đến kết quả của câu lệnh.

A screenshot of a computer Description automatically generated
Lưu ý 3: Câu lệnh phải bắt đầu với một mệnh đề (Statement)

Câu lệnh không có mệnh đề (Statement) đứng đầu sẽ bị lỗi khi thực thi câu lệnh truy vấn.

Lưu ý 4: Các cột phải được ngăn cách bởi dấu “,”.

Các cột được chọn trong các mệnh đề luôn được ngăn cách bởi dấu “,” và thường khi thực hiện câu lệnh truy vấn dấu “,” rất dễ bị lãng quên. Vì vậy, bạn cần chú ý đến việc đánh dấu “,” mỗi khi chọn thêm cột mới.

Vị trí của dấu “,” có thể được đặt ở trước hoặc sau các cột, vì vậy bạn có thể tham khảo 2 cách viết sau:

Lưu ý 5: Thay vì viết các câu lệnh theo chiều ngang, hãy viết theo chiều dọc xuống.
Lưu ý 6: Có thể bôi đen để chọn phần câu lệnh cần chạy hoặc có thể không cần bôi đen để truy vấn cả câu lệnh.

Những ngầm định khi viết câu lệnh SQL

Mặc dù những ngầm định này không phải quy tắc, nhưng chúng thường được dùng như 1 tiêu chuẩn thống nhất.

Thứ 1: Nhất quán về mặt chứ viết hoa/viết thường.

Do SQL không quan trọng về mặt hình thức nhưng khuyến khích viết nhất quán để nhìn gọn gàng và thống nhất hơn.

A screenshot of a computer program Description automatically generated
Thứ 2: Sử dụng “Khoảng trống” một cách phù hợp.

Một trong những lý do khiến SQL dễ đọc vì các câu lệnh được trình bày với format như một đoạn văn.

Screens screenshot of a computer Description automatically generated
Thứ 3: Đặt tên có chủ đích.

Đặt tên cho cột và hàng nên được đặt ngắn gọn, dễ hiểu không chỉ giúp dễ đọc mà nó còn giúp cho mọi người trong team có thể biết rõ được trong bảng hoặc cột đó có chứa dữ liệu gì.

Thứ 4: Nên viết thêm comment chi tiết nếu bảng dữ liệu được lưu trữ theo cách của bạn.

Bạn có thể thêm comments vào những câu lênh để giải thích thêm về chúng.

Lưu ý: Không nên thực hiện truy vấn trên cơ sở dữ liệu mà bạn không hiểu rõ.

Comments thường được dùng để:

Tạm kết

Tổng kết lại ở phần 1, chúng ta đã tìm hiểu về lịch sử hình thành của SQL, các khái niệm về cơ sở dữ liệu, cấu trúc của một câu query và một vài lưu ý khi viết câu query. Đề việc tự học SQL hiệu quả, bạn hãy bookmark lại bài viết này và note những kiến thức quan trọng lại nhé. Ngoài ra các bạn có thể tham khảo thêm SQL cheat sheet để tự học thêm về các câu lệnh nhé.

Nếu bạn thấy nội dung này hữu ích, đừng quên để lại bình luận và hãy theo dõi blog của Datapot để đón chờ phần tiếp theo ở các bài viết sắp tới nhé!

Link nội dung: https://diendanxaydung.net.vn/hoc-database-a53231.html