转自:http://www.thegeekstuff.com/2012/09/sqlite-command-examples/

SQLite3 is very lightweight SQL database which focuses on simplicity more than anything else. This is a self-contained serverless database engine, which is very simple to install and use.

While most of the commands in the SQLite are similar to SQL commands of other datbases like MySQL and ORACLE, there are some SQLite SQL commands that are different.

This article explains all the basic SQL commands that you need to know to use the SQLite database effectively.

If you don’t have sqlite installed, execute “yum install sqlite” to install it. You can also install SQLite database from source to get the latest version.

1. Create a SQLite Database (and a Table)

First, let us understand how create a SQLite database with couple of tables, populate some data, and view those records.

The following example creates a database called employee.db. This also creates an employee table with 3 columns (id, name and title), and a department table in the company.db database. We’ve purposefully missed the deptid column in the employee table. We’ll see how to add that later.

# sqlite3 company.db
sqlite> create table employee(empid integer,name varchar(20),title varchar(10));
sqlite> create table department(deptid integer,name varchar(20),location varchar(10));
sqlite> .quit

Note: To exit from the SQLite commandline “sqlite>” prompt, type “.quit” as shown above.

A SQLite database is nothing but a file that gets created under your current directory as shown below.

# ls -l company.db -rw-r--r--. 1 root root 3072 Sep 19 11:21 company.db

2. Insert Records

The following example populates both employee and department table with some sample records.

You can execute all the insert statements from the sqlite command line, or you can add those commands into a file and execute the file as shown below.

First, create a insert-data.sql file as shown below.

# vi insert-data.sql
insert into employee values(101,'John Smith','CEO');
insert into employee values(102,'Raj Reddy','Sysadmin');
insert into employee values(103,'Jason Bourne','Developer');
insert into employee values(104,'Jane Smith','Sale Manager');
insert into employee values(105,'Rita Patel','DBA');
insert into department values(1,'Sales','Los Angeles');
insert into department values(2,'Technology','San Jose');
insert into department values(3,'Marketing','Los Angeles');

The following will execute all the commands from the insert-data.sql in the company.db database

# sqlite3 company.db < insert-data.sql

3. View Records

Once you’ve inserted the records, view it using select command as shown below.

# sqlite3 company.db
sqlite> select * from employee;
101|John Smith|CEO
102|Raj Reddy|Sysadmin
103|Jason Bourne|Developer
104|Jane Smith|Sale Manager
105|Rita Patel|DBA
sqlite> select * from department;
1|Sales|Los Angeles
2|Technology|San Jose
3|Marketing|Los Angeles

4. Rename a Table

The following example renames department table to dept using the alter table command.

sqlite> alter table department rename to dept;

5. Add a Column to an Existing Table

The following examples adds deptid column to the existing employee table;

sqlite> alter table employee add column deptid integer;

Update the department id for the employees using update command as shown below.

update employee set deptid=3 where empid=101;
update employee set deptid=2 where empid=102;
update employee set deptid=2 where empid=103;
update employee set deptid=1 where empid=104;
update employee set deptid=2 where empid=105;

Verify that the deptid is updated properly in the employee table.

sqlite> select * from employee;
101|John Smith|CEO|3
102|Raj Reddy|Sysadmin|2
103|Jason Bourne|Developer|2
104|Jane Smith|Sale Manager|1
105|Rita Patel|DBA|2

6. View all Tables in a Database

Execute the following command to view all the tables in the current database. The folowing example shows that there are two tables in the current database.

sqlite> .tables dept      employee

7. Create an Index

The following example creates an unique index called empidx on the empid field of employee table.

sqlite> create unique index empidx on employee(empid);

Once an unique index is created, if you try to add another record with an empid that already exists, you’ll get an error as shown below.

sqlite> insert into employee values (101,'James Bond','Secret Agent',1);
Error: constraint failed

8. Create a Trigger

For this example, first add a date column called “updatedon” on employee table.

sqlite> alter table employee add column updatedon date;

Next, create a file that has the trigger definition. The following trigger will update the “updatedon” date column with the current timestamp whenever you perform an update on this table.

# vi employee_update_trg.sql
create trigger employee_update_trg after update on employee
begin
update employee set updatedon = datetime('NOW') where rowid = new.rowid;
end;

Create the trigger on the company.db database as shown below.

# sqlite3 company.db < employee_update_trg.sql

Now anytime you update any record in the employee table, the “updatedon” date column will be updated with the current timestamp as shown below. The following example updates the “updatedon” timestamp for empid 104 through trigger.

# sqlite3 company.db
sqlite> update employee set title='Sales Manager' where empid=104;
sqlite> select * from employee;
101|John Smith|CEO|3|
102|Raj Reddy|Sysadmin|2|
103|Jason Bourne|Developer|2|
104|Jane Smith|Sales Manager|1|2012-09-15 18:29:28 105|Rita Patel|DBA|2|

