sqlite之我见--简单介绍与基本操作

2024-02-07 16:32

本文主要是介绍sqlite之我见--简单介绍与基本操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:http://blog.csdn.net/wzzfeitian/article/details/7978140

首先,看到此篇文章的人,肯定都对sqlite有所了解了,那些开场白之类的废话就不多写了,下面就简单的介绍sqlite的一些基本知识及简单操作,可能会有错漏的地方,欢迎批评指正,我也会不断学习并完善这篇文章


1.特性

1)ACID事物
2)零配置--无需安装与管理配置
3)储存在单一磁盘文件中的完整的数据库
4)数据库文件可以在不同字节顺序的机器间自由的共享
5)支持数据库文件大小至2TB
6)足够小,大致3w行C代码,250k
7)比一些流行的数据库在大部分普通数据库操作要快
8)简单,轻松的API
9)良好注释的源代码,并且有着90%以上的测试覆盖率
10)包含TCL绑定,可以通过wrapper支持其他语言的绑定
11)独立:没有额外依赖
12)Source完全的open,你可以用于任何用途,甚至出售
13)支持多种开发语言,C,PHP,Perl,JAVA,ASP.NET,Python

2.数据类型

sqlite是无类型的,但为了增强可读性与可移植性,建议加上类型。在字段类型为“Integer Primary Key”时并不是无类型的。

CREATE TABLE ex(
a VARCHAR(10),      可变长度的字符串
b NVARCHAR(15),
c TEXT,             文本型
d INTEGER,          整型
e FLOAT,            浮点型
f BOOLEAN,          布尔型
g CLOB,
h BLOB,             二进制类型,用来存储文件,比如图片
i TIMESTAMP,
j NUMERIC(10,5),
k VARYING CHARACTER(24),
l NATIONAL VARYING CHARACTER(16)
NULL                空值
  

3.支持的SQL

  BEGIN TRANSACTION
  END TRANSACTION
  comment
  COMMIT TRANSACTION

  CREATE INDEX
  CREATE TABLE
  CREATE TRIGGER
  CREATE VIEW
  
  COPY
  DELETE
  DETACH DATABASE

  DROP INDEX
  DROP TABLE
  DROP TRIGGER
  DROP VIEW

  EXPLAIN
  expression
  INSERT
  ON CONFLICT clause
  PRAGMA
  REPLACE
  ROLLBACK TRANSACTION
  SELECT
  UPDATE 

4.数据库的简单使用:

1)创建数据库

  在命令提示符下:
  $ sqlite3 testsql.db
  sqlite> .quit 此时ls看下当前目录,是没有db文件生成的

  $ sqlite3 testsql.db
  sqlite> ;
  sqlite> .quit 此时ls会看到有testsql.db在当前目录下
具体操作如下:
[carl@Fedora sqlite]$ sqlite3 testsql.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .quit
[carl@Fedora sqlite]$ ls
[carl@Fedora sqlite]$ sqlite3 testsql.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> ;
sqlite> .quit
[carl@Fedora sqlite]$ ls
testsql.db
[carl@Fedora sqlite]$

2)创建表

create table testtable(column1 varchar(10), column2 int);
不要忘了加分号,代表一条语句输入完毕
testtable是要创建的表名。create和table是关键字,column1 column2是两个表项。
varchar(10) int是类型。虽然sqlite是无类型的,但是创建表的时候指定一个类型,可以增强可移植性。
操作如下:
[carl@Fedora sqlite]$ sqlite3 testsql.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table testtable(column1 varchar(10), column2 int);
sqlite> .tab
testtable
sqlite> select * from sqlite_master
...> ;
table|testtable|testtable|2|CREATE TABLE testtable(column1 varchar(10), column2 int)
sqlite> 

3)向表中插入一条记录

insert into testtable values("column1 is string", 10);
插入完毕,哎呀,column1 is string这明显超出了varchar(10)类型指定的长度了,让我们查看一下表中的内容现在怎么样了吧。看下节------->

4)查询表中内容

select * from testtable;
此条语句可列出表testtable中的所有内容。
让我们先看一下上面的插入语句结果如何
sqlite> select * from testtable
...> ;
column1 is string|10
sqlite>

我们再插入一个更长的试试
sqlite> insert into testtable values("column1 is string,this is longer", 10);
sqlite> select * from testtable;
column1 is string|10
column1 is string,this is longer|10
sqlite> 

看起来第一列的长度完全不受限制

5)sqlite3 testsql.db的规则

退出,再重新打开数据库:
sqlite> .quit
[carl@Fedora sqlite]$ sqlite3 testsql.db 
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from testtable;
column1 is string|10
column1 is string,this is longer|10
sqlite>

