欢迎投稿

今日深度:

Sqlite全面学习(二),sqlite学习

Sqlite全面学习(二),sqlite学习


目录(?)[+]

  1. SQLite创建数据库
  2. SQLite附加数据库
  3. SQLite分离数据库
  4. SQLite创建表
  5. SQLite删除表
  6. SQLite Insert语句
  7. SQLite Select语句
  8. SQLite算术运算符
  9. SQLite比较运算符
  10. SQLite逻辑运算符
  11. SQLite位运算符
  12. SQLite布尔表达式
  13. SQLite数值表达式
  14. SQLite日期表达式
  15. SQLite Where子句
  16. SQLite AND和OR运算符
  17. SQLite Update语句
  18. SQLite Delete语句
  19. SQLite Like子句
  20. SQLite Glob子句
  21. SQLite Limit子句
  22. SQLite Order By关键字
  23. SQLite Group By关键字
  24. SQLite Having子句
  25. SQLite Distinct关键字
  26. 总结

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!

【工匠若水 http://blog.csdn.net/yanbober】

本篇继续接上一篇,阅读上一篇《Sqlite全面学习(一)》

SQLite创建数据库

创建数据库语法:

sqlite3 DatabaseName.db
  • 1
  • 1

如下展示一个实例:

SQLite附加数据库

假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何一个。SQLite的ATTACH DTABASE语句是用来选择一个特定的数据库,使用该命令后,所有的SQLite语句将在附加的数据库下执行。 ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为”:memory:”,我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。

附加数据库语法(Alias-Name的取值不能为main或者temp,系统的):

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
  • 1
  • 1

如下展示一个实例:

SQLite分离数据库

SQLite的DETACH DTABASE语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用ATTACH语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离main或temp数据库。如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。

分离数据库语法:

DETACH DATABASE 'Alias-Name';
  • 1
  • 1

如下展示一个实例:

SQLite创建表

SQLite的CREATE TABLE语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。

创建表语法:

CREATE TABLE database_name.table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如下展示一个实例:

SQLite删除表

SQLite的DROP TABLE语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永远丢失。

删除表语法:

DROP TABLE database_name.table_name;
  • 1
  • 1

如下展示一个实例:

SQLite Insert语句

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

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
  • 1
  • 1

如果要为表中的所有列添加值,您也可以不需要在SQLite查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
  • 1
  • 1

也可以通过在一个有一组字段的表上使用select语句填充数据到另一个表中(使用一个表来填充另一个表)。下面是语法:

INSERT INTO first_table_name [(column1, column2, ...columnN)] SELECT column1, column2, ...columnN FROM second_table_name [WHERE condition];
  • 1
  • 1

如下展示一个实例:

SQLite Select语句

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

Select语句语法:

SELECT column1, column2, columnN FROM table_name;
  • 1
  • 1

如果您想获取所有可用的字段,那么可以使用下面的语法:

SELECT * FROM table_name;
  • 1
  • 1

如下展示一个实例:

SQLite算术运算符

运算符 描述
+ 把运算符两边的值相加
- 左操作数减去右操作数
* 把运算符两边的值相乘
/ 左操作数除以右操作数
% 左操作数除以右操作数后得到的余数

这个太小儿科就不演示例子了。

SQLite比较运算符

运算符 描述
== 检查两个操作数的值是否相等,如果相等则条件为真。
= 检查两个操作数的值是否相等,如果相等则条件为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。
<> 检查两个操作数的值是否相等,如果不相等则条件为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。
>= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。
<= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。
!< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真。
!> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真。

这个太小儿科就不演示例子了,结合where语句使用就行。

SQLite逻辑运算符

运算符 描述
AND AND运算符允许在一个SQL语句的WHERE子句中的多个条件的存在。
BETWEEN BETWEEN运算符用于在给定最小值和最大值范围内的一系列值中搜索值。
EXISTS EXISTS运算符用于在满足一定条件的指定表中搜索行的存在。
IN IN运算符用于把某个值与一系列指定列表的值进行比较。
NOT IN IN运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。
LIKE LIKE运算符用于把某个值与使用通配符运算符的相似值进行比较。
GLOB GLOB运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB与LIKE不同之处在于,它是大小写敏感的。
NOT NOT运算符是所用的逻辑运算符的对立面。比如NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。
OR OR运算符用于结合一个SQL语句的WHERE子句中的多个条件。
IS NULL NULL运算符用于把某个值与NULL值进行比较。
IS IS运算符与=相似。
IS NOT IS NOT运算符与!=相似。
\\(两竖线) 连接两个不同的字符串,得到一个新的字符串。
UNIQUE UNIQUE运算符搜索指定表中的每一行,确保唯一性(无重复)。


