数据库SQLite

2023-11-13

数据库SQLite

了解最轻巧的数据库SQLite

SQLite,是一款轻型的数据库,占用资源非常低,它的源代码不受版权限制,能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite的最新版本是SQLite 3,是实现了自给自足的、无服务器的、零配置的、事务性的在世界上最广泛部署的SQL 数据库引擎。

SQLite下载和安装

  • 地址:http://www.sqlite.org/download.html 下载预编译的Windows二进制文件。
  • 需要下载压缩文件s:qlite-tools-win32-.zip 和 sqlite-dll-win64-.zip 。
    下载问件
  • 创建一个文件夹:F:\sqlite放置这些文件
  • 进入F:\sqlite目录并打开sqlite3命令。如下图所示:
    命令

SQLite创建数据库

在SQLite中,sqlite3命令用于创建新的数据库。
语法:

 1.sqlite3 DatabaseName.db

示例:
创建一个名称为“test.db”的数据库:
sqlite3 test.db,执行命令后,就创建了数据库。 可以使用“.databases”命令检查创建的数据库。如下所示:
t3
还可以在SQLite根文件夹中看到创建的数据库:
t4

SQLite创建表

在SQLite中,CREATE TABLE语句用于创建新表。 在创建表时,需要为表指定一个名称并定义表的每列和数据类型。
语法:

  • SQLite ANALYZE 语句:
ANALYZE;
or
ANALYZE database_name;
or
ANALYZE database_name.table_name;
  • SQLite AND/OR 子句:
SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;
  • ALTER语句
    SQLite ALTER TABLE 语句:
ALTER TABLE table_name ADD COLUMN column_def...;

SQLite ALTER TABLE 语句(Rename):

ALTER TABLE table_name RENAME TO new_table_name;
  • SQLite ATTACH DATABASE 语句:
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
  • SQLite BEGIN TRANSACTION 语句:
or
BEGIN EXCLUSIVE TRANSACTION;
  • SQLite BETWEEN 子句:
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;
  • SQLite COMMIT 语句:
COMMIT;
  • ALTER语句
    SQLite CREATE INDEX 语句:
CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );

SQLite CREATE UNIQUE INDEX 语句:

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

SQLite CREATE TABLE 语句:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

SQLite CREATE TRIGGER 语句:

CREATE TRIGGER database_name.trigger_name 
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN 
   stmt1; 
   stmt2;
   ....
END;

SQLite CREATE VIEW 语句:

CREATE VIEW database_name.view_name  AS
SELECT statement....;

SQLite CREATE VIRTUAL TABLE 语句:

CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );
or
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );
  • SQLite COMMIT TRANSACTION 语句:
COMMIT;
  • SQLite COUNT 子句:
SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;
  • SQLite DELETE 语句:
DELETE FROM table_name
WHERE  {CONDITION};
  • SQLite DETACH DATABASE 语句:
DETACH DATABASE 'Alias-Name';
  • SQLite DISTINCT 子句:
SELECT DISTINCT column1, column2....columnN
FROM   table_name;
- SQLite Insert语句

SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
语法如下:

①INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);
②INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
- SQLite Select语句

SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
语法如下:

①SELECT column1, column2, columnN FROM table_name;
②SELECT * FROM table_name;
- SQLite 表达式

表达式是一个或多个值、运算符和计算值的SQL函数的组合。SQL 表达式与公式类似,都写在查询语言中。您还可以使用特定的数据集来查询数据库。

①SQLite - 布尔表达式

SQLite 的布尔表达式在匹配单个值的基础上获取数据。语法如下:

