`
乌拉蕾
  • 浏览: 73759 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

SQLite命令行程序说明

    博客分类:
  • DB
阅读更多
sqlite3: 一个SQLite数据库的命令行接口

        原文地址:http://www.sqlite.org/sqlite.html

    SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。

开始

      启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。

        例如,创建一个包含一个表"tb11"名字为"ex1"的SQLite数据库,你可以这样做:

$sqlite3 ex1
SQLite version 3.3.17
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!', 10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

        你可以通过敲你所用系统的文件结束符(通常是Ctrl + D)或者中断字符(通常是Ctrl + C)。来终止sqlite3程序。确定你在每个SQL语句结束敲入分号!sqlite3程序通过查找分号来决定一个SQL语句的结束。如果你省略分号,sqlite3将给你一个连续的命令提示符并等你给当前的SQL命令添加更多的文字。这个特点让你输入多行的多个SQL语句,例如:

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

题外话:查询SQLITE_MASTER表

    SQLite数据库的框架被保存在一个名叫"sqlite_master"的特殊的表中。你可以像查询其它表一样通过执行“SELECT”查询这个特殊的表。例如:


$ sqlite3 ex1
SQlite vresion 3.3.10
Enter ".help" for instructions
sqlite> select * from sqlite_master;
    type = table
    name = tbl1
tbl_name = tbl1
rootpage = 3
     sql = create table tbl1(one varchar(10), two smallint)
sqlite>

    但你不能在sqlite_master表中执行诸如DROP TABLE, UPDATE, INSERT 或者DELETE命令。sqlite_master表在你创建、删除和索引数据库时自动更新这个表。你不能手工更改sqlite_master表。

    TEMPORARY表的结构没有存储在"sqlite_master"表中,由于TEMPORARY表对应用是不可见的,而不是应用程序创建这个表。TEMPORARY表结构被存储在另外一个名叫"sqlite_temp_master"的特定的表中。"sqlite_temp_master"表是临时表自身。

sqlite3的特殊命令

   大多数候,sqlite3读入输入行,并把它们传递到SQLite库中去运行。但是如果输入行以一个点(“.”)开始,那么这行将被sqlite3程序自己截取并解释。这些“点命令”通常被用来改变查询输出的格式,或者执行鞭个预封包(预定义prepackaged)的查询语句。

你可以在任何时候输入“.help”,列出可用的点命令。例如

sqlite> .help
.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
.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.
.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 on TABLE
.load FILE ?ENTRY?     Load an extension library
.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
.schema ?TABLE?        Show the CREATE statements
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.tables ?PATTERN?      List names of tables matching a LIKE pattern
.timeout MS            Try opening locked tables for MS milliseconds
.width NUM NUM ...     Set column widths for "column" mode
sqlite>

改变输出格式

    sqlite3程序可以以八种不同的格式显示一个查询的结果:"csv", "列", "html", "插入", "行", "制表"和"tcl"。你可以用".mode"点命令在这些输出格式之间切换。

    默认的输出格式是“列表”。在列表模式下,每条查询结果记录被写在一行中并且每列之间以一个字符串分割符隔开。默认的分隔符是一个管道符号(“|”)。列表符号在当你输出查询结果到另外一个符加处理的程序(如AWK)中去是尤为有用。

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

    你可以用“.separator”点命令来改变分界符。例如,为了把分割符改为一个逗号和一个空格,你可以这样做:

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

    在“line"模式下,每一个位于条记录中的列在它自己那行显示。每行由列名、一个等号和列数据组成。下一条记录以一个空行隔开。这是一个行模式输出的例子:

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

one = goodbye
two = 20
sqlite>

    在列模式下,每条记录在一个单独的行中以数据列对齐的方式显示。列如:

sqlite> .mode column
sqlite> select * from tbl1;
one         two      
----------  ----------
hello       10       
goodbye     20       
sqlite>

        在默认的情况下,每列至少10个字符宽。太宽的数据将被截取。你可以用“.width”命令来调整列宽。如下所示:

sqlite> .width 12 6
sqlite> select * from tbl1;
one           two  
------------  ------
hello         10   
goodbye       20   
sqlite>

    上面例子中".width"命令设置第一列宽为12第二列宽为6。其它的列宽不变。你可以指定与你查询结果需要的列数一样多的“.width”参数。

    如果你指定一列宽为0,那么这个列宽将自动以下面三个数字中的最大值做为列宽:10、表头宽度和最宽的数据列的宽度。这可以让列自动调整宽度。每列的默认设置为自动调整的0值。

    出现在输出开头两行的列标示可以用".header"点命令关闭。在上面的例子中,列标示是打开的。可以用下面的方法关闭列标示:

sqlite> .header off
sqlite> select * from tbl1;
hello         10   
goodbye       20   
sqlite>

    另外一个有用的输出模式是"insert"。在插入模式下,被子格式化为看起来像SQL INSERT语句的样式。你可以用插入模式来产生文件(便于)以后用于不同数据库的输入。

    当指定插入模式时,你必须给定一个特定参数就是要插入的表名。例如:

sqlite> .mode insert new_table
sqlite> select * from tbl1;
INSERT INTO 'new_table' VALUES('hello',10);
INSERT INTO 'new_table' VALUES('goodbye',20);
sqlite>

    最新的输出格式是“html”。在这种模式下,sqlite3把查询的结果写做XHTML表。开始的<TABLE>和结束的</TABLE>(标记)没有写出,但有<TR>、<TH>和<TD>等分界符。html输出对CGI来说是相当有用地。

把结果写到文件中

    默认情况下,sqlte3把结送到标准输出。你可以用“.output”命令改变它。只须把输出文件名做为.output命令的输出参数然后所有后续查询结果将被写到那个文件中。用“.output stdout”再一次改为标准输出。例如:

sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$

查询数据库结构

    sqlite3程序提供几个有用的用于查询数据库结构的快捷命令。这些不是不可以用别的方式来实现。这些命令仅仅是一个快捷方式而已。

    例如,为了查看数据库的表列表,你可以敲入“.tables”。

sqlite> .tables
tbl1
tbl2
sqlite>

    “.tables”命令相似于设置列表模式然后执行接下来的查询:

SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1事实上,你可以查看sqlite3的源代码(可以在源文件树的src/shell.c中),你可找到上面的具体的查询。“.indices”命令作用类似的方式是列出特定表的所有的索引。“.indics”命令须一个参数即所要索引表的表名。最后,但不是至少,是“.schema”命令。不带任何参数,“.schema”命令显示原始的用于创建当前数据库的CREATE TABLE和CREATE INDEX语句。如果你给".schema"命令一个表名,它显示原始的创建该表和它所有索引的CREATE语句。我们可以:sqlite> .schemacreate table tbl1(one varchar(10), two smallint)CREATE TABLE tbl2 (  f1 varchar(30) primary key,  f2 text,  f3 real)sqlite> .schema tbl2CREATE TABLE tbl2 (  f1 varchar(30) primary key,  f2 text,  f3 real)sqlite>    ".schema"命令可以用设置列表然后执行以下查询来实现:

SELECT sql FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type!='meta'
ORDER BY tbl_name, type DESC, name


.databases 列出数据库文件名
.tables ?PATTERN? 列出?PATTERN?匹配的表名
.import FILE TABLE 将文件中的数据导入的文件中
.dump ?TABLE? 生成形成数据库表的SQL脚本
.output FILENAME 将输出导入到指定的文件中
.output stdout 将输出打印到屏幕
.mode MODE ?TABLE?     设置数据输出模式(csv,html,tcl…
.nullvalue STRING 用指定的串代替输出的NULL串
.read FILENAME 执行指定文件中的SQL语句
.schema ?TABLE? 打印创建数据库表的SQL语句
.separator STRING 用指定的字符串代替字段分隔符
.show 打印所有SQLite环境变量的设置
.quit 退出命令行接口
分享到:
评论

相关推荐

    sqlite3命令行使用说明

    SQLite3 命令行使用说明 SQLite3 命令行是一个 SQLite 数据库的命令行接口,用户可以使用 DOS 命令在命令行下进行 SQLite 数据库的操作。下面是使用 sqlite3 命令行的详细说明: 启动 sqlite3 程序 要启动 ...

    sqlite3的说明

    在Windows环境下,你可以直接通过命令行工具sqlite3.exe来与SQLite3数据库进行交互。这个工具允许用户执行SQL语句,创建和管理数据库,以及查看查询结果。 SQLite3支持标准的SQL语法,包括创建表、插入数据、更新...

    Sqlite数据库.docx说明文档

    ### Sqlite数据库知识点详解 #### 一、Sqlite简介及特点 **SQLite** 是一款轻量级的关系型数据库管理系统,以其高效性和低资源消耗而...无论是初学者还是专业人士都能快速上手并利用 SQLite 来构建高效的应用程序。

    Windows 下的SQLite的源代码编译,配置,新建表等的说明

    - **运行 SQLite**: 输入命令 `sqlite3.exe D:\test\mydatabase.db` 来创建一个新的 SQLite 数据库文件 `mydatabase.db` 并启动 SQLite 命令行界面。 - **执行 SQL 语句**: - 使用 `CREATE TABLE` 命令创建表结构...

    SQLite 64位系统

    3. **环境变量 PATH**:配置系统环境变量PATH是为了确保系统可以在任意目录下执行SQLite命令行工具,如sqlite3.exe。通过将SQLite的路径添加到PATH,用户无需每次都指定完整路径即可运行这些工具。 4. **sqlite3....

    SQLite的基本使用说明

    例如,在命令行环境中使用`sqlite3`命令行工具: ```bash sqlite3 my_database.db ``` 3. **基本SQL操作** - **创建表**:使用`CREATE TABLE`语句创建表,例如: ```sql CREATE TABLE Students ( ID ...

    sqlite程序和Windows二进制文件操作文档.zip

    5. **sqlite3.exe**:这是SQLite的命令行实用程序,允许用户通过命令行接口直接与SQLite数据库交互。用户可以通过它执行SQL语句,创建、修改和查询数据库,是开发者调试和测试数据库的常用工具。 6. **sqldiff.exe*...

    Android中使用SQLite3 命令行查看内嵌数据库的方法

    这一位置说明了每一个安装在Android设备上的应用程序都可以有自己独立的数据库目录,这样的设计既保证了数据的隔离性,也便于权限的管理。 接下来,使用命令行工具cd和ls,可以完成文件夹的跳转和查看操作。cd命令...

    sqlite3本地安装

    4. **验证安装**:打开命令提示符,输入`sqlite3`,如果能直接进入SQLite3命令行,说明安装成功。 ### 三、Linux系统下的SQLite3安装 1. **使用包管理器**:对于基于Debian的系统(如Ubuntu),可以运行`sudo apt-...

    sqlite3和命令大全

    SQLite3是一种轻量级、开源的关系型数据库管理系统,它不需要单独的服务器进程,可以直接嵌入到应用程序中。这个压缩包包含了一些与SQLite3相关的工具和文档,如SQLite3的动态链接库sqlite3.dll、可执行文件sqlite3....

    sqlite使用说明及PPC上的移植

    SQLite 提供了丰富的命令行工具进行数据库操作,如 `sqlite3` 命令用于启动交互式 shell,`CREATE TABLE` 用于创建表,`INSERT INTO` 用于插入数据,`SELECT` 用于查询,`UPDATE` 和 `DELETE` 分别用于更新和删除...

    6410编译好的sqlite开发应用的包 包括bin lib include

    3. **bin**:这个目录应该有sqlite3的可执行文件,即SQLite命令行工具。 4. **include**:这个目录会包含sqlite3.h和其他必要的头文件,供开发者的源代码引用。 综上所述,这个压缩包提供了一个完整的SQLite开发...

    sqlite 安装及说明

    SQLite是一款轻量级的、开源的、自包含的SQL数据库引擎,它不需要单独的服务器进程,可以直接嵌入到各类应用程序中。这篇文档将详细介绍SQLite的安装过程以及如何使用它来查看和操作.db数据库文件。 首先,让我们从...

    windows10安装sqlite,配置全局环境变量

    SQLite是一个轻量级的、自包含的、无服务器的SQL数据库引擎,广泛应用于移动应用、嵌入式系统和桌面应用程序。下面将详细介绍如何进行安装和配置。 首先,你需要从SQLite官方网站...

    VC++应用sqlite数据库(2012新版) 含例子 说明 源码

    这个shell是SQLite的命令行接口,用于与SQLite数据库进行交互,执行SQL语句,这对于开发和测试数据库操作非常有用。 在VC++中使用SQLite,我们需要包含SQLite的头文件并链接其库。这通常涉及设置项目的预处理器定义...

    sqlite3_sqlite3安装_sqlite_

    3. 找到解压后的目录,其中应该有一个名为`sqlite3.exe`的文件,这就是SQLite3的命令行界面。 4. "pj程序"可能是指一个名为pj的辅助工具,用于进一步管理和操作SQLite3。如果存在,需要按照该工具的使用说明进行操作...

    sqlite-shell-win32-x86-3071502

    "sqlite-shell-win32-x86-3071502"这个标题表明这是一款适用于Windows 32位系统的SQLite命令行外壳程序,版本号为3071502,通常用于对SQLite数据库进行管理和操作。 SQLite Shell是SQLite官方提供的一个实用工具,...

    Sqlite环境和开发资料

    开发者可以通过这些接口在程序中调用SQLite的功能,创建、查询和更新数据库。 2. SQL语法:SQLite支持标准的SQL语法,包括数据类型(如INT、TEXT、REAL、BLOB)、DDL(如CREATE TABLE、ALTER TABLE)、DML(如...

    Windows下SQLite创建数据库的方法

    SQLite还提供了许多高级功能,如数据导入导出、错误处理等,可以通过`.help`命令查看完整的命令列表和详细说明。例如,`.backup`命令用于备份数据库,`.import`命令用于从文件导入数据等。 总的来说,在Windows下...

Global site tag (gtag.js) - Google Analytics