如下展示一个实例:

SQLite位运算符

下表中列出了SQLite语言支持的位运算符。

运算符 描述
& 二进制AND运算符。
/(一个竖线) 二进制OR运算符。
~ 二进制补码运算符是一元运算符,具有”翻转”位效应。
<< 左操作数的值向左移动右操作数指定的位数。
>> 右操作数的值向右移动右操作数指定的位数。

例子就不演示了。

SQLite布尔表达式

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

如下演示了SQLite布尔表达式的用法:

SQLite数值表达式

数值表达式用来执行查询中的任何数学运算。

语法:

SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION] ;
  • 1
  • 1

如下示例:

SQLite日期表达式

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

语法:

SELECT CURRENT_TIMESTAMP;
  • 1
  • 1

返回结果:
CURRENT_TIMESTAMP = 2013-03-17 10:43:35

SQLite Where子句

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

语法:

SELECT column1, column2, columnN FROM table_name WHERE [condition]
  • 1
  • 1

例子就不BB了,上面有很多关于where子句的例子。

SQLite AND和OR运算符

SQLite的AND和OR运算符用于编译多个条件来缩小在SQLite语句中所选的数据。这两个运算符被称为连接运算符。这些运算符为同一个SQLite语句中不同的运算符之间的多个比较提供了可能。

语法:

SELECT column1, column2, columnN FROM table_name WHERE [condition1] AND [condition2]...AND [conditionN];

SELECT column1, column2, columnN FROM table_name WHERE [condition1] OR [condition2]...OR [conditionN];
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

例子就不BB了,上面有很多关于AND和OR的例子。

SQLite Update语句

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

语法:

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
  • 1
  • 1

如下展示了一个实例:

SQLite Delete语句

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

语法:

DELETE FROM table_name WHERE [condition];
  • 1
  • 1

例子就算了,比较easy。清除所有数据可以直接:DELETE FROM table_name;

SQLite Like子句

SQLite的LIKE运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE运算符将返回真(true),也就是 1。这里有两个通配符与LIKE运算符一起使用:

  • 百分号 (%)
  • 下划线 (_)

百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。

语法:

SELECT FROM table_name WHERE column LIKE 'XXXX%';

SELECT FROM table_name WHERE column LIKE 'XXXX_';
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

例子就算了,上面也有使用like的例子,比较easy。XXXX%和XXXX_都可以任意组合使用。

SQLite Glob子句

SQLite的GLOB运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB运算符将返回真(true),也就是 1。与LIKE运算符不同的是,GLOB是大小写敏感的,对于下面的通配符,它遵循UNIX的语法。

  • 星号 (*)
  • 问号 (?)

星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

语法:

SELECT FROM table_name WHERE column GLOB 'XXXX*';

SELECT FROM table_name WHERE column GLOB 'XXXX?';
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

例子就算了,上面也有使用glob的例子,比较easy。XXXX*和XXXX?都可以任意组合使用。

SQLite Limit子句

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

带有LIMIT子句的SELECT语句基本语法:

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]
  • 1
  • 1

LIMIT子句与OFFSET子句一起使用时的语法:

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] OFFSET [row num]
  • 1
  • 1

如下就是一个实例:

SQLite Order By关键字

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

语法:

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

您可以在ORDER BY子句中使用多个列。确保您使用的排序列在列清单中。ASC为升序,DESC为降序。

如下就是一个实例:

SQLite Group By关键字

SQLite的GROUP BY子句用于与SELECT语句一起使用,来对相同的数据进行分组。在SELECT语句中,GROUP BY子句放在WHERE子句之后,放在ORDER BY子句之前。

语法:

SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN;
  • 1
  • 1

GROUP BY子句必须放在WHERE子句中的条件之后,必须放在ORDER BY子句之前。

如下就是一个实例:

SQLite Having子句

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

下面是HAVING子句在SELECT查询中的位置:

SELECT FROM WHERE GROUP BY HAVING ORDER BY
  • 1
  • 1

在一个查询中,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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如下就是一个实例:

SQLite Distinct关键字

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

语法:

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition];
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

如下就是一个实例:

总结

至此,基本的Sqlite使用已经算是可以了。关于Sqlite更多知识点再下一篇会有详细说明。阅读下一篇《Sqlite全面学习(三)》

【工匠若水 http://blog.csdn.net/yanbober】

www.htsjk.Com true http://www.htsjk.com/SQLite/12446.html NewsArticle Sqlite全面学习(二),sqlite学习 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?) [+] SQLite创建数据库 SQLite附加数据库 SQLite分离数据库 SQLite创建表 SQLite删除表 SQLite...
相关文章
    暂无相关文章
评论暂时关闭