sqlite3 文档

day01 数据库

1、分类: 大型 中型 小型
ORACLE MYSQL/MSSQL SQLITE DBII powdb
关系型数据库
2、名词:
DB 数据库 select update database
DBMS 数据库管理系统
MIS 管理信息系统
OA 办公自动化
3、嵌入式数据库:
sqlite3 www.sqlite.org www.kernal.org
GNU
特点:
1、开源 C语言开发
2、代码量少 1万行左右,总大小10M以内
3、绿色软件无需安装
4、文件型数据库,可以移动。
5、数据容量最大 2T

===========================================
查看是否安装sqlite3
whereis sqlite3
sqlite3:

4、sqlite3的安装: LTS long term support
1、在线安装 :
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
sqlite3.h libsqlite3.so–>动态库libc.so /lib /usr/lib
gcc test.c -lsqlite3 -lpthread
2、验证是否安装成功:
sqlite3 --version
sqlite3 --help

=====================================================================================
5、sqlite3的使用:
启动sqlite3
sqlite3 xxx.db :用sqlite3 来打开一个名称为test.db的本地数据库。
出现如下提示符:表明数据库管理系统启动。
sqlite>
退出数据库:
.q 命令
注意:如果一直出现如下符号:
…>
则写’;'结束。
以下所有命令必须在 sqlite> 后执行。
创建一个数据库:(类比文件操作)
1、touch xxx.db
2、sqlite3 xxx.db =======================================

1、系统维护命令:
.help 出现所有相关的系统维护命令,都是以 "."开头。
.database 列出当前库和系统中那个文件在关联
.tables 列出当期数据库中的所有表
.schema xxx 列出当前指定的xxx表结构
.dump user 导出数据库
重定向
sqlite3 test.db .dump > 123.sql
sqlite3 xxx.db < test.sql >导入数据库
================================
2,标准SQL语句:===》通用语法在其他平台可以直接使用。struct query language;
注意:所有的sql语句都以’;'结尾。
创建一个表:ddl
create table 表名(表字段1,表字段2,…);
eg: create table user(id,name,age);
注意:以上表的表字段,支持如下数据类型。int text real blob
默认是text类型。char
create table 表名 (表字段 类型,表字段 类型,…);
eg:create table user(id int ,name char,age int);
删除一个表:
drop table 表名;
eg:drop table user;
数据库常规操作: 增加 删除 修改 查询
向表中增加数据:
insert into 表名 (字段名称 ) values (值名称);
eg:insert into user (id,age) values (1,10);
insert into user values(3,“wang”,11);
insert into user (age) values ( 12);
查询表中的数据:
select 列名 from 表名 条件;
eg:select * from user ;
select id from user;
select id,name from user where not age <30
where name like ‘三一’ % _
select *from user where age>20 or age<50 order by age desc limit 2 ;
&& ||
修改表中数据:
update 表名 set 表字段 = 值 满足条件:
eg: update user set id = 1 where name = ‘li’;
update user set id = 1 where name = “li” and passwd = “123”;
update user set id = 2 where name = “li” or name = “zhao”;
删除表中数据:
delete from 表名 满足条件:
eg:delete from user ; ///删除表中所有数据
delete from user where id = 1; ///删除id=1 的数据;
delete from user where id =1 and name = “zhang”;
delete from user where id = 1 or id = 2;

插入时间列
unicode
CREATE TABLE user1(id int,name char,age int,dt datetime);
insert into user1 values (2,‘张三’,23,datetime(‘now’,’+8 hours’));

自动增长列
sqlite> CREATE TABLE user3(id INTEGER PRIMARY KEY ASC,name char,age int,dt datetime);
sqlite> insert into user3 (NULL,‘李四’,23,datetime(‘now’));
where (group by having) order by [desc] limit;
select * from user where id<10 order by id limit 2;
=========================================
维护命令:
1、数据的导出:
sqlite3 xxx.db .dump > xxx.sql
//将数据库名称为xxx的数据库整体导出到脚本中。
2、数据的导入:
sqlite3 xxx.db < xxx.sql
3、可视化工具安装:
sudo apt-get install sqliteman

==========================================
sqlite3 数据库编程接口:

1、需要的头文件
sqlite3.h

2、编译过程
-lsqlite3

3、编程框架:
打开数据库 ==》读写数据库(增,删,改,查) ==》关闭数据库

3.1 打开数据库: sqlite3_open
int sqlite3_open(char * path,sqlite3 ** db);
功能:打开指定path路径+文件名称的数据库,并将
打开的地址指向db变量的句柄。
参数:path 要打开的数据库路径+名称
db 要打开的数据库地址指针
返回值:成功 0
失败 -1;

3.2 关闭数据库: sqlite3_close
int sqlite3_close(sqlite3 *db);
功能:关闭指定的数据库
参数:要关闭的数据库地址
返回值:成功 0
失败 -1;

3.3 数据库操作:
查询操作:sqlite3_get_table(); select

int sqlite3_get_table(sqlite3 *db,char *sql,char *** rest,int *nrow,int *ncol,char *errmsg);
*功能:在db数据库上执行sql查询语句,并将执行的
结果集返回到rest地址上,同时返回查询的行和列。
参数:db 要执行查询语句的数据库
sql 要执行的select查询语句
rest 查询的结果集是一个三级指针
nrow 查询的结果的行数
ncol 查询的结果的列数
errmsg 如果执行有错误,则存储错误。
返回值:成功 0
失败 非0;
执行sql语句:sqlite3_exec(); insert delete update
int sqlite3_exec(sqlite3 *db,char *sql,callback fun,void *arg,char ** errmsg);
**功能:在db数据库上执行sql 非查询语句。
并将结果返回。
参数:db 要执行sql的数据库
sql 要执行的非查询sql语句。
fun 如果该函数要执行查询语句,则该回调函数
用来回收查询的结果。
arg 回调函数的参数,如果没有回调函数则该参数为NULL;
errmsg 执行过程中的错误信息。
返回值:执行成功 0
失败 非0 ;
int fun(void *arg ,int f_num,char **f_value,
char ** f_name)
功能:该函数用于sqlite3_exec执行select语句的
结果集返回数据。
参数:arg 由sqlite3_exec传入的参数
f_num 执行该命令所返回测结果集的字段个数。
f_value 查询结果集中的字段的值。
f_name 查询结果集中的字段的名称。
返回值:成功 0
失败 非0
注意:该回调函数必须有返回值,否则可能导致查询异常。

给数据库表添加主键:
1、sqliteman 设计表过程中选择 ;PK INTER
2、SQL 语句:
create table user(id int primary key,name text);

新建表
create table stu_info(id int ,name char ,age int ,phone char ,email char,qq char);
增加记录
insert into stu_info values (2,‘关二哥’,55,‘13011112222’,‘gauanerge@163.com’,‘8888888’);
查询记录
select * from stu_info;
修改记录
update stu_info set age = 56
where id = 2;
删除
delete from stu_info where id = 2;
select*from 表明 where
从句where (id int,name char,age int,kind int,salary real);

insert into person values(9,‘周瑜’,39,3,3638.20);

代码1
内容:使用sql_cmd命令对数据库表中的内容进行增删改查

#include <stdio.h>
#include <sqlite3.h>

int main(void)
{
    sqlite3 *db;
    int ret;
    ret = sqlite3_open("/home/linux/20200211/sec4/01sqlite3/111.db",
                 &db);
    if(SQLITE_OK!=ret)
    {
        fprintf(stderr,"open db error:%s\n",sqlite3_errmsg(db));
        return 1;
    }
    char * errmsg=NULL;
    // update insert  delete  create talbe select(增删改查)
    char sql_cmd[] = "update  user set age = 23 where id  = 2;";
    ret = sqlite3_exec(db,sql_cmd,NULL,NULL,&errmsg);
    if(SQLITE_OK!=ret)
    {
        fprintf(stderr,"sql cmd  error:%s\n",errmsg);
        sqlite3_free(errmsg);
        return 1;
    }
    sqlite3_close(db);
    printf("Hello World!\n");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值