资讯专栏INFORMATION COLUMN

Sqlite - SQLite浅析

jsbintask / 3036人阅读

摘要:浅析是一个非常轻量级自包含的,它可移植性好,很容易使用,很小,高效而且可靠。有数据库级锁定,没有网络服务器。若该文件不存在,则自动创建。再次提醒,未定义类型的记录默认是字符串,添加时一定要用在表中添加字段可以看到被添加进去

SQLite浅析

SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是多带带的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。

嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。

下面将介绍SQLite的使用:

一、创建SQLite数据库

手工创建

使用sqlite3 工具,通过手工输入SQL命令完成数据库创建,用户在Linux 的命令行界面中输入 sqlite3 可启动 sqlite3工具。

代码创建

在代码中动态创建数据库。

在程序执行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序会自动建立数据库,然后打开数据库。

二、SQLite常用命令介绍 1. sqlite3 基本指令(通常以 . 开头) a. 创建或打开一个数据库文件

sqlite3 < *.db >

在终端下运行 sqlite3 < *.db > 指令:

JonathandeMacBook-Pro:test jonathan$ sqlite3 message.db
SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.
sqlite> 

<*.db> 是要打开的数据库文件。若该文件不存在,则自动创建。

b. 显示当前打开的数据库文件

sqlite > .database

sqlite> .database
main: /Users/jonathan/test/message.db
sqlite> 

可以看到当前打开的数据库文件正是刚刚建立的 message.db文件;

c. 显示数据库中所有表名

sqlite > .tables

sqlite> .table
user
sqlite> 

可以看到当前用户下有一个名为 user 的表;

d. 查看表的结构

sqlite > .schema

sqlite> .schema user
CREATE TABLE user(id integer, name, passwd interger);
sqlite> 

其实这里显示的正是我们创建新表时输入的命令;

e. 显示所有命令

sqlite > .help

sqlite> .help
.auth ON|OFF           Show authorizer callbacks
.backup ?DB? FILE      Backup DB (default "main") to FILE
                         Add "--append" to open using appendvfs.
.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
.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 ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
... ...
f. 退出 sqlite3

sqlite > .quit

sqlite> .quit
JonathandeMacBook-Pro:test jonathan$
2. SQL表操作命令

每个命令以 ;结束

a. 创建新表

sqlite > create table (f1 type1, f2 type2,...);

sqlite> CREATE TABLE user(id integer, name, passwd interger);
sqlite>

type为数据类型:

NULL

INTEGER

REAL

TEXT

BLOB

注意:若未指定类型,默认是字符串,向表中添加新纪录时要加 “”;

b. 删除表

sqlite > drop table ;

sqlite> .tables
user
sqlite> DROP TABLE user;
sqlite> .tables
sqlite> 

可以看到原来有两个表 user与user2 ,使用 drop table user2 后可以看到 只剩下 user;

c. 查询表中所有记录

sqlite >select * from ;

sqlite> SELECT * FROM user ;
1|zhangsan|1
sqlite>
d. 按指定条件查询表中记录

sqlite >select * from where ;

sqlite> SELECT * FROM user where id < 3;
1|zhangsan|1
sqlite>

这里的条件是 id < 2 ,可以看到 id < 3 的数据被挑选出来;

e. 向表中添加新纪录

sqlite >insert into values(value1,value2,...);

sqlite> INSERT INTO user VALUES(1,"zhangsan",1) VALUES(2,"lisi",2);
Error: near "VALUES": syntax error
sqlite> INSERT INTO user VALUES(1,"zhangsan",1);
sqlite> SELECT * FROM user;
1|zhangsan|1
sqlite> 

可以看到最新的记录被添加进去;

f. 按指定的条件删除表中记录

sqlite >delete from where ;

sqlite> SELECT * FROM user ;
1|zhangsan|1
sqlite> DELETE FROM user WHERE id=1;
sqlite> SELECT * FROM user ;
sqlite> 

可以看到 passwd=1 的被删除;

g. 更新表中记录

sqlite > updata set ,... where ;

sqlite> SELECT * FROM user ;
1|zhangsan|1
2|lisi|2
sqlite> UPDATE user SET name="xiaowang",passwd=3 WHERE id=1;
sqlite> SELECT * FROM user ;
1|xiaowang|3
2|lisi|2
sqlite> 

可以看到 id=3 的数据被更新。再次提醒,未定义类型的记录默认是字符串,添加时一定要用“” ;

h. 在表中添加字段

sqlite > alter table

add column defalut... ;

sqlite> SELECT * FROM user ;
1|xiaowang|3
2|lisi|2
sqlite> ALTER TABLE user add COLUMN age integer;
sqlite> .schema user
CREATE TABLE user(id integer, name, passwd interger, age integer);
sqlite>

可以看到 age 被添加进去;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110809.html

相关文章

  • .NET(C#)有哪些主流的ORM框架,FreeSql,SqlSugar,Dapper,EF还是..

    摘要:支持多种数据库,。推荐等级原于年发布,年正式开源。推荐等级以上是笔者收集整理的部分目前中流行的框架。 前言 在以前的一篇文章中,为大家分享了《什么是ORM?为什么用ORM?浅析ORM的使用及利弊》。那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,FreeSql,SqlSugar,Dapper,Entity Framework(EF)还是ServiceStack.OrmLit...

    Wuv1Up 评论0 收藏0
  • C - SQLite剖析之C接口

    摘要:对象是由接口函数创建并返回的,在应用程序使用任何其他接口函数之前,必须先调用该函数以便获得对象,在随后的其他调用中,都需要该对象作为输入参数以完成相应的工作。最后需要指出的,对于新的应用程序,可以使用接口函数来替代该函数以完成相同的工作。 SQLite剖析之C/C++接口 菜鸟教程:http://www.runoob.com/sqlite/...sqlite官方api文档:https:...

    MobService 评论0 收藏0
  • SQLite C/C++接口简介

    摘要:将应用程序的数据与原始中的参数绑定执行到下一个结果或者结束当前结果行所在的列值的析构函数。传递到中的回调函数将用于处理每行结果集。接口用于创建全局的,进程级的配置更改。接口创建新的功能无论是标量还是聚合。 翻译自https://www.sqlite.org/cintro.html,建议阅读原文 摘要 接下来的两个对象和八个方法包含了SQLite接口的基本要素: sql...

    Cympros 评论0 收藏0
  • C - SQLite之C接口

    摘要:回调函数,若该函数非空,则每次语法的结果都会调用该函数,若为空,则将被忽略。回调函数的第一个参数。存储错误信息,可为返回非零,该函数立即中断查询,并不再执行后续的语句和回调函数返回结束执行。 SQLite之C接口 sqlite之C接口简介 sqlite3_open int sqlite3_open ( const char *filename, /* Database fil...

    xiaotianyi 评论0 收藏0
  • Android安全开发之Provider组件安全

    摘要:人工排查肯定比较麻烦,建议开发者使用阿里聚安全提供的安全扫描服务,在上线前进行自动化的安全扫描,尽早发现并规避这样的风险。 作者:伊樵、呆狐@阿里聚安全 1 Content Provider组件简介 Content Provider组件是Android应用的重要组件之一,管理对数据的访问,主要用于不同的应用程序之间实现数据共享的功能。Content Provider的数据源不止包括SQ...

    xiaolinbang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<