数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。
数据库管理系统的特点:1.面向应用,2.记录之间没有联系,3.最小存储单位是数据记录
数据库系统的三级模式结构:外模式,内模式,模式
外模式:和人交互,属于用户模式,模式的子集
模式:当前数据库内所有资源的一种表示。(概念性)
内模式:数据库在内部的物理存储方式。(物理级)
一个数据库只有一个内模式
元组:一行就是一个元组,对应一个记录
属性:一列就是一条属性,及字段
域:属性的取值范围
关系的候选键与主键
某一列的值能唯一标识一行,则这一列为候选键。从候选键中选出一列来确定某行,称该候选键为主键
候选键有多个,主键只有一个
外键:若表R1中的一列对应表R2中的主键,则该列成为表R1的外键
数据库系统在三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统的数据能够具有较高的逻辑独立性和物理独立性。
v1.数据库文件格式:test.db
sqlite3 test.db
sqlite> create table test (id integer primary key, value text);
创建表名为test的表,primary key 为主键
名为id的主键列:该列默认具备自动增长的属性;
名为value的简单文本域;
插入操作:
vsqlite> insert intotest (id,value) values(1,’zhang’);
vsqlite> insert intotest (id,value) values(2,’wang’);
vsqlite> insert intotest (value) values(‘liang’);
vsqlite> insert intotest (value) values(‘liang’);
查看数据:
vsqlite> select * from test;
改表名,增加字段
alter table tablename | rename to "新表名"
增加字段
add column number(字段名) interger(类型)
删除记录
delete from tablename where '条件'
删除字段
1 create table temp as select id,name from mytable;
2 drop table mytable;
3 alter table temp rename to mytable;
退出:
vsqlite> .exit
v
.database 查看数据库
.tables 查看表
.schema 查看表结构
.mode column 换格式
.head on 开表头
.q 退出
vsqlite常用类型
VARCHAR(n)
|
CHAR(n) |
INTEGER
|
REAL
|
BLOB
|
TEXT
|
DATA
|
TIME
|
字符长度<=n |
字符长度=n |
整型
|
实型
|
输入类型不做转换
|
文本
|
日期
|
时间 |
vselect格式
SELECT<目标列名序列>
FROM<数据源>
[WHERE <检索条件表达式>]
[GROUP BY <分组依据列>]
[HAVING <分组提取条件>]
[ORDER BY<排序依据列>]
vc语音中使用sqlite数据库的方法
vint sqlite3_open(const char* fileName, sqlite3** ppDB);
v函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。
v输入参数:fileName,要打开的数据库名,字符串
v输出参数:ppDB,返回指向创建的数据库的指针;
v返回值:执行成功返回SQLITE_OK,否则返回其他值;
v函数原型:
vint sqlite3_close(sqlite3* pDB);
v函数功能:关闭一个打开的数据库;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:执行成功返回SQLITE_OK,否则返回其他值
v函数原型:
vconst char *sqlite3_errmsg(sqlite3* pDB);
v函数功能:获取最近调用的API 接口返回的错误说明,这些错误信息UTF-8的编码返回,并且在下一次调用任何SQLite API 函数时被自动清除;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:错误说明的字符串指针
v函数原型:
vint sqlite3_errcode(sqlite3* pDB);
v函数功能:获取最近调用的API 接口返回的错误代码;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:错误代码
v函数原型:
vint sqlite3_exec(sqlite3* pDB, const char *sql, sqlite_callback callback, void*para, char** errMsg);
v函数功能:编译和执行SQL 语句,查询的结果返回给回调函数callback
v输入参数:pDB,数据库指针;
sql,待执行的SQL 语句字符串;
callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert 或者delete 操作时),可以输入NULL;
para,传给回调函数的参数,可以为NULL;
v输出参数:errMsg,返回错误信息,注意是指针的指针。
v返回值:执行成功返回SQLITE_OK,否则返回其他值
v回调函数sqlite_callback介绍:
vtypedefint (*sqlite_callback)(void* para,int columnCount,char** columnValue,char** columnName);
v函数功能:由用户处理查询的结果
v输入参数:para,从sqlite3_exec()传入的参数指针;
columnCount, 表的列数;
columnValue,列值(多个);
columnName,列名。
v输出参数:无
v返回值:执行成功返回SQLITE_OK,否则返回其他值
回调函数返回值必须是 return 0;
不使用回调函数的数据库操作API:
v函数原型:
vint sqlite3_get_table(sqlite3* pDB, const char *sql,char ***pResult, int * rowCount,int * columnCount, char** errMsg);
v函数功能:执行SQL 语句,通过一维数组返回结果;一般用于数据记录查询
v输入参数:pDB,打开的数据库句柄;
sql,SQL指令;
v输出参数:rowCount,查出行数;
columnCount,查出列数;
errMsg,返回错误信息;
pResult,在内存中存放查询结果,第一行为表头,通过一维数组方式访问二维数组
返回的row不算表头,显示时row 要+1;
v返回值:执行成功返回SQLITE_OK,否则返回其他值
v函数原型:
vvoid sqlite3_free_table(char **result);
v函数功能:释放查询结果占用的内存;
v输入参数:result,通过函数sqlite3_get_table()查询到的记录结果
v输出参数:无
v返回值:无
v
函数原型:
v
int
sqlite3_prepare(sqlite3*
pDB
,
const
char*
sql
,
int
maxSqlLen,sqlite3_stmt**
ppStmt
,
const
char**
pTail
);
v
函数功能
:
将
SQL
语句编译成
SQLite
能够识别的二进制字节码(也即
SQL
声明,
statement
),结果保存在
ppStat
中。注:输入的参数中只有第一个
SQL
语句会被编译。
SQL
语句间通过分号‘;’分隔。
v
输入参数:
pDB
,数据库句柄;
sql
,待编译的
SQL
语句字符串;
maxSqlLen,SQL语句的最大长度,如果此值小于0,SQLite 会自动计算字符串长度;
v
输出参数:
ppStmt
,编译后
SQL
语句存放位置;
pTail
,未编译的
SQL
语句的起始位置,一般输入
NULL
就可以了。
v
返回值:执行成功返回
SQLITE_OK
,否则返回其他值