SQLite 命令

本章将向您讲解 SQLite 编程人员所使用的简单却有用的命令。这些命令被称为 SQLite 的点命令,这些命令的不同之处在于它们不以分号 ; 结束。

让我们在命令提示符下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令。

$ sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite>

如需获取可用的点命令的清单,可以在任何时候输入 ".help"。例如:

sqlite>.help

上面的命令会显示各种重要的 SQLite 点命令的列表,如下所示:

命令 描述
.backup ?DB? FILE 备份 DB 数据库(默认是 "main")到 FILE 文件。
.bail ON|OFF 发生错误后停止。默认为 OFF。
.databases 列出附加数据库的名称和文件。
.dump ?TABLE? 以 SQL 文本格式转储数据库。如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表。
.echo ON|OFF 开启或关闭 echo 命令。
.exit 退出 SQLite 提示符。
.explain ON|OFF 开启或关闭适合于 EXPLAIN 的输出模式。如果没有带参数,则为 EXPLAIN on,及开启 EXPLAIN。
.header(s) ON|OFF 开启或关闭头部显示。
.help 显示消息。
.import FILE TABLE 导入来自 FILE 文件的数据到 TABLE 表中。
.indices ?TABLE? 显示所有索引的名称。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引。
.load FILE ?ENTRY? 加载一个扩展库。
.log FILE|off 开启或关闭日志。FILE 文件可以是 stderr(标准错误)/stdout(标准输出)。
.mode MODE 设置输出模式,MODE 可以是下列之一:

  • csv 逗号分隔的值

  • column 左对齐的列

  • html HTML 的 <table> 代码

  • insert TABLE 表的 SQL 插入(insert)语句

  • line 每行一个值

  • list 由 .separator 字符串分隔的值

  • tabs 由 Tab 分隔的值

  • tcl TCL 列表元素

.nullvalue STRING 在 NULL 值的地方输出 STRING 字符串。
.output FILENAME 发送输出到 FILENAME 文件。
.output stdout 发送输出到屏幕。
.print STRING... 逐字地输出 STRING 字符串。
.prompt MAIN CONTINUE 替换标准提示符。
.quit 退出 SQLite 提示符。
.read FILENAME 执行 FILENAME 文件中的 SQL。
.schema ?TABLE? 显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。
.separator STRING 改变输出模式和 .import 所使用的分隔符。
.show 显示各种设置的当前值。
.stats ON|OFF 开启或关闭统计。
.tables ?PATTERN? 列出匹配 LIKE 模式的表的名称。
.timeout MS 尝试打开锁定的表 MS 毫秒。
.width NUM NUM 为 "column" 模式设置列宽度。
.timer ON|OFF 开启或关闭 CPU 定时器。

让我们尝试使用 .show 命令,来查看 SQLite 命令提示符的默认设置。

sqlite>.showecho: offexplain: offheaders: offmode: column
nullvalue: ""output: stdout
separator: "|"width:
sqlite>

确保 sqlite> 提示符与点命令之间没有空格,否则将无法正常工作。

格式化输出

您可以使用下列的点命令来格式化输出为本教程下面所列出的格式:

sqlite>.header on
sqlite>.mode column
sqlite>.timer on
sqlite>

上面设置将产生如下格式的输出:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0
CPU Time: user 0.000000 sys 0.000000

sqlite_master 表格

主表中保存数据库表的关键信息,并把它命名为 sqlite_master。如要查看表概要,可按如下操作:

sqlite>.schema sqlite_master

这将产生如下结果:

CREATE TABLE sqlite_master (type text,name text,tbl_name text,rootpage integer,sql text
);

SQLite 语法


SQLite 是遵循一套独特的称为语法的规则和准则。本教程列出了所有基本的 SQLite 语法,向您提供了一个 SQLite 快速入门。

大小写敏感性

有个重要的点值得注意,SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOBglob 在 SQLite 的语句中有不同的含义。

注释

