Sqlite

SQLite是一个轻量级的、文件系统基础的数据库引擎,它实现了自给自足的、无服务器的SQL数据库引擎。

Linux系统

  • 大多数Linux发行版已经预装了SQLite。可以通过运行sqlite3命令来检查是否已安装。

  • sudo apt-get -y install sqlite

  • 如果未安装,可以访问SQLite的官方下载页面下载源代码包

    sqlite-autoconf-*.tar.gz。

  • 解压并进入下载的源代码包目录,依次运行以下命令进行编译安装:

tar xvzf sqlite-autoconf-*.tar.gz
cd sqlite-autoconf-*
./configure --prefix=/usr/local
make
make install

安装完成后,使用sqlite3命令验证安装

启动SQLite

在命令行中输入sqlite3,进入SQLite的交互式命令行界面。

打开数据库:

在命令行中使用 sqlite3 命令打开数据库文件。如果数据库文件不存在,SQLite 将会自动创建它。

sqlite3 mydatabase.db

这将打开(或创建)名为 mydatabase.db 的数据库,并进入 SQLite 的交互式命令行界面。

创建数据库

直接使用sqlite3命令加上数据库文件名,如sqlite3 mydatabase.db,即可创建一个新的数据库文件并打开它

查看帮助信息

在SQLite命令行中输入.help,可以查看SQLite的使用提示。

关闭数据库:

在 SQLite 命令行界面中,使用 .quit 命令或 .exit 命令来关闭数据库连接并退出。

.quit

或者

.exit
增删改查(CRUD)语句:
  1. 在SQLite中执行增删改查(CRUD)操作,我们将使用前面提到的users表结构作为例子。下面是针对该表的CRUD操作的基本SQL模板:

    表结构参考:

    CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        username TEXT NOT NULL UNIQUE,
        email TEXT NOT NULL,
        age INTEGER
    );

    1. 插入(Create)- 向users表中添加新用户:

    INSERT INTO users (username, email, age) VALUES ('john_doe', 'john@example.com', 30);

    2. 查询(Read)- 从users表中查询数据:

    • 查询所有用户:

      SELECT * FROM users;

    • 查询特定条件的用户(例如,查找所有年龄大于30的用户):

      SELECT * FROM users WHERE age > 30;

    3. 更新(Update)- 更新users表中的现有用户信息:

    • 更新特定用户的电子邮件(例如,更新ID为1的用户):

      UPDATE users SET email = 'new_john@example.com' WHERE id = 1;

    4. 删除(Delete)- 从users表中删除用户:

    • 删除特定用户(例如,删除ID为1的用户):

      DELETE FROM users WHERE id = 1;

    附加SQLite操作模板:

    • 插入或替换 - 如果记录存在则替换,不存在则插入(使用REPLACE INTO):

      REPLACE INTO users (id, username, email, age) VALUES (1, 'john_doe', 'john@example.com', 30);

      注意:REPLACE INTO会删除旧记录并插入新记录,适用于当新记录的id冲突时。

    • 插入或忽略 - 如果记录存在则忽略插入,不存在则插入(使用INSERT OR IGNORE INTO):

      INSERT OR IGNORE INTO users (id, username, email, age) VALUES (1, 'john_doe', 'john@example.com', 30);

    • 批量插入 - 一次性插入多条记录:

      INSERT INTO users (username, email, age) VALUES 
      ('jane_doe', 'jane@example.com', 25),
      ('alice_smith', 'alice@example.com', 28);

    • 删除满足条件的多条记录 - 例如,删除所有没有提供电子邮件的用户:

      DELETE FROM users WHERE email IS NULL;

    • 更新满足条件的多条记录 - 例如,将所有年龄大于30的用户的电子邮件更新为一个通用邮件:

      UPDATE users SET email = 'default@example.com' WHERE age > 30;

    • 使用事务 - 执行一组需要同时成功或失败的SQL语句:

      BEGIN TRANSACTION;
      -- 一系列 SQL 语句
      COMMIT; -- 提交事务

    SQLite支持标准的SQL语法,并提供了一些特定的命令和函数,使其成为处理轻量级数据库任务的理想选择。

其他常用语句:
  • 显示数据库中所有表

    .tables

  • 显示表的结构

    .schema my_table

  • 启用/禁用扩展

    PRAGMA compile_options;

  • 事务控制 - 开始事务、提交事务、回滚事务:

    BEGIN TRANSACTION;
    -- 一系列 SQL 语句
    COMMIT; -- 提交事务
    ROLLBACK; -- 回滚事务

