Chuyển đến nội dung chính

Hướng dẫn SQLite cho người mới bắt đầu

Tìm hiểu những kiến thức cơ bản về cơ sở dữ liệu SQLite, từ các lệnh chấm của SQLite đến ví dụ về cách ứng dụng thực tế của chúng bằng giao diện dòng lệnh.
Đã cập nhật 5 thg 10, 2026  · 10 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

SQLite là gì?

Nếu bạn quen thuộc với các hệ quản trị cơ sở dữ liệu quan hệ, rất có thể bạn đã nghe về những “ông lớn” như MySQL, SQL Server hoặc PostgreSQL. Tuy nhiên, SQLite là một RDBMS hữu ích khác, rất đơn giản để thiết lập và vận hành, đồng thời có nhiều đặc điểm khác biệt so với các cơ sở dữ liệu quan hệ khác. Những đặc điểm này bao gồm:

  • Không cần máy chủ: Tức là không có tiến trình máy chủ nào cần khởi động, dừng hoặc cấu hình. Không cần quản trị viên cơ sở dữ liệu để cấp phát phiên bản hay quản lý quyền truy cập người dùng.
  • Tệp cơ sở dữ liệu đơn giản: Một cơ sở dữ liệu SQLite là một tệp đĩa thông thường duy nhất có thể được lưu ở bất kỳ thư mục nào. Điều này cũng giúp việc chia sẻ trở nên đơn giản vì các tệp cơ sở dữ liệu có thể dễ dàng được sao chép vào USB hoặc gửi qua email.
  • Kiểu khai báo (Manifest Typing): Phần lớn các bộ máy cơ sở dữ liệu SQL dựa vào kiểu tĩnh. Tức là, bạn chỉ có thể lưu các giá trị cùng kiểu dữ liệu được gắn với một cột cụ thể. Tuy nhiên, SQLite sử dụng kiểu khai báo, cho phép lưu trữ bất kỳ lượng dữ liệu thuộc bất kỳ kiểu nào vào bất kỳ cột nào, bất kể kiểu dữ liệu đã khai báo cho cột đó. Lưu ý rằng có một số ngoại lệ cho quy tắc này. Một ngoại lệ là các cột khóa chính kiểu số nguyên, chỉ có thể lưu số nguyên.

Như hầu hết mọi thứ, SQLite cũng có một số hạn chế so với các bộ máy cơ sở dữ liệu khác. Chẳng hạn, SQLite không hỗ trợ Right hoặc Full Outer Join, và đặc tính không dùng máy chủ cũng có thể là bất lợi về bảo mật và chống lạm dụng dữ liệu. Dù vậy, đây là một công cụ rất mạnh và hữu ích trong nhiều tình huống. Ví dụ, tôi đã sử dụng một cơ sở dữ liệu SQLite trong một dự án phân tích mạng xã hội gần đây để lưu một $edge \space list^{1}$ gồm hàng triệu người dùng Twitter theo cách rất đơn giản và hiệu quả.

Vì vậy, trong hướng dẫn cho người mới bắt đầu này, tôi sẽ minh họa cách làm việc với cơ sở dữ liệu SQLite. Chúng ta sẽ đi qua cách cài đặt SQLite, tạo và thao tác bảng, các lệnh chấm (dot commands) của SQLite, và cách sử dụng các truy vấn SQL đơn giản để xử lý dữ liệu bên trong cơ sở dữ liệu SQLite.

$^{1}$ Edge list hay adjacency list là một tập hợp các danh sách không có thứ tự được dùng để biểu diễn đồ thị trong phân tích mạng. Mỗi danh sách mô tả tập láng giềng của một nút hoặc đỉnh nhất định trong đồ thị.

Cách cài đặt và thiết lập SQLite

Điều đầu tiên chúng ta sẽ đề cập là cách đưa SQLite vào máy tính của bạn. Việc này cực kỳ đơn giản. Nếu bạn xem hướng dẫn SQLite với Python của Sayak Paul, bạn sẽ thấy có một công cụ GUI tên là DB Browser for SQLite giúp bạn bắt đầu dễ dàng. Tuy nhiên, để đa dạng, tôi sẽ chỉ cách sử dụng công cụ dòng lệnh, mà đôi khi tôi cũng ưa dùng.

Điều đầu tiên bạn cần làm nếu dùng thiết bị Windows là truy cập trang này và tải sqlite-tools-win32-x86-3270200.zip. Sau khi giải nén thư mục, bạn sẽ thấy ba tệp sau:

sqlite files

Sau đó, khởi chạy dòng lệnh SQLite chỉ đơn giản bằng cách bấm vào ứng dụng sqlite3, cửa sổ dòng lệnh sẽ bật lên như thế này:

sqlite3 pop up

