SQLite - Truy vấn SELECT

Xin chào các bạn, những pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ lặn vào thế giới kỳ diệu của SQLite và khám phá truy vấn mạnh mẽ SELECT. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn trong cuộc phiêu lưu này. Cuối bài học này, bạn sẽ có thể truy vấn cơ sở dữ liệu như một chuyên gia!

SQLite - SELECT Query

Hiểu về Cơ bản

Trước khi chúng ta đi vào chi tiết, hãy hiểu xem truy vấn SELECT làm gì. Hãy tưởng tượng bạn có một két chứa đầy thông tin (đó là cơ sở dữ liệu của bạn), và bạn muốn tìm kiếm các mục cụ thể. Truy vấn SELECT giống như bản đồ kho báu của bạn - nó giúp bạn tìm thấy và lấy chính xác những gì bạn đang tìm kiếm.

Truy vấn SELECT Đầu tiên

Hãy bắt đầu với một ví dụ đơn giản. Giả sử chúng ta có một bảng叫做 students với các cột id, name, và age. Dưới đây là cách chúng ta lấy tất cả thông tin từ bảng này:

SELECT * FROM students;

Truy vấn này告诉 SQLite: "Hey, give me everything (*) from the students table." Nó giống như nói, "Mở két và cho tôi thấy tất cả các món đồ!"

Chọn Các Cột Cụ Thể

Bây giờ, giả sử chúng ta chỉ muốn xem tên của các học sinh? Chúng ta có thể cụ thể hơn:

SELECT name FROM students;

Truy vấn này giống như nói, "Tôi chỉ muốn xem các thẻ tên trong két của tôi, xin hãy!"

Thêm Điều Kiện với WHERE

Đôi khi, chúng ta muốn chọn lọc hơn nữa. Giả sử chúng ta muốn tìm tất cả các học sinh 18 tuổi:

SELECT * FROM students WHERE age = 18;

Truy vấn này thêm một điều kiện. Nó giống như nói với trợ lý của bạn, "Tìm cho tôi tất cả các món đồ trong két thuộc về những người 18 tuổi."

Kỹ thuật SELECT Nâng cao

Sắp xếp Kết quả

Muốn xem kết quả theo thứ tự cụ thể? Không có vấn đề! Hãy liệt kê học sinh của chúng ta từ youngest đến oldest:

SELECT * FROM students ORDER BY age ASC;

ASC có nghĩa là tăng dần. Nếu bạn muốn đảo ngược thứ tự, bạn sẽ sử dụng DESC (giảm dần).

Giới hạn Kết quả

Đôi khi, chúng ta chỉ muốn xem một số kết quả. Có lẽ chúng ta quan tâm đến 5 học sinh lớn tuổi nhất:

SELECT * FROM students ORDER BY age DESC LIMIT 5;

Truy vấn này kết hợp sắp xếp và giới hạn. Nó giống như nói, "Hiển thị cho tôi 5 món đồ lớn tuổi nhất trong két."

Đặt Chiều rộng Cột Đầu ra

Khi làm việc với SQLite trong terminal hoặc giao diện dòng lệnh, bạn có thể nhận thấy rằng đôi khi kết quả đầu ra trông hơi lộn xộn. Đừng lo lắng! Chúng ta có thể dọn dẹp bằng cách đặt chiều rộng cột.

Dưới đây là cách bạn có thể làm điều đó:

.width 10 20 5
SELECT id, name, age FROM students;

Điều này đặt chiều rộng của cột đầu tiên là 10 ký tự, cột thứ hai là 20, và cột thứ ba là 5. Nó giống như tổ chức két của bạn để mọi thứ đều ngăn nắp!

Thông tin Cấu trúc

Đôi khi, bạn có thể quên mất những kho báu (cột) trong két (bảng) của mình. SQLite có một lệnh tiện lợi cho điều này:

.schema students

Lệnh này sẽ hiển thị cấu trúc của bảng students, bao gồm tất cả các cột và loại của chúng. Nó giống như có một bản đồ của két của bạn!

Kết hợp Tất cả

Hãy kết hợp một số khái niệm này vào một truy vấn phức tạp hơn:

SELECT name, age
FROM students
WHERE age > 18
ORDER BY name ASC
LIMIT 10;

Truy vấn này nói: "Hiển thị tên và tuổi của các học sinh trên 18 tuổi, theo thứ tự bảng chữ cái theo tên, nhưng chỉ 10 người đầu tiên."

Các Phương pháp SELECT Thường gặp

Dưới đây là bảng tóm tắt các phương pháp SELECT phổ biến để tham khảo nhanh:

Phương pháp Mô tả Ví dụ
SELECT Lấy dữ liệu từ một hoặc nhiều bảng SELECT * FROM table_name;
WHERE Lọc các bản ghi dựa trên một điều kiện SELECT * FROM table_name WHERE condition;
ORDER BY Sắp xếp tập hợp kết quả SELECT * FROM table_name ORDER BY column_name;
LIMIT Chỉ định số lượng hàng tối đa để trả về SELECT * FROM table_name LIMIT number;
DISTINCT Trả về chỉ các giá trị khác nhau (khác biệt) SELECT DISTINCT column_name FROM table_name;
GROUP BY Nhóm các hàng có cùng giá trị SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
HAVING Chỉ định điều kiện tìm kiếm cho một nhóm SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value;
JOIN Kết hợp các hàng từ hai hoặc nhiều bảng SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;

Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo! Đừng ngại thử nghiệm với các truy vấn này. Mỗi lần bạn chạy một truy vấn, bạn đang trở nên thành thạo hơn trong việc điều hướng kho báu dữ liệu của mình.

Trong những năm dạy học của tôi, tôi đã phát hiện ra rằng cách tốt nhất để học SQLite là thông qua việc làm. Vậy, đây là một ít bài tập về nhà cho bạn: Tạo một cơ sở dữ liệu nhỏ về sách hoặc phim yêu thích của bạn, và thử viết các truy vấn để tìm kiếm thông tin thú vị về chúng. Bạn có thể ngạc nhiên với những gì bạn khám phá ra!

Chúc các bạn vui vẻ trong việc truy vấn, những nhà thám hiểm dữ liệu tương lai! Nhớ rằng, mỗi quản trị viên cơ sở dữ liệu vĩ đại đều bắt đầu từ nơi bạn đang đứng bây giờ. Hãy tiếp tục thực hành, giữ vững sự tò mò, và sớm bạn sẽ trở thành chủ nhân của miền dữ liệu của mình!

Credits: Image by storyset