SQLite 的命令行界面提供了一个方便的方式来执行 SQL 语句和浏览结果。对于更复杂的应用程序,SQLite 也可以通过各种编程语言的库进行操作。

查看数据库的记录

select * from stu; //查询所有字段的结果
select name,score from stu; //查询数据库中部分字段的内容

打开**/创建数据库的C接口**

下面的 C 代码段显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将

返回一个数据库对象

该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。
sqlite3_close(sqlite3*)
该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完
成。
如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。
const char *sqlite3_errmsg(sqlite3*);
sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码.

#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
exit(0);
}else{
fprintf(stderr, "Opened database successfully\n");
}
sqlite3_close(db);
}

创建表的C接口

思路,不编写

  1. 包含头文件

    • 包含stdio.h用于输入输出函数,stdlib.h用于内存分配和进程退出,sqlite3.h提供SQLite的C语言接口。

  2. 定义回调函数

    • 定义一个callback函数,该函数将由sqlite3_exec用于处理查询结果。此函数接收查询列名和值,并打印它们。

  3. 编写 main 函数

    • main函数中,声明所需的变量,包括数据库连接指针db、错误消息zErrMsg、返回码rc,以及SQL语句字符串sql

  4. 打开数据库

    • 使用sqlite3_open函数尝试打开或创建数据库文件。检查返回状态,如果打开失败,打印错误并退出程序。

  5. 编写SQL语句

    • 构造SQL语句字符串,可以是INSERT、UPDATE、DELETE或SELECT语句。在您的示例中,是一个DELETE语句后跟一个SELECT语句。

  6. 执行SQL语句

    • 使用sqlite3_exec函数执行SQL语句。对于非查询语句,回调函数参数可以为NULL。对于查询语句,提供回调函数和用户定义数据。

  7. 错误处理

    • 检查sqlite3_exec的返回状态。如果执行失败,打印错误消息,释放错误消息内存,并退出。

  8. 操作反馈

    • 如果SQL执行成功,打印操作完成的反馈信息。

  9. 关闭数据库连接

    • 使用sqlite3_close函数关闭数据库连接,释放所有相关资源。

  10. 返回程序状态

    • 返回0表示程序正常结束。

SQLite和MySQL是两种流行的数据库系统,但它们在设计、用途和性能方面有着显著的不同。

SQLite的优点:

  1. 轻量级:SQLite是一个轻量级的数据库,不需要复杂的安装过程。

  2. 易于部署:作为一个单一的文件,SQLite易于分享和部署。

  3. 无需配置:没有复杂的配置或初始化过程。

  4. 跨平台:可以在多种操作系统上运行,包括移动平台。

  5. 适合小型应用:对于小型应用或轻量级需求,SQLite是一个很好的选择。

  6. 内嵌式:可以作为库被嵌入到应用程序中,与应用程序一起编译和分发。

  7. 无需独立的服务器进程:作为进程库运行,不需要独立的数据库服务器。

SQLite的缺点:

  1. 并发限制:虽然有并发机制,但SQLite在高并发环境下的性能可能受限。

  2. 写操作锁定:在写操作时,整个数据库文件会被锁定,可能会影响性能。

  3. 有限的SQL功能:相比MySQL,SQLite的SQL功能可能不够全面。

  4. 不适合大规模数据:对于大规模数据集,SQLite可能不是最佳选择。

MySQL的优点:

  1. 高性能:MySQL为高并发和大数据量环境设计,性能优越。

  2. 强大的功能:支持复杂的查询、存储过程、触发器和视图。

  3. 灵活性和可扩展性:可以处理从小规模到大规模的各种数据库需求。

  4. 社区和支持:拥有庞大的开发者社区和商业支持。

  5. 多用户多线程:支持多用户并发访问和多线程,适合多用户环境。

  6. 成熟的技术:经过多年发展,技术成熟稳定。

MySQL的缺点:

  1. 需要配置和维护:相比SQLite,MySQL需要更多的配置和维护工作。

  2. 安装和部署复杂:需要安装数据库服务器,配置网络和安全性。

  3. 资源消耗:相比SQLite,MySQL作为服务运行,需要更多的系统资源。

  4. 学习曲线:对于初学者,MySQL可能有一个较陡峭的学习曲线。

  5. 可能涉及许可费用:虽然MySQL有免费版本,但某些高级特性或服务可能需要付费。

总结:

  • SQLite:适合轻量级、小型应用、嵌入式系统、原型开发,以及需要快速部署的场景。

  • MySQL:适合需要高性能、可扩展性、多用户访问和复杂数据处理的大型应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值