Sqlite3数据库

来源:互联网 发布:ipv6 墙 知乎 编辑:程序博客网 时间:2024/06/05 19:08

Sqlite3简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

下载Sqlite3

在操作之前,朋友们要先下载SQLite数据库,官方的下载页面是http://sqlite.org/download.html,我是在Windows下试验,所以我选择了Precompiled Binaries For Windows下面的sqlite-shell-win32-x86和sqlite-analyzer-win32-x86的zip包,前者是SQLite数据库引擎,后者是SQLite数据库分析器,主要用于分析数据库的状态等信息,大家也可以根据自己的情况去下载。

配置环境变量

配置环境变量

传送门:http://www.cnblogs.com/avenwu/archive/2012/01/16/2324175.ht

创建一个数据库

执行: sqlite3 C:\Users\龙布天下\Desktop\sqlite3\box.db
这里写图片描述

这里写图片描述

此时你要执行命令 : 【.databases】注意开头的小点,来列出数据库文件名

这里写图片描述

当更换了中文路径以后:

这里写图片描述


sqlite 数据类型 全面

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型:

1.NULL:空值。
2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。
3.REAL:浮点数字,存储为8-byte IEEE浮点数。
4.TEXT:字符串文本。
5.BLOB:二进制对象。

但实际上,sqlite3也接受如下的数据类型:
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。

datetime 包含日期时间格式,必须写成’2010-08-05’不能写为’2010-8-5’,否则在读取时会产生错误!

Sqlite常用数据类型,

这句话本身就有问题,因为:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有自动递增Integer Primary Key才有用). 对于SQLite来说对字段不指定类型是完全有效的. 如:

Create Table ex3(a, b, c);

即使SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎是非常有用的. SQLite支持常见的数据类型, 如:
SQL代码

CREATE TABLE ex2(    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)   );

char、varchar、text和nchar、nvarchar、ntext的区别

1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。

2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

*
这里写图片描述


创建一个数据库表

这里写图片描述

sqlite> CREATE TABLE people   ...> (   ...>   id integer,   ...>   name text,   ...>   age  integer   ...> );

使用.table查看当前数据库中的所有表

这里写图片描述

使用.dump命令生成SQL脚本
这里写图片描述


常用sqlite3命令

创建数据库

sqlite3 数据库名

查询数据库

.databases

创建表

create table  表名(id intger,age integer,name text);

删除表

alter table 表名 

添加列

alter  table 表名 add colunm 列名 列的类型;

查询表中的列

.schema 表名;

向表中插入数据

insert into 表名 values(1,'小明');

向表中插入空数据

insert into  表名 values(1,null);

查询表中的所有数据

select * from 表名;

修改表中单列的所有数据

update 表名 set id=100;

根据条件修改表中的数据

update 表名 set id=200 where name='小明';

根据条件修改表中的多条数据

 update 表名 set id=100,name='小李' where id=200;

根据条件删除表中的数据

delete from 表名 where id=100;

删除表中的所有数据

delete from 表名

查询时开启列的名称

.header no

查询列名为id的所有数据

select id from 表名;

筛选重复的数据

select distinct 列名  from 表名;

查询两个列中所有数据的之和

select  列名 + 列名  from 表名;

给查询的列起别名

 select 列名 as 别名  from 表名;

查询时升序排列

select * from 表名 order by 列名 asc;

查询时降序排列

select * from 表名 order by 列名 desc;

查询时统计列的总条数

select count(*) from 表名 ;

唯一约束

create table  表名(id intger,age integer unitue,name text);

非空约束

create table  表名(id intger on null,age integer ,name text);

定义默认值约束

create table  表名(sex integer default 1);

主键约束

create table  表名(id integer primary key autoincrement,name text);

分页查询

//跳三行,取两行select * from box limit 2 offset 3;//简写select * from box limit 23;

外键约束,实现级联删除

 foreign key (从表名) references 主表名(主列名) 

这里写图片描述

原创粉丝点击