一.sqlite基础
1.下载与环境配置
从下载地址,点击我 这里下载适合你版本的压缩包
- 您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。
- 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。
- 添加 C:\sqlite 到 PATH 环境变量
注意,配置成功可以在命令端口输入sqlite3命令,出现以下即创建成功:
C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
如果你想在Linux中下载,只需要使用yum -y install sqlite
命令下载即可,还不需要环境配置。
2.数据类型
数据类型 | 描述 | 存储空间 |
---|---|---|
NULL | 空值 | 无 |
INTEGER | 整型数 | 1、2、3、4、6 或 8 字节的有符号整数 |
REAL | 浮点数 | 8 字节的 IEEE 浮点数 |
TEXT | 文本字符串 | 根据数据长度和数据库编码进行变化 |
BLOB | 二进制数据 | 根据数据长度进行变化 |
注意:SQLite 没有 unsigned 整数类型。所有 INTEGER 类型都是有符号整数类型。如果您需要存储无符号整数,可以考虑将其存储为字符串或使用带符号整数类型,并在应用程序中进行转换。例如,对于一个 4 字节的无符号整数,可以使用 INTEGER 类型进行存储,然后在读取数据时将其转换为无符号整数。另外,SQLite 中的 INTEGER 类型也可以用于存储布尔类型,值为 0 或 1。
二.数据库操作
1.建立数据库
两种方式:
- 1.
.open filename
他的本来意思是打开,但如果不存在对应的数据库,就变成了新建立一个数据库的意思。 - 2.
sqlite3 filename
正常创建命令
一旦数据库被创建,您就可以使用 SQLite 的 .databases 命令来检查它是否在数据库列表中。
2.导入/导出数据库
sqlite3 testDB.db .dump > testDB.sql --导出
sqlite3 testDB.db < testDB.sql --导入
3.创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
基本语法如上所示。
例如,接下来进行演示:
CREATE TABLE student (
id INTEGER PRIMARY KEY,
name TEXT
);
这里我们可以使用.tables
,该命令用于列出附加数据库中的所有表。
同时这里可以使用.schema 表名
得到表的完整信息,其实就是输出创建表的语句。
4.删除表
SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。
例如用来删除刚刚建立的学生表:
DROP TABLE student;
即可删除,你可以通过.tables
点命令查看。
5.完整演示
6.附加数据库
假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何一个。SQLite 的 ATTACH DATABASE 语句是用来选择一个特定的数据库,使用该命令后,所有的 SQLite 语句将在附加的数据库下执行。
7.分离数据库
SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。(这两个数据库比较特殊)
8.补充演示
三.sqlite语句
1.Insert语句
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
INSERT INTO 语句有两种基本语法,如下所示:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
在这里,column1, column2,…columnN 是要插入数据的表中的列的名称。
2.Select语句
SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
SQLite 的 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN FROM table_name;
在这里,column1, column2…是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:
SELECT * FROM table_name;
在这里如果只是单纯的输出所有字段,上述命令就足够,但是如果你想要在输出基础上使它更美观输出,可以添加其他命令来实现。
3.演示1
4.update语句
SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
带有 WHERE 子句的 UPDATE 查询的基本语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
5.Delate语句
SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
带有 WHERE 子句的 DELETE 查询的基本语法如下:
DELETE FROM table_name
WHERE [condition];
6.演示2
四.sqlite结构
1.运算符
运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。
运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
算术运算符就不介绍了,基本都是通用的。
比较运算符:
=
:等于号,用于检查两个值是否相等。<>
或!=
:不等于号,用于检查两个值是否不相等。<
:小于号,用于检查一个值是否小于另一个值。>
:大于号,用于检查一个值是否大于另一个值。<=
:小于等于号,用于检查一个值是否小于或等于另一个值。>=
:大于等于号,用于检查一个值是否大于或等于另一个值。
逻辑运算符:
- AND:逻辑与运算,只有当所有条件都满足时才返回真。
- OR:逻辑或运算,只要有一个条件满足就返回真。
- NOT:逻辑非运算,取反操作,将真变成假,将假变成真。
- IN:用于比较一个表达式是否在一组值中,例如:
SELECT * FROM my_table WHERE column_name IN (value1, value2, value3);
- BETWEEN:用于判断某个值是否在指定的范围内,例如:
SELECT * FROM my_table WHERE column_name BETWEEN value1 AND value2;
- LIKE:用于模糊匹配,例如:
SELECT * FROM my_table WHERE column_name LIKE 'value%';
- GLOB:类似于 LIKE,但使用的是 Unix shell 风格的通配符,例如:
SELECT * FROM my_table WHERE column_name GLOB 'value*';
位运算符:
- &:按位与运算,将两个二进制位的值相与,结果为 1 的位表示两个二进制位上都是 1。
- |:按位或运算,将两个二进制位的值相或,结果为 1 的位表示至少有一个二进制位上是 1。
- ~:按位取反运算,对二进制数进行取反操作。
- <<:左移运算,将二进制数向左移动指定的位数,并在低位补零。
>>
:右移运算,将二进制数向右移动指定的位数。
2.sqlite表达式
语法:表达式是一个或多个值、运算符和计算值的SQL函数的组合。
SELECT column1, column2, columnN
FROM table_name
WHERE [CONDITION | EXPRESSION];
这里说实话就是一般SELECT语句的条件线性组合即可。
3.演示
五.SQlite子句
1.WHERE子句
SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。
如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 语句中,等等,这些我们将在随后的章节中学习到。
SQLite 的带有 WHERE 子句的 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
2.LIKE子句
SQLite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:
- 百分号 (%)
- 下划线 (_)
百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
例如:
3.GLOB子句
SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。
- 星号 (*)
- 问号 (?)
星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。
这个子句与LIKE子句的效果一样,只是用的符号不同而已。总体来说,LIKE 子句更适合执行基本的字符串匹配,而 GLOB 子句则更适合实现高级匹配操作。我们学习sqlite只是把它作为工具使用,平时使用LIKE子句即可。
4.LIMIT子句
SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。
下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法:
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]
SQLite 引擎将返回从OFFSET 的下一行开始直到给定的 LIMIT为止的所有行。
5.其他子句
子句较多,我们就不一一介绍了。
-
ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据;
-
GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组;
-
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果;
-
DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
六.说明
这一篇博客是今天学习sqlite的总结,主要是在windows下用命令操作。明天学习C语言链接sqlite和用C语言进行相关操作。