Tóm tắt :trong hướng dẫn này, chúng tôi sẽ giới thiệu cho bạn các lệnh SQLite được sử dụng phổ biến nhất của chương trình dòng lệnh sqlite3.
Dự án SQLite cung cấp một công cụ dòng lệnh đơn giản có tên sqlite3 (hoặc sqlite3.exe trên Windows) cho phép bạn tương tác với cơ sở dữ liệu SQLite bằng cách sử dụng các câu lệnh và lệnh SQL.
Kết nối với cơ sở dữ liệu SQLite
Để bắt đầu sqlite3, bạn gõ sqlite3 như sau:
>sqlite3
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
Code language: Shell Session (shell)
Theo mặc định, một phiên SQLite sử dụng cơ sở dữ liệu trong bộ nhớ, do đó, tất cả các thay đổi sẽ biến mất khi phiên kết thúc.
Để mở tệp cơ sở dữ liệu, bạn sử dụng .open FILENAME
yêu cầu. Câu lệnh sau sẽ mở ra chinook.db
cơ sở dữ liệu:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Nếu bạn muốn mở một tệp cơ sở dữ liệu cụ thể khi bạn kết nối với cơ sở dữ liệu SQlite, bạn sử dụng lệnh sau:
>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite>
Code language: Shell Session (shell)
Nếu bạn bắt đầu một phiên với tên cơ sở dữ liệu không tồn tại, công cụ sqlite3 sẽ tạo tệp cơ sở dữ liệu.
Ví dụ:lệnh sau tạo cơ sở dữ liệu có tên sales
trong C:\sqlite\db\
thư mục:
>sqlite3 c:\sqlite\db\sales.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite>
Code language: Shell Session (shell)
Hiển thị tất cả các lệnh có sẵn và mục đích của chúng
Để hiển thị tất cả các lệnh có sẵn và mục đích của chúng, bạn sử dụng .help
lệnh như sau:
.help
Code language: Shell Session (shell)
Hiển thị cơ sở dữ liệu trong kết nối cơ sở dữ liệu hiện tại
Để hiển thị tất cả cơ sở dữ liệu trong kết nối hiện tại, bạn sử dụng .databases
yêu cầu. .databases
lệnh hiển thị ít nhất một cơ sở dữ liệu có tên:main
.
Ví dụ:lệnh sau hiển thị tất cả cơ sở dữ liệu của kết nối hiện tại:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
Để thêm cơ sở dữ liệu bổ sung trong kết nối hiện tại, bạn sử dụng câu lệnh ATTACH DATABASE
. Câu lệnh sau thêm chinook
cơ sở dữ liệu với kết nối hiện tại.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Bây giờ nếu bạn chạy .database
một lần nữa, sqlite3 trả về hai cơ sở dữ liệu:main
và chinook
.
sqlite> .databases
seq name file
--- --------------- ---------------------
0 main c:\sqlite\db\sales.db
2 chinook c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Thoát công cụ sqlite3
Để thoát khỏi chương trình sqlite3, bạn sử dụng .exit
lệnh.
sqlite>.exit
Code language: Shell Session (shell)
Hiển thị bảng trong cơ sở dữ liệu
Để hiển thị tất cả các bảng trong cơ sở dữ liệu hiện tại, bạn sử dụng .tables
yêu cầu. Các lệnh sau sẽ mở một kết nối cơ sở dữ liệu mới tới chinook
cơ sở dữ liệu và hiển thị các bảng trong cơ sở dữ liệu.
>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite> .tables
albums employees invoices playlists
artists genres media_types tracks
customers invoice_items playlist_track
sqlite>
Code language: Shell Session (shell)
Nếu bạn muốn tìm các bảng dựa trên một mẫu cụ thể, bạn sử dụng .table
lệnh mẫu. Sqlite3 sử dụng LIKE
toán tử để đối sánh mẫu.
Ví dụ:câu lệnh sau trả về bảng kết thúc bằng chuỗi es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Hiển thị cấu trúc của bảng
Để hiển thị cấu trúc của bảng, bạn sử dụng .schema TABLE
yêu cầu. TABLE
đối số có thể là một mẫu. Nếu bạn bỏ qua, .schema
lệnh sẽ hiển thị cấu trúc của tất cả các bảng.
Lệnh sau hiển thị cấu trúc của albums
bảng.
sqlite> .schema albums
CREATE TABLE "albums"
(
[AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] NVARCHAR(160) NOT NULL,
[ArtistId] INTEGER NOT NULL,
FOREIGN KEY ([ArtistId]) REFERENCES "artists" ([ArtistId])
ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE INDEX [IFK_AlbumArtistId] ON "albums" ([ArtistId]);
sqlite>
Code language: Shell Session (shell)
Để hiển thị lược đồ và nội dung của sqlite_stat
bảng, bạn sử dụng .fullschema
lệnh.
sqlite>.fullschema
Code language: CSS (css)
Hiển thị chỉ mục
Để hiển thị tất cả các chỉ mục của cơ sở dữ liệu hiện tại, bạn sử dụng .indexes
lệnh như sau:
sqlite> .indexes
IFK_AlbumArtistId
IFK_CustomerSupportRepId
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
IFK_InvoiceLineInvoiceId
IFK_InvoiceLineTrackId
IFK_PlaylistTrackTrackId
IFK_TrackAlbumId
IFK_TrackGenreId
IFK_TrackMediaTypeId
Code language: Shell Session (shell)
Để hiển thị các chỉ mục của một bảng cụ thể, bạn sử dụng .indexes TABLE
yêu cầu. Ví dụ:để hiển thị chỉ mục của albums
bảng, bạn sử dụng lệnh sau:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
Để hiển thị chỉ mục của các bảng có tên kết thúc bằng es
, bạn sử dụng một mẫu của toán tử LIKE.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Lưu kết quả của một truy vấn vào một tệp
Để lưu kết quả của một truy vấn vào một tệp, bạn sử dụng .output FILENAME
yêu cầu. Sau khi bạn phát hành .output
lệnh, tất cả kết quả của các truy vấn tiếp theo sẽ được lưu vào tệp mà bạn đã chỉ định trong FILENAME
lý lẽ. Nếu bạn chỉ muốn lưu kết quả của một truy vấn tiếp theo vào tệp, bạn phát hành .once FILENAME
lệnh.
Để hiển thị lại kết quả của truy vấn với đầu ra chuẩn, bạn phát hành .output
lệnh không có đối số.
Các lệnh sau chọn title
từ albums
bảng và ghi kết quả vào albums.txt
tệp.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Thực thi các câu lệnh SQL từ một tệp
Giả sử chúng ta có một tệp có tên là commands.txt
trong c:\sqlite\
thư mục có nội dung sau:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
Để thực thi các câu lệnh SQL trong commands.txt
, bạn sử dụng .read FILENAME
lệnh như sau:
sqlite> .mode column
sqlite> .header on
sqlite> .read c:/sqlite/commands.txt
AlbumId Title
---------- ----------------------
156 ...And Justice For All
257 20th Century Masters -
296 A Copland Celebration,
94 A Matter of Life and D
95 A Real Dead One
96 A Real Live One
285 A Soprano Inspired
139 A TempestadeTempestade
203 A-Sides
160 Ace Of Spades
Code language: Shell Session (shell)
Trong hướng dẫn này, bạn đã học được nhiều lệnh hữu ích trong công cụ sqlite3 để thực hiện các tác vụ khác nhau liên quan đến cơ sở dữ liệu SQLite.