//存储在外存中。
//数据库软件的使用方法。
数据库:大量数据的时候。数据库软件。
//数据库使用方法。
1.以记录的形式发生。
2.嵌入式数据库:关系数据路库。
3.数据类型:字符,整型,浮点型,日期,二进制数据。
//-------------------------------------------------------------------//
//数据库软件 +:数据库命令 + 数据库函数。
//命令:
//whereis sqlite3 :查看数据库文件在哪。
//点 + 命令的形式。
sqlite3 + 数据库文件 与vim是一样的。
sqlite3 *.db //打开具体的数据库文件。
安装数据库软件:sudo apt-get install sqlite3:
安装编译工具包:sudo apt-get install libsqlite3-dev 安装数据库安装包。
//头文件
//gcc sqlite3.c -lsqlite3 -lpthread -lm
//安装数据库软件。
//数据库软件的使用方法。
.databases:查看数据库软件中有多少个数据库文件。
.dbinfo main :结果是空的。数据库文件中没有表格。
//命令以点开头
//语句以分号结束。
//数据库 》文件 》表
.quit .q
.exit .e
//-------------------------------------------------------------//
一 DDL://在软件内部使用相关命令来创建数据库文件。
类型:整型int 字符串:text 浮点型:float
//例如 :建立一个学生表格 表格名称。
//学生的学号 姓名 年龄 成绩 //前面是变量名称,后面是数据类型。
//create table stu(stuno text,stuname text,stuage int,stugrade float); //别忘了加分号
//命令是点开头。命令和语句不同。
//语句是没有点的,但是要用分号结束。
2.如果不保存,那么软件内就没有表格。 //保存也没有。
3.删除表格命令
//-------------------------//
//1.主键约束---唯一:设置主键约束。约束就是限定条件。(主键只能有一个)primary key
//2.非空约束--数据不能为空。not null
//3.唯一约束--:数据不能重复。unique
//4.检查约束:数据必须符合条件。check(stuage > 18 and stuage < 26)
//5.缺省约束:默认数据是什么。default 默认值
//------------------------//
6.建表的限定条件。
例如: //将sid设定成主键。 不能创建两个一样的数据表格。
create table student(sid text primary key,sname text,sage int,classno text);
7.非空约束。
create table stu(sid text,sname text not null);
//限定姓名不能为空
8.唯一约束:数据项不能重复
create table stu3(sid text unique,sname text ,classno text);
9.检查约束:限定条件是check后面的范围。
create table stu4(stuno int,stuage int check(stuage > 18 and stuage < 26));
create table stu5(stusex text check(stusex int (‘M’,‘F’)));
10缺省约束:在没有输入数据的条件下,使用默认数值。
create table stu6(stuname text default ‘no name’);
create table stu7(stuage int default 22);
//classroom classnum classname;
11.练习:
学生表(学号 主键 ,姓名,年龄,性别,班级)
科目表(科目号主键,科目名,教师姓名)
成绩表(学号,科目号,成绩,学号)
//下次打开的时候,用sqlite3 stu3.db
//用数据库软件编写数据库文件。
//在表格中增加一列数据信息。
alter table student add column cardid text;
.schema student:查看一下,内容是否被添加进去了。
//就是每一列的限定条件。
insert into 表名 values(值1,值2);//所有列都是对应值,顺序不能乱。
insert into 表名 (列名1,列名2)
insert into stu(sid,sname,age,sex)values(1,“zhagnsan”,21,‘F’);
//插入结果如何查看?
//用select来查看。
select * from stu; //用星号作为通配符,查看表中所有内容。
1.select sname from student; 在学生表中查询名字的内容。
select sid from stu; //可以把表格中的内容全部查询出来。
select sid,sname,age from stu; //每一句用分号结束。
2.用where子句
select * from stu where age >= 20;
//在任意表中查询年龄大于20的数据;
delete from 表名; //一个是表格结构,一个是数据部分。
delete from student where stuno = 100;
//从哪个表中查询什么内容
select sname from student;
//如果有内容就显示内容,如果没有这个列就提示没有。
//如果什么都没有,就什么都不显示。
.header on
.mode column
格式化输出
select sid,sname,age from stu ; //从这个表中查询所有内容。
.mode column :以列的形式显示。
//有些内容一头雾水,就讲解最简单的内容就行。能讲什么就讲什么。
基本概念说明 + 命令 + 函数;
14:表 + 记录。
//数据库 - 数据库列表 - 数据库记录 -
int sqlite3_open(const char *filename, sqlite3 **ppDb );
功能:打开数据库链接
参数:filename:数据库的路径和文件名
ppdb:数据库句柄。
返回:成功 SQLITE_OK (值为0),否则返回其他值。
int sqlite3_exec(sqlite3* pDB, const char *sql, sqlite_callback callback, void*para, char** errMsg);
功能:编译和执行零个或多个SQL 语句,查询的结果返回给回调函数callback
参数:
pDB,数据库句柄。
sql,待执行的SQL 语句字符串,以’\0’结尾。
callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert 或者delete 操作时),可以输入NULL。
para,要传入回调函数的指针参数,没有可以置为NULL。
errMsg,返回错误信息,注意是指针的指针。
返回值:执行成功返回SQLITE_OK,否则返回其他值
typedef int (*sqlite_callback)(void* para, int columnCount, char** columnValue,
char** columnName);
功能:由用户处理查询的结果
参数:
para,从sqlite3_exec()传入的参数指针;
columnCount, 查询到的这一条记录有多少个字段(即这条记录有多少列);
columnValue,查询出来的数据都保存在这里,它实际上是个1 维数组(不要以为是 2 维数组),每一个元素都是一个char * 值,是一个字段内容(用字符串来表示,以‘\0’结尾);
columnName,与columnValue 是对应的,表示这个字段的字段名称。
返回值:执行成功返回SQLITE_OK,否则返回其他值
int sqlite3_close(sqlite3 *ppDb);
功能:关闭数据库。
参数:ppdb:数据库句柄。
void sqlite3_free(void * errMsg );
功能:释放存放错误信息的内存空间
参数:errMsg: 返回错误信息
int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
int *pnRow, /* Number of result rows written here */
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
功能:非回调来执行sql语句
db:数据库句柄
zSql:要执行的SQL语句
pazResult:查询结果,一维数组
pnRow:查询出多少条记录(查出多少行)
pnColumn:多少个字段(查出多少列)
pzErrmsg:错误信息
返回值:执行成功返回SQLITE_OK,否则返回其他值
注:pazResult的字段值是连续的,是以为数组不是二维数组,从第0索引到第 pnColumn- 1索引都是字段名称,从第 pnColumn索引开始,后面都是字段。
sqlite3_free_table(char ***pazResult);
参数:pazResult:查询结果,一维数组
常用函数的介绍