可见sqlite3 testsql.db的规则为,如果testsql.db已存在,则直接打开,否则创建一个新的数据库testsql.db

6)查询一个数据库中所有的表名

sqlite数据库中有一个系统建立的表,sqlite_master,上面第2)小节也有调用,查询这个表就可以得到数据库中所有的
sqlite> create table testtable2(column1 int);
sqlite> insert into testtable2 values(30);
sqlite> select * from testtable2;
30
sqlite> select * from sqlite_master;
table|testtable|testtable|2|CREATE TABLE testtable(column1 varchar(10), column2 int)
table|testtable2|testtable2|3|CREATE TABLE testtable2(column1 int)
sqlite> 

关于此表,官网FAQ定义如下:
CREATE TABLE sqlite_master(type TEXT, name TEXT, tal_name TEXT, rootpage INTEGER, sql TEXT);

7)sqlite的输出格式

默认的输出格式是“列表”。在列表模式下,每条查询结果记录被写在一行中并且每列之间以一个字符串分隔符隔开,默认的分隔符为管道符号"|"。
sqlite支持的输出格式包括:csv column html insert line list tabs tcl
具体使用方法如下:
[carl@Fedora sqlite]$ sqlite3 testsql.db 
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .mode list
sqlite> select * from testtable
...> ;
column1 is string|10
column1 is string,this is longer|10
sqlite> .mode csv
sqlite> select * from testtable;
"column1 is string",10
"column1 is string,this is longer",10
sqlite> .mode column
sqlite> select * from testtable;
column1 is string  10        
column1 is string  10        
sqlite> .mode html
sqlite> select * from testtable;
<TR><TD>column1 is string</TD>
<TD>10</TD>
</TR>
<TR><TD>column1 is string,this is longer</TD>
<TD>10</TD>
</TR>
sqlite> .mode insert
sqlite> select * from testtable;
INSERT INTO table VALUES('column1 is string',10);
INSERT INTO table VALUES('column1 is string,this is longer',10);
sqlite> .mode line
sqlite> select * from testtable;
column1 = column1 is string
column2 = 10
column1 = column1 is string,this is longer
column2 = 10
sqlite> .mode tabs
sqlite> select * from testtable;
column1 is string	10
column1 is string,this is longer	10
sqlite> .mode tcl
sqlite> select * from testtable;
"column1 is string"	"10"	
"column1 is string,this is longer"	"10"	
sqlite> .output output.txt              //输出到文件
sqlite> select * from testtable;
sqlite> .exit
[carl@Fedora sqlite]$ cat output.txt 
"column1 is string"    "10"    
"column1 is string,this is longer"    "10"    
[carl@Fedora sqlite]$

8)查看数据库中所有的表

除了上面第6)小节介绍的sqlite_master外,还有另一种方法,如下
sqlite> .tables
testtable   testtable2
sqlite>
 

9)查看所有的表的创建语句

sqlite> .schema
CREATE TABLE testtable(column1 varchar(10), column2 int);
CREATE TABLE testtable2(column1 int);
sqlite> .schema testtable
CREATE TABLE testtable(column1 varchar(10), column2 int);
sqlite> .schema testtable2
CREATE TABLE testtable2(column1 int);
sqlite> 

10)删除记录

sqlite> select * from testtable2;
30
sqlite> delete from testtable2 where column1=30;
sqlite> select * from testtable2;
sqlite>

可以删掉表testtable2中column1为30的条目。注意delete from testtable2 而不是delete * from testtable2

11)数据库的导入与导出

即备份一个一模一样的数据库,首先看一下一个新的命令
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE testtable(column1 varchar(10), column2 int);
INSERT INTO testtable VALUES('column1 is string',10);
INSERT INTO testtable VALUES('column1 is string,this is longer',10);
CREATE TABLE testtable2(column1 int);
COMMIT;
sqlite> 

可以得到一个用来创建当前数据库的原子操作集合。我们可以利用这个集合来创建一个新的一模一样的数据库
[carl@Fedora sqlite]$ sqlite3 copiedsql.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tab
sqlite> .read dump.sql 
sqlite> .tab
testtable   testtable2
sqlite> select * from testtable;
column1 is string|10
column1 is string,this is longer|10
sqlite> select * from testtable2;
sqlite> .quit
[carl@Fedora sqlite]$

以上也是从网上查出并加以总结,水平有限,欢迎交流。
下一篇SQLITE文章 sqlite之我见--C/C++ API接口介绍中,我会介绍一下一些常用的C/C++ API接口。

 

这篇关于sqlite之我见--简单介绍与基本操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688297

相关文章

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核