Với những bạn đang muôn rèn luyện, củng cố các kiến thức liên quan đến SQL thì việc có một bảng dữ liệu mẫu để thực hành các lệnh SQL là rất quan trọng. Trong bài viết này, tôi xin chia sẻ cách import dữ liệu từ file csv vào trong 1 bảng, từ đó có được dữ liệu mẫu để luyện tập và củng cố kiến thức về SQL
Bài viêt sử dụng database là PostgreSQL và pgAdmin4 để tương tác với database, sử dụng Docker để cài đặt. Chi tiết hướng dẫn cài đặt các bạn có thể xem tại mục 1 của bài viết PostgreSQL căn bản: Câu lệnh SELECT
(tất nhiên các bạn cũng có thể Google để tìm cách cài đặt :v )
Link download file csv:
https://drive.google.com/open?id=15_NT5pG7SlLKpMg8YuFWfnEk4-wUJsbI
Đây là file csv được download từ trang Kaggle, trang web này có rất nhiều mẫu dataset hay mà các bạn có thể download về để vọc vạch. File csv này chứa dữ liệu của các cuốn sách được review và chấm điểm trên trang bình luận sách nổi tiếng Goodreads
Trước tiên, chúng ta tạo bảng books để lưu thông tin về các tựa sách trên Goodreads:
CREATE TABLE books (
id int PRIMARY KEY,
title text,
authors text,
average_rating real,
isbn text,
isbn13 text,
language_code text,
num_pages int,
ratings_count int,
text_reviews_count int
)

Sau khi tạo bảng, ta click chuột phải vào bảng books và chọn Import/Export

Sau đó click chọn option Import và click vào biểu tượng ... ở mục Filename để chọn file:

Chọn biểu tượng upload file:

Click đúp, hoặc kéo thả file để upload:


Sau khi upload thành công, chọn file books.csv:

Sau khi chọn file books.csv, ở màn hình sau đó, chọn các option:
- Header: Yes
- Delimiter: ,
sau đó click OK

Yay !!! Chúng ta đã import dữ liệu thành công:

OK, dữ liệu đã có, giờ thì chúng ta thử nghịch ngợm một chút với vài câu query đơn giản
Trước tiên, thử SELECT tất cả các cột có trong bảng books ra xem thế nào:
SELECT *
FROM books

Chúng ta thu được thông tin về các tựa sách, tên tác giả, điểm đánh giá trung bình trên Goodreads, số lượt đánh giá, ... Rõ ràng những dữ liệu này thú vị hơn rất nhiều so với những sample database toàn các dữ liệu fake như John, Mary, Bob, ... :v
Thử lấy ra top 20 tựa sách có nhiều lượt đánh giá (ratings_count) nhất:
SELECT *
FROM books
ORDER BY ratings_count DESC
LIMIT 20
OFFSET 0

Với các fan của Harry Potter, hẳn các bạn rất muốn biết điểm đánh giá trung bình mà các tựa sách Harry Potter nhận được:
SELECT AVG(average_rating) AS average_rating
FROM books
WHERE title ilike '%Harry Potter%'

Thử lấy ra 10 cuốn sách dày hơn 1000 trang xem sao:
SELECT *
FROM books
WHERE num_pages > 1000
ORDER BY num_pages DESC
LIMIT 10
OFFSET 0

Với các fan của J.R.R. Tolkien, hẳn các bạn muốn biết trong danh sách có bao nhiêu tựa sách của tác giả nổi tiếng này:
SELECT count(*)
FROM books
WHERE authors ilike '%J.R.R. Tolkien%'

Trên đây là một số chia sẻ của tôi về cách lấy dữ liệu từ file csv để từ đó có thể nghịch ngợm một số lệnh SQL. Thực sự cảm ơn các bạn đã đọc hết bài viết dài lê thê này :D
Techmaster liên tục khai giảng các khoá học mới trong tháng 1 và tháng 2 năm 2020. Xem chi tiết lịch khai giảng tại đây
Bình luận