Nếu bạn đã biết về các ngôn ngữ SQL khác nhau, thành thạo trong việc nhập dữ liệu SQL cũng như cách viết các truy vấn SQL cơ bản. Bài viết này giúp bạn nâng cao trình độ SQL.

Các khái niệm SQL trung gian

4 câu lệnh chính trong SQL

DDL là viết tắt của Ngôn Ngữ Định Nghĩa Dữ Liệu và do vậy có thể nói câu lệnh DDL được dùng để định hình dữ liệu. Một số câu lệnh DDL phổ biến là:

✔ CREATE – được dùng để tạo mới các đối tượng trong cơ sở dữ liệu như database, table, function, stored procedure, trigger.
✔ ALTER – được dùng để sửa đổi các đối tượng như table (thêm cột), column (sửa đổi kiểu dữ liệu), trigger (sửa đổi nội dung).
✔ DROP – dùng để xóa các đối tượng trong cơ sở dữ liệu.
✔ TRUNCATE – dùng để xóa tất cả dữ liệu của bảng một cách nhanh chóng.

DML là viết tắt của Ngôn Ngữ Thao Tác Dữ liệu, chính là những câu lệnh truy vấn, thêm xóa sửa thường dùng khi làm việc với dữ liệu lưu trữ trong SQL Server. Một số câu lệnh phổ biến như:

✔ INSERT – thêm dữ liệu vào một bảng trong cơ sở dữ liệu.
✔ UPDATE – sửa đổi dữ liệu trong một bảng.
✔ DELETE – xóa dòng dữ liệu trong bảng.
✔ SELECT – truy vấn dữ liệu.

Ngôn ngữ kiểm soát dữ liệu (DCL) là một tập hợp con của Ngôn ngữ truy vấn có cấu trúc (SQL) và cho phép các quản trị viên cơ sở dữ liệu cấu hình truy cập bảo mật cho các cơ sở dữ liệu quan hệ.

✔ Grant Command: Lệnh này được sử dụng để cung cấp cho phép người sử dụng cụ thể trên các đối tượng cơ sở dữ liệu cụ thể như bảng, xem,…
✔ Thu hồi lệnh: lệnh này được sử dụng để đưa ra sự cho phép của người dùng cụ thể trên các đối tượng cơ sở dữ liệu cụ thể như bảng, xem,…

Ngôn ngữ kiểm soát giao tác (TCL) được sử dụng để quản lý các giao dịch trong cơ sở dữ liệu và các thay đổi được thực hiện bởi các câu lệnh DML. Nó cũng cho phép các câu lệnh được nhóm lại với nhau thành các giao dịch logic. Ba câu lệnh phổ biến của TCL gồm:

✔ COMMIT – lưu vĩnh viễn bất kỳ giao dịch nào vào cơ sở dữ liệu.
✔ ROLLBACK – khôi phục trạng thái ban đầu trước khi bị transaction chỉnh sửa dữ liệu do xảy ra lỗi trong bên trong xử lý của transaction.
✔ SAVEPOINT – lưu tạm thời một giao dịch để có thể quay lại thời điểm đó khi cần.

Unions and joins

Đôi khi dữ liệu mà bạn cần sẽ không được lưu trữ trong một bảng khổng lồ mà sẽ được trải ra trên nhiều bảng. Bạn có thể sử dụng SQL để hợp nhất các bảng này với nhau, kết hợp tất cả dữ liệu vào một nơi.

Một UNION về cơ bản sẽ xếp chồng hai bảng có các cột giống nhau lên trên nhau. Dữ liệu giao dịch bán hàng để có thể được chia thành các bảng khác nhau theo tháng, quý hoặc năm.

Có một số loại JOINS thường được sử dụng — Inner, Outer, Left và Exception. Nói một cách đơn giản, những câu lệnh này sẽ trả về các kết hợp khác nhau của các hàng từ các bảng được nối với nhau.

Cú pháp SQL trung gian

Cú pháp tổng hợp: SELECT, GROUP BY và HAVING

Tương tự như Excel, có thể sử dụng SQL để tổng hợp dữ liệu theo tổng, trung bình, tối đa, tối thiểu và đếm. Tổng hợp có thể hữu ích khi khám phá, phân tích dữ liệu ban đầu hoặc khi trình bày dữ liệu đó cho khách hàng. Những công việc trên cũng có thể sử dụng lệnh SELECT để trả về một tổng hợp đơn giản hoặc sử dụng câu lệnh GROUP BY để tạo “bảng tổng hợp” Excel từ dữ liệu gốc.

Việc sử dụng tổng hợp trong câu lệnh SELECT sẽ chỉ trả về một phép tính đơn giản. Ví dụ như nếu bạn đang sử dụng SUM (tên_mục), truy vấn của bạn sẽ trả về một giá trị đại diện cho tất cả các giá trị trong cột đó được cộng lại.

Bạn cũng có thể giới thiệu các tổng hợp theo dữ liệu phân loại. Ví dụ nếu bạn có một bảng dữ liệu bán trái cây trên toàn quốc, bạn có thể nhóm tổng của tất cả doanh số bán hàng theo loại sản phẩm hoặc giá trung bình theo tiểu bang. Điều này yêu cầu câu lệnh GROUP BY, đứng sau câu lệnh WHERE. Tiếp theo, cần chỉ định cột phân loại mà bạn muốn các tổng hợp được “nhóm theo”, và sau đó đưa các cột đó vào câu lệnh đã chọn.

Sau khi dữ liệu đã được nhóm gọn gàng, với một tập hợp được ghép nối với một biến phân loại, bạn có thể lọc các tập hợp đó bằng cách sử dụng câu lệnh HAVING, đứng sau câu lệnh GROUP BY. Điều này rất hữu ích nếu muốn thu hẹp truy vấn hơn nữa. Ví dụ như nếu chỉ muốn chọn những cửa hàng trái cây có tổng doanh thu trung bình trên 100.000 đô la.

Case statements

Câu lệnh SQL CASE tương tự như hàm IF () trong Excel — nếu dữ liệu trong cột khớp với một tiêu chí đã đặt, thì trả về “this”. Điều này giúp phân loại lại dữ liệu định lượng dưới dạng phân loại, chẳng hạn như khi chia nhỏ một bộ giá trị thành “Cao”, “Trung bình” hoặc “Thấp”. Câu lệnh CASE đi trong câu lệnh SELECT.

Subqueries

Subqueries có thể được sử dụng theo nhiều cách khác nhau, nhưng thường được tìm thấy trong câu lệnh FROM hoặc WHERE. Câu lệnh tạo một bảng nhỏ tạm thời từ dữ liệu và sau đó có thể sử dụng làm bảng mới để truy vấn theo một cách khác.

Dates and times

Cũng như nhiều ngôn ngữ dữ liệu khác, việc xử lý ngày và giờ có thể khó khăn. Đôi khi, ngày tháng hoạt động giống như “chuỗi” hoặc các mẫu thông tin. Đôi khi chúng có thể được coi là ngày tháng thực tế, với cú pháp SQL có thể chia nhỏ dữ liệu thành các đơn vị như tháng hoặc năm. Vì có nhiều cách khác nhau để thực hiện việc này, các hàm này được coi là cú pháp SQL nâng cao hơn.

Nâng cao tư duy SQL: các nguyên tắc SQL cần tuân theo

Khi bạn đang làm việc trong thế giới thực, các câu hỏi kinh doanh có thể sẽ không chuyển gọn gàng thành các truy vấn SQL. Đó là lý do tại sao bạn cần phải đánh giá cẩn thận những gì cần thiết trước khi viết một dòng mã. Dưới đây là một số hướng dẫn bạn cần tuân theo khi thực hành SQL.

Viết lại câu hỏi kinh doanh dưới dạng nhận xét trước tiên

Trước tiên, hãy sử dụng tính năng nhận xét mã để “động não” truy vấn của bạn — câu hỏi bạn đang cố trả lời là gì? Bạn cần tập trung vào những mảng và yếu tố nào? Điều này sẽ hướng dẫn truy vấn SQL của bạn.

Phác thảo truy vấn

Trước khi bắt đầu nhập, nên tìm ra những phần nào bạn sẽ cần cho truy vấn của mình. Chẳng hạn như ngoài câu lệnh SELECT và FROM thì có thể cân nhắc câu lệnh khác không? Có cần lọc dữ liệu bằng câu lệnh WHERE không? Có cần sử dụng các hàm tổng hợp?

Hiểu các cách khác nhau để đạt được mục tiêu

Khi có thể, hãy cố gắng có nhiều cách để làm cùng một việc. Bằng cách đó, bạn có thể tự kiểm tra chất lượng và xác nhận xem có thể nhận được kết quả tương tự hay không.

Ví dụ: bạn có thể tìm giá trị cao nhất trong một cột bằng cách sử dụng hàm MAX () trong STATEMENT hoặc bằng cách sử dụng ORDER BY để sắp xếp dữ liệu và sau đó LIMIT để giới hạn để chỉ một hàng được trả về.

Kiểm tra truy vấn

Tạo truy vấn từng dòng một và chạy nó thường xuyên để kiểm tra xem truy cân có hoạt động không. Trong trường hợp nó không hoạt động, việc thêm từng phần một cũng giúp bạn không cần phải quay lại từng dòng mã.

Lập hồ sơ bảng

Để bắt đầu thực hiện các truy vấn, trước tiên cần phải hiểu các phần tử dữ liệu bên trong. Bắt đầu bằng cách xem toàn bộ cơ sở dữ liệu. Tìm phạm vi giá trị (cả phân loại và định lượng) để biết thông tin nào được chứa trong bảng.

Giữ một danh sách các giả định

Khi viết bất kỳ loại mã dữ liệu nào, hãy đảm bảo luôn lập danh sách các giả định để dễ dàng theo dõi các giới hạn của bản thân.

Giữ một từ điển dữ liệu

Biên dịch một kho lưu trữ trung tâm cho các phần tử dữ liệu đang được sử dụng, chứa các mô tả về các bảng và trường khác nhau được sử dụng trong phân tích. Điều này có thể bao gồm các kiểu dữ liệu khác nhau trong mỗi cột (ký tự, số nguyên, tiền, ngày,…) và mô tả ngắn gọn về chính cột đó.

Luôn phân bổ thời gian để thực hiện kiểm tra chất lượng dữ liệu

Việc phân tích sẽ không kết thúc khi bạn viết xong truy vấn. Bạn vẫn phải hiểu kết quả và thực hiện kiểm tra chất lượng để đảm bảo rằng phân tích chính xác. Hãy thử các cách khác nhau để đạt được cùng một kết quả. Việc này nhằm kiểm tra liệu bạn có nhận được điều gì khác biệt hay không.

Thực hành trong hộp cát

Một trong những cách tốt nhất để học bất kỳ ngôn ngữ mã hóa nào là tìm một “hộp cát” để chơi. Bạn sẽ có thể kiểm tra mã của mình để xem nó có chạy không, sửa đổi nó, chạy lại, chạy lại nhiều lần cho đến khi bạn cảm thấy thoải mái với các nguyên tắc và cú pháp mã hóa. Để bắt đầu, hãy thử tìm một dự án có hướng dẫn rõ ràng và mã giải pháp để kiểm tra công việc của bạn.

UniTrain lược dịch

Xem thêm

Tags