SQL là gì? Hướng dẫn Prompt SQL với ChatGPT, Copilot

Bạn đã từng nghe đến SQL nhưng chưa hiểu rõ nó là gì? Hay bạn biết rằng SQL là một ngôn ngữ để làm việc với dữ liệu, nhưng chưa biết bắt đầu từ đâu? Nếu bạn đang làm việc với dữ liệu, dù là phát triển ứng dụng, phân tích thông tin hay quản lý hệ thống, thì SQL chính là “người bạn đồng hành” không thể thiếu. Với SQL, bạn có thể dễ dàng truy vấn, chỉnh sửa hoặc phân tích thông tin chỉ bằng vài dòng lệnh đơn giản.

Trong bài viết này, mình sẽ giải thích SQL một cách dễ hiểu nhất, dành cho cả người mới bắt đầu lẫn những ai đang muốn nâng cao kỹ năng. Từ khái niệm SQL là gì? đến những cú pháp cơ bản và cách nó hỗ trợ bạn làm việc với cơ sở dữ liệu hàng ngày.

1. SQL là gì?

SQL (Structured Query Language) là một ngôn ngữ truy vấn có cấu trúc, được thiết kế để giao tiếp với cơ sở dữ liệu quan hệ (RDBMS). SQL thực chất là một ngôn ngữ cực kỳ dễ học, được thiết kế để giúp bạn “nói chuyện” với cơ sở dữ liệu. Với kho tài liệu khổng lồ từ Google và Youtube và sự hỗ trợ của ChatGPT, bạn hoàn toàn có thể thành thạo SQL một cách nhanh chóng.

Hình ảnh minh họa về SQLHình ảnh minh họa về SQL

SQL xuất hiện lần đầu vào những năm 1970 tại IBM trong dự án System R – một trong những hệ quản trị cơ sở dữ liệu đầu tiên trên thế giới. Ban đầu, nó được gọi là SEQUEL (Structured English Query Language), nhưng sau đó phải đổi tên thành SQL vì lý do bản quyền. Tuy vậy, cách gọi “sequel” vẫn phổ biến cho đến ngày nay.

SQL được sử dụng để thực hiện 4 nhóm thao tác chính:

  1. Truy vấn dữ liệu (SELECT): Giúp bạn tìm kiếm và lấy thông tin từ các bảng dữ liệu.
  2. Chỉnh sửa dữ liệu (INSERT, UPDATE, DELETE): Cho phép thêm, sửa, hoặc xóa dữ liệu trong bảng.
  3. Quản lý cấu trúc cơ sở dữ liệu (CREATE, ALTER, DROP): Tạo hoặc thay đổi cấu trúc các bảng, cột, và thậm chí cả cơ sở dữ liệu.
  4. Kiểm soát quyền truy cập (GRANT, REVOKE): Điều chỉnh quyền truy cập để đảm bảo bảo mật dữ liệu.

2. SQL được dùng để làm gì?

SQL không phải là công cụ độc quyền của bất kỳ công ty nào. Nó đã trở thành tiêu chuẩn quốc tế (ISO/ANSI), được sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu phổ biến hiện nay, như MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database.

Dù bạn không nhận ra, mọi thao tác như đăng nhập, tìm kiếm sản phẩm, hay thậm chí đặt đồ ăn qua ứng dụng đều có SQL góp mặt ở phía sau. Nhưng cụ thể, SQL giúp chúng ta làm gì? Bạn có bao giờ thắc mắc làm thế nào một trang web thương mại điện tử hiển thị đúng sản phẩm bạn tìm kiếm?

Ví dụ: Bạn gõ từ khoá “iPhone 14” trên một trang web bán hàng. SQL sẽ gửi câu lệnh như sau đến cơ sở dữ liệu, kết quả: Toàn bộ thông tin về iPhone 14 (giá, số lượng, màu sắc) được hiển thị cho bạn.

SELECT * FROM Products WHERE name = 'iPhone 14';

Ngoài ra, nếu bạn có ý định xóa những sản phẩm lỗi thời hoặc không còn bán trên cửa hàng của mình, câu lệnh SQL sẽ được gửi như sau:

DELETE FROM Products WHERE name = 'Nokia 3310';

SQL còn được dùng để kiểm soát ai có quyền làm gì với dữ liệu. Ví dụ, chỉ nhân viên kế toán mới có thể xem thông tin lương của nhân viên khác.

GRANT SELECT ON EmployeeSalaries TO accountant_role;

3. Hướng dẫn sử dụng SQL với ChatGPT, Copilot