Bạn sẽ thấy mặc định của SQLite là dùng cơ sở dữ liệu tạm trong bộ nhớ. Phần lớn thời gian bạn sẽ không muốn dùng kiểu này. Thay vào đó, chúng ta sẽ tạo một cơ sở dữ liệu mới bằng lệnh chấm .open theo sau là tên bạn muốn đặt cho tệp cơ sở dữ liệu mới (Xem bên dưới):

sqlite3 new database

Chỉ đơn giản vậy là bạn đã tạo một cơ sở dữ liệu mới. Cũng lưu ý rằng điều quan trọng là bạn phải thêm .db sau tên cơ sở dữ liệu mong muốn để tạo tệp cơ sở dữ liệu. Chúng tôi đặt tên cơ sở dữ liệu là Tweet_Data.db vì tôi sẽ dùng các tweet để điền dữ liệu vào các bảng trong cơ sở dữ liệu.

Tạo bảng

Sau khi đã tạo cơ sở dữ liệu, chúng ta có thể tiến hành tạo bảng tweet. Có hai cách để làm việc này. Thứ nhất, chúng ta có thể đơn giản nhập một tệp .csv và biến nó thành một bảng. Việc này được thực hiện bằng cách đặt SQLite ở chế độ csv bằng lệnh chấm .mode theo sau là csv, và dùng lệnh chấm .import nhận một tệp (trong trường hợp này là csv nằm cùng thư mục, nhưng có thể là bất kỳ csv nào trong máy nếu bạn gõ đường dẫn đầy đủ) và một tên bảng tùy chọn. Bạn cũng có thể muốn hiển thị tiêu đề cột bằng lệnh chấm .headers theo sau là on. (Xem bên dưới)

sqlite3 import csv

Sau khi làm xong, bạn có thể dùng lệnh .tables để hiển thị tất cả các bảng hiện có trong tệp cơ sở dữ liệu cũng như lệnh .schema theo sau là tên bảng để hiển thị cấu trúc của bảng. Hơn nữa, bạn có thể chạy một truy vấn đơn giản như SELECT $$ FROM Table_Name* để kiểm tra dữ liệu đã có ở đó.

displayed table structure sqlite3

Bên cạnh việc tạo bảng bằng cách nhập các tệp như csv, bạn cũng có thể tạo bảng bằng CREATE TABLE rồi chèn các hàng mới bằng INSERT INTO. Trong ví dụ sau, bạn sẽ thấy cách tạo một bảng từ đầu và chèn hai hàng mới.

Lưu ý: Trong dòng lệnh SQLite, nếu bạn muốn tiếp tục viết cùng một truy vấn ở dòng tiếp theo như trong ví dụ, chỉ cần nhấn Enter khi bạn muốn xuống dòng. Truy vấn sẽ được thực thi sau khi nhấn Enter khi có dấu chấm phẩy ở cuối.

create table sqlite3

Xuất dữ liệu từ SQLite

Nếu vào lúc nào đó bạn muốn xuất kết quả của một truy vấn ra tệp ngoài như csv, bạn cũng có thể làm điều này nhờ sức mạnh của SQLite. Để xuất sạch sang csv, bạn có thể dùng quy trình tương tự như khi nhập. Trước hết, dùng .header theo sau là on và .mode theo sau là csv. Sau đó, dùng lệnh chấm .output theo sau là tên tệp csv bạn muốn, và cuối cùng chạy truy vấn SQL bạn muốn xuất rồi thoát SQLite bằng lệnh .exit. Hãy thử xuất sang csv bảng mới mà chúng ta đã tạo ở bước trước.

sqlite3 output

Đây là tệp csv vừa tạo với dữ liệu của Sample_Tweets_2.

new csv

Cập nhật bảng

Ngoài việc tạo và xuất bảng, bạn cũng có thể dùng các câu lệnh SQL UPDATE/SET và DROP TABLE để cập nhật các hàng trong bảng hoặc xóa hẳn một bảng. Trong ví dụ sau, chúng ta sẽ cập nhật tweet thứ hai trong bảng đồ chơi Sample_Tweets_2.

update/set and drop table

Giờ hãy nói lời tạm biệt với bảng đồ chơi Sample_Tweets_2 và xóa nó khỏi tệp cơ sở dữ liệu bằng DROP TABLE:

drop table

Sử dụng cơ sở dữ liệu SQLite để xử lý dữ liệu Twitter

Giờ thì bạn đã nắm được những điều thiết yếu về cách làm việc với cơ sở dữ liệu SQLite và thao tác các bảng, việc còn lại là rút ra thông tin hữu ích bằng các truy vấn SQL. Trước mắt, tôi sẽ minh họa một vài truy vấn tương đối đơn giản mà tôi đã thực hiện trong dự án phân tích mạng xã hội Twitter. Bạn có thể xem đây như một nghiên cứu tình huống nhỏ để minh họa ứng dụng thực tế của cơ sở dữ liệu SQLite.

