学习数据库SQLite

1.最轻巧的数据库SQLite

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

为什么要用SQLite?

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

SQLite命令

与关系数据库进行交互的标准 SQLite 命令类似于 SQL。命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。这些命令基于它们的操作性质可分为以下几种:
DDL-数据定义语言
CREATE :创建一个新表,一个表的视图,或者数据库中的其他对象。
ALTER:修改数据库中的某个已有的数据库对象,比如一个表。
DROP:删除整个表,或者表的视图,或者数据库中的其他对象。
DML数据操作语言
INSERT:创建一条记录。
UPDATE:修改记录。
DELETE:删除记录。
DQL数据查询语言
SELECT:从一个或多个表中检索某些记录。

2. SQLite的图形化管理工具(SQLite Expert Professional)

首先,创建数据库testDB.db,创建表COMPANY。
这里写图片描述
在COMPANY表中插入数据。
这里写图片描述
用SELECT语句获取并显示所有这些记录。
这里写图片描述
用SQLite的图形化管理工具(SQLite Expert Professional)打开数据库文件testDB中的表COMPANY。如下所示。
这里写图片描述
这里写图片描述

3.最基本的SQL语句

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 运算符
运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。
运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。
算术运算符

运算符 描述 实例
    加法
把运算符两边的值相加 a + b 将得到 30
    减法
左操作数减去右操作数 a - b 将得到 -10
    乘法
把运算符两边的值相乘 a * b 将得到 200
/ 除法 左操作数除以右操作数 b / a 将得到 2
% 取模 左操作数除以右操作数后得到的余数 b % a will give 0

比较运算符

运算符 描述 实例(假设2=10,b=20)
== 检查两个操作数的值是否相等,如果相等则条件为真。 (a == b) 不为真。
= 检查两个操作数的值是否相等,如果相等则条件为真。 (a = b) 不为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。 (a != b) 为真。
<> 检查两个操作数的值是否相等,如果不相等则条件为真。 (a <> b) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (a > b) 不为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (a < b) 为真。
=
检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。 (a >= b) 不为真。
<= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。 (a <= b) 为真。
!< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真。 (a !< b) 为假。
!> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真。

逻辑运算符

运算符 描述
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 运算符搜索指定表中的每一行,确保唯一性(无重复)。

位运算符
位运算符作用于位,并逐位执行操作。真值表 & 和 | 如下:

p q p & q p I q
0 0 0 0
0 1 0 1
1 1 1 1
1 0 0 1

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

运算符 描述 实例(假设A=60,B=13)
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 (A & B) 将得到 12,即为 0000 1100
I 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 (A I B) 将得到 61,即为 0011 1101
~ 二进制补码运算符是一元运算符,具有”翻转”位效应,即0变成1,1变成0。 (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2 将得到 240,即为 1111 0000
.>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0000 1111

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-05-10 10:43:35

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_'

SQLite 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]

猜你喜欢

转载自blog.csdn.net/weixin_42014622/article/details/80281561