SELECT column1, column2, columnN 
FROM table_name 
WHERE SINGLE VALUE MATCHING EXPRESSION;`
②SQLite - 数值表达式

这些表达式用来执行查询中的任何数学运算。语法如下:

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name WHERE CONDITION] ;
③SQLite - 日期表达式

日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。

sqlite>  SELECT CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP = 2018-07-8 09:34:34
SQLite Where子句

SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 语句中,等等。
语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]
SQLite Update语句

SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
SQLite Delete语句

SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
语法如下:

DELETE FROM table_name
WHERE [condition];
SQLite Like子句

SQLite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:
百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。% 和 _ 的基本语法如下:

SELECT column_list 
FROM table_name
WHERE column LIKE 'XXXX%'
or 
SELECT column_list 
FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT column_list 
FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT column_list 
FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT column_list 
FROM table_name
WHERE column LIKE '_XXXX_'
SQite Glob子句

SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。
星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

  • 和 ? 的基本语法如下:
SELECT FROM table_name
WHERE column GLOB 'XXXX*'
or 
SELECT FROM table_name
WHERE column GLOB '*XXXX*'
or
SELECT FROM table_name
WHERE column GLOB 'XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '????'
SQLite Limit子句

SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。
语法如下:

SELECT column1, column2, columnN 
FROM table_name
LIMIT [no of rows]
SQLite Order By

SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
语法如下:

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
SQLite Group By

SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。
在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
下面给出了 GROUP BY 子句的基本语法。GROUP BY 子句必须放在 WHERE 子句中的条件之后,必须放在 ORDER BY 子句之前。

SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
SQLite Having子句

HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
下面是 HAVING 子句在 SELECT 查询中的位置:

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。下面是包含 HAVING 子句的 SELECT 语句的语法:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
SQLite Dinstinct关键字

SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
用于消除重复记录的 DISTINCT 关键字的基本语法如下:

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库SQLite 的相关文章

  • 获取 Blob 图像并将该图像转换为 Bitmap 图像

    我正在从数据库中获取 blob 格式的图像 我想将其转换为位图图像 我用来将位图转换为 Blob 的代码放在下面 但是请告诉我如何反转它 ByteArrayOutputStream boas new ByteArrayOutputStrea
  • Rails Resque 作业无法访问数据库,I/O 错误

    我遇到错误 无法找到任何相关信息 这是一个 Ruby on Rails 堆栈 Ruby 1 9 Rails 3 2 并使用 sqlite3 数据库进行开发 Resque 和 Redis 用于后台作业 Rails Web 应用程序启动正常 可
  • tweepy 流到 sqlite 数据库 - 语法错误[重复]

    这个问题在这里已经有答案了 可能的重复 tweepy 流到 sqlite 数据库 语法无效 https stackoverflow com questions 9434205 tweepy stream to sqlite database
  • 从哪里开始阅读 SQLite 源代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解sqlite是如何实现的 并且 想阅读源代码 我已经下载了源代码 我应该开始查看代码的哪一部分 SQLite文档页 http
  • 将数据库(例如 sqlite)与 cocos2d-x 一起使用

    我开始在 iPhone 上构建游戏应用程序 我正在使用 cocos2d x 游戏引擎 因为它很容易从那里移植到 Android 而且编码是用我非常熟悉的C 编写的 我想知道是否有办法在 cocos2d x 中使用任何数据库 虽然sqlite
  • R dbGetQuery 与动态字符串

    From 这个帖子 https stackoverflow com questions 3416973 dynamic string in r and 这个帖子 https stackoverflow com questions 34496
  • Heroku 上的 Django 应用程序在一段时间后删除对象

    我编写了一个简单的 Django 问答论坛应用程序并将其部署在 Heroku 上 该网站的本地版本运行良好 但是 生产版本不会将问题 答案等存储超过几个小时 我决定坚持使用 Django 附带的 sqlite3 我预计该网站不会有太多流量
  • NuGet安装的Visual Studio 2012中的Sqlite在用于连接的数据源中不存在

    我有 Visual Studio 2012 Premium 并通过 NuGet Packages API 安装了 System Data SQLite x86 x64 我将所有可用的 SQLLite 引用添加到我的 WPF x86 Net
  • 在 Google App Engine 中使用 sqlite3?

    我正在尝试将我的 Python Django 项目部署到 Google App Engine 现在它在我的本地计算机上运行良好 但是当我尝试将其作为 Google App Engine 中的项目运行时 出现以下错误 ImproperlyCo
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • iOS7 后台同步

    我们必须开发一个应用程序 无论该应用程序是在前台还是在后台 都支持在某个时间间隔进行数据同步操作 我想知道在iOS7中 当应用程序在后台运行时 是否可以同步数据 即调用网络服务 我们可以在应用程序处于后台时访问 SQLite 数据库文件 我
  • sqlite android 中的波斯语/阿拉伯语搜索给出了错误的结果

    我的 sqlite 数据库有问题 它似乎不支持完整的波斯 阿拉伯字符 当我根据波斯字符搜索某些字段时 大多数时候 Sqlite 无法识别这些字符 我通过从 HTML 文件复制数据将数据插入数据库 所以当我输入字符串并搜索时 没有结果显示 但
  • SQLite 查询查找主键

    在 SQLite 中 我可以运行以下查询来获取表中的列列表 PRAGMA table info myTable 这给了我列 但没有关于主键可能是什么的信息 此外 我可以运行以下两个查询来查找索引和外键 PRAGMA index list m
  • 如何在sqlite3中创建多个“:memory:”数据库

    我正在尝试使用 sqlite3 创建多个内存数据库 如果可能 对于磁盘数据库 我会这样做 import sqlite3 db1 sqlite3 connect mnt tmp db1 db db2 sqlite3 connect mnt t
  • python sqlite3从excel创建数据库

    我正在尝试从 Excel 电子表格创建数据库 我有下面的代码 问题是当我运行代码时 我的数据库为每列创建一个表 我想为工作簿中列出的每个电子表格创建一个表格 工作表名称为工作表 1 和工作表 2 import sqlite3 import
  • 如何使用 Sqlite3 用列表中的值更新整个列

    我有一个数据集本地存储在 sqlite3 数据库中 我提取了一列 执行了一些操作 现在想要替换数据库列中的所有值 我怎样才能做到这一点 保证列和列表的长度相同 我只想用新值更新表 有没有一种简单的方法可以一次性完成这一切 使用Python
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • “库例程调用不按顺序” sqlite3_prepare_v2(CREATE TABLE)

    你知道为什么我打电话时会收到 Library Routine Called Out Of Sequence 吗 sqlite3 prepare v2 CREATE TABLE 在空数据库上 我创建一个空数据库 然后打开它 后来我将所有必须写
  • 条件必须具有 bool 静态类型

    有什么方法可以在这种情况下使用未来的布尔值 或者有更好的方法吗 Widget buildRow String pair final Future

随机推荐