SQlite笔记

SQlite

SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。源代码不受版权的限制。

SQlite的进程并不是一个独立的进程,而是可以按照需求进行静态或者动态的连接的,可以直接访问存储文件

命令包括:CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。

作用如下:

DDL - 数据定义语言

命令描述
CREATE 创建一个新的表,一个表的视图,或者数据库中的其他对象。
ALTER 修改数据库中的某个已有的数据库对象,比如一个表。
DROP 删除整个表,或者表的视图,或者数据库中的其他对象。

DML - 数据操作语言

命令描述
INSERT 创建一条记录。
UPDATE 修改记录。
DELETE 删除记录。

DQL - 数据查询语言

命令描述
SELECT 从一个或多个表中检索某些记录。

SQlite的语法

  1. 大小写敏感性

  2. 注释——以--开始直到输入结束或换行,多行注释以/* */包括

  3. 所有语句以关键字开始,以;结束

数据类型

常用的就是存储类型

存储类描述
NULL 值是一个 NULL 值。
INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB 值是一个 blob 数据,完全根据它的输入存储。

以及TEXT文本类型和INTEGER

创建数据库

$ sqlite3 DatabaseName.db

示例:

$ sqlite3 testDB.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>--sqlite3 命令在成功创建数据库文件之后,将提供一个 sqlite> 提示符

表示创建了一个文件testDB.db

sqlite>.quit
$

退出数据库

.databases 命令来检查数据库是否在数据库列表

.dump 点命令来导出完整的数据库在一个文本文件中

$sqlite3 testDB.db .dump > testDB.sql

恢复命令:

$sqlite3 testDB.db < testDB.sql

创建表

创建表格的一个基本示例:

CREATE TABLE COMPANY(
  ID INT PRIMARY KEY     NOT NULL,
  NAME           TEXT    NOT NULL,
  AGE            INT     NOT NULL,
  ADDRESS        CHAR(50),
  SALARY         REAL
);

CREATE TABLE 是告诉数据库系统创建一个新表的关键字,后面跟着表的唯一的名称或标识

ID 作为主键,NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL

sqlite>.tables
COMPANY     DEPARTMENT

列出了数据库中所有的表格,可以用来检查是否成功创建了表

schema 表格名可以得到表的完整信息

删除表

DROP TABLE database_name.table_name;

选择指定带有表明的数据库名称进行删除,删除后可以用.tables确认是否删除成功

插入数据INSERT

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

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

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

查询数据SELECT

SELECT column1, column2, columnN FROM table_name;

如果要获取所有的字段:

SELECT * FROM table_name;

更新数据UPDATE

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

删除数据DELETE

DELETE FROM table_name
WHERE [condition];

WHERE子句

WHERE 子句用于指定从一个表或多个表中获取数据的条件

当满足给定条件时,从表中返回特定值,通过WHERE子句结合上述四种语句,就可以实现数据的增删改查

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

运算符

算术运算符、比较运算符、&、|和C语言、python中的+,-,*,/,%一样

逻辑运算符:

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

AND运算符

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

AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在,只有当所有条件都为真(true)时,整个条件为真(true)

OR运算符

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

只要有一个为真,整个条件为真

LIKE子句

LIKE 运算符是用来匹配通配符指定模式的文本值的,如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1

百分号(%)代表零个、一个或多个数字或字符,下划线(_)代表一个单一的数字或字符,他们配合LIKE使用

WHERE column LIKE 'XXXX%'
WHERE column LIKE '%XXXX%'
WHERE column LIKE 'XXXX_'
WHERE column LIKE '_XXXX'
WHERE column LIKE '_XXXX_'

XXXX 可以是任何数字或字符串值

GLOB子句

GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1

与 LIKE 运算符不同的是,GLOB 是大小写敏感的

  • *:匹配零个、一个或多个数字或字符。

  • ?:代表一个单一的数字或字符。

  • [...]:匹配方括号内指定的字符之一。例如,[abc] 匹配 "a"、"b" 或 "c" 中的任何一个字符。

  • [^...]:匹配不在方括号内指定的字符之一。例如,[^abc] 匹配不是 "a"、"b" 或 "c" 中的任何一个字符的字符。

WHERE column GLOB 'XXXX*'
WHERE column GLOB 'XXXX?'
WHERE column GLOB '????'

LIMIT子句

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

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

QRDER BY子句

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

SELECT column-list 
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
  • ASC 默认值,从小到大,升序排列

  • DESC 从大到小,降序排列

GROUP BY子句

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

HAVING子句

HAVING子句允许指定条件来过滤将出现在最终结果中的分组结果

WHERE子句在所选列上设置条件,HAVING子句在由GROUP BY子句创建的分组上设置条件

位置:

SELECT FROM WHERE GROUP BY HAVING ORDER BY

HAVING子句必须放在GROUP BY子句之后,必须放在ORDER BY子句之前

DISTINCT关键字

DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

按照如上可消除重复记录

posted @   .时云  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示