Hãy bắt đầu với điều đơn giản: tìm tất cả tên màn hình (screen name) người dùng Twitter duy nhất trong bảng Sample_Tweets. Trong dự án mà tôi dùng các tweet này, việc tìm tất cả người dùng duy nhất mà tôi đã thu thập tweet là rất quan trọng, vì tôi cần lấy danh sách người theo dõi của họ để tạo edge list như tôi đã đề cập ở đầu hướng dẫn.

unique users in database

26.860 người dùng duy nhất trong cơ sở dữ liệu. Đó là một mẫu tuyệt vời, vì các chủ đề mà tôi theo dõi là bản địa hóa website và dịch thuật. Hãy xem 20 người dùng có nhiều tweet nhất trong mẫu bằng một truy vấn SQL phức tạp hơn một chút (loại trừ retweet):

top 20 users

Nhìn xem, số lượng tweet lớn nhất thuộc về một bot! Tuy nhiên, hóa ra thành viên cuối cùng trong danh sách đó, UweMuegge, lại khá có tầm ảnh hưởng theo các thống kê mạng mà tôi đã tính cho dự án. Dẫu vậy, anh ấy chắc chắn không phải là người quan trọng nhất.

Cuối cùng, hãy xem một số tweet mà UweMuegge đã viết bằng một truy vấn SQL khác:

uwemuegge tweets

Có vẻ có hai chủ đề chính: tin tuyển dụng dịch thuật và hội nghị dịch thuật. Cũng hợp lý khi những người trong ngành sẽ theo dõi anh ấy trên Twitter.

Một điều khác nổi bật từ ảnh chụp màn hình trên là bạn gặp phải một hạn chế của giao diện dòng lệnh SQLite. Nếu có các trường văn bản lớn, chúng sẽ không hiển thị đẹp và khó đọc. Đó là lý do tại sao trong trường hợp này, dùng DB Browser for SQLite là một ý tưởng hay.

Tóm tắt

Trong hướng dẫn này, bạn đã học cách tạo cơ sở dữ liệu SQLite và thao tác các bảng bằng lệnh chấm và câu lệnh SQL. Ngoài ra, bạn đã thấy một nghiên cứu tình huống nhỏ trong thực tế, nơi tôi dùng cơ sở dữ liệu SQLite để xử lý dữ liệu từ Twitter. Khá nhiều nội dung, xin chúc mừng!

Đáng lưu ý là cơ sở dữ liệu SQLite hữu ích nhất khi kết hợp với R và Python. Bạn có thể thao tác cơ sở dữ liệu SQLite qua Python bằng mô-đun sqlite3 (nếu muốn tìm hiểu thêm, hãy xem hướng dẫn SQLite với Python) hoặc với R thông qua RSQLite. Thực tế, edge list của những người theo dõi người dùng Twitter mà tôi đã đề cập trước đó được lưu trong một cơ sở dữ liệu SQLite mà tôi tạo bằng RSQLite bằng cách nối (append) mạng lưới người theo dõi của mỗi người dùng vào một bảng. Ở bước này của dự án, việc dùng SQLite là tối quan trọng vì những việc như mất điện hoặc cập nhật tự động của Windows có thể tắt máy tính đột ngột và buộc bạn phải bắt đầu thu thập mạng người theo dõi từ đầu. Việc này có thể mất khoảng 4 tuần do giới hạn tốc độ của API Twitter, nên việc phải bắt đầu từ 0 nếu điều đó xảy ra là rất không mong muốn. Tuy nhiên, nếu bạn lưu các mạng người theo dõi vào cơ sở dữ liệu SQLite trong quá trình thu thập, ngay cả khi máy tính tắt đột ngột, bạn có thể tiếp tục thu thập từ người dùng sau người dùng cuối cùng bạn đã có trong cơ sở dữ liệu, tiết kiệm rất nhiều thời gian.

Đó chỉ là một ví dụ về cách cơ sở dữ liệu SQLite có thể là một công cụ tuyệt vời trong bộ công cụ của nhà khoa học dữ liệu. Tôi khuyến khích bạn nghiên cứu thêm về các cơ sở dữ liệu SQLite và SQL vượt ra ngoài phạm vi của hướng dẫn này. Tiếp tục học hỏi; bầu trời là giới hạn!

Nếu bạn muốn học thêm về SQL, hãy tham gia khóa học Giới thiệu về Cơ sở dữ liệu Quan hệ trong SQL của DataCamp.

Chủ đề
SQL
Khoa học Dữ liệu
Phân tích dữ liệu

Tìm hiểu thêm về SQL

{count, plural, one {Khóa học} other {Khóa học}}

Xử lý dữ liệu trong SQL

{hours} giờ
337.7K
Thành thạo truy vấn SQL phức tạp để giải đáp nhiều câu hỏi về Khoa học dữ liệu và chuẩn bị bộ dữ liệu đáng tin cậy để phân tích trong PostgreSQL.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

{count, plural, one {blog} other {blog}}

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm