Bảng cheat chức năng sql

Mỗi cột của data chỉ có thể chứa giá trị boolean, số (bao gồm cả loại ngày/giờ) hoặc chuỗi

  • Trong trường hợp các loại dữ liệu hỗn hợp trong một cột, loại dữ liệu đa số xác định loại dữ liệu của cột cho mục đích truy vấn. Các loại dữ liệu thiểu số được coi là giá trị null

  • query - Truy vấn để thực hiện, được viết bằng Ngôn ngữ truy vấn API trực quan hóa của Google

    • Giá trị cho query phải được đặt trong dấu ngoặc kép hoặc là tham chiếu đến ô chứa văn bản thích hợp

    • Xem https. // nhà phát triển. Google. com/chart/interactive/docs/querylanguage để biết thêm chi tiết về ngôn ngữ truy vấn

  • headers - [ TÙY CHỌN ] - Số hàng tiêu đề ở trên cùng của data. Nếu bỏ qua hoặc đặt thành -1, giá trị được đoán dựa trên nội dung của data

  • ví dụ

    Tạo một bản sao

    Ghi chú. Mỗi ví dụ nằm trong tab riêng của nó

    Dữ liệu mẫu

     

    Chọn & ở đâu

    Trả về các hàng khớp với điều kiện đã chỉ định bằng cách sử dụng các mệnh đề QUERY(A2:E6,F2,FALSE)1 và QUERY(A2:E6,F2,FALSE)2

     

    Nhóm theo

    Tổng hợp các giá trị QUERY(A2:E6,F2,FALSE)3 trên các hàng bằng cách sử dụng các mệnh đề QUERY(A2:E6,F2,FALSE)1 và QUERY(A2:E6,F2,FALSE)5

     

    Trục

    Chuyển đổi các giá trị riêng biệt trong cột thành cột mới

     

    Đặt bởi

    Tổng hợp các giá trị QUERY(A2:E6,F2,FALSE)6 trên các hàng và sắp xếp theo giá trị tối đa của QUERY(A2:E6,F2,FALSE)3

     

    tiêu đề

    Chỉ định số lượng hàng tiêu đề trong phạm vi đầu vào, cho phép chuyển đổi đầu vào phạm vi hàng nhiều tiêu đề thành đầu vào tiêu đề một hàng

    Dự án SQLite cung cấp một chương trình dòng lệnh đơn giản có tên là sqlite3 (hoặc sqlite3. exe trên Windows) cho phép người dùng nhập và thực thi thủ công các câu lệnh SQL đối với cơ sở dữ liệu SQLite hoặc đối với một. Tài liệu này giới thiệu ngắn gọn về cách sử dụng chương trình sqlite3

    Bắt đầu chương trình sqlite3 bằng cách gõ "sqlite3" tại dấu nhắc lệnh, tùy chọn theo sau là tên của tệp chứa cơ sở dữ liệu SQLite (hoặc ). Nếu tệp được đặt tên không tồn tại, một tệp cơ sở dữ liệu mới với tên đã cho sẽ được tạo tự động. Nếu không có tệp cơ sở dữ liệu nào được chỉ định trên dòng lệnh, cơ sở dữ liệu tạm thời sẽ được tạo và tự động bị xóa khi thoát khỏi chương trình "sqlite3"

    Khi khởi động, chương trình sqlite3 sẽ hiển thị một thông báo biểu ngữ ngắn gọn sau đó nhắc bạn nhập SQL. Nhập câu lệnh SQL (kết thúc bằng dấu chấm phẩy), nhấn "Enter" và SQL sẽ được thực thi

    Ví dụ: để tạo cơ sở dữ liệu SQLite mới có tên "ex1" với một bảng có tên "tbl1", bạn có thể thực hiện việc này

    $ sqlite3 ex1
    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    sqlite> create table tbl1(one text, two int);
    sqlite> insert into tbl1 values('hello!',10);
    sqlite> insert into tbl1 values('goodbye', 20);
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    

    Chấm dứt chương trình sqlite3 bằng cách nhập ký tự End-Of-File của hệ thống (thường là Control-D). Sử dụng ký tự ngắt (thường là Control-C) để dừng câu lệnh SQL đang chạy dài

    Đảm bảo rằng bạn nhập dấu chấm phẩy ở cuối mỗi lệnh SQL. Chương trình sqlite3 tìm kiếm dấu chấm phẩy để biết khi nào lệnh SQL của bạn hoàn thành. Nếu bạn bỏ qua dấu chấm phẩy, sqlite3 sẽ cung cấp cho bạn lời nhắc tiếp tục và đợi bạn nhập thêm văn bản để hoàn thành lệnh SQL. Tính năng này cho phép bạn nhập các lệnh SQL trải rộng trên nhiều dòng. Ví dụ

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    

    Người dùng Windows có thể nhấp đúp vào sqlite3. exe để khiến shell dòng lệnh bật lên một cửa sổ đầu cuối chạy SQLite. Tuy nhiên, vì nhấp đúp sẽ khởi động sqlite3. exe không có đối số dòng lệnh, sẽ không có tệp cơ sở dữ liệu nào được chỉ định, vì vậy SQLite sẽ sử dụng cơ sở dữ liệu tạm thời bị xóa khi phiên thoát. Để sử dụng tệp đĩa liên tục làm cơ sở dữ liệu, hãy nhập ". open" ngay sau khi cửa sổ đầu cuối khởi động

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    

    Ví dụ trên khiến tệp cơ sở dữ liệu có tên "ex1. db" được mở và sử dụng. "ex1. db" được tạo nếu nó không tồn tại trước đó. Bạn có thể muốn sử dụng tên đường dẫn đầy đủ để đảm bảo rằng tệp nằm trong thư mục mà bạn cho rằng nó nằm trong đó. Sử dụng dấu gạch chéo lên làm ký tự phân cách thư mục. Nói cách khác, sử dụng "c. /công việc/ex1. db", không phải "c. \work\ex1. db"

    Ngoài ra, bạn có thể tạo cơ sở dữ liệu mới bằng cách sử dụng bộ lưu trữ tạm thời mặc định, sau đó lưu cơ sở dữ liệu đó vào một tệp đĩa bằng cách sử dụng ". lưu" lệnh

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    

    Hãy cẩn thận khi sử dụng ". lưu" vì nó sẽ ghi đè lên bất kỳ tệp cơ sở dữ liệu nào có cùng tên mà không cần nhắc xác nhận. Như với ". open", bạn có thể muốn sử dụng tên đường dẫn đầy đủ với dấu phân cách thư mục dấu gạch chéo về phía trước để tránh sự mơ hồ

    Hầu hết thời gian, sqlite3 chỉ đọc các dòng đầu vào và chuyển chúng vào thư viện SQLite để thực thi. Nhưng nhập các dòng bắt đầu bằng dấu chấm (". ") bị chặn và giải thích bởi chính chương trình sqlite3. Các "lệnh dấu chấm" này thường được sử dụng để thay đổi định dạng đầu ra của truy vấn hoặc để thực thi một số câu lệnh truy vấn được đóng gói sẵn. Ban đầu chỉ có một vài lệnh dấu chấm, nhưng qua nhiều năm, nhiều tính năng mới đã được tích lũy để ngày nay có hơn 60 lệnh.

    Để có danh sách các lệnh dấu chấm có sẵn, bạn có thể nhập ". giúp đỡ" không có đối số. Hoặc nhập ". help TOPIC" để biết thông tin chi tiết về TOPIC. Danh sách các lệnh chấm có sẵn sau

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    

    4. 1. cấu trúc dòng

    Đầu vào của CLI được phân tích cú pháp thành một chuỗi bao gồm

    • câu lệnh SQL;
    • dot-lệnh;
    • bình luận CLI

    Các câu lệnh SQL có dạng tự do và có thể trải rộng trên nhiều dòng, với khoảng trắng hoặc nhận xét SQL được nhúng ở mọi nơi. Chúng được kết thúc bằng dấu ';' . Khi không ở cuối dòng đầu vào, dấu ';' . Khoảng trắng ở cuối bị bỏ qua cho mục đích chấm dứt

    Lệnh chấm có cấu trúc hạn chế hơn

    • Nó phải bắt đầu với ". " ở lề trái không có khoảng trắng trước
    • Nó phải được chứa hoàn toàn trên một dòng đầu vào
    • Nó không thể xảy ra ở giữa câu lệnh SQL thông thường. Nói cách khác, nó không thể xảy ra tại dấu nhắc tiếp tục
    • Không có cú pháp bình luận cho dấu chấm lệnh

    CLI cũng chấp nhận nhận xét toàn bộ dòng bắt đầu bằng ký tự '#' và kéo dài đến cuối dòng. Không thể có khoảng trắng trước '#'

    4. 2. Đối số lệnh chấm

    Các đối số được chuyển đến các lệnh dấu chấm được phân tích cú pháp từ đuôi lệnh, theo các quy tắc này

    1. Dòng mới ở cuối và bất kỳ khoảng trắng ở cuối nào khác đều bị loại bỏ;
    2. Khoảng trắng ngay sau tên lệnh dấu chấm hoặc bất kỳ giới hạn đầu vào đối số nào đều bị loại bỏ;
    3. Đầu vào đối số bắt đầu bằng bất kỳ ký tự không phải khoảng trắng nào;
    4. Do đó, một đầu vào đối số kết thúc bằng một ký tự phụ thuộc vào ký tự đầu của nó
      • đối với dấu nháy đơn hàng đầu ('), dấu nháy đơn đóng vai trò là dấu phân cách kết thúc;
      • đối với dấu ngoặc kép hàng đầu ("), dấu ngoặc kép không thoát đóng vai trò là dấu phân cách kết thúc;
      • đối với bất kỳ ký tự đầu nào khác, dấu phân cách cuối là bất kỳ khoảng trắng nào;
      • phần cuối của lệnh đóng vai trò là dấu phân cách kết thúc cho bất kỳ đối số nào;
    5. Trong đầu vào đối số được trích dẫn kép, trích dẫn kép thoát dấu gạch chéo ngược là một phần của đối số chứ không phải là trích dẫn kết thúc của nó;
    6. Trong một đối số được trích dẫn kép, quá trình dịch chuỗi thoát dấu gạch chéo ngược, ký tự chuỗi C truyền thống được thực hiện;
    7. Các dấu phân cách đầu vào của đối số (dấu ngoặc kép hoặc khoảng trắng) bị loại bỏ để tạo ra đối số đã truyền

    4. 3. Thực thi lệnh chấm

    Các lệnh dấu chấm được giải thích bởi sqlite3. exe chương trình dòng lệnh, không phải bởi chính SQLite. Vì vậy, không có lệnh dấu chấm nào hoạt động như một đối số cho các giao diện SQLite, chẳng hạn như sqlite3_prepare() hoặc sqlite3_exec()

    Chương trình sqlite3 có thể hiển thị kết quả của truy vấn ở 14 định dạng đầu ra khác nhau

    • ascii
    • hộp
    • csv
    • cột
    • html
    • chèn
    • json
    • đường kẻ
    • danh sách
    • hạ giá
    • trích dẫn
    • bàn
    • tab
    • tcl

    Bạn có thể dùng ". mode" dấu chấm để chuyển đổi giữa các định dạng đầu ra này. Chế độ đầu ra mặc định là "danh sách". Trong chế độ danh sách, mỗi hàng của kết quả truy vấn được ghi trên một dòng đầu ra và mỗi cột trong hàng đó được phân tách bằng một chuỗi dấu phân cách cụ thể. Dấu phân cách mặc định là một ký hiệu ống (". "). Chế độ danh sách đặc biệt hữu ích khi bạn định gửi đầu ra của truy vấn tới một chương trình khác (chẳng hạn như AWK) để xử lý bổ sung

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    

    Kiểu ". mode" không có đối số để hiển thị chế độ hiện tại

    sqlite> .mode
    current output mode: list
    sqlite>
    

    Sử dụng ". dấu phân cách" để thay đổi dấu phân cách. Ví dụ: để thay đổi dấu phân cách thành dấu phẩy và dấu cách, bạn có thể thực hiện việc này

    sqlite> .separator ", "
    sqlite> select * from tbl1;
    hello!, 10
    goodbye, 20
    sqlite>
    

    Tiếp theo ". mode" có thể đặt lại ". dấu phân cách" trở lại một số giá trị mặc định (tùy thuộc vào đối số của nó). Vì vậy, bạn có thể sẽ cần phải lặp lại ". dấu phân cách" bất cứ khi nào bạn thay đổi chế độ nếu bạn muốn tiếp tục sử dụng dấu phân cách không chuẩn

    Trong chế độ "trích dẫn", đầu ra được định dạng dưới dạng ký tự SQL. Các chuỗi được đặt trong dấu ngoặc đơn và dấu ngoặc đơn bên trong được thoát bằng cách nhân đôi. Các đốm màu được hiển thị trong ký hiệu chữ blob hệ thập lục phân (Ví dụ. x'abcd'). Các số được hiển thị dưới dạng văn bản ASCII và các giá trị NULL được hiển thị là "NULL". Tất cả các cột được phân tách với nhau bằng dấu phẩy (hoặc bất kỳ ký tự thay thế nào được chọn bằng cách sử dụng ". dấu phân cách")

    ________số 8_______

    Ở chế độ "dòng", mỗi cột trong một hàng của cơ sở dữ liệu được hiển thị trên một dòng của chính nó. Mỗi dòng bao gồm tên cột, dấu bằng và dữ liệu cột. Các bản ghi liên tiếp cách nhau bởi một dòng trống. Dưới đây là một ví dụ về đầu ra chế độ dòng

    sqlite> .mode line
    sqlite> select * from tbl1;
    one = hello!
    two = 10
    
    one = goodbye
    two = 20
    sqlite>
    

    Ở chế độ cột, mỗi bản ghi được hiển thị trên một dòng riêng biệt với dữ liệu được căn chỉnh trong các cột. Ví dụ

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    0

    Ở chế độ "cột" (và cả ở chế độ "hộp", "bảng" và "đánh dấu") chiều rộng của các cột sẽ tự động điều chỉnh. Nhưng bạn có thể ghi đè lên điều này, cung cấp chiều rộng cụ thể cho mỗi cột bằng cách sử dụng lệnh ". chiều rộng" lệnh. Những lập luận để ". width" là các số nguyên là số lượng ký tự dành cho mỗi cột. Số âm có nghĩa là căn phải. Như vậy

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    1

    Chiều rộng bằng 0 có nghĩa là chiều rộng cột được chọn tự động. Độ rộng cột không xác định trở thành số không. Do đó, lệnh ". width" không có đối số sẽ đặt lại tất cả độ rộng cột về 0 và do đó khiến tất cả độ rộng cột được xác định tự động

    Chế độ "cột" là định dạng đầu ra dạng bảng. Các định dạng đầu ra dạng bảng khác là "box", "markdown" và "table"

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    2

    Các chế độ cột chấp nhận một số tùy chọn bổ sung để kiểm soát định dạng. Tùy chọn "--wrap N" (trong đó N là số nguyên) làm cho các cột ngắt dòng văn bản dài hơn N ký tự. Gói bị vô hiệu hóa nếu N bằng không

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    3

    Việc ngắt dòng xảy ra sau chính xác N ký tự, ký tự này có thể ở giữa một từ. Để bao quanh ranh giới từ, hãy thêm tùy chọn "--wordwrap on" (hoặc chỉ viết tắt là "-ww")

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    4

    Tùy chọn "--quote" làm cho kết quả trong mỗi cột được trích dẫn giống như một ký tự SQL, như trong chế độ "trích dẫn". Xem trợ giúp trực tuyến để biết các tùy chọn bổ sung

    Lệnh ". hộp chế độ --wrap 60 --quote" rất hữu ích cho các truy vấn cơ sở dữ liệu có mục đích chung đến mức nó được đặt bí danh riêng. Thay vì gõ toàn bộ lệnh gồm 27 ký tự đó, bạn chỉ cần nói ". chế độ qbox"

    Một chế độ đầu ra hữu ích khác là "chèn". Trong chế độ chèn, đầu ra được định dạng giống như các câu lệnh SQL INSERT. Sử dụng chế độ chèn để tạo văn bản mà sau này có thể được sử dụng để nhập dữ liệu vào cơ sở dữ liệu khác

    Khi chỉ định chế độ chèn, bạn phải đưa ra một đối số phụ là tên của bảng sẽ được chèn vào. Ví dụ

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    5

    Các chế độ đầu ra khác bao gồm "csv", "json" và "tcl". Hãy tự mình thử để xem những gì họ làm

    Chương trình sqlite3 cung cấp một số lệnh tiện ích hữu ích để xem lược đồ của cơ sở dữ liệu. Không có gì mà các lệnh này làm mà không thể thực hiện được bằng một số phương tiện khác. Các lệnh này được cung cấp hoàn toàn dưới dạng phím tắt

    Ví dụ, để xem danh sách các bảng trong cơ sở dữ liệu, bạn có thể nhập ". những cái bàn"

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    6

    Các ". bảng" tương tự như cài đặt chế độ danh sách, sau đó thực hiện truy vấn sau

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    7

    Nhưng ". bảng" lệnh làm nhiều hơn. Nó truy vấn bảng sqlite_schema cho tất cả các cơ sở dữ liệu đính kèm, không chỉ cơ sở dữ liệu chính. Và nó sắp xếp đầu ra của nó thành các cột gọn gàng

    Các ". indexes" hoạt động theo cách tương tự để liệt kê tất cả các chỉ mục. Nếu ". indexes" được đưa ra một đối số là tên của một bảng, sau đó nó chỉ hiển thị các chỉ mục trên bảng đó

    Các ". lược đồ" hiển thị lược đồ hoàn chỉnh cho cơ sở dữ liệu hoặc cho một bảng nếu một đối số tên bảng tùy chọn được cung cấp

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    8

    Các ". lược đồ" gần giống như cài đặt chế độ danh sách, sau đó nhập truy vấn sau

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    
    9

    Như với ". bảng", ". lược đồ" hiển thị lược đồ cho tất cả các cơ sở dữ liệu được đính kèm. Nếu bạn chỉ muốn xem lược đồ cho một cơ sở dữ liệu (có thể là "chính") thì bạn có thể thêm một đối số vào ". schema" để hạn chế đầu ra của nó

    Các ". lược đồ" có thể được tăng cường bằng tùy chọn "--indent", trong trường hợp đó, nó cố gắng định dạng lại các câu lệnh CREATE khác nhau của lược đồ để con người dễ đọc hơn

    Các ". cơ sở dữ liệu" hiển thị danh sách tất cả các cơ sở dữ liệu đang mở trong kết nối hiện tại. Luôn có ít nhất 2. Cái đầu tiên là "chính", cơ sở dữ liệu ban đầu đã mở. Thứ hai là "temp", cơ sở dữ liệu được sử dụng cho các bảng tạm thời. Có thể có các cơ sở dữ liệu bổ sung được liệt kê cho các cơ sở dữ liệu được đính kèm bằng cách sử dụng câu lệnh ATTACH. Cột đầu ra đầu tiên là tên cơ sở dữ liệu được đính kèm và cột kết quả thứ hai là tên tệp của tệp bên ngoài. Có thể có cột kết quả thứ ba sẽ là "'r/o'" hoặc "'r/w'" tùy thuộc vào việc tệp cơ sở dữ liệu là chỉ đọc hay đọc-ghi. Và có thể có cột kết quả thứ tư hiển thị kết quả của sqlite3_txn_state() cho tệp cơ sở dữ liệu đó

    Các ". fullschema" lệnh dấu chấm hoạt động giống như lệnh ". lược đồ" ở chỗ nó hiển thị toàn bộ lược đồ cơ sở dữ liệu. Nhưng ". fullschema" cũng bao gồm các kết xuất của bảng thống kê "sqlite_stat1", "sqlite_stat3" và "sqlite_stat4" nếu chúng tồn tại. Các ". fullschema" thường cung cấp tất cả thông tin cần thiết để tạo lại chính xác một kế hoạch truy vấn cho một truy vấn cụ thể. Khi báo cáo các sự cố đáng ngờ với công cụ lập kế hoạch truy vấn SQLite cho nhóm phát triển SQLite, các nhà phát triển được yêu cầu cung cấp ". fullschema" như một phần của báo cáo sự cố. Lưu ý rằng bảng sqlite_stat3 và sqlite_stat4 chứa các mẫu mục nhập chỉ mục và do đó có thể chứa dữ liệu nhạy cảm, vì vậy đừng gửi ". fullschema" của cơ sở dữ liệu độc quyền trên kênh công cộng

    Các ". open" sẽ mở một kết nối cơ sở dữ liệu mới, sau lần đầu tiên đóng lệnh cơ sở dữ liệu đã mở trước đó. Ở dạng đơn giản nhất, ". open" chỉ đơn thuần gọi sqlite3_open() trên tệp có tên là đối số của nó. Sử dụng tên ". ký ức. " để mở cơ sở dữ liệu trong bộ nhớ mới biến mất khi CLI thoát hoặc khi ". open" được chạy lại

    Nếu tùy chọn --new được bao gồm trong ". open", thì cơ sở dữ liệu được đặt lại trước khi được mở. Mọi dữ liệu trước đó đều bị hủy. Đây là thao tác ghi đè phá hoại dữ liệu trước đó và không yêu cầu xác nhận, vì vậy hãy sử dụng tùy chọn này một cách cẩn thận

    Tùy chọn --readonly mở cơ sở dữ liệu ở chế độ chỉ đọc. Viết sẽ bị cấm

    Tùy chọn --deserialize khiến toàn bộ nội dung của tệp trên đĩa được đọc vào bộ nhớ và sau đó được mở dưới dạng cơ sở dữ liệu trong bộ nhớ bằng giao diện sqlite3_deserialize(). Tất nhiên, điều này sẽ cần rất nhiều bộ nhớ nếu bạn có một cơ sở dữ liệu lớn. Ngoài ra, bất kỳ thay đổi nào bạn thực hiện đối với cơ sở dữ liệu sẽ không được lưu lại vào đĩa trừ khi bạn lưu chúng một cách rõ ràng bằng lệnh ". lưu" hoặc ". lệnh sao lưu"

    Tùy chọn --append khiến cơ sở dữ liệu SQLite được thêm vào một tệp hiện có thay vì hoạt động như một tệp độc lập. Xem phần mở rộng appendvfs để biết thêm thông tin

    Tùy chọn --zip khiến tệp đầu vào được chỉ định được hiểu là tệp lưu trữ ZIP thay vì tệp cơ sở dữ liệu SQLite

    Tùy chọn --hexdb khiến nội dung cơ sở dữ liệu được đọc từ các dòng đầu vào tiếp theo ở định dạng hex, thay vì từ một tệp riêng biệt trên đĩa. Có thể sử dụng công cụ dòng lệnh "dbtotxt" để tạo văn bản phù hợp cho cơ sở dữ liệu. Tùy chọn --hexdb được các nhà phát triển SQLite sử dụng cho mục đích thử nghiệm. Chúng tôi không biết bất kỳ trường hợp sử dụng nào cho tùy chọn này ngoài thử nghiệm và phát triển SQLite nội bộ

    8. 1. Ghi kết quả vào tệp

    Theo mặc định, sqlite3 gửi kết quả truy vấn đến đầu ra tiêu chuẩn. Bạn có thể thay đổi điều này bằng cách sử dụng ". đầu ra" và ". một lần" lệnh. Chỉ cần đặt tên của tệp đầu ra làm đối số cho. đầu ra và tất cả các kết quả truy vấn tiếp theo sẽ được ghi vào tệp đó. Hoặc sử dụng. lệnh một lần thay vì. đầu ra và đầu ra sẽ chỉ được chuyển hướng cho một lệnh tiếp theo trước khi trở lại bảng điều khiển. Sử dụng. đầu ra không có đối số để bắt đầu ghi lại vào đầu ra tiêu chuẩn. Ví dụ

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    0

    Nếu ký tự đầu tiên của ". đầu ra" hoặc ". once" tên tệp là ký hiệu ống dẫn (". ") thì các ký tự còn lại được coi là một lệnh và đầu ra được gửi tới lệnh đó. Điều này giúp dễ dàng đưa kết quả của một truy vấn vào một số quy trình khác. Ví dụ: lệnh "open -f" trên máy Mac sẽ mở trình soạn thảo văn bản để hiển thị nội dung mà nó đọc từ đầu vào tiêu chuẩn. Vì vậy, để xem kết quả của một truy vấn trong trình soạn thảo văn bản, người ta có thể nhập

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    1

    Nếu ". đầu ra" hoặc ". một lần" có đối số là "-e" thì đầu ra được thu thập vào một tệp tạm thời và trình soạn thảo văn bản hệ thống được gọi trên tệp văn bản đó. Do đó, lệnh ". một lần -e" đạt được kết quả tương tự như ". một lần '. open -f'" nhưng với lợi ích là có thể di động trên tất cả các hệ thống

    Nếu ". đầu ra" hoặc ". once" có đối số "-x", khiến chúng tích lũy đầu ra dưới dạng Giá trị được phân tách bằng dấu phẩy (CSV) trong tệp tạm thời, sau đó gọi tiện ích hệ thống mặc định để xem tệp CSV (thường là chương trình bảng tính) trên kết quả. Đây là một cách nhanh chóng để gửi kết quả của một truy vấn đến một bảng tính để xem dễ dàng

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    2

    Các ". excel" là bí danh của ". một lần -x". Nó làm chính xác điều tương tự

    8. 2. Đọc SQL từ một tệp

    Trong chế độ tương tác, sqlite3 đọc văn bản đầu vào (câu lệnh SQL hoặc ) từ bàn phím. Tất nhiên, bạn cũng có thể chuyển hướng đầu vào từ một tệp khi khởi chạy sqlite3, nhưng sau đó bạn không có khả năng tương tác với chương trình. Đôi khi sẽ rất hữu ích khi chạy tập lệnh SQL có trong tệp nhập các lệnh khác từ dòng lệnh. Đối với điều này, ". read" dot-lệnh được cung cấp

    Các ". read" nhận một đối số duy nhất (thường là) tên của tệp để đọc văn bản đầu vào

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    3

    Các ". read" tạm thời ngừng đọc từ bàn phím và thay vào đó lấy đầu vào của nó từ tệp có tên. Khi đến cuối tệp, đầu vào sẽ trở lại bàn phím. Tệp tập lệnh có thể chứa các lệnh dấu chấm, giống như đầu vào tương tác thông thường

    Nếu lập luận để ". đọc" bắt đầu bằng ". ", thì thay vì mở đối số dưới dạng tệp, nó sẽ chạy đối số (không có ký tự " ở đầu. ") làm lệnh, sau đó sử dụng đầu ra của lệnh đó làm đầu vào. Do đó, nếu bạn có một tập lệnh tạo SQL, bạn có thể thực thi trực tiếp SQL đó bằng một lệnh tương tự như sau

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    4

    8. 3. Các hàm I/O tệp

    Trình bao dòng lệnh thêm hai hàm SQL do ứng dụng xác định để tạo điều kiện thuận lợi cho việc đọc nội dung từ một tệp vào một cột trong bảng và ghi nội dung của một cột vào một tệp tương ứng

    Hàm readfile(X) SQL đọc toàn bộ nội dung của tệp có tên X và trả về nội dung đó dưới dạng BLOB. Điều này có thể được sử dụng để tải nội dung vào một bảng. Ví dụ

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    5

    Hàm SQL writefile(X,Y) ghi blob Y vào tệp có tên X và trả về số byte đã ghi. Sử dụng chức năng này để trích xuất nội dung của một cột trong bảng thành một tệp. Ví dụ

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    6

    Lưu ý rằng các hàm readfile(X) và writefile(X,Y) là các hàm mở rộng và không được tích hợp vào thư viện SQLite cốt lõi. Các thói quen này có sẵn dưới dạng tiện ích mở rộng có thể tải trong ext/misc/fileio. tệp nguồn c trong

    8. 4. Hàm SQL chỉnh sửa ()

    CLI có một hàm SQL tích hợp khác có tên edit(). Edit() nhận một hoặc hai đối số. Đối số đầu tiên là một giá trị - thường là một chuỗi nhiều dòng lớn sẽ được chỉnh sửa. Đối số thứ hai là lệnh gọi trình soạn thảo văn bản. (Nó có thể bao gồm các tùy chọn để ảnh hưởng đến hành vi của biên tập viên. ) Nếu đối số thứ hai bị bỏ qua, biến môi trường VISUAL sẽ được sử dụng. Hàm edit() ghi đối số đầu tiên của nó vào một tệp tạm thời, gọi trình chỉnh sửa trên tệp tạm thời, đọc lại tệp trở lại bộ nhớ sau khi trình chỉnh sửa hoàn tất, sau đó trả về văn bản đã chỉnh sửa

    Hàm edit() có thể được sử dụng để thay đổi giá trị văn bản lớn. Ví dụ

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    7

    Trong ví dụ này, nội dung của tài liệu. trường nội dung cho mục nhập tài liệu. tên là "báo cáo-15" sẽ được gửi đến biên tập viên. Sau khi trình chỉnh sửa trở lại, kết quả sẽ được ghi lại vào tài liệu. lĩnh vực cơ thể

    Thao tác mặc định của edit() là gọi trình soạn thảo văn bản. Nhưng bằng cách sử dụng một chương trình chỉnh sửa thay thế trong đối số thứ hai, bạn cũng có thể sử dụng nó để chỉnh sửa hình ảnh hoặc các tài nguyên phi văn bản khác. Ví dụ: nếu bạn muốn sửa đổi hình ảnh JPEG tình cờ được lưu trữ trong một trường của bảng, bạn có thể chạy

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    8

    Chương trình chỉnh sửa cũng có thể được sử dụng làm trình xem, chỉ cần bỏ qua giá trị trả về. Ví dụ: để chỉ nhìn vào hình ảnh trên, bạn có thể chạy

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open ex1.db
    sqlite>
    
    9

    8. 5. Nhập tệp dưới dạng CSV hoặc các định dạng khác

    Sử dụng ". import" để nhập CSV (giá trị được phân tách bằng dấu phẩy) hoặc dữ liệu được phân tách tương tự vào bảng SQLite. Các ". lệnh nhập khẩu" nhận hai đối số là nguồn dữ liệu sẽ được đọc và tên của bảng SQLite mà dữ liệu sẽ được chèn vào. Đối số nguồn là tên của tệp sẽ được đọc hoặc nếu nó bắt đầu bằng dấu ". " ký tự, nó chỉ định một lệnh sẽ được chạy để tạo dữ liệu đầu vào

    Lưu ý rằng điều quan trọng là phải đặt "chế độ" trước khi chạy ". lệnh nhập". Điều này là thận trọng để ngăn trình bao dòng lệnh cố diễn giải văn bản tệp đầu vào dưới dạng một số định dạng khác với cách tệp được cấu trúc. Nếu các tùy chọn --csv hoặc --ascii được sử dụng, chúng sẽ kiểm soát các dấu phân cách đầu vào nhập. Mặt khác, các dấu phân cách là những dấu hiệu có hiệu lực đối với chế độ đầu ra hiện tại

    Để nhập vào một bảng không có trong lược đồ "chính", tùy chọn --schema có thể được sử dụng để chỉ định rằng bảng nằm trong một số lược đồ khác. Điều này có thể hữu ích cho cơ sở dữ liệu ATTACH'ed hoặc để nhập vào bảng TEMP

    Khi. quá trình nhập được chạy, việc xử lý hàng đầu tiên của nó phụ thuộc vào việc bảng mục tiêu đã tồn tại chưa. Nếu nó không tồn tại, bảng sẽ được tạo tự động và nội dung của hàng đầu tiên được sử dụng để đặt tên cho tất cả các cột trong bảng. Trong trường hợp này, nội dung dữ liệu bảng được lấy từ hàng đầu vào thứ hai và tiếp theo. Nếu bảng mục tiêu đã tồn tại, mọi hàng của đầu vào, kể cả hàng đầu tiên, được coi là nội dung dữ liệu thực tế. Nếu tệp đầu vào chứa một hàng nhãn cột ban đầu, bạn có thể tạo. lệnh nhập bỏ qua hàng đầu tiên đó bằng tùy chọn "--skip 1"

    Dưới đây là ví dụ về cách sử dụng, tải bảng tạm thời có sẵn từ tệp CSV có tên cột ở hàng đầu tiên

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    0

    Trong khi đọc dữ liệu đầu vào ở chế độ khác với 'ascii', ". nhập" diễn giải đầu vào dưới dạng bản ghi bao gồm các trường theo thông số kỹ thuật RFC 4180 với ngoại lệ này. Bản ghi đầu vào và dấu tách trường được đặt theo chế độ hoặc bằng cách sử dụng. lệnh tách. Các trường luôn có thể loại bỏ trích dẫn để đảo ngược trích dẫn được thực hiện theo RFC 4180, ngoại trừ ở chế độ ascii

    Để nhập dữ liệu có dấu phân cách tùy ý và không có trích dẫn, trước tiên hãy đặt chế độ ascii (". mode ascii"), sau đó đặt dấu phân cách trường và bản ghi bằng cách sử dụng ". lệnh phân cách". Điều này sẽ ngăn chặn trích dẫn. Trên ". nhập", dữ liệu sẽ được chia thành các trường và bản ghi theo các dấu phân cách được chỉ định

    8. 6. Xuất sang CSV

    Để xuất bảng SQLite (hoặc một phần của bảng) dưới dạng CSV, chỉ cần đặt "chế độ" thành "csv" rồi chạy truy vấn để trích xuất các hàng mong muốn của bảng. Đầu ra sẽ được định dạng dưới dạng CSV theo RFC 4180

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    1

    Trong ví dụ trên, ". headers on" khiến các nhãn cột được in dưới dạng hàng đầu tiên của đầu ra. Điều này có nghĩa là hàng đầu tiên của tệp CSV kết quả sẽ chứa các nhãn cột. Nếu nhãn cột không được mong muốn, hãy đặt ". tiêu đề tắt" thay vào đó. (Các ". cài đặt tiêu đề tắt" là cài đặt mặc định và có thể được bỏ qua nếu tiêu đề chưa được bật trước đó. )

    Dòng ". một khi FILENAME" khiến tất cả đầu ra truy vấn chuyển vào tệp được đặt tên thay vì được in trên bảng điều khiển. Trong ví dụ trên, dòng đó khiến nội dung CSV được ghi vào một tệp có tên "C. /công việc/dữ liệu ra. csv"

    Dòng cuối cùng của ví dụ (". hệ thống c. /công việc/dữ liệu. csv") có tác dụng tương tự như nhấp đúp vào tệp c. /công việc/dữ liệu ra. tệp csv trong cửa sổ. Thao tác này thường sẽ hiển thị chương trình bảng tính để hiển thị tệp CSV

    Lệnh đó chỉ hoạt động như được viết trên Windows. Dòng tương đương trên máy Mac sẽ là

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    2

    Trên Linux và các hệ thống unix khác, bạn sẽ cần nhập một cái gì đó như

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    3

    8. 6. 1. Xuất sang Excel

    Để đơn giản hóa việc xuất sang bảng tính, CLI cung cấp ". excel" nắm bắt đầu ra của một truy vấn đơn lẻ và gửi đầu ra đó tới chương trình bảng tính mặc định trên máy tính chủ. Sử dụng nó như thế này

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    4

    Lệnh trên ghi đầu ra của truy vấn dưới dạng CSV vào tệp tạm thời, gọi trình xử lý mặc định cho tệp CSV (thường là chương trình bảng tính ưa thích như Excel hoặc LibreOffice), sau đó xóa tệp tạm thời. Đây thực chất là một phương pháp rút gọn để thực hiện trình tự ". csv", ". một lần" và ". system" các lệnh được mô tả ở trên

    Các ". excel" thực sự là một bí danh cho ". một lần -x". Tùy chọn -x để. một lần khiến nó ghi kết quả dưới dạng CSV vào một tệp tạm thời có tên là ". csv", sau đó gọi trình xử lý mặc định của hệ thống cho các tệp CSV

    Cũng có một ". once -e" hoạt động tương tự, ngoại trừ việc nó đặt tên tệp tạm thời bằng ". txt" để trình soạn thảo văn bản mặc định cho hệ thống sẽ được gọi, thay vì bảng tính mặc định

    8. 6. 2. Xuất sang TSV (các giá trị được phân tách bằng tab)

    Xuất sang TSV thuần túy, không có bất kỳ trích dẫn trường nào, có thể được thực hiện bằng cách nhập ". tab chế độ" trước khi chạy truy vấn. Tuy nhiên, đầu ra sẽ không được đọc chính xác trong chế độ tab bởi ". nhập" nếu nó chứa các ký tự trích dẫn kép. Để lấy TSV được trích dẫn theo RFC 4180 để có thể nhập nó ở chế độ tab với ". nhập", trước tiên hãy nhập ". chế độ csv", sau đó nhập '. dấu tách "\t"' trước khi chạy truy vấn

    Ngoài việc đọc và ghi các tệp cơ sở dữ liệu SQLite, chương trình sqlite3 cũng sẽ đọc và ghi các tệp lưu trữ ZIP. Chỉ cần chỉ định tên tệp lưu trữ ZIP thay cho tên tệp cơ sở dữ liệu SQLite trên dòng lệnh ban đầu hoặc trong phần ". open" và sqlite3 sẽ tự động phát hiện tệp đó là tệp lưu trữ ZIP thay vì cơ sở dữ liệu SQLite và sẽ mở tệp như vậy. Điều này hoạt động bất kể hậu tố tập tin. Vì vậy, bạn có thể mở các tệp JAR, DOCX và ODP cũng như bất kỳ định dạng tệp nào khác thực sự là tệp lưu trữ ZIP và SQLite sẽ đọc nó cho bạn

    Kho lưu trữ ZIP dường như là một cơ sở dữ liệu chứa một bảng duy nhất với lược đồ sau

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    5

    Vì vậy, ví dụ: nếu bạn muốn xem hiệu quả nén (được biểu thị bằng kích thước của nội dung được nén so với kích thước tệp không nén ban đầu) cho tất cả các tệp trong kho lưu trữ ZIP, được sắp xếp từ nén nhiều nhất đến nén ít nhất, bạn có thể chạy

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    6

    Hoặc sử dụng , bạn có thể trích xuất các thành phần của kho lưu trữ ZIP

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    7

    9. 1. Cách truy cập kho lưu trữ ZIP được triển khai

    Shell dòng lệnh sử dụng bảng ảo Zipfile để truy cập kho lưu trữ ZIP. Bạn có thể thấy điều này bằng cách chạy lệnh ". schema" khi tệp nén ZIP được mở

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    8

    Khi mở một tệp, nếu máy khách dòng lệnh phát hiện ra rằng tệp là kho lưu trữ ZIP thay vì cơ sở dữ liệu SQLite, thì nó thực sự mở một cơ sở dữ liệu trong bộ nhớ và sau đó trong cơ sở dữ liệu trong bộ nhớ đó, nó sẽ tạo một phiên bản của bảng ảo Zipfile.

    Quá trình xử lý đặc biệt để mở các kho lưu trữ ZIP là một thủ thuật của trình bao dòng lệnh, không phải thư viện SQLite cốt lõi. Vì vậy, nếu bạn muốn mở kho lưu trữ ZIP dưới dạng cơ sở dữ liệu trong ứng dụng của mình, bạn sẽ cần kích hoạt mô-đun bảng ảo Zipfile, sau đó chạy câu lệnh CREATE VIRTUAL TABLE thích hợp

    Sử dụng ". dump" để chuyển đổi toàn bộ nội dung của cơ sở dữ liệu thành một tệp văn bản UTF-8. Tệp này có thể được chuyển đổi trở lại thành cơ sở dữ liệu bằng cách chuyển nó trở lại thành sqlite3

    Một cách hay để tạo một bản sao lưu trữ của cơ sở dữ liệu là

    SQLite version 3.36.0 2021-06-18 18:36:39
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .. many SQL commands omitted ...
    sqlite> .save ex1.db
    sqlite>
    
    9

    Điều này tạo ra một tệp có tên ex1. bãi rác. gz chứa mọi thứ bạn cần để xây dựng lại cơ sở dữ liệu sau này hoặc trên một máy khác. Để xây dựng lại cơ sở dữ liệu, chỉ cần gõ

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    0

    Định dạng văn bản là SQL thuần túy nên bạn cũng có thể sử dụng. lệnh kết xuất để xuất cơ sở dữ liệu SQLite sang các công cụ cơ sở dữ liệu SQL phổ biến khác. Như thế này

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    1

    Giống như ". đổ" lệnh, ". phục hồi" cố gắng chuyển đổi toàn bộ nội dung của tệp cơ sở dữ liệu thành văn bản. Điểm khác biệt là thay vì đọc dữ liệu bằng giao diện cơ sở dữ liệu SQL thông thường, ". phục hồi" cố gắng tập hợp lại cơ sở dữ liệu dựa trên dữ liệu được trích xuất trực tiếp từ càng nhiều trang cơ sở dữ liệu càng tốt. Nếu cơ sở dữ liệu bị hỏng, ". recovery" thường có thể khôi phục dữ liệu từ tất cả các phần chưa bị hỏng của cơ sở dữ liệu, trong khi ". dump" dừng lại khi bắt gặp dấu hiệu tham nhũng đầu tiên

    Nếu ". recovery" khôi phục một hoặc nhiều hàng mà nó không thể gán cho bất kỳ bảng cơ sở dữ liệu nào, tập lệnh đầu ra sẽ tạo bảng "lost_and_found" để lưu trữ các hàng mồ côi. Lược đồ của bảng Lost_and_found như sau

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    2

    Bảng "lost_and_found" chứa một hàng cho mỗi hàng mồ côi được khôi phục từ cơ sở dữ liệu. Ngoài ra, có một hàng cho mỗi mục nhập chỉ mục được khôi phục không thể được quy cho bất kỳ chỉ mục SQL nào. Điều này là do, trong cơ sở dữ liệu SQLite, cùng một định dạng được sử dụng để lưu trữ các mục nhập chỉ mục SQL và các mục nhập bảng KHÔNG CÓ ROWID

    ColumnContentsrootpgnoMặc dù không thể gán hàng cho một bảng cơ sở dữ liệu cụ thể, nhưng nó có thể là một phần của cấu trúc cây trong tệp cơ sở dữ liệu. Trong trường hợp này, số trang gốc của cấu trúc cây đó được lưu trữ trong cột này. Hoặc, nếu trang mà hàng được tìm thấy không phải là một phần của cấu trúc cây, thì cột này sẽ lưu một bản sao của giá trị trong cột "pgno" - số trang của trang mà hàng được tìm thấy trên đó. Trong nhiều trường hợp, mặc dù không phải tất cả, tất cả các hàng trong bảng Lost_and_found có cùng giá trị trong cột này đều thuộc về cùng một bảng. pgnoSố trang của trang mà hàng này được tìm thấy. nfieldSố trường trong hàng này. idNếu hàng đến từ bảng KHÔNG CÓ ROWID, cột này chứa NULL. Mặt khác, nó chứa giá trị rowid số nguyên 64 bit cho hàng. c0, c1, c2. Các giá trị cho mỗi cột của hàng được lưu trữ trong các cột này. Các ". recovery" tạo bảng Lost_and_found với số lượng cột theo yêu cầu của hàng mồ côi dài nhất

    Nếu lược đồ cơ sở dữ liệu đã khôi phục đã chứa một bảng có tên "lost_and_found", thì ". recovery" sử dụng tên "lost_and_found0". Nếu tên "lost_and_found0" cũng đã được sử dụng, "lost_and_found1", v.v. Tên mặc định "lost_and_found" có thể bị ghi đè bằng cách gọi ". phục hồi" bằng công tắc --lost-and-found. Ví dụ: để có tập lệnh đầu ra, hãy gọi bảng "orphaned_rows"

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    3

    Bạn có thể thêm các hàm SQL, , bảng ảo và VFS tùy chỉnh mới do ứng dụng xác định vào trình bao dòng lệnh trong thời gian chạy bằng cách sử dụng lệnh ". tải" lệnh. Đầu tiên, xây dựng tiện ích mở rộng dưới dạng DLL hoặc thư viện dùng chung (như được mô tả trong tài liệu Tiện ích mở rộng có thể tải trong thời gian chạy), sau đó nhập

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    4

    Lưu ý rằng SQLite tự động thêm hậu tố mở rộng thích hợp (". dll" trên cửa sổ, ". dylib" trên máy Mac, ". so" trên hầu hết các unix khác) vào tên tệp mở rộng. Nói chung, nên chỉ định tên đường dẫn đầy đủ của tiện ích mở rộng

    SQLite tính toán điểm vào cho tiện ích mở rộng dựa trên tên tệp tiện ích mở rộng. Để ghi đè lựa chọn này, chỉ cần thêm tên của tiện ích làm đối số thứ hai vào ". tải" lệnh

    Mã nguồn cho một số tiện ích mở rộng hữu ích có thể được tìm thấy trong thư mục con ext/misc của cây nguồn SQLite. Bạn có thể sử dụng nguyên trạng các tiện ích mở rộng này hoặc làm cơ sở để tạo các tiện ích mở rộng tùy chỉnh của riêng mình nhằm giải quyết các nhu cầu cụ thể của riêng bạn

    Các ". sha3sum" dot-command tính toán hàm băm SHA3 của nội dung cơ sở dữ liệu. Để rõ ràng, hàm băm được tính toán trên nội dung cơ sở dữ liệu, không phải biểu diễn của nó trên đĩa. Điều này có nghĩa là, ví dụ: VACUUM hoặc chuyển đổi bảo toàn dữ liệu tương tự không làm thay đổi hàm băm

    Các ". lệnh sha3sum" hỗ trợ các tùy chọn "--sha3-224", "--sha3-256", "--sha3-384" và "--sha3-512" để xác định loại SHA3 sẽ sử dụng cho hàm băm. Mặc định là SHA3-256

    Lược đồ cơ sở dữ liệu (trong bảng sqlite_schema) thường không được bao gồm trong hàm băm, nhưng có thể được thêm vào bằng tùy chọn "--schema"

    Các ". sha3sum" nhận một đối số tùy chọn duy nhất là một mẫu. Nếu có tùy chọn này, chỉ những bảng có tên khớp với mẫu mới được băm

    Các ". lệnh sha3sum" được triển khai với sự trợ giúp của chức năng mở rộng "sha3_query()" đi kèm với shell dòng lệnh

    Các ". lệnh selftest" cố gắng xác minh rằng cơ sở dữ liệu còn nguyên vẹn và không bị hỏng. Các. lệnh selftest tìm kiếm một bảng trong lược đồ có tên "selftest" và được định nghĩa như sau

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    5

    Các. lệnh selftest đọc các hàng của bảng selftest trong selftest. tno order. For each 'memo' row, it writes the text in 'cmd' to the output. For each 'run' row, it runs the 'cmd' text as SQL and compares the result to the value in 'ans', and shows an error message if the results differ

    If there is no selftest table, the ". selftest" command runs

    The ". selftest --init" command creates the selftest table if it does not already exists, then appends entries that check the SHA3 hash of the content of all tables. Subsequent runs of ". selftest" will verify that the database has not been changed in any way. To generate tests to verify that a subset of the tables is unchanged, simply run ". selftest --init" then DELETE the selftest rows that refer to tables that are not constant

    The ". archive" dot-command and the "-A" command-line option provide built-in support for the SQLite Archive format. The interface is similar to that of the "tar" command on unix systems. Each invocation of the ". ar" command must specify a single command option. The following commands are available for ". archive"

    OptionLong OptionPurpose-c--createCreate a new archive containing specified files. -x--extractExtract specified files from archive. -i--insertAdd files to existing archive. -r--removeRemove files from the archive. -t--listList the files in the archive. -u--updateAdd files to existing archive if they have changed

    As well as the command option, each invocation of ". ar" may specify one or more modifier options. Some modifier options require an argument, some do not. The following modifier options are available

    OptionLong OptionPurpose-v--verboseList each file as it is processed. -f FILE--file FILEIf specified, use file FILE as the archive. Otherwise, assume that the current "main" database is the archive to be operated on. -a FILE--append FILELike --file, use file FILE as the archive, but open the file using the apndvfs VFS so that the archive will be appended to the end of FILE if FILE already exists. -C DIR--directory DIRIf specified, interpret all relative paths as relative to DIR, instead of the current working directory. -g--globUse to match arguments against names in the archive. -n--dryrunShow the SQL that would be run to carry out the archive operation, but do not actually change anything. ----All subsequent command line words are command arguments, not options

    For command-line usage, add the short style command-line options immediately following the "-A", without an intervening space. All subsequent arguments are considered to be part of the . archive command. For example, the following commands are equivalent

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    6

    Long and short style options may be mixed. For example, the following are equivalent

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    7

    Alternatively, the first argument following to ". ar" may be the concatenation of the short form of all required options (without the "-" characters). In this case arguments for options requiring them are read from the command line next, and any remaining words are considered command arguments. For example

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    8

    15. 1. SQLite Archive Create Command

    Tạo một kho lưu trữ mới, ghi đè lên bất kỳ kho lưu trữ hiện có nào (trong db "chính" hiện tại hoặc trong tệp được chỉ định bởi tùy chọn --file). Each argument following the options is a file to add to the archive. Directories are imported recursively. See above for examples

    15. 2. SQLite Archive Extract Command

    Extract files from the archive (either to the current working directory or to the directory specified by a --directory option). Files or directories whose names match the arguments, as affected by the --glob option, are extracted. Or, if no arguments follow the options, all files and directories are extracted. Any specified directories are extracted recursively. It is an error if any specified names or match patterns cannot be found in the archive

    sqlite> .help
    .archive ..             Manage SQL archives
    .auth ON|OFF             Show authorizer callbacks
    .backup ?DB? FILE        Backup DB (default "main") to FILE
    .bail on|off             Stop after hitting an error.  Default OFF
    .binary on|off           Turn binary output on or off.  Default OFF
    .cd DIRECTORY            Change the working directory to DIRECTORY
    .changes on|off          Show number of rows changed by SQL
    .check GLOB              Fail if output since .testcase does not match
    .clone NEWDB             Clone data into NEWDB from the existing database
    .connection [close] [#]  Open or close an auxiliary database connection
    .databases               List names and files of attached databases
    .dbconfig ?op? ?val?     List or change sqlite3_db_config() options
    .dbinfo ?DB?             Show status information about the database
    .dump ?OBJECTS?          Render database content as SQL
    .echo on|off             Turn command echo on or off
    .eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
    .excel                   Display the output of next command in spreadsheet
    .exit ?CODE?             Exit this program with return-code CODE
    .expert                  EXPERIMENTAL. Suggest indexes for queries
    .explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
    .filectrl CMD ..        Run various sqlite3_file_control() operations
    .fullschema ?--indent?   Show schema and the content of sqlite_stat tables
    .headers on|off          Turn display of headers on or off
    .help ?-all? ?PATTERN?   Show help text for PATTERN
    .import FILE TABLE       Import data from FILE into TABLE
    .imposter INDEX TABLE    Create imposter table TABLE on index INDEX
    .indexes ?TABLE?         Show names of indexes
    .limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
    .lint OPTIONS            Report potential schema issues.
    .load FILE ?ENTRY?       Load an extension library
    .log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
    .mode MODE ?TABLE?       Set output mode
    .nonce STRING            Disable safe mode for one command if the nonce matches
    .nullvalue STRING        Use STRING in place of NULL values
    .once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
    .open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
    .output ?FILE?           Send output to FILE or stdout if FILE is omitted
    .parameter CMD ..       Manage SQL parameter bindings
    .print STRING..         Print literal STRING
    .progress N              Invoke progress handler after every N opcodes
    .prompt MAIN CONTINUE    Replace the standard prompts
    .quit                    Exit this program
    .read FILE               Read input from FILE
    .recover                 Recover as much data as possible from corrupt db.
    .restore ?DB? FILE       Restore content of DB (default "main") from FILE
    .save FILE               Write in-memory database into FILE
    .scanstats on|off        Turn sqlite3_stmt_scanstatus() metrics on or off
    .schema ?PATTERN?        Show the CREATE statements matching PATTERN
    .selftest ?OPTIONS?      Run tests defined in the SELFTEST table
    .separator COL ?ROW?     Change the column and row separators
    .session ?NAME? CMD ..  Create or control sessions
    .sha3sum ..             Compute a SHA3 hash of database content
    .shell CMD ARGS..       Run CMD ARGS.. in a system shell
    .show                    Show the current values for various settings
    .stats ?ARG?             Show stats or turn stats on or off
    .system CMD ARGS..      Run CMD ARGS.. in a system shell
    .tables ?TABLE?          List names of tables matching LIKE pattern TABLE
    .testcase NAME           Begin redirecting output to 'testcase-out.txt'
    .testctrl CMD ..        Run various sqlite3_test_control() operations
    .timeout MS              Try opening locked tables for MS milliseconds
    .timer on|off            Turn SQL timer on or off
    .trace ?OPTIONS?         Output each SQL statement as it is run
    .vfsinfo ?AUX?           Information about the top-level VFS
    .vfslist                 List all available VFSes
    .vfsname ?AUX?           Print the name of the VFS stack
    .width NUM1 NUM2 ..     Set minimum column widths for columnar output
    sqlite>
    
    9

    15. 3. SQLite Archive List Command

    List the contents of the archive. If no arguments are specified, then all files are listed. Otherwise, only those which match the arguments, as affected by the --glob option, are listed. Currently, the --verbose option does not change the behaviour of this command. That may change in the future

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    0

    15. 4. Các lệnh chèn và cập nhật lưu trữ SQLite

    Các lệnh --update và --insert hoạt động giống như lệnh --create, ngoại trừ việc chúng không xóa kho lưu trữ hiện tại trước khi bắt đầu. Các phiên bản mới của tệp âm thầm thay thế các tệp hiện có có cùng tên, nhưng nếu không thì nội dung ban đầu của kho lưu trữ (nếu có) vẫn còn nguyên vẹn

    Đối với lệnh --insert, tất cả các tệp được liệt kê sẽ được chèn vào kho lưu trữ. Đối với lệnh --update, các tệp chỉ được chèn nếu chúng không tồn tại trước đó trong kho lưu trữ hoặc nếu "mtime" hoặc "mode" của chúng khác với những gì hiện có trong kho lưu trữ

    nút tương thích. Trước SQLite phiên bản 3. 28. 0 (2019-04-16) chỉ tùy chọn --update được hỗ trợ nhưng tùy chọn đó hoạt động giống như --insert ở chỗ nó luôn chèn lại mọi tệp bất kể nó có thay đổi hay không

    15. 5. Lưu trữ SQLite Xóa lệnh

    Lệnh --remove xóa các tệp và thư mục khớp với các đối số được cung cấp (nếu có) do bị ảnh hưởng bởi tùy chọn --glob. Đã xảy ra lỗi khi cung cấp các đối số không khớp với nội dung nào trong kho lưu trữ

    15. 6. Thao tác trên kho lưu trữ ZIP

    Nếu FILE là một kho lưu trữ ZIP chứ không phải là một kho lưu trữ SQLite, thì ". archive" và tùy chọn dòng lệnh "-A" vẫn hoạt động. Điều này được thực hiện bằng cách sử dụng phần mở rộng zipfile. Do đó, các lệnh sau gần như tương đương, chỉ khác nhau về định dạng đầu ra

    Lệnh truyền thống Tương đương sqlite3. exe Lưu trữ Commandunzip. kho lưu trữ zipsqlite3 -Axf. kho lưu trữ zipunzip -l. kho lưu trữ zipsqlite3 -Atvf. zipzip -r kho lưu trữ2. zip dirsqlite3 -Acf archive2. thư mục zip

    15. 7. SQL được sử dụng để triển khai các hoạt động lưu trữ SQLite

    Các lệnh Lưu trữ Lưu trữ SQLite khác nhau được triển khai bằng cách sử dụng các câu lệnh SQL. Các nhà phát triển ứng dụng có thể dễ dàng thêm hỗ trợ đọc và ghi Lưu trữ Lưu trữ SQLite vào các dự án của riêng họ bằng cách chạy SQL thích hợp

    Để xem những câu lệnh SQL nào được sử dụng để triển khai thao tác Lưu trữ SQLite, hãy thêm tùy chọn --dryrun hoặc -n. Điều này làm cho SQL được hiển thị nhưng ngăn cản việc thực thi SQL

    Các câu lệnh SQL được sử dụng để triển khai các hoạt động Lưu trữ SQLite sử dụng các phần mở rộng có thể tải khác nhau. Tất cả các tiện ích mở rộng này đều có sẵn trong cây nguồn SQLite trong thư mục con ext/misc/. Các tiện ích mở rộng cần thiết để hỗ trợ Lưu trữ SQLite đầy đủ bao gồm

    1. fileio. c — Tiện ích mở rộng này thêm các hàm SQL readfile() và writefile() để đọc và ghi nội dung từ các tệp trên đĩa. tập tin. tiện ích mở rộng c cũng bao gồm hàm có giá trị bảng fsdir() để liệt kê nội dung của một thư mục và hàm lsmode() để chuyển đổi các số nguyên st_mode dạng số từ lệnh gọi hệ thống stat() thành các chuỗi có thể đọc được theo kiểu "ls -l

    2. hình vuông. c — Phần mở rộng này thêm các hàm sqlar_compress() và sqlar_uncompress() cần thiết để nén và giải nén nội dung tệp khi nó được chèn và trích xuất từ ​​Kho lưu trữ SQLite

    3. zipfile. c — Tiện ích mở rộng này triển khai hàm có giá trị bảng "zipfile(FILE)" được sử dụng để đọc các tệp lưu trữ ZIP. Tiện ích mở rộng này chỉ cần thiết khi đọc kho lưu trữ ZIP thay vì kho lưu trữ SQLite

    4. appendvfs. c — Tiện ích mở rộng này triển khai một VFS mới cho phép nối cơ sở dữ liệu SQLite vào một số tệp khác, chẳng hạn như tệp thực thi. Tiện ích mở rộng này chỉ cần thiết nếu tùy chọn --append cho. lệnh lưu trữ được sử dụng

    SQLite cho phép xuất hiện trong câu lệnh SQL ở bất kỳ đâu mà giá trị bằng chữ được cho phép. Các giá trị cho các tham số này được đặt bằng cách sử dụng sqlite3_bind_. () dòng API

    Các tham số có thể được đặt tên hoặc đặt tên. Tham số không tên là một dấu chấm hỏi đơn ("?"). Các tham số được đặt tên là một "?" . "?15" của "?123") hoặc một trong các ký tự "$", ". ", hoặc "@" theo sau là tên chữ và số (ví dụ:. "$var1", ". xyz", "@bingo")

    Trình bao dòng lệnh này không gắn kết các tham số chưa đặt tên, nghĩa là chúng sẽ có giá trị là SQL NULL, nhưng các tham số được đặt tên có thể được gán giá trị. Nếu tồn tại một bảng TEMP có tên "sqlite_parameters" với lược đồ như thế này

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    1

    Và nếu có một mục trong bảng đó trong đó cột khóa khớp chính xác với tên của tham số (bao gồm cả ký tự đầu "?", "$", ". ", hoặc "@") thì tham số được gán giá trị của cột giá trị. Nếu không có mục nào tồn tại, tham số mặc định là NULL

    Các ". tham số" tồn tại để đơn giản hóa việc quản lý bảng này. Các ". tham số init" (thường được viết tắt là ". param init") tạo nhiệt độ. bảng sqlite_parameters nếu nó chưa tồn tại. Các ". danh sách param" hiển thị tất cả các mục trong tạm thời. bảng sqlite_parameter. Các ". xóa thông số" lệnh giảm nhiệt độ. bảng sqlite_parameter. Các ". đặt tham số KEY VALUE" và ". param unset KEY" lệnh tạo hoặc xóa các mục từ tạm thời. bảng sqlite_parameter

    VALUE được chuyển đến ". param set KEY VALUE" có thể là một ký tự SQL hoặc bất kỳ biểu thức hoặc truy vấn SQL nào khác có thể được đánh giá để mang lại một giá trị. Điều này cho phép các giá trị của các loại khác nhau được đặt. Nếu đánh giá đó không thành công, thì VALUE đã cung cấp sẽ được trích dẫn và chèn dưới dạng văn bản. Bởi vì đánh giá ban đầu như vậy có thể thất bại hoặc không tùy thuộc vào nội dung GIÁ TRỊ, cách đáng tin cậy để nhận giá trị văn bản là đặt nó trong dấu ngoặc đơn được bảo vệ khỏi phân tích cú pháp đuôi lệnh được mô tả ở trên. Ví dụ: (trừ khi người ta dự định giá trị -1365)

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    2

    Lưu ý rằng dấu ngoặc kép dùng để bảo vệ dấu ngoặc đơn và đảm bảo rằng văn bản được trích dẫn được phân tích thành một đối số

    nhiệt độ. bảng sqlite_parameters chỉ cung cấp các giá trị cho các tham số trong shell dòng lệnh. nhiệt độ. bảng sqlite_parameter không ảnh hưởng đến các truy vấn được chạy trực tiếp bằng API ngôn ngữ C SQLite. Các ứng dụng riêng lẻ dự kiến ​​sẽ triển khai ràng buộc tham số của riêng chúng. Bạn có thể tìm kiếm "sqlite_parameters" trong mã nguồn shell dòng lệnh để xem cách shell dòng lệnh thực hiện liên kết tham số và sử dụng mã đó làm gợi ý về cách tự triển khai

    Ghi chú. Lệnh này là thử nghiệm. Nó có thể bị xóa hoặc sửa đổi giao diện theo những cách không tương thích vào một thời điểm nào đó trong tương lai

    Đối với hầu hết các cơ sở dữ liệu SQL không tầm thường, chìa khóa để thực hiện là tạo các chỉ mục SQL phù hợp. Trong ngữ cảnh này, "các chỉ mục SQL phù hợp" có nghĩa là các chỉ mục khiến các truy vấn mà ứng dụng cần tối ưu hóa chạy nhanh. Các ". Expert" có thể hỗ trợ điều này bằng cách đề xuất các chỉ mục có thể hỗ trợ các truy vấn cụ thể, nếu chúng có trong cơ sở dữ liệu

    Các ". Expert" được đưa ra đầu tiên, tiếp theo là truy vấn SQL trên một dòng riêng biệt. Ví dụ, xem xét phiên sau

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    3

    Ở trên, người dùng tạo lược đồ cơ sở dữ liệu (một bảng duy nhất - "x1") và sau đó sử dụng ". Expert" để phân tích một truy vấn, trong trường hợp này là "CHỌN * TỪ x1 WHERE a=? . Công cụ trình bao khuyến nghị người dùng nên tạo một chỉ mục mới (chỉ mục "x1_idx_000123a7") và đưa ra kế hoạch mà truy vấn sẽ sử dụng ở định dạng KẾ HOẠCH CÂU HỎI GIẢI THÍCH. Sau đó, người dùng tạo một chỉ mục với lược đồ tương đương và chạy lại phân tích trên cùng một truy vấn. Lần này, công cụ trình bao không đề xuất bất kỳ chỉ mục mới nào và đưa ra kế hoạch mà SQLite sẽ sử dụng cho truy vấn với các chỉ mục hiện có

    Các ". Expert" chấp nhận các tùy chọn sau

    OptionPurpose‑‑verboseNếu có, xuất báo cáo chi tiết hơn cho từng truy vấn được phân tích. ‑‑sample PERCENTThông số này mặc định là 0, gây ra lỗi ". Expert" để đề xuất các chỉ mục chỉ dựa trên truy vấn và lược đồ cơ sở dữ liệu. Điều này tương tự như cách trình lập kế hoạch truy vấn SQLite chọn chỉ mục cho các truy vấn nếu người dùng chưa chạy lệnh ANALYZE trên cơ sở dữ liệu để tạo thống kê phân phối dữ liệu

    Nếu tùy chọn này được thông qua một đối số khác không, thì ". Expert" tạo thống kê phân phối dữ liệu tương tự cho tất cả các chỉ mục được xem xét dựa trên phần trăm PERCENT của các hàng hiện được lưu trữ trong mỗi bảng cơ sở dữ liệu. Đối với cơ sở dữ liệu có phân phối dữ liệu bất thường, điều này có thể dẫn đến đề xuất chỉ mục tốt hơn, đặc biệt nếu ứng dụng dự định chạy ANALYZE

    Đối với cơ sở dữ liệu nhỏ và CPU hiện đại, thường không có lý do gì để không vượt qua "--sample 100". Tuy nhiên, việc thu thập số liệu thống kê phân phối dữ liệu có thể tốn kém đối với các bảng cơ sở dữ liệu lớn. Nếu thao tác quá chậm, hãy thử chuyển một giá trị nhỏ hơn cho tùy chọn --sample

    Chức năng được mô tả trong phần này có thể được tích hợp vào các ứng dụng hoặc công cụ khác bằng cách sử dụng mã mở rộng chuyên gia SQLite

    Lược đồ cơ sở dữ liệu kết hợp các chức năng tùy chỉnh SQL có sẵn thông qua cơ chế tải mở rộng có thể cần cung cấp đặc biệt để hoạt động với. tính năng chuyên gia. Vì tính năng này sử dụng các kết nối bổ sung để triển khai chức năng của nó nên các chức năng tùy chỉnh đó phải được cung cấp cho các kết nối bổ sung đó. Điều này có thể được thực hiện bằng các tùy chọn tải/sử dụng tiện ích mở rộng được mô tả tại Tự động tải tiện ích mở rộng được liên kết tĩnh và

    Bắt đầu với phiên bản 3. 37. 0 (27-11-2021), CLI có khả năng giữ nhiều kết nối cơ sở dữ liệu mở cùng một lúc. Chỉ có một kết nối cơ sở dữ liệu đang hoạt động tại một thời điểm. Các kết nối không hoạt động vẫn mở nhưng không hoạt động

    Sử dụng ". kết nối" dot-lệnh (thường được viết tắt là ". conn") để xem danh sách các kết nối cơ sở dữ liệu và chỉ báo kết nối nào hiện đang hoạt động. Mỗi kết nối cơ sở dữ liệu được xác định bởi một số nguyên từ 0 đến 9. (Có thể có tối đa 10 kết nối mở đồng thời. ) Thay đổi kết nối cơ sở dữ liệu khác, tạo nó nếu nó chưa tồn tại, bằng cách gõ ". conn" theo sau là số của nó. Đóng kết nối cơ sở dữ liệu bằng cách gõ ". conn close N" trong đó N là số kết nối

    Mặc dù các kết nối cơ sở dữ liệu SQLite bên dưới hoàn toàn độc lập với nhau, nhưng nhiều cài đặt CLI, chẳng hạn như định dạng đầu ra, được chia sẻ trên tất cả các kết nối cơ sở dữ liệu. Do đó, thay đổi kết nối trong một sẽ thay đổi kết nối trong tất cả. Mặt khác, một số chẳng hạn như chỉ ảnh hưởng đến kết nối hiện tại

    CLI được xây dựng với một số tiện ích mở rộng SQLite không có trong thư viện SQLite. Một vài tính năng bổ sung không được mô tả trong các phần trước, cụ thể là

    • trình tự đối chiếu UINT xử lý các số nguyên không dấu được nhúng trong văn bản theo giá trị của chúng, cùng với văn bản khác, để sắp xếp;
    • số học thập phân như được cung cấp bởi ;
    • hàm có giá trị bảng generate_series();
    • hỗ trợ cho các biểu thức chính quy mở rộng POSIX được liên kết với toán tử

    Có nhiều lệnh dấu chấm khác có sẵn trong trình bao dòng lệnh. xem ". help" để biết danh sách đầy đủ cho bất kỳ phiên bản và bản dựng cụ thể nào của SQLite

    Một cách để sử dụng sqlite3 trong tập lệnh shell là sử dụng "echo" hoặc "cat" để tạo chuỗi lệnh trong tệp, sau đó gọi sqlite3 trong khi chuyển hướng đầu vào từ tệp lệnh đã tạo. Điều này hoạt động tốt và phù hợp trong nhiều trường hợp. Nhưng để thuận tiện hơn, sqlite3 cho phép nhập một lệnh SQL duy nhất trên dòng lệnh dưới dạng đối số thứ hai sau tên cơ sở dữ liệu. Khi chương trình sqlite3 được khởi chạy với hai đối số, đối số thứ hai được chuyển đến thư viện SQLite để xử lý, kết quả truy vấn được in trên đầu ra tiêu chuẩn ở chế độ danh sách và thoát khỏi chương trình. Cơ chế này được thiết kế để làm cho sqlite3 dễ sử dụng kết hợp với các chương trình như "awk". Ví dụ

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    4

    Các lệnh SQLite thường được kết thúc bằng dấu chấm phẩy. Trong CLI, bạn cũng có thể sử dụng từ "GO" (phân biệt chữ hoa chữ thường) hoặc ký tự gạch chéo "/" trên một dòng để kết thúc lệnh. These are used by SQL Server and Oracle, respectively, and are supported by the SQLite CLI for compatibility. Chúng sẽ không hoạt động trong sqlite3_exec(), vì CLI dịch các đầu vào này thành dấu chấm phẩy trước khi chuyển chúng xuống lõi SQLite

    There are many command-line options available to the CLI. Sử dụng tùy chọn dòng lệnh --help để xem danh sách

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    5

    CLI linh hoạt về định dạng tùy chọn dòng lệnh. Cho phép một hoặc hai ký tự "-" ở đầu. Do đó "-box" và "--box" có nghĩa giống nhau. Các tùy chọn dòng lệnh được xử lý từ trái sang phải. Do đó, tùy chọn "--box" sẽ ghi đè tùy chọn "--quote" trước đó

    Hầu hết các tùy chọn dòng lệnh đều tự giải thích, nhưng một số thảo luận bổ sung xứng đáng bên dưới

    23. 1. Tùy chọn dòng lệnh --safe

    Tùy chọn dòng lệnh --safe cố gắng tắt tất cả các tính năng của CLI có thể gây ra bất kỳ thay đổi nào đối với máy tính chủ ngoài các thay đổi đối với tệp cơ sở dữ liệu cụ thể có tên trên dòng lệnh. Ý tưởng là nếu bạn nhận được một tập lệnh SQL lớn từ một nguồn không xác định hoặc không đáng tin cậy, bạn có thể chạy tập lệnh đó để xem nó làm gì mà không gặp rủi ro bị khai thác bằng cách sử dụng tùy chọn --safe. Tùy chọn --safe vô hiệu hóa (trong số những thứ khác)

    • , trừ khi tùy chọn --hexdb được sử dụng hoặc tên tệp là ". ký ức. ". Điều này ngăn tập lệnh đọc hoặc ghi bất kỳ tệp cơ sở dữ liệu nào không có tên trên dòng lệnh gốc
    • Lệnh ATTACH SQL
    • Các hàm SQL có tác dụng phụ có thể gây hại, chẳng hạn như edit(), fts3_tokenizer(), load_extension(), readfile() và writefile()
    • Các
    • Các. sao lưu và. lưu lệnh
    • Các
    • Các
    • Các. lệnh đăng nhập
    • Các. vỏ và. lệnh hệ thống
    • Các. vượt trội,. một lần và. lệnh đầu ra
    • Các lệnh khác có thể có tác dụng phụ có hại

    Về cơ bản, bất kỳ tính năng nào của CLI đọc hoặc ghi từ một tệp trên đĩa ngoài tệp cơ sở dữ liệu chính đều bị tắt

    23. 1. 1. Bỏ qua các hạn chế --safe cho các lệnh cụ thể

    Nếu tùy chọn "--nonce NONCE" cũng được bao gồm trên dòng lệnh, đối với một số chuỗi NONCE lớn và tùy ý, thì ". lệnh nonce NONCE" (với cùng một chuỗi nonce lớn) sẽ cho phép câu lệnh SQL tiếp theo hoặc lệnh dấu chấm bỏ qua các giới hạn --safe

    Giả sử bạn muốn chạy một tập lệnh đáng ngờ và tập lệnh đó yêu cầu một hoặc hai tính năng --safe thường tắt. Ví dụ: giả sử nó cần ĐÍNH KÈM thêm một cơ sở dữ liệu. Hoặc giả sử tập lệnh cần tải một tiện ích mở rộng cụ thể. Điều này có thể được thực hiện bằng cách đặt trước câu lệnh ATTACH (đã được kiểm tra cẩn thận) hoặc ". load" với một "thích hợp. nonce" và cung cấp cùng một giá trị nonce bằng cách sử dụng tùy chọn dòng lệnh "--nonce". Các lệnh cụ thể đó sau đó sẽ được phép thực thi bình thường, nhưng tất cả các lệnh không an toàn khác sẽ vẫn bị hạn chế

    Việc sử dụng ". nonce" nguy hiểm theo nghĩa là một lỗi có thể cho phép một tập lệnh thù địch làm hỏng hệ thống của bạn. Vì vậy, sử dụng ". nonce" một cách cẩn thận, tiết kiệm và là phương sách cuối cùng khi không có cách nào khác để chạy tập lệnh trong chế độ --safe

    Để biên dịch trình bao dòng lệnh trên các hệ thống unix và trên Windows bằng MinGW, lệnh cấu hình-tạo thông thường sẽ hoạt động

    Việc tạo cấu hình hoạt động cho dù bạn đang xây dựng từ các nguồn chính tắc từ cây nguồn hay từ một gói hợp nhất. Có ít phụ thuộc. Khi xây dựng từ các nguồn chính tắc, cần có một tclsh đang hoạt động. Nếu sử dụng gói hợp nhất, tất cả công việc tiền xử lý thường được thực hiện bởi tclsh sẽ được thực hiện và chỉ cần các công cụ xây dựng thông thường

    Cần có thư viện nén zlib hoạt động để hoạt động

    Trên Windows với MSVC, hãy sử dụng nmake với Makefile. msc

    Để hoạt động chính xác của , hãy tạo một bản sao của mã nguồn zlib vào thư mục con compat/zlib của cây nguồn và biên dịch theo cách này

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    6

    24. 1. Tự xây dựng

    Mã nguồn của giao diện dòng lệnh sqlite3 nằm trong một tệp duy nhất có tên "shell. c". cái vỏ. tệp nguồn c được tạo từ các nguồn khác, nhưng hầu hết mã cho shell. c có thể được tìm thấy trong src/shell. c. TRONG. (Tái tạo vỏ. c bằng cách gõ "make shell. c" từ cây nguồn chính tắc. ) Biên dịch vỏ. c (cùng với mã nguồn thư viện sqlite3) để tạo tệp thực thi. Ví dụ

    sqlite> .mode list
    sqlite> select * from tbl1;
    hello!|10
    goodbye|20
    sqlite>
    
    7

    Các tùy chọn thời gian biên dịch bổ sung sau đây được khuyến nghị để cung cấp trình bao dòng lệnh đầy đủ tính năng