从零开始学 SQLite:从基础命令到 C 语言编程实战

一、数据库

高效对大批量数据管理的一种软件
二、分类:

关系型数据库

Oracle

Mysql

SQLServer

SQLite

非关系型数据库

Redit
三、SQLite数据库

所有数据库支持:SQL编程语言
四、SQLite数据库的安装:

  1. 虚拟机网络连通

  2. apt-get工具集配置成功

  3. 安装SQlite软件

sudo apt-get install sqlite3

sudo apt-get install libsqlite3-dev

sudo apt-get install sqlitebrowser

navicat

  1. 运行sqlite3软件

sqlite3

SQLite version 3.22.0 2018-01-22 18:45:57

Enter ".help" for usage hints.

Connected to a transient in-memory database.

Use ".open FILENAME" to reopen on a persistent database.

sqlite> .quit

五、Sqlite3命令

  1. .databases

查看数据库中的信息

  1. .tables

查看表名称

  1. .header(s) ON|OFF

开启/关闭头部显示

  1. .mode MODE

设置数据的显示格式

csv

column

html

insert

line

list

tabs

tcl

  1. .schema ?TABLE?

显示创建表时的格式

  1. .quit

退出
六、SQL语句

  1. create table

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

....

)

例:create table student (学号 integer primary key, 姓名 text, 性别 text,年龄 integer, 成绩 integer);

  1. drop table

drop table 表名称;

例:drop table student;

  1. insert into

INSERT INTO 表名称 VALUES (值1, 值2,....)

例:insert into student values (1002, "李四", "女", 13, 80);

insert into student (学号,姓名,性别) values (1009, "熊大", "男");

  1. delete from

DELETE FROM 表名称 WHERE 列名称 = 值

例:delete from student where 姓名 = "赵五";

  1. update

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

例:update student set 年龄=16,成绩=85 where 姓名="熊大";

  1. select

SELECT 列名称 FROM 表名称

例:select * from student;

select 学号,成绩 from student;

select 姓名 from student where 成绩<60 and 性别="男";

select 姓名 from student where 姓名 like "%田%";

  1. order by

ORDER BY 语句用于根据指定的列对结果集进行排序

例:select 学号,姓名 from student where 成绩 > 60 order by 成绩 desc;

select 学号,姓名 from student where 成绩 > 60 order by 成绩 asc;

七、SQL类型

  1. INTEGER

  2. REAL

  3. TEXT
    八、多表联合查询

  4. cross join

例:select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程 from 学生信息 cross join 学生课程;

  1. inner join

例:select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 inner join学生成绩 on 学生信息.学号 = 学生成绩.学号;

  1. outer join

select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 left outerjoin 学生成绩 on 学生信息.学号 = 学生成绩.学号;

  1. 三表联合查询

select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程, 学生成绩.成绩 as 成绩

from 学生信息 left outer join 学生成绩 on 学生信息.学号 = 学生成绩.学号

left outer join 学生课程 on 学生成绩.课程编号 = 学生课程.编号

where 成绩 > 60

order by 成绩 desc;

九、数据库编程

  1. sqlite3_open

int sqlite3_open(

const char *filename, /* Database filename (UTF-8) */

sqlite3 **ppDb /* OUT: SQLite db handle */

);

功能:

打开数据库获得操作数据库的句柄

参数:

filename:打开文件的路径

ppDb:存放数据库句柄空间的首地址

返回值:

成功返回SQLITE_OK

失败返回错误码,可以通过sqlite3_errmsg来获得其对应的英文描述

  1. sqlite3_errmsg

const char *sqlite3_errmsg(sqlite3*);

功能:

传入sqlite3的句柄返回句柄出错的英文字符串

  1. sqlite3_exec

int sqlite3_exec(

sqlite3*, /* An open database */

const char *sql,

/* SQL to be evaluated*/

int (*callback)(void*,int,char**,char**), /* Callback function */

void *, /* 1st argument to

callback */

char **errmsg /* Error msg written

here */

);

功能:

执行一条SQL语句

参数:

数据库句柄

要执行的sql语句

callback:只有select才会用到,执行找到匹配的数据后的操作

对callback回调函数的传参

errmsg:存放出错字符串空间的首地址

返回值:

成功返回SQLITE_OK

失败返回错误码

  1. sqlite3_free

void sqlite3_free(void*);

功能:

释放申请的空间

  1. sqlite3_close

int sqlite3_close(sqlite3*);

功能:

关闭sqlite3连接句柄

-----使用示例

相关推荐
jackletter2 小时前
在pgsql中封装一个json函数,让它完全模拟mysql中的json_set
数据库·mysql·json·pgsql·json_set
冬夜戏雪2 小时前
【学习日记】
java·开发语言·数据库
小美单片机2 小时前
Proteus8.9安装保姆级教程
c语言·c++·算法·51单片机·proteus·大一新生
会编程的土豆2 小时前
C语言字符串查找:深入理解 strstr 函数
c语言·项目
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-03-11
大数据·数据库·人工智能·经验分享·搜索引擎
2301_767902642 小时前
mysql语言
数据库·mysql·oracle
她说..2 小时前
Redis 中常用的操作方法
java·数据库·spring boot·redis·缓存
枫叶丹43 小时前
【Qt开发】Qt界面优化(十)->常用控件--复选框
c语言·开发语言·c++·qt
倔强的石头_3 小时前
MySQL 兼容性深度解析:从内核级优化到“零修改”迁移工程实践
前端·数据库