Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1307|回复: 3
打印 上一主题 下一主题

SQLite

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2018-4-17 18:23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
回复

使用道具 举报

1228

主题

1998

帖子

7598

积分

认证用户组

Rank: 5Rank: 5

积分
7598
沙发
发表于 2020-2-6 21:36:41 | 只看该作者
本帖最后由 Qter 于 2020-2-6 21:49 编辑

https://www.runoob.com/sqlite/sqlite-tutorial.html

SQLite Home Page - SQLite 官方网站提供了最新的 SQLite 安装版本,最新的 SQLite 资讯以及完整的 SQLite 教程。




在 Windows 上安装 SQLite
  • 请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。
  • 您需要下载 sqlite-tools-win32-*.zipsqlite-dll-win32-*.zip 压缩文件。
  • 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。
  • 添加 C:\sqlite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果。

  1. C:\>sqlite3
  2. SQLite version 3.7.15.2 2013-01-09 11:53:05
  3. Enter ".help" for instructions
  4. Enter SQL statements terminated with a ";"
  5. sqlite>
复制代码

Precompiled Binaries for Windows
32-bit DLL (x86) for SQLite version 3.31.1.
(sha1: 3475dccc0378a0b2407ae78725d1a18d7885cdd5)
64-bit DLL (x64) for SQLite version 3.31.1.
(sha1: 300c5f26feb297968f06790c5b1e19db9347da67)
A bundle of command-line tools for managing SQLite database files, including the command-line shell program, the sqldiff.exe program, and the sqlite3_analyzer.exe program.
(sha1: 84de665d28cff0f8c512889cd356712e17310637)


链接:https://pan.baidu.com/s/1aEOWEwVtrMaoEX9YaBcOdw
提取码:s86x

回复 支持 反对

使用道具 举报

1228

主题

1998

帖子

7598

积分

认证用户组

Rank: 5Rank: 5

积分
7598
板凳
发表于 2020-2-15 14:48:21 | 只看该作者
https://www.cnblogs.com/lone5wolf/p/10907644.html

SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。

SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。

嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。

SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要占用内存,但其它开销很小,适合用于嵌入式设备,需要做的仅仅是把它正确的编译到的程序。

一、基本操作命令:

1、创建数据库:

       sqlite3 数据库名

       例如:[root@192 ~]# sqlite3 /home/DataBases/user.db

2、显示数据库:

       .databases

      例如:sqlite> .databases

3、创建表:SQL语句以分号“;”结束,敲回车键之后,SQL语句就会执行

        sqlite> create table person(id integer primary key,name varchar(10),age integer);

4、显示所有的表和视图:

        sqlite> .tables

5、显示表结构:

        sqlite> .schema 【表名】

6、获取指定表的索引列表:

       sqlite> .indices 【表名】

7、从SQL文件导入数据库:

       sqlite> .read 【文件名】

8、导出数据库到SQL文件:

       sqlite> .output 【文件名】

       sqlite> .dump

       sqlite> .output stdout

9、格式化输出数据到CSV格式:

       sqlite> .output 【文件名.csv】

       sqlite> .separator

       sqlite> .select * from test;

       sqlite> .output stdout

10、从CSV文件导入数据到表中:

       sqlite> .import 【文件名.csv】 【表名】

11、备份数据库:

       [root@192 ~]# sqlite3 【数据库名】 .dump > backup.sql

12、恢复数据库:

      [root@192 ~]# sqlite3 【数据库名】 < backup.sql


回复 支持 反对

使用道具 举报

1228

主题

1998

帖子

7598

积分

认证用户组

Rank: 5Rank: 5

积分
7598
地板
发表于 2020-2-15 14:59:39 | 只看该作者
https://blog.csdn.net/zhoudaxia/article/details/8194577数据类型 本文整理自http://sqlite.org/datatype3.html
    许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类型系统的数据库引擎。在某种意义上,工作在静态类型数据库上的SQL声明也同样能工作在SQLite上。但是SQLite动态类型还允许做一些在传统严格类型的数据库中不能做的事情。
    1、存储类别及数据类型
    在SQLite数据库中存储(或被数据库引擎操作)的每个值,都属于下面存储类别之一:
    * NULL: 值为一个NULL空值。
    * INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,6或8个字节。
    * REAL: 所有值都是浮点数值,被存储为8字节的IEEE浮点数。
    * TEXT: 值为文本字符串,使用数据库编码存储,如UTF-8、UTF-16BE或UTF-16-LE。
    * BLOB: 值是数据的二进制对象,如何输入就如何存储,不改变格式。
    注意一个存储类别比一个数据类型更通用。例如INTEGER存储类别就包括6个不同长度的整型数据类型,这在磁盘上是不同的。不过只要INTEGER值从磁盘上读到内存中进行处理,它们会转换成最通用的数据类型(8字节的整型),因此在大多数情况下,对“存储类别”和“数据类型”并不做严格区分,这两个术语可交换使用。
    在SQLite 3数据库中,除了INTEGER PRIMARY KEY这一列,任何列都可以存储任何类型的数据。SQL语句中的所有值,不管是嵌入到SQL语句文本中的字面值还是绑定到预先编译好的SQL语句中的参数值,都有一个隐式存储类别。在下述情况中,数据库引擎将在执行查询时,可以让存储的值在数值类型(INTEGER和REAL)和文本类型之间转换。
    (1)Boolean数据类型
    SQLite没有单独的布尔数据类型。相应的,布尔值被存储为整数0(false)和1(true)。
    (2)日期和时间数据类型
    SQLite没有单独的日期/时间数据类型。相应的,内建的日期和时间函数能够把日期和时间存储为文本、实数或整数值:
    * 文本值为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS")。
    * 实数值为儒略日数,即从公元前4714年11月24日格林威治正午时刻开始的天数,按公历来算。
    * 整数值为Unix时间,即从1970-01-01 00:00:00 UTC开始的秒数。
    应用程序可以选择其中的一种格式来存储日期和时间,也可以通过内建的日期和时间函数在这些格式之间转换。
    2、列的亲和类型
    在SQLite 3中,值被定义为什么类型只和值自身有关,和列没有关系,和变量也没有关系(这有时被称作弱类型)。所有其它的我们所使用的数据库引擎都受静态类型系统的限制,其值的类型是由其所属列的属性决定的,而与值本身无关。为了最大限度的增加SQLite数据库和其他数据库的兼容性,SQLite支持列的“亲和类型”概念。列的亲和类型是指为该列所存储的数据建议一个类型,要注意这个类型是建议而不是强迫。任何列依然是可以存储任何类型的数据的。只是针对某些列,如果有建议类型的话,数据库将优先按所建议的类型存储。这个被优先使用的数据类型称为“亲和类型”。
    SQLite 3的每个列可以使用以下亲和类型中的一种:TEXT, NUMERIC, INTEGER, REAL, NONE。
    带有文本亲和类型的列可以使用NULL, TEXT或BLOB类型来存储所有数据。如果数值数据被插入到这样的列中,会在存储之前转换成文本类型。
    带有数值亲和类型的列可以使用所有五种类型来存储值。当文本数据被插入到数据值型的列中时,如果转换是无损的且可逆的,则文本会被转换成INTEGER或REAL(按优先顺序)。为了在TEXT和REAL之间转换,SQLite尝试无损且可逆地转换文本的开头15个有效十进制数字。如果不能成功转换的话,值则只能按文本类型存储了,而不会被转换成NULL类型或BLOB类型来存储。带有小数点或指数记法的字符串可能看起来像一个浮点字面值,但只要值能表示为一个整数,数值亲和类型将把它转换成一个整数。因此,字符串'3.0e+5'会被转换成整数300000,而不是浮点数300000.0。
    使用整数亲和类型的列,其行为与数值亲和类型的列一样。但也有些区别,比如没有小数部分的实数字面值被插入整数亲和类型的列时,它将被转换成整数并按整数类型存储。
    使用实数亲和类型的列,其行为与数值亲和类型的列一样。有一个区别就是整数会强制用浮点数来表示。(作为一个内部优化,没有小数部分的小浮点数会当作整数写入磁盘,以占用更少的空间。当读出这个值时会自动转换回浮点数。这个优化在SQL级别完全不可见,并且只有通过检测数据库文件的原始比特位才能发现)。
    使用NONE亲和类型的列不会优先选择使用哪个类型,在数据被存储前也不会强迫转换它的类型。而是直接按它声明时的原始类型来存储。
    (1)列亲和类型的确定
    列的亲和类型由列的声明类型(在写SQL语句时指定)来确定,根据以下规则顺序来判断:
    1)如果声明类型包含字符中"INT",则被定义为整数亲和类型。
    2)如果列的声明类型包含字符串"CHAR", "CLOB"或"TEXT"中的某一个,则列具有文本亲和类型。注意VARCHAR类型包含字符串"CHAR",因此被定义为文本亲和类型。
    3)如果列的声明类型包含字符串"BLOB",或者没有为列声明数据类型,则列具有NONE亲和类型。
    4)如果列的声明类型包含字符串"REAL", "FLOA"或"DOUB"中的某一个,则列具有REAL亲和类型。
    5)否则,列的亲和类型为NUMERIC。
    注意确定列亲和类型的规则顺序非常重要。声明类型为"CHARINT"的列匹配规则1和2,但按顺序优先使用规则1,因此列被定义为整数亲和类型。
    (2)亲和类型名称实例
    按照上面5条规则,下面例子显示传统SQL实现中的各种通用数据类型(CREATE TABLE语句或CAST表达式中的数据类型)怎样被转化成SQLite中的亲和类型。这里只是所有传统数据类型中的一部分,它们能够被SQLite接受。注意跟在类型名后面的括号中的数字参数在SQLite中被忽略。SQLite不在字符串、BLOB对象或数值上强加任何长度限制(除了大的全局SQLITE_MAX_LENGTH限制)。
    * INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2, INT8: 定义为INTEGER亲和类型(按规则1)。
    * CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(255), NATIVE CHARACTER(70), NVARCHAR(100), TEXT, CLOB: 定义为TEXT亲和类型(按规则2)。
    * BLOB, 不声明类型: 定义为NONE亲和类型(按规则3)。
    * REAL, DOUBLE, DOUBLE PRECISION, FLOAT: 定义为REAL亲和类型(按规则4)。
    * NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME: 定义为NUMERIC亲和类型(按规则5)。
    注意声明类型"FLOATING POINT"将得到INTEGER亲和类型,而不是REAL亲和类型,因为"POINT"中有子串"INT"。声明类型"STRING"为NUMERIC亲和类型,而不是TEXT。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-18 05:31 , Processed in 0.059532 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表