Linux-数据库
一.常用数据库:
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
2.非关系型数据库
以键值对存储,且结构不固定
//JSON
Redis
MongoDB
二.sqlite数据库
学习查询网站:SQLite Insert 语句 | 菜鸟教程
1.开源免费,C语言开发
2.代码量小,1万行左右,总大小10M以内
3.文件型数据库,可以移动,跨平台移植性好
4.理论数据容量最大2T
三.安装sqlite3
sudo apt-get install sqlite3
安装相关库
sudo apt-get install libsqlite3-dev
测试:sqlite3 stu.db
四.sqlite3学习:
sqlite支持的数据类型:
NULL:空值
INTEAER:整形
REAL:浮点型
BLOB:根据输入进行存储
1)sqlite3相关的命令
.help 查看支持的命令
.tables 查看当前数据库中的表
.headers on/off 打开或者隐藏表头
.mode column 设置列左对齐
.quit 退出数据库
2)sqlite3支持的SQL语句
注意:
1.SQL语句后面必须要有分号
2.sqlite不区分大小写
1.创建表
create table 表名(列名1 数据类型,列名2 数据类型,列名3 数据类型);
create table class(id INTEGER, name TEXT, age INTEGER, score REAL);
2.数据插入
insert into 表名 values(值1, 值2, 值3);
insert into class1 values(1, "zhangsan", 19, 88.5);
3.查询数据
查询所有数据
select *from 表名 :
查询指定列数据:
select 列名1, 列名2, 列名n from表名;
条件查询:
select * from 表名 where 列 条件;
关系运算符:
> < >= <= = !=
and or
模糊查找(字符串)
select * from 表名 where 列 like “%梅”;
select * from 表名 where 列 like “--梅”;
%能匹配多个字符
—只能匹配一个字符
排序查找:
升序排序:
select * from 表名 order by 列名 ASC;
降序排序:
select * from 表名 order by 列名 DESC;
4.删除数据
delect from 表名 where 删除的条件;
delete from class1 where score<80;
5.修改数据
update 表名 set 列=新值 where 条件;
updata class1 set score=100 where name="wanger";
6.删除一张表
drop table 表名;
7.设置主键值自动增长列
注意:
1.主键值增长列必须是INTEGER类型
2.在创建表时,主键值自动增长列要增加:PRIMARY KEY AUTOINCREMENT
create table class2(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);
3.插入数据时,主键值自动增长给NULL,让其自动增长
insert into class2 values(NULL, “张三”,90);
8.时间相关的
date("now"); 年-月-日
datetime("now", "+8 hours"); 年-月-日 时:分:秒
可视化工具:sudo apt-get install sqlitebrowser
3)sqlite3提供的C/C++ API(应用程序接口)接口
int sqlite3_open(const char *filename文件名,/ *数据库文件名(UTF-8)* /sqlite3 ** ppDb / * OUT:SQLite数据库句柄指针的地址* / );功能:打开一个数据库文件
参数:
filename:数据库名称
返回值:
成功:SQLITE_OK
失败:返回一个错误码
int sqlite3_close(sqlite3 *);功能:关闭一个数据库文件
int sqlite3_exec(sqlite3 *pdb, / *一个打开的数据库* /const char * sql, / *要求值的SQL * /int(* callback)(void *,int,char **,char **), 执行select语句/ *回调函数* /void* , / *回调的第一个参数* /char ** errmsg / *此处写的错误msg * / );功能:执行SQL语句
返回值:
成功:SQLITE_OK
失败:返回一个错误码
int(* callback)(void *arg,int column,char **column_values,char **column_name);
功能:执行select语句时执行时调用的回调函数
参数:
arg:sqlite_exec传递的第四个参数
column:查询到的数据的列数
column_values:指针数组,多个指针分别指向每一列数据的字符串
column_name:指针数组,多个指针指向每一列的列名
注意:
1.回调函数成功的话必须要有返回值,返回0
sqlite3_exec error:query aborted
2.从数据库查询出来的数据,统统是字符串类型
3.从数据库中查询数据,查到几条,回调函数就会被执行几次