SQLite 注释是附加的注释,可以在 SQLite 代码中添加注释以增加其可读性,他们可以出现在任何空白处,包括在表达式内和其他 SQL 语句的中间,但它们不能嵌套。SQL 注释以两个连续的 "-" 字符(ASCII 0x2d)开始,并扩展至下一个换行符(ASCII 0x0a)或直到输入结束,以先到者为准。您也可以使用 C 风格的注释,以 "/*" 开始,并扩展至下一个 "*/" 字符对或直到输入结束,以先到者为准。SQLite的注释可以跨越多行。
sqlite>.help -- This is a single line comment

SQLite 语句

所有的 SQLite 语句可以以任何关键字开始,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等,所有的语句以分号(;)结束。

SQLite ANALYZE 语句:

ANALYZE;
or
ANALYZE database_name;
or
ANALYZE database_name.table_name;

SQLite AND/OR 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;

SQLite ALTER TABLE 语句:

ALTER TABLE table_name ADD COLUMN column_def...;

SQLite ALTER TABLE 语句(Rename):

ALTER TABLE table_name RENAME TO new_table_name;

SQLite ATTACH DATABASE 语句:

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

SQLite BEGIN TRANSACTION 语句:

BEGIN;
or
BEGIN EXCLUSIVE TRANSACTION;

SQLite BETWEEN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;

SQLite COMMIT 语句:

COMMIT;

SQLite CREATE INDEX 语句:

CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );

SQLite CREATE UNIQUE INDEX 语句:

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

SQLite CREATE TABLE 语句:

CREATE TABLE table_name(column1 datatype,column2 datatype,column3 datatype,.....columnN datatype,PRIMARY KEY( one or more columns )
);

SQLite CREATE TRIGGER 语句:

CREATE TRIGGER database_name.trigger_name
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN stmt1; stmt2;....
END;

SQLite CREATE VIEW 语句:

CREATE VIEW database_name.view_name  AS
SELECT statement....;

SQLite CREATE VIRTUAL TABLE 语句:

CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );
or
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );

SQLite COMMIT TRANSACTION 语句:

COMMIT;

SQLite COUNT 子句:

SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;

SQLite DELETE 语句:

DELETE FROM table_name
WHERE  {CONDITION};

SQLite DETACH DATABASE 语句:

DETACH DATABASE 'Alias-Name';

SQLite DISTINCT 子句:

SELECT DISTINCT column1, column2....columnN
FROM   table_name;

SQLite DROP INDEX 语句:

DROP INDEX database_name.index_name;

SQLite DROP TABLE 语句:

DROP TABLE database_name.table_name;

SQLite DROP VIEW 语句:

DROP VIEW view_name;

SQLite DROP TRIGGER 语句:

DROP TRIGGER trigger_name

SQLite EXISTS 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name EXISTS (SELECT * FROM   table_name );

SQLite EXPLAIN 语句:

EXPLAIN INSERT statement...;
or
EXPLAIN QUERY PLAN SELECT statement...;

SQLite GLOB 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name GLOB { PATTERN };

SQLite GROUP BY 子句:

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name;

SQLite HAVING 子句:

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name
HAVING (arithematic function condition);

SQLite INSERT INTO 语句:

INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);

SQLite IN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name IN (val-1, val-2,...val-N);

SQLite Like 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name LIKE { PATTERN };

SQLite NOT IN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name NOT IN (val-1, val-2,...val-N);

SQLite ORDER BY 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION
ORDER BY column_name {ASC|DESC};

SQLite PRAGMA 语句:

PRAGMA pragma_name;For example:PRAGMA page_size;
PRAGMA cache_size = 1024;
PRAGMA table_info(table_name);

SQLite RELEASE SAVEPOINT 语句:

RELEASE savepoint_name;

SQLite REINDEX 语句:

REINDEX collation_name;
REINDEX database_name.index_name;
REINDEX database_name.table_name;

SQLite ROLLBACK 语句:

ROLLBACK;
or
ROLLBACK TO SAVEPOINT savepoint_name;

SQLite SAVEPOINT 语句:

SAVEPOINT savepoint_name;

