SQLite:小巧却强大的数据库引擎

今天来给大家分享一个不是很年轻也不是很老的轻量化无敌小巧数据库引擎SQLite

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

我是在练习前后端交互的时候,为了能更好的了解数据库存储的方法和原理,在写后端的过程中,我添加了数据库来存储一些信息。数据库引擎我选取的就是我们本期的主人公:SQLite!接下来让我给大家分享一点非常实用的相关SQLite的知识吧!

SQLite3基础数据类型

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

主键

PRIMARY Key约束:唯一表示数据库表中的各行/记录

SQL语法

注意:这是SQL语法,已经学会使用SQL语句的这里可以略过,下面将介绍一些常用的语句

Insert 插入语句

Insert的基本语句如下所示:

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

现在让我们举个例子,这将会在user表中创建两个记录:

INSERT INTO `user` (`id`, `name`, `age`, `account`, `password`)
VALUES (1, 'tabzzz1', 18, 'admin1', 123456);
INSERT INTO `user` (`id`, `name`, `age`, `account`, `password`)
VALUES (2, 'tabzzz2', 19, 'admin2', 1234567);

Select 查询语句

Select的基本语句如下所示:

SELECT column1, column2, ...columnN FROM table_name;

其中,column1和column2等为表的字段(或者说属性),如果你想要获取全部字段,可以使用:

SELECT * FROM table_name;
where 条件查询

WHERE 子句用于过滤记录,提取满足指定条件的记录

你可以使用以下的运算符与WHERE条件查询一起使用:

运算符描述
=等于
<>不等于。**注释:**在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE模糊查询(搜索某种模式)
IN指定针对某个列的多个可能值

举几个简单的例子:

/* */
SELECT `name`, `account` FROM `user` WHERE `age` > 18;
/* */
SELECT `name` FROM `user` WHERE `age` > 18 AND `id` < 10;
/* */
SELECT * FROM `user` WHERE `id` BETWEEN 200 AND 500;
/* */
SELECT * FROM `user` WHERE `id` = 200 OR `id` = 500;
/* LINK 模糊查询 */
SELECT * FROM `user` WHERE `name` LIKE 'a%'; /* a/A后面跟什么都可以 */
SELECT * FROM `user` WHERE `name` LIKE '%a%'; /* a/A只要在name中就被查找 */
/* IN */
SELECT * FROM `user` WHERE `id` IN (2,5); /* id只要是2或5就被查找 */
SELECT * FROM `user` WHERE `id` NOT IN (2,5); /* id只要不是2或5就被查找 */
LIMIT 关键字

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

例如:

/* 返回user表中的前两行数据 */
SELECT * FROM `user` LIMIT 2
/* 在user表中,从第三个行开始,返回两行数据 */
SELECT * FROM `user` LIMIT 2, 3
ORDER BY 关键字

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

asc是指定列按升序(从小到大)排列,desc则是指定列按降序(从大到小)排列

例如:

SELECT * FROM `user` ORDER BY `password`,`id` ASC LIMIT 3
SELECT * FROM `user` ORDER BY `id` DESC LIMIT 3
DISTINCT 关键字

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

例如:

/* 获取所有的password */
SELECT `password` FROM `user`
/* 获取所有不同的password(无重复) */
SELECT DISTINCT `password` FROM `user`

UPDATE 更新语句

UPDATE的基本语句如下所示(常与WHERE搭配使用):

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

举一个简单的小例子:

UPDATE `user` SET `age` = 19, `password` = 0564335 WHERE `name` = 'tabzzz'

显而易见,这句话的意思是把nametabzzz的行中的agepassword的值修改

DELETE 删除语句

DELETE的基本语句如下所示(常与WHERE搭配使用):

DELETE FROM table_name
WHERE [condition];

举一个简单的小例子:

DELETE FROM `user` WHERE `id` = 1;

非常清晰,删除id为1的一行

索引和约束

两个在SQL中十分重要的概念,如果你想让你的数据库十全十美,我想索引和约束是必不可少的!

索引(Indexes)

索引用于加快数据库查询速度。它们类似于书籍末尾的索引,可以让你快速找到所需信息,而不是逐页查找。在SQLite中,你可以使用CREATE INDEX语句来创建索引。

创建索引
sqlCopy codeCREATE INDEX index_name
ON table_name (column1, column2, ...);

这将在table_name表的column1, column2, … 上创建一个索引,名为index_name

约束(Constraints)

约束用于限制加入到表中的数据类型,保证数据库的准确性和可靠性。SQLite支持多种类型的约束,包括NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK等。重点记住PRIMARY KEY

NOT NULL 约束

确保列不接受NULL值。

sqlCopy codeCREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype,
    ...
);
UNIQUE 约束

确保所有值在列中是唯一的。

sqlCopy codeCREATE TABLE table_name (
    column1 datatype UNIQUE,
    column2 datatype,
    ...
);
PRIMARY KEY 约束

唯一标识数据库表中的每条记录。通常是一个或多个字段。

sqlCopy codeCREATE TABLE table_name (
    column1 datatype PRIMARY KEY,
    column2 datatype,
    ...
);
FOREIGN KEY 约束

用于确保一个表中的数据匹配另一个表中的值。

sqlCopy codeCREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    FOREIGN KEY (column1) REFERENCES other_table (column),
    ...
);
CHECK 约束

用于限制列中的值的范围。

sqlCopy codeCREATE TABLE table_name (
    column1 datatype CHECK (condition),
    column2 datatype,
    ...
);

SQLite常用函数

SQLite提供了一系列内置函数,可以对存储在数据库中的数据进行各种操作,如数学运算、字符串操作、日期时间处理等。

数学函数

  • ABS(x):返回x的绝对值。
  • ROUND(x, y):返回x四舍五入到y小数位的值。

字符串函数

  • LENGTH(string):返回字符串的长度。
  • UPPER(string):将字符串转换为大写。
  • LOWER(string):将字符串转换为小写。
  • SUBSTR(string, start, length):从字符串中提取子串。

日期和时间函数

  • CURRENT_TIMESTAMP:返回当前的日期和时间。
  • DATE(timestring, modifier, …):根据时间字符串和修饰符返回日期。
  • TIME(timestring, modifier, …):根据时间字符串和修饰符返回时间。

聚合函数

  • COUNT(expression):返回表达式的值的总数。

  • MAX(expression):返回表达式的最大值。

  • MIN(expression):返回表达式的最小值。

  • SUM(expression):返回表达式的总和。

  • AVG(expression):返回表达式的平均值。

    拿聚合函数举个小例子(用的比较多):

    SELECT count(*) FROM `user`
    SELECT MAX(`id`) FROM `user`
    SELECT AVG(`id`) FROM `user`
    
    SELECT UPPER(`name`),random() FROM `user`
    

这些是SQLite中一些基础但非常重要的概念和功能。掌握这些可以帮助你更有效地使用SQLite进行数据存储和查询操作。当然,SQLite还有许多高级特性等待你去探索,如触发器(Triggers)、视图(Views)等,这需要你在实践中不断学习和尝试。

总而言之,数据库引擎有很多种,如果你是热爱后端的,相信你一定不会不了解数据库这个老朋友;如果你是热爱前端的,我个人还是非常推荐你应该花点时间去了解一下数据库的!

嘿嘿,个人还是非常喜欢SQLite这种小巧却强大的数据库引擎,希望以后可以多多掌握数据库的奥秘!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tabzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值