SQLite学习笔记
(未完成,待修改)
一、无库无表SQL
1. 无库连接sqlite3
(1) Windows提示符
>sqlite3
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
(2) adb shell(模拟器或手机)
>adb shell
# sqlite3
sqlite3
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
2. 计算字段(通过运算符计算得到的字段,不存在于实际表中)
(1) 常量
sqlite> select 1;
1
(2) 四则运算
sqlite> select 3 + 4, 3 - 4, 3 * 4, 3 / 4, 3 % 4;
7|-1|12|0|3
sqlite> select 3 + 4 * 2;
11
sqlite> select (3 + 4) * 2;
14
sqlite> select -(1+0), +(2+0), ~(2+0);
-1|2|-3
sqlite> select -("hello"), +("hello"), ~("hello");
0|hello|-1
(3) 别名(导出列),相当于临时变量的赋值。
sqlite> select 3 * result, 2 + result from (select 2 as result);
6|4
(4) 拼接(相当于MySQL的Concat())
sqlite> select 'hello' || ' ' || 'world!';
hello world!
sqlite> select 3 || 1;
31
sqlite> select LTrim(' hello') || RTrim(' world! ');
hello world!
(5) 算术比较与逻辑与或运算
sqlite> select 3 > 2, 3 < 2, 3 = 3, 3 == 3;
1|0|1|1
sqlite> select 1 != 0, 1 <> 0;
1|1
sqlite> select 1 is null, 1 is not null;
0|1
sqlite> select null is null, null is not null, null == null, null != null;
1|0||
sqlite> select (null == null) is null;
1
sqlite> select length(null) is null;
1
sqlite> select 1 = 1, 1 == 1;
1|1
sqlite> select 3 between 4 and 5, 4 between 4 and 5;
0|1
sqlite> select 4 in (1, 3, 4), 0 in (1, 3, 4), 2 not in (1, 3, 4);
1|0|1
sqlite> select (1 >= 2) and (1 <= 3), (1 >= 2) & (1 <= 3);
0|0
sqlite> select (1 < 2) or (1 > 3), (1 < 2) | (1 > 3);
1|1
sqlite> select 1 < 2, not (1 < 2);
1|0
sqlite> select case when 1 > 2 then 3 else 4 end;
4
sqlite> select case 2 when 1 then 3 else 4 end;
4
(6) 使用通配符的字符串匹配(MySQL没有glob。like通配符:%匹配0个或0个以上字符,_匹配1个字符,大小写不敏感;glob通配符:大小写敏感)
sqlite> select 'hello' like 'ell', 'hello' like 'ell%', 'hello' like '%ell%', 'hello' like 'he%', 'hello' like 'h%o';
0|0|1|1|1
sqlite> select 'hello' like '_ello', 'hello' like 'hel_';
1|0
sqlite> select 'Apple' like 'apple', 'Apple' like 'AppL_';
1|1
sqlite> select like('Apple', 'apple');
1
sqlite> select like('App%', 'apple');
1
sqlite> select 'hello' glob 'he*', 'hello' glob 'hell?';
1|1
sqlite> select glob('he*', 'hello'), glob('hell?', 'hello');
1|1
(7) 使用正则表达式的字符串匹配(默认sqlite不实现REGEXP用户函数)
sqlite> select 'a' REGEXP '^a$';
Error: no such function: REGEXP
3. 使用数据处理函数的计算字段(通过函数计算得到的字段,不存在于实际表中)
(1) 文本处理(MySQL使用SubString,不支持MySQL的Soundex(),Left(),Right(),Locate())
sqlite> select str, Upper(str), Lower(str), Length(str) from (select 'Hello, World!' as str);
Hello, World!|HELLO, WORLD!|hello, world!|13
sqlite> select str, LTrim(str), RTrim(str), Trim(str) from (select ' Hello, World! ' as str);
Hello, World! |Hello, World! | Hello, World!|Hello, World!
sqlite> select str, LTrim(str, 'x'), RTrim(str, 'x'), Trim(str, 'x') from (select 'xxxHello, World!xxx' as str);
xxxHello, World!xxx|Hello, World!xxx|xxxHello, World!|Hello, World!
sqlite> select soundex('Y. Lie');
Error: no such function: soundex
sqlite> select SubStr('Hello, World!', 2, 3);
ell
sqlite> select SubStr('Hello, World!', -1, 4);
!
sqlite> select SubStr('Hello, World!', 2, -2);
H
(2) 日期与时间处理(MySQL使用Now())
sqlite> select DateTime('now');
2012-05-07 05:34:36
sqlite> select strftime('%s', 'now');
1336369355
(3) 数值处理(MySQL使用Rand(),不支持MySQL的Sin(),Cos(),Tan(),Exp(),Mod(),Pi(),Sqrt())
sqlite> select Abs(-1.2);
1.2
sqlite> select random();
1872328235102936735
(4) 聚集函数(只有Min()和Max()可用于不同列,AVG(),COUNT(),SUM()则不可以用在这里)
sqlite> select min(5, 6, 7), max(5, 6, 7);
5|7
(5) like()与glob()的字符串匹配
见前,略。
(TODO:)
X:其它:
(8) 全文搜索和MATCH(MySQL则需要用FULLTEXT()在CREATE TABLE中指定列,用Match()指定被搜索列,用Against()指定表达式)
>sqlite3 test2.sqlite
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
sqlite> CREATE VIRTUAL TABLE mail USING fts3(subject, body);
sqlite> .tables
mail mail_content mail_segdir mail_segments
sqlite> INSERT INTO mail(docid, subject, body) VALUES(1, 'software feedback', 'found it too slow');
sqlite> INSERT INTO mail(docid, subject, body) VALUES(2, 'software feedback', 'no feedback');
sqlite> INSERT INTO mail(docid, subject, body) VALUES(3, 'slow lunch order', 'was a software problem');
sqlite> SELECT * FROM mail WHERE subject MATCH 'software';
software feedback|found it too slow
software feedback|no feedback
private void setPragmaCacheSize(Connection connection) { Statement s = null; try { s = connection.createStatement(); s.execute("PRAGMA cache_size = " + DB_CACHE_SIZE + ";"); } catch (SQLException e) { LogUtil.error(logger, "PRAGMA cache_size error", e); } finally { try { if (s != null) { s.close(); } } catch (SQLException e2) { e2.printStackTrace(); } } }使用:
con = DriverManager.getConnection(url); setPragmaCacheSize(con);
(TODO:)
相关推荐
SQLite学习笔记 SQLite 是一种轻量级的关系型数据库,安装时需要将.dll 类型文件和工具文件一起解压到同一个文件夹下。使用 SQLite 需要通过命令行代码来操作数据库。 SQLite 基本概念 * SQLite 是一种自包含、无...
android数据库SQLite学习笔记.pdf
"SQLite学习笔记之一.docx"可能详细介绍了如何创建数据库和表。在SQLite中,你可以使用CREATE DATABASE语句创建数据库,然后使用CREATE TABLE语句定义表的结构,包括字段名、数据类型和约束条件。例如,创建一个名为...
在Android开发中,SQLite是一个非常重要的数据存储工具,它是一个轻量级的、无服务器模式的关系型数据库。SQLite被广泛应用于移动设备,如Android系统,因为它具有诸多优势。以下是关于SQLite在Android中使用的详细...
在学习PHP SQLite的过程中,了解这些基础知识是非常重要的。同时,解决实际遇到的问题,如如何正确插入数据、处理事务、优化查询性能等,也是提升技能的关键。通过实践和查阅文档,可以更好地理解和掌握SQLite在PHP...
在本"ios基于sqlite3笔记本代码"中,我们可以学习如何在iOS应用中集成SQLite3来实现一个简单的笔记应用。 首先,我们需要了解SQLite3的API接口。在Objective-C或Swift中,我们可以使用C语言风格的SQLite API来执行...
SQLite 是一个轻量级的、开源的嵌入式数据库引擎,用C语言...要深入学习SQLite,可以访问其官方主站(http://www.sqlite.org/)和中文网(http://sqlitecn.feuvan.net/index.html),以及查阅相关的开发文档和教程。
在本篇“xamarin学习笔记A10”中,我们将深入探讨如何在Xamarin.Android项目中集成和操作SQLite数据库。 首先,我们需要安装必要的NuGet包。在Visual Studio或Visual Studio for Mac中,可以右键点击项目,选择...
在Android应用开发中,SQLite3是一个重要的组成部分,它是Android系统内置的关系型数据库,适用于存储结构化数据。...通过不断的实践和学习,开发者可以灵活地利用SQLite3来满足各种数据存储需求。
"小工具框架,electron+sqlite" 是一个基于 Electron 和 SQLite 的应用程序开发框架,它结合了桌面应用的强大...学习这个框架,开发者不仅可以掌握桌面应用开发的基本技能,还能深入理解数据管理在现代应用中的重要性。
Android学习笔记-SQLite介绍-以及使用Sqlite-进行数据库的创建-完成数据.pdf
这篇笔记将深入探讨如何在Android应用中使用SQLite,以及涉及到的郭神(Gson)框架与LitePal库的集成。 首先,让我们从SQLite的基本概念开始。SQLite提供了一个SQL接口,允许开发者创建、查询和修改数据库。在...
Qt+Cutelyst学习笔记(十五)win10+Qt5.15.2+sqlite 访问数据库数据 示例源码 https://blog.csdn.net/aggs1990/article/details/123942290 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下
这篇学习笔记将深入探讨如何使用PyQt的QtSql模块来操作SQLite数据库。 首先,你需要确保已经安装了PyQt5和包含SQLite支持的SQLAlchemy库。安装命令通常是: ``` pip install PyQt5 pip install sqlalchemy ``` 接...
总之,这个项目提供了一个结合MFC图形用户界面和Sqlite3数据库管理的简单笔记应用实例,对于学习这两个技术的开发者来说,是一个很好的实践案例。通过深入研究源代码,可以了解到如何在实际项目中结合使用MFC和...
学习SQLite会涉及SQLite API的使用,如何在C、Python、Java等语言中操作数据库,以及了解其事务处理和同步机制。 4. 数据结构与算法 理解数据库背后的数据结构和算法对于优化查询性能至关重要。例如,B树用于索引,...
"sqlite-doc-3071300.zip"是SQLite官方文档,详细解释了各种PRAGMA设置和使用方法,是学习和解决问题的宝贵资源。"sqlite-amalgamation-3071300.zip"则包含了SQLite3的源代码和编译脚本,对于深入了解其内部机制和...