SQLite是一个轻量级的数据库办理方案,它是一个嵌入式的数据库管理系统。SQLite的特点是无需独立的服务器进程,可以直接嵌入到使用它的应用步伐中。由于其设置简朴、支持跨平台、服务器零管理,以及不需要复杂的设置和操作,SQLite非常适用于移动应用、小型项目和桌面应用步伐。
1.安装数据库
可以在官网(http://www.sqlite.org/)下载安装包(我的安装包有点老就不给大家了) libsqlite3-0_3.7.2-1ubuntu0.1_i386.deb (.deb的安装包可以用dpkg -i 来进行安装) .deb 是linux 系统的应用步伐的安装包文件 安装.deb文件: dpkg -i deb文件名 (dpkg -i :安装应用步伐) 1.1 打开数据库
打开/新建数据库命令: sqlite3 my.db (假如my.db 存在就打开,不存在就新建),创建乐成后,当前目录会有一个my.db的文件 数据库 一样平常 扩展名是.db(database) sqlite3:分两种语言: sqlite3应用步伐的选项语言,一样平常以.开头 输入 .开头的命令(非sql语句命令) .help:查看帮助 .tables :查看数据库有哪些表 .quit :退出sqlite 还有一种命令不是以 .开头的,这种叫sql语句,sql语句以 ; 竣事 总结: sqlite3 以 . 开头的命令是 sqlite3命令 不是以 . 开头的是 sql语句,一定以 ;竣事
1.2数据库中的概念
数据库 将所有的数据,各种类型,形貌各种事物的数据放到一起, 如:my.db文件,就是一个数据库文件 数据表 形貌某一个事物的根本信息的表 学生信息表 (stu_info) 编号 姓名 性别 年龄 班级 爱好 图书信息表 (book_info) 图书编号 书名 出版社 作者 分类 记录 表里面的一条信息 字段 列名
2.sql语句(重点)
sql语句: 是一个尺度的数据库语言,提供了对数据库操作的各种命令, 而且sql语句是所有数据库通用的。 2.1创建数据表
语句:create table stu_info (number varchar(20), name varchar(50), age integer, sex varchar(10)); //背面会用到这个表,大家了解一下 create table :关键字, 用来创建表 stu_info :自定义的表名 number name age sex :字段 varchar :可变字符串(数据类型) (默认50) integer :整数数据类型 2.2 删除表
drop table +表名; //执行前记得加分号
示例:drop table stu_info; //删除stu_info表 2.3 插入记录到表中(重点)
1)字段全部添加的语句:insert into 表名 values(填入所有字段); //留意结尾有分号
insert into stu_info values ('1001', 'zhangsan', 25, 'nan'); //所有字段全都填入值 2)只给某些字段添加值的语句:insert into stu_info (age,number) values (26, '1002'); //age,number是不添加值的字段。 2.4查询表中的记录(重点)
select * from stu_info; // * 是查看stu_info表里的所有字段 select age from stu_info; //查看age字段 select age,number from stu_info; //查看多个字段间用逗号隔开 sql命令: .header on :表现字段名 .mode column :列对齐 按一个条件查询
select * from stu_info where name = 'lisi'; //查询表里name='lisi'的记录 按多个条件查询
select * from stu_info where name = 'lisi' and age = 25; select * from stu_info where name = 'lisi' or age = 25; 其他各种查询
1 查询年龄 > 25的记录 select * from stu_info where age > 25; 2 查询记录 只想看编号、姓名字段 select number, age from stu_info where age = 25; //查询age=25的记录,只看number,age字段 3 按顺序输出所有记录 select * from stu_info order by age; //按年龄顺序输出,默认环境是升序分列 select * from stu_info order by age desc; //降序分列 4 暗昧查询(假设有一个人名我记不住了,但能记住名字中的一个字, 就可以用暗昧查询) 示例:查询名字当中带li字符的人(like) select * from stu_info where name like '%li%'; // % 代替后续大概前面的内容 5 多条件查询 select * from stu_info where age > 25 and number > 1001; //(查询年龄大于 25, 编号 > 1001 的学生信息) 6 统计记录条数 select count(*) from stu_info; select count(*) from stu_info where age = 25; 练习: 1. 创建学生成绩表(字段如下) 学生编号(number) 数学(math) 语文(ch) 英语(en) 2. 向学生成绩中添加三条记录 1001 100 90 80 1002 80 90 80 1003 90 90 80 3. 查询出编号1003的记录 - create table score_info (number varchar(20), math integer, ch integer, en
- integer);
- insert into score_info values ('1001', 100, 90, 80); //所有字段全都填入值
- insert into score_info values ('1002', 80, 90, 80); //所有字段全都填入值
- insert into score_info values ('1003', 90, 90, 80); //所有字段全都填入值
- select * from score_info where number = '1003';
复制代码 2.5 删除表中记录(重点)
示例: delete from stu_info; //删除所有记录 delete from stu_info where number = '1002'; //删除number = '1002的记录 2.6修改表中记录(重点)
示例:把字段number为1004 的记录,该记录中name改成wangwu
update stu_info set name = 'wangwu' where number = '1004'; 2.7多表团结查询
学生根本信息表: number name age sex 成绩表: nubmer math ch en 两个表number字段类似 示例:查询数学成绩 > 90的所有学生的根本信息和成绩 select stu_info.*, score_info.math from stu_info, score_info where score_info.math > 90 and stu_info.number = score_info.number; //表现的字段有score_info1的math字段,还有stu_info整个表的字段 (必须有一个字段是类似的) 3.用c语言操作数据库
3.1 打开数据库
头文件:#include <sqlite3.h> 函数: int sqlite3_open(char *path, sqlite3 **db); 功能: 打开数据库,假如数据不存在,则新建 参数: path [入参] :打开的数据库名称(路径) db [出参] :打开数据库后,它将指向数据库的指针给db 返回值: 执行乐成返回SQLITE_OK(0),否则返回其他值 例如: sqlite3* db;//FILE* fp sqlite3_open("my.db", &db); - #include <stdio.h>
- #include <sqlite3.h>
- int main()
- {
- sqlite3 *p; //如果打开成功,将指向数据库的指针赋值给p
- if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
- {
- printf("database open success\n");
- sqlite3_close(p);
- }
- }
复制代码 编译:gcc test.c -lsqlite3
3.2 执行数据库操作的sql语句
(只用于insert into, create table, update, delete)
- int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback,
- void *, char **errmsg);
- 参数
- db , sqlite3_open 的第二个参数
- sql, 要执行的sql语句
- NULL 默认为NULL (非NULL值用在查询中)
- NULL 默认为NULL
- errmsg: [出参] 如果sql语句执行错误,errmsg中保存错误字符串
- 返回值:成功返回0,不成功返回其他
复制代码 - #include <stdio.h>
- #include <sqlite3.h>
- int main()
- {
- sqlite3 *p;
- if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
- {
- printf("database open success\n");
- if(sqlite3_exec(p, "delete from stu_info where name = 'zhangsan'", NULL,
- NULL, NULL) == 0)
- {
- printf("delete success\n");
- }
- }
- }
复制代码 3.3查询语句
函数: int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int*nrow, int *ncolumn, char **errmsg); 功能:执行SQL查询操作。 参数: db:指向数据库指针(数据库句柄), open的第二个参数 sql:SQL语句, (select * from stu_info) resultp[出参]:用来指向sql执行效果的指针 (跟errmsg类似) nrow[出参]:满足条件的记录的数量, 包括字段名,相当于行数(表头会返回出来,但表头不计入行 数,以是打印时需要打印nrow+1行) ncolumn[出参]:每条记录包罗的字段数量,相当于列数 errmsg:错误信息指针的地点, 假如语句执行出错,那么errmsg中是错误信息 返回值:乐成返回0,失败返回错误码
示例:
- #include <stdio.h>
- #include <sqlite3.h>
- #include <stdlib.h>
- int main()
- {
- sqlite3 *db;
- char *errmsg;
- char **q;
- int nrow, ncolumn, i, j, index = 0;
- if(sqlite3_open("my.db", &db) == 0)
- {
- if(sqlite3_get_table(db, "select * from stu_info", &q, &nrow,
- &ncolumn, &errmsg) != 0)
- {
- printf("error : %s\n", errmsg);
- exit(-1);
- }
- else
- {
- for (i=0; i < nrow + 1; i++) //nrow 是行, 如果有1条记录,那么值为1
- {
- for (j=0; j<ncolumn; j++)
- {
- printf("%10s", q[index++]); //printf("%10s",
- q[i*ncolumn + j]);
- }
- printf("\n");
- }
- }
- }
- }
复制代码 4.结语
这就是sqlite数据库在Linux上使用教程,感谢大家的观看,希望大家点点赞,点点关注,后续会出用到sqlite的项目,谢谢!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |