从零开始学 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连接句柄

-----使用示例

相关推荐
数据库小学妹8 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
dishugj8 小时前
HANA 数据库备份与恢复
数据库·oracle
前进的李工8 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
難釋懷8 小时前
Redis网络模型-IO多路复用模型-poll模式
网络·数据库·redis
dFObBIMmai8 小时前
如何在 CSS 中实现元素的绝对定位,使其不受窗口尺寸变化影响
jvm·数据库·python
Dlrb12119 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
坚果派·白晓明9 小时前
【鸿蒙PC三方库移植适配框架解读系列】第一篇:Lycium C/C++ 三方库适配 — 概述与环境配置
c语言·开发语言·c++·harmonyos·开源鸿蒙·三方库·c/c++三方库
treesforest9 小时前
IP精准定位服务:从城市轮廓到街道坐标,技术如何重塑空间感知
网络·数据库·网络协议·tcp/ip·ip
大明者省9 小时前
宝塔开了端口,Ubuntu 还得开相应端口才能打通
服务器·数据库·ubuntu
Teable任意门互动10 小时前
AI原生开源多维表格有哪些?主流开源多维表格对比解析
数据库·开源·excel·钉钉·飞书·开源软件·ai-native