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

-----使用示例

相关推荐
野犬寒鸦19 小时前
MySQL复习记录Day01
数据库·后端
Yupureki19 小时前
《Linux网络编程》1.网络基础
linux·运维·服务器·c语言·网络·c++
ward RINL19 小时前
Spring boot启动原理及相关组件
数据库·spring boot·后端
RisunJan19 小时前
Linux命令-mysqldump(MySQL数据库中备份工具)
linux·数据库·mysql
小美单片机19 小时前
十字路交通灯系统设计
c语言·单片机·51单片机·proteus·课设
DolphinDB智臾科技19 小时前
直播回顾 | 物联网时序数据库如何驱动电力场景智能调度?
数据库·物联网·时序数据库
卖芒果的潇洒农民19 小时前
C语言面试
c语言·开发语言·面试
郝学胜-神的一滴19 小时前
解锁CS数据存储的核心逻辑:从结构选择到表单设计的全解析
linux·服务器·数据库·c++·后端·oracle
qq_3911053419 小时前
TDengine C# 连接示例和授权管理
大数据·数据库·c#·时序数据库·tdengine
孟章豪19 小时前
如何优雅封装.NET数据库访问层(彻底告别拼接SQL)
数据库·sql·.net