9. Create a View

The following example creates a view called “empdept”, which combines fields from both employee and dept table.

sqlite> create view empdept as select empid, e.name, title, d.name, location from employee e, dept d where e.deptid = d.deptid;

Now you can execute select command on this view just like a regular table.

sqlite> select * from empdept;
101|John Smith|CEO|Marketing|Los Angeles
102|Raj Reddy|Sysadmin|Technology|San Jose
103|Jason Bourne|Developer|Technology|San Jose
104|Jane Smith|Sales Manager|Sales|Los Angeles
105|Rita Patel|DBA|Technology|San Jose

After creating a view, if you execute .tables, you’ll also see the view name along with the tables.

sqlite> .tables
deptempdept   employee

10. SQLite Savepoint, Rollback, Commit

Currently dept table has the following 3 records.

sqlite> select * from dept;
1|Sales|Los Angeles
2|Technology|San Jose
3|Marketing|Los Angeles

Now, create a savepoint called “major”, and perform some transactions on the dept table. As you see below, we’ve added two records, deleted one record, after creating a savepoint called “major”.

sqlite> savepoint major;
sqlite> insert into dept values(4,'HR','Los Angeles');
sqlite> insert into dept values(5,'Finance','San Jose');
sqlite> delete from dept where deptid=1;
sqlite> select * from dept;
2|Technology|San Jose
3|Marketing|Los Angeles
4|HR|Los Angeles
5|Finance|San Jose

Now for some reason, if we don’t want the above transactions, we can rollback the changes to a particular savepoint. In this example, we are rolling back all the changes we’ve made after the “major” savepoint.

sqlite> rollback to savepoint major;
sqlite> select * from dept;
1|Sales|Los Angeles
2|Technology|San Jose
3|Marketing|Los Angeles

If you don’t want your savepoints anymore, you can erase it using release command.

sqlite> release savepoint major;

11. Additional Date Functions

By default, the date columns values displayed in UTC time. To display in the local time, use the datetime command on the date column as shown below.

sqlite> select empid,datetime(updatedon,'localtime') from employee;
104|2012-09-15 11:29:28

You can also use strftime to display the date column in various output.

sqlite> select empid,strftime('%d-%m-%Y %w %W',updatedon) from employee;104|19-09-2012 3 38

The following are the possible modifers you can use in the strftime function.

  • %d day of month: 00
  • %f fractional seconds: SS.SSS
  • %H hour: 00-24
  • %j day of year: 001-366
  • %J Julian day number
  • %m month: 01-12
  • %M minute: 00-59
  • %s seconds since 1970-01-01
  • %S seconds: 00-59
  • %w day of week 0-6 with Sunday==0
  • %W week of year: 00-53
  • %Y year: 0000-9999
  • %% %

12. Dropping Objects

You can drop all the above created objects using the appropriate drop command as shown below.

Since we are dropping objects for testing purpose, copy the company.db to a test.db and try these commands on the test.db

# cp company.db test.db  #
sqlite3 test.db
sqlite> .tables deptempdept   employee
sqlite> drop index empidx;
sqlite> drop trigger employee_update_trg;
sqlite> drop view empdept; sqlite>
drop table employee;
sqlite> drop table dept;

All the tables and views from the test.db are now deleted.

sqlite> .tables
sqlite>

Note: When you drop a table all the indexes and triggers for that table are also dropped.

13. Operators

The following are the possible operators you can use in SQL statements.

  • ||
  • * / %
  • + -
  • << >> & |
  • < >=
  • = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP
  • AND OR

For example:

sqlite> select * from employee where empid >= 102 and empid  select * from dept where location like 'Los%';
1|Sales|Los Angeles
3|Marketing|Los Angeles

14. Explain Query Plan

Execute “explain query plan”, to get information about the table that is getting used in a query or view. This is very helpful when you are debugging a complex query with multiple joins on several tables.

sqlite> explain query plan select * from empdept; 0|0|TABLE employee AS e 1|1|TABLE dept AS d

For a detailed trace, just execute “explain” followed by the query to get more performance data on the query. This is helpful for debugging purpose when the query is slow.

sqlite> explain select empid,strftime('%d-%m-%Y %w %W',updatedon) from employee;0|Trace|0|0|0||00|
1|Goto|0|12|0||00|2|OpenRead|0|2|0|4|00|
3|Rewind|0|10|0||00|
4|Column|0|0|1||00|
5|String8|0|3|0|%d-%m-%Y %w %W|00|
6|Column|0|3|4||00|
7|Function|1|3|2|strftime(-1)|02|
8|ResultRow|1|2|0||00|
9|Next|0|4|0||01|
10|Close|0|0|0||00|
11|Halt|0|0|0||00|
12|Transaction|0|0|0||00|
13|VerifyCookie|0|19|0||00|
14|TableLock|0|2|0|employee|00|
15|Goto|0|2|0||00|

