Sqlite命令行基本操作
SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。
与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。
1、进入命令行环境:sqlite3
打开一个控制台窗口,输入 sqlite3 回车,这时你就进入了 SQLite 命令行环境,如图
它显示了版本号,并告诉你每一条 SQL 语句必须用分号;结尾。
2、命令行帮助:.help
在命令行环境下输入 .help 回车,显示所有可使用的命令以及这些命令的帮助。注意:所有的命令开头都是一个点。
-
.backup ?DB? FILE Backup DB (default "main") to FILE
-
.bail ON|OFF Stop after hitting an error. Default OFF
-
.databases List names and files of attached databases
-
.dump ?TABLE? ... Dump the database in an SQL text format
-
If TABLE specified, only dump tables matching
-
LIKE pattern TABLE.
-
.echo ON|OFF Turn command echo on or off
-
.exit Exit this program
-
.explain ?ON|OFF? Turn output mode suitable for EXPLAIN on or off.
-
With no args, it turns EXPLAIN on.
-
.header(s) ON|OFF Turn display of headers on or off
-
.help Show this message
-
.import FILE TABLE Import data from FILE into TABLE
-
.indices ?TABLE? Show names of all indices
-
If TABLE specified, only show indices for tables
-
matching LIKE pattern TABLE.
-
.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 where MODE is one of:
-
csv Comma-separated values
-
column Left-aligned columns. (See .width)
-
html HTML <table> code
-
insert SQL insert statements for TABLE
-
line One value per line
-
list Values delimited by .separator string
-
tabs Tab-separated values
-
tcl TCL list elements
-
.nullvalue STRING Print STRING in place of NULL values
-
.output FILENAME Send output to FILENAME
-
.output stdout Send output to the screen
-
.prompt MAIN CONTINUE Replace the standard prompts
-
.quit Exit this program
-
.read FILENAME Execute SQL in FILENAME
-
.restore ?DB? FILE Restore content of DB (default "main") from FILE
-
.schema ?TABLE? Show the CREATE statements
-
If TABLE specified, only show tables matching
-
LIKE pattern TABLE.
-
.separator STRING Change separator used by output mode and .import
-
.show Show the current values for various settings
-
.stats ON|OFF Turn stats on or off
-
.tables ?TABLE? List names of tables
-
If TABLE specified, only list tables matching
-
LIKE pattern TABLE.
-
.timeout MS Try opening locked tables for MS milliseconds
-
.width NUM1 NUM2 ... Set column widths for "column" mode
-
.timer ON|OFF Turn the CPU timer measurement on or off
-
sqlite>
3、退出命令行环境
.quit 或者 .exit 都可以退出。
创建一个新的数据库:sqlite3 test.db
打开一个已经存在的数据库:sqlite3 已经存在的文件
创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。
(此时,数据库文件并没有存在)
创建一个表:
CREATE TABLE Books(Id integer PRIMARY KEY, Title text, Author text, Isbn text default 'not available');
插入数据:
-
INSERT INTO Books VALUES(1, 'War and Peace', 'Leo Tolstoy', '978-0345472403');
-
INSERT INTO Books VALUES(2, 'The Brothers Karamazov', 'Fyodor Dostoyevsky', '978-0486437910');
-
INSERT INTO Books VALUES(3, 'Crime and Punishment', 'Fyodor Dostoyevsky', '978-1840224306');
或者将以上sql命令保存在文件中,使用.read *.sql进行导入
test.sql
-
BEGIN TRANSACTION;
-
CREATE TABLE Books(Id integer PRIMARY KEY, Title text, Author text, Isbn text default 'not available');
-
INSERT INTO Books VALUES(1, 'War and Peace', 'Leo Tolstoy', '978-0345472403');
-
INSERT INTO Books VALUES(2, 'The Brothers Karamazov', 'Fyodor Dostoyevsky', '978-0486437910');
-
INSERT INTO Books VALUES(3, 'Crime and Punishment', 'Fyodor Dostoyevsky', '978-1840224306');
-
COMMIT;
列出数据表: .tables
显示数据库结构: .schema
格式化输出: