数据库: DBMS
分类:
大型 中型 小型
oracle ms-sqlserver access
db2 mysql sqlite3
嵌入式数据库: sqlite3
特点:
开源 体积小 可移植 容量大2T
总代码行约 3万行C 语言代码;
sqlite3的安装:
1、在线安装: sudo apt-get install sqlite3
2、源码安装:
www.sqlite3.com
tar -zxvf sqlite-autoconf-3081002.tar.gz
cd sqlite-autoconf-3081002
./configure
make
make install
判断是否安装成功:
sqlite3 --version
3.8.10.2 2015-05-20 18:17:19 2ef4f3a5b1d1d0c4338f8243d40a2452cc1f7fe4
3、数据库的简单使用:
sqlite3 test.db ===>创建并打开test数据库;
sqlite3> 数据库终端提示符号,表示进入数据库管理界面
sqlite3> .help 显示当前数据库的所有默认命令
sqlite3> .q 退出
如果出现 ...> 表示命令尚未输入完毕,用 ';' 结束命令
4、数据库设计:
4.1 创建数据库
sqlite3 xxx.db
touch xxx.db
4.2 创建数据库表 ===》行列式表格,可以创建多个;
首先登录数据库 sqlite3 xxx.db
使用SQL 语句创建表:
create table 表名(列名 类型, 列名 类型,....);
eg:
sqlite3> create table user(id int,name text, pass text);
注意:SQL语句必须以";"结尾表示语句结束;
数据类型常用的有: int 整形 real 浮点数
text 文本 blob 二进制
比如在test表里加个age字段,类型为int
alter table test add age int
====》SQL 语句: 结构化查询语言 ==》关系型数据库的通用操作语言;
====》.tables : sqlite3中所有以.开头的命令都是内置系统命令,否则
按照SQL语句执行;
.schema user 命令是列出表结构的系统内置命令;
4.3 表的增加 删除 修改 查询操作:SQL 语句
增:insert into 表名(列名,列名,...) values (值1,值2,...);
eg: insert into user(id,name,pass) values (1,"zhangsan","123456");
insert into user values(2,"abc",123);
insert into user(id) values (3);
//主键 自动增长
create table login (id INTEGER PRIMARY KEY AUTOINCREMENT,name text);
查:select 列名 from 表名称 [条件];
eg: select * from user;
select id from user;
select id,pass from user;
select * from user where id = 1;
select * from user where id > 2;
select * from user where id > 1 and name = "abc";
select * from user where id < 10 or id > 20;
思考题:
设计一个学生表,插入若干个学生记录,使用select语句
查询该表中成绩大于60的所有学生的姓名;
select name from stu where score >=60;
修:update 表名称 set 列名 = 值 [条件];
eg:
update user set pass = "8888" where id = 1;
update user set pass = "777" ; ///注意 会全表修改为777密码
update user set pass = "666" where id>3; ///注意:会修改所有>3的id记录数据
update user set pass = "666" ,name = "abc" where id = 1;
删: delete from 表名称 [条件];
eg: delete from user where id = 1; ///正常删除一行记录
delete from user where id >3;
delete from user where id > 3 and score <60;
delete from user; ///注意:全表数据清空
drop table user; ///注意:表删除
数据库的表的增、删、修、查:基本格式:
insert
delete
update
select
=======>SQL 语法手册;
数据库的表批量处理:数据库脚本 ===》xxx.sql
1、数据库的脚本导出:
sqlite3 xxx.db .dump > xxx.sql
2、数据库的脚本导入:
sqlite3 xxx.db < xxx.sql
练习:
编写一个数据库脚本,可以一次向指定的学生表
中插入100 条不同记录并可以手工在数据库中查看;
mysql 支持如下变更
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
=============================================================
sqlite3 的编程接口:
1、sqlite3 是一个三方库形式引入系统,所以必须有如下两个规则:
1.1 编写代码必须包含其默认的库头问: #include <sqlite3.h>
1.2 编译代码必须加载其默认的库支持: gcc xxx.c -l sqlite3
2、sqlite3对外提供的接口框架如下
打开数据库表 ===》操作表(增,删...) ===>关闭数据库
sqlite3_open() sqlite3_get_table() sqlite3_close()
sqlite3_exec()
打开:
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:该函数可以用于打开指定路径+名称的sqlite3数据库;
参数:filename 要打开的数据库路径+名称;
ppdb 打开之后的数据库句柄;
返回值:成功 0
失败 -1;
关闭:
int sqlite3_close(sqlite3 *db);
功能:关系已经打开的数据库;
参数:db要关闭的数据库句柄
返回值: 成功 0
失败-1;
操作:查询
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 */
);
功能:该函数主要用于对数据库中指定表的查询操作;
参数:db 已经打开的数据库句柄 == sqlite3_open的参数2 的值;
zSql 表示要在数据库中执行的sql语句,一般是select语句;
pazResult 结果集,表示最终查询的结果地址;
pnRow 结果集中数据的行个数;
pnColum 结果集中数据的列个数;
pzErrmsg 查询异常的信息记录;
返回值:成功 0
失败 -1;
练习:
根据sqlite3_get_table 函数的例子编写一个用户登录验证的测试
程序,如果用户输入不正确提示重新输入,并只有三次尝试机会;
select * from user where name ='xxx' and pass = 'xxx' ;
操作:通用
int sqlite3_exec(
sqlite3*db, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*arg,int,char**,char**), /* Callback function */
void * arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:该函数用于数据库中所有的常规操作,主要用于可能改动数据的
增加 删除 修改操作。
参数: db 要执行操作的数据库句柄;
sql 要执行的sql操作语句,主要是 insert delete update
callback 回调函数指针,只用于查询的时候生效。
arg 回调函数的第一个参数;
errmsg 执行sql的异常信息;
返回值:成功 0
失败-1
练习:
使用sqlite3_exec函数完成修改和删除功能的测试效果。
可以完成指定记录的修改和删除;
回调函数:callback 用于sqlite3_exec执行查询语句的是调用;
int (*callback)( void*arg,int num ,char** va,char**na), /* Callback function */
参数:arg 由外部sqtlie3_exec的传入的参数;
num 执行sql语句的结果个数;
va 执行sql之后的数据值
na 执行sql之后的数据列名称
返回值: 成功 0
失败 -1;
注意:该回调函数在每查询到一条记录就执行一次;
================================================================
1、使用sqlite3的接口函数完成一个用户注册功能模块设计
要封装成函数,在独立的main中调用测试;
2、使用sqlite3的接口函数完成一个用户登录验证功能模块设计
要封装成独立函数,在独立的main中调用测试;
3、将一个文本文件 dict.txt 的内容,全部导入到数据库中的特定
表中,比如: t_word(id int , name text, value text);
4、设计一个在线英英词典系统,要求必须网络程序,可以有一个
tcp并发服务器端,可以接入多个客户端链接请求,每个客户端
都可以同时向服务器发出单词翻译的请求,服务器根据客户端的
请求查询数据库并返回查询结果。
数据库笔记
最新推荐文章于 2024-09-08 16:10:12 发布