15. Attach and Detach Database

When you have multiple database, you can use attach command to execute queries across database.

For example, if you have two database that has the same table name with different data, you can create a union query across the database to view the combined records as explained below.

In this example, we have two company database (company1.db and company2.db). From the sqlite prompt, attach both these database by giving alias as c1 and c2 as shown below.

# sqlite3 sqlite> attach database 'company1.db' as c1;
sqlite> attach database 'company2.db' as c2;

Execute “.database” command which will display all the attached databases.

sqlite> .database
seq  name             file---  ---------------  ------------------
0    main
2    c1               /root/company1.db
3    c2               /root/company2.db

Now, you can execute a union query across these databases to combine the results.

sqlite> select empid, name, title from c1.employee union select empid, name, title from c2.employee;
101|John Smith|CEO
102|Raj Reddy|Sysadmin
103|Jason Bourne|Developer
104|Jane Smith|Sales Manager
105|Rita Patel|DBA
201|James Bond|Secret Agent
202|Spider Man|Action Hero

After attaching a database, from the current sqlite session, if you want to detach it, use detach command as shown below.

sqlite> detach c1;
 sqlite> .database
 seq name file
--- --------------- -----------------
0 main
2 c2 /root/company2.db

完!

转载于:https://www.cnblogs.com/itech/archive/2012/10/31/2748467.html

15条SQLite3语句相关推荐

  1. 52条SQL语句性能优化策略

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...

  2. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  3. mysql导入多条数据语句_MySQL插入多条记录和REPLACE语句

    今天遇到样一个问题,在使用Mysql数据库时,新建一个表,并设置主键为自增长,结果当我一次执行多条插入语句时悲剧了,它竟然报错了,信息如下: 错误码: 1064 You have an error i ...

  4. 初识Mysql(part17)--我需要知道的3条Mysql语句之联结

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:联结.INNER JOIN.ON关键字 此Blog会用到下面3个表. temp_store表: # p ...

  5. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  6. mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???

    本文共:3018字 预计阅读时间:8分钟 文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注 mysql┃一条更新语句是怎么执行的??? 前言 通过上一篇文章的内容,大家已经对mysql的基本架 ...

  7. mysql 8.0 一条insert语句的具体执行流程分析(三)

    代码版本:mysql 8.0.22 编程语言:c++ && c++11 && c++14 && c++17 上一篇文章:mysql 8.0 一条inse ...

  8. 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程

    MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...

  9. 《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】...

    问题的由来 话说我这里有个小萝莉非要拜我为师.呵呵,对于程序媛我一向--嗯嗯认为程序不如人好看,再加上该名萝莉大学还没毕业.术语都多半没有听过,于是就想着拒绝,当时嘴一贱,就说了一句:你用一个For循 ...

  10. 用一条mysql语句插入多条数据

    这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...

最新文章

  1. Ubuntu Server 14.04 下root无法ssh登陆
  2. 日常工作问题解决:centos7下配置网卡以及查询网卡UUID
  3. 图解用tree命令研究Windows目录、.net目录、项目目录、JDK目录
  4. Mac OS 如何连接windows 文件共享
  5. 关于机器学习你必须要了解的事情
  6. 5个常用的htaccess技巧
  7. 深入kubernetes之Pod——一pod多容器
  8. dd var tmp .oracle,Oracle 11gR2 RAC ohasd failed to start 解决方法
  9. C语言 堆内存操作
  10. ORACLE之常用FAQ二 [转]
  11. Linux下LAMP服务配置
  12. tensorflow随笔——深度学习中GPU型号对比
  13. C#之向文件追加内容
  14. fiddler实现将http请求的js转为本地的js文件
  15. 【校招VIP】产品行测考察之逻辑推理
  16. Hi3519V101开发(二)
  17. 区块链随想录——一种设想中的公链架构
  18. Mysql全站最全笔记,从入门到资深!
  19. XML及XML的解析方式
  20. Fabric1.4.1多机部署

热门文章

  1. 【HDU6194】string string string(统计出现k次的子串数目---后缀数组+st表)
  2. c语言一维数组程序题,C语言程序设计 练习题参考答案 第四章 一维数组
  3. mysql 的基本用法_mysql的基本用法
  4. OpenCV : 仿射变换
  5. Docker的核心概念镜像Images, 容器Containers, 数据卷Volumes
  6. 前端获取后台布尔类型_教育平台项目前端:视频讲解
  7. 171.Excel表列序号
  8. 从有序数组中找出某个数出现的次数
  9. 逻辑斯蒂回归模型为什么用sigmoid函数
  10. 自建gitHub的webhook消息通知设计思路及成功验证结果