Bạn nghĩ SQL là thứ gì đó phức tạp, khô khan và chỉ dành cho dân IT? Thực tế, SQL không chỉ dễ học mà còn cực kỳ thú vị, đặc biệt khi kết hợp với những công cụ hỗ trợ mạnh mẽ như ChatGPTCopilot.

Trước khi đến với phần hướng dẫn, mình sẽ chia sẻ một số kinh nghiệm cá nhân để giúp bạn tránh những sai sót không mong muốn khi tự học SQL:

  • Không nên dùng ChatGPT hoặc Copilot để tìm hiểu về các khái niệm cơ bản trong SQL (JOIN, Window Function). Có rất nhiều nguồn tài liệu chất lượng như Youtube, Datacamp, Kaggle giúp bạn dễ dàng nắm vững các kiến thức này.
  • Sử dụng ChatGPT hoặc Copilot khi gặp những bài toán khó chưa có cách giải quyết cụ thể hoặc không thể ghi nhớ hết tất cả các hàm của một cơ sở dữ liệu cụ thể.

Ví dụ prompt sử dụng ChatGPT với BigQuery:

Tôi có bảng dữ liệu customer_data, orders, pre_orders trên Bigquery, tôi muốn tìm những khách hàng (email, sdt) ở TPHCM đã mua điện thoại Iphone 2 năm trước nhưng năm nay chưa đăng ký pre order, mức chi tiêu năm nay của họ phải trên 20 triệu.

Dưới đây là câu trả lời của ChatGPT:

WITH iphone_customers AS (
   SELECT DISTINCT
     c.email,
     c.phone
   FROM
     `your_project.customer_data` AS c
   JOIN
     `your_project.orders` AS o
   ON
     c.customer_id = o.customer_id
   WHERE
     o.product_name LIKE '%iPhone%'
     AND o.order_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 2 YEAR) AND DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR)
     AND c.city = 'TPHCM'
),
pre_orders_this_year AS (
   SELECT DISTINCT
     c.email,
     c.phone
   FROM
     `your_project.customer_data` AS c
   JOIN
     `your_project.pre_orders` AS po
   ON
     c.customer_id = po.customer_id
   WHERE
     EXTRACT(YEAR FROM po.order_date) = EXTRACT(YEAR FROM CURRENT_DATE())
),
customer_spending_this_year AS (
   SELECT
     c.email,
     c.phone,
     SUM(o.amount) AS total_spent
   FROM
     `your_project.customer_data` AS c
   JOIN
     `your_project.orders` AS o
   ON
     c.customer_id = o.customer_id
   WHERE
     EXTRACT(YEAR FROM o.order_date) = EXTRACT(YEAR FROM CURRENT_DATE())
   GROUP BY
     c.email, c.phone
)
SELECT
   ic.email,
   ic.phone
FROM
   iphone_customers AS ic
LEFT JOIN
   pre_orders_this_year AS poty ON
   ic.email = poty.email
   AND ic.phone = poty.phone
JOIN
   customer_spending_this_year AS csty ON
   ic.email = csty.email
   AND ic.phone = csty.phone
WHERE
   poty.email IS NULL
AND
   csty.total_spent > 20000000;

4. Những câu lệnh SQL bạn cần biết

Câu lệnh SQLCâu lệnh SQL

Các câu lệnh SQL được sử dụng để giao tiếp với cơ sở dữ liệu. Chúng cũng được dùng để thực hiện các tác vụ, chức năng và truy vấn dữ liệu cụ thể. SQL có thể thực hiện các tác vụ khác nhau như tạo bảng, thêm dữ liệu vào bảng, thả bảng, sửa đổi bảng, và đặt quyền cho người dùng.

Dưới đây là năm loại truy vấn SQL được sử dụng rộng rãi:

4.1 Ngôn ngữ định nghĩa dữ liệu (DDL)

Ngôn ngữ định nghĩa dữ liệu (Data Definition Language – DDL) thay đổi cấu trúc của bảng như tạo hoặc xóa bảng. Các lệnh DDL đều được tự động cam kết, nghĩa là nó lưu vĩnh viễn tất cả các thay đổi trong cơ sở dữ liệu.

Một số lệnh DDL phổ biến là: CREATE, ALTER, DROP, TRUNCATE.

4.1.1 CREATE

Tạo một bảng mới trong cơ sở dữ liệu với cú pháp:

CREATE TABLE TABLE_NAME (COLUMN_NAME DATATYPES[,....]);
Ví dụ:
CREATE TABLE EMPLOYEE(Name VARCHAR2(20), Email VARCHAR2(100), DOB DATE);

4.1.2 DROP

Được sử dụng để xóa toàn bộ một bảng với cú pháp:

