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
)
Tạo bảng books thành công !
Tạo bảng books thành công !

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

Click chuột phải vào bảng books và chọn Import/Export
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 option Import, sau đó click vào biểu tượng ... ở mục Filename để chọn file
Chọn option Import, sau đó click vào biểu tượng ... ở mục Filename để chọn file

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

Upload file
Chọn biểu tượng Upload file

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

Click đúp hoặc kéo thả để upload
Click đúp hoặc kéo thả để upload
Upload thành công !
Upload thành công !

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

Chọn file books.csv
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

Header = Yes, Delimiter = ,
Header = Yes, Delimiter = ,

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

Import dữ liệu thành công !!!
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
SELECT tất cả các cột trog bảng books
SELECT tất cả các cột trog bảng 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
20 cuốn sách có nhiều lượt đánh giá nhất
20 cuốn sách có nhiều lượt đánh giá nhất

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%'
Điểm đánh giá trung bình của các tựa sách Harry Potter
Các tựa sách Harry Potter nhận điểm trung bình 4.4 !!! Not bad !!!

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
Quyển dày nhất đến hơn 6000 trang !!!
Quyển dày nhất đến hơn 6000 trang !!!

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%'
Số lượng sách của tác giả J.R.R. Tolkien
Có 80 cuốn sách của tác giả 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

P/S: Lâu lắm mới lạch cạch ngồi viết bài :v