SQLite SELECT 语句:

SELECT column1, column2....columnN
FROM   table_name;

SQLite UPDATE 语句:

UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];

SQLite VACUUM 语句:

VACUUM;

SQLite WHERE 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION;

SQLite学习总结(3)——SQLite命令及语法相关推荐

  1. Sqlite学习笔记(五)SQLite封锁机制

    概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务.所谓支持事务,即需要在并发环境下,保持事务的ACID特性.事务的原子性,隔离性都需要通过并发控制来保证.那么Sqlite的并发控 ...

  2. 学习Stephen Liu的《SQLite学习手册(数据表和视图)》(一)

    好好学习,day day up.不能再玩了,学习要紧 以下内容主要基于对于Stephen Liu的博文SQLite学习手册(数据表和视图)的学习. 零.准备工作 先把sqlite3.exe的路径添加到 ...

  3. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...

  4. Sqlite学习笔记(四)SQLite-WAL原理(转)

    Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然. WAL是 ...

  5. SQLite学习手册(数据库和事务)

    一.Attach数据库: ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化 ...

  6. SQLite学习手册(索引和数据分析/清理)

    一.创建索引: 在SQLite中,创建索引的SQL语法和其他大多数关系型数据库基本相同,因为这里也仅仅是给出示例用法:     sqlite> CREATE TABLE testtable (f ...

  7. SQLite学习手册(数据表和视图)

    一.创建数据表: 该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则.但是对于一些SQLite特有的规则,我们会给予额外的说明.注:以 ...

  8. SQLite学习手册(目录)

    在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色.和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特 ...

  9. SQLite学习手册(索引和数据分析/清理)-转

    一.创建索引: 在SQLite中,创建索引的SQL语法和其他大多数关系型数据库基本相同,因为这里也仅仅是给出示例用法:     sqlite> CREATE TABLE testtable (f ...

最新文章

  1. 自定义变量 配置文件_「系统架构」Nginx调优之变量的使用(3)
  2. PHP的Session机制
  3. Linux【命令】修改文件内容
  4. 云大计算机专业录取分数线,2016年云南大学艺术类专业录取分数线
  5. [转]C#中多路IP摄像机的视频监控系统
  6. dojo中的dojo/dom-class
  7. Fedora 31 已经为 Python 3.8 做好了准备
  8. Swoole入门指南:PHP7安装Swoole详细教程(一)
  9. 一个前端框架应该有的一些公共函数
  10. 机器学习基础算法29-EM实践
  11. android点击改变字体颜色,Android Textview 动态 部分文字点击 改变颜色
  12. POJ 1330 最近公共祖先LCA(Tarjan离线做法)
  13. 解决vscode中Linter pylint is not installed的问题
  14. 90后游戏开发毛星云跳楼自杀,8年执着国产3A梦碎
  15. 【gazebo要素9】 SDF制作Model文件(2)
  16. 正则表达式与文件格式处理-Linux(笔记)
  17. scp 给ipv6_scp传输常用命令
  18. SPDY:一种更快速web的实验协议(转)
  19. Fiddler抓包工具保姆级使用教程(超详细)
  20. JAVA使用Springboot+MP+VUE+Swagger前后端分离进行微信支付

热门文章

  1. php model get set方法,创建数据库对象之__set方法
  2. mysql查所有值的长度_MySQL查询以获取列中所有值的字符长度?
  3. activiti 7中文文档_Python3.7中文官方文档来袭...
  4. 剑指offer 答案 python_【剑指offer】【python】面试题2~5
  5. java程序如何解代数方程_如何用java编程来解决方程问题?
  6. python邮箱配置_python flask mail QQ邮箱配置
  7. vs code配置python环境mac_Mac下搭建基于VSCode的Python开发环境
  8. python判断数据是否在另一个集合中_python判断一个集合是否包含了另外一个集合中所有项的方法...
  9. 鸿蒙系统下滑线怎么设置,微信下划线昵称教程来了,快来试试!
  10. 较为综合的c语言题目,c语言考试综合题.doc