DROP TABLE table_name;
Ví dụ:
DROP TABLE EMPLOYEE;

4.1.3 ALTER

Được sử dụng để sửa đổi một đối tượng của cơ sở dữ liệu. Thay đổi này có thể là sửa đổi các thuộc tính hiện có hoặc thêm một thuộc tính mới.

Cú pháp:

ALTER TABLE table_name ADD column_name COLUMN-definition;
Ví dụ:
ALTER TABLE STU_DETAILS ADD(ADDRESS VARCHAR2(20));

4.1.4 TRUNCATE

Được sử dụng để xóa tất cả các hàng khỏi bảng và giải phóng không gian chứa bảng với cú pháp:

TRUNCATE TABLE table_name;
Ví dụ:
TRUNCATE TABLE EMPLOYEE;

4.2 Ngôn ngữ thao tác dữ liệu (DML)

Ngôn ngữ thao tác dữ liệu (Data Manipulation Language – DML) được sử dụng để thêm, thay đổi hoặc xóa dữ liệu trong các bảng đã được xác định với các lệnh DDL.

Một số lệnh DML phổ biến là: INSERT, UPDATE, DELETE.

4.2.1 INSERT

Tạo một bản ghi mới với cú pháp:

INSERT INTO TABLE_NAME (col1, col2, col3,.... col N) VALUES (value1, value2, value3, .... valueN);
Ví dụ:
INSERT INTO javatpoint (Author, Subject) VALUES ("Sonoo", "DBMS");

4.2.2 UPDATE

Cập nhật hoặc sửa đổi giá trị của một cột trong bảng với cú pháp:

UPDATE table_name SET [column_name1= value1,...column_nameN = valueN] [WHERE CONDITION];
Ví dụ:
UPDATE students SET User_Name = 'Sonoo' WHERE Student_Id = '3';

4.2.3 DELETE

Xóa một bản ghi với cú pháp:

DELETE FROM table_name [WHERE condition];
Ví dụ:
DELETE FROM javatpoint WHERE Author="Sonoo";

4.3 Ngôn ngữ điều khiển dữ liệu (DCL)

Ngôn ngữ điều khiển dữ liệu (Data Control Language – DCL) được sử dụng để cấp hoặc thu hồi quyền truy cập người dùng.

Một số lệnh DCL phổ biến là: GRANT, REVOKE.

4.3.1 GRANT

Cung cấp quyền cho người dùng với cú pháp:

GRANT SELECT, UPDATE ON MY_TABLE TO SOME_USER, ANOTHER_USER;

4.3.2 REVOKE

Lấy lại quyền được cấp từ người dùng với cú pháp:

REVOKE SELECT, UPDATE ON MY_TABLE FROM USER1, USER2;

4.4 Ngôn ngữ kiểm soát giao dịch (TCL)

Ngôn ngữ kiểm soát giao dịch (Transaction Control Language – TCL) được sử dụng để thay đổi trạng thái của các giao dịch dữ liệu.

Một số lệnh TCL phổ biến là: COMMIT, ROLLBACK, SAVEPOINT.

4.4.1 COMMIT

Được sử dụng để lưu tất cả các giao dịch vào cơ sở dữ liệu với cú pháp:

COMMIT;
Ví dụ:
DELETE FROM CUSTOMERS WHERE AGE = 25; COMMIT;

4.4.2 ROLLBACK

Được sử dụng để hoàn tác các giao dịch chưa được lưu vào cơ sở dữ liệu với cú pháp:

ROLLBACK;
Ví dụ:
DELETE FROM CUSTOMERS WHERE AGE = 25; ROLLBACK;

4.4.3 SAVEPOINT

Được sử dụng để quay trở lại một giao dịch mà không cần trở về toàn bộ giao dịch với cú pháp:

SAVEPOINT SAVEPOINT_NAME;

4.5 Ngôn ngữ truy vấn dữ liệu (DQL)

Ngôn ngữ truy vấn dữ liệu (Data Query Language – DQL) chỉ bao gồm một lệnh, đó là SELECT, được sử dụng để lấy dữ liệu cụ thể từ các bảng.

4.5.1 SELECT

Cú pháp:

SELECT expressions FROM TABLES WHERE conditions;
Ví dụ:
SELECT emp_name FROM employee WHERE age > 20;

Hy vọng rằng những chia sẻ trên có thể giúp bạn hiểu rõ hơn về ngôn ngữ SQL và nắm vững các câu lệnh thường gặp trong SQL. Để biết thêm thông tin chi tiết và cập nhật kiến thức mới nhất về marketing, hãy ghé thăm comdy.vn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *