1.数据库
- 高效对大批量数据管理的一种软件
2.分类
- 关系型数据库
- Oracle
- Mysql
- SQLServer
- SQLite
- 非关系型数据库
- Redit
3.SQLite数据库
- 所有数据库支持:SQL编程语言
4. SQLite数据库的安装
- 虚拟机网络连通
- apt-get工具集配置成功
- 安装SQlite软件
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
sudo apt-get install sqlitebrowser
navica
- 运行sqlite3软件
sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .quit
5.Sqlite3命令
- databases
查看数据库中的信息
- tables
查看表名称
- header(s) ON|OFF
开启/关闭头部显示
- mode MOOE
设置数据的显示格式
MOOE:csv、column、html、insert、line、list、tabs、tc
- schema?TABLE?
显示创建表时的格式
- quit
退出
6.SQL语句
- create table---创建表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
ex:create table student (学号 integer primary key, 姓名 text, 性别 text,年龄 integer, 成绩 integer)
- drop table---删除数据表
drop table 表名称;
ex:drop table student;
- insert into---插入
INSERT INTO 表名称 VALUES (值1, 值2,....)->NULL.自动增长
ex:
insert into student values (1002, "李四", "女", 13, 80);
insert into student (学号,姓名,性别) values (1009, "熊大", "男");
- dalete from---删除
DELETE FROM 表名称 WHERE 列名称 = 值
ex:
delete from student where 姓名 = "赵五";
- update---修改
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
ex:
update student set 年龄=16,成绩=85 where 姓名="熊大";
- select---选取
SELECT 列名称 FROM 表名称
ex:
select * from student;
select 学号,成绩 from student;
select 姓名 from student where 成绩<60 and 性别="男";
select 姓名 from student where 姓名 like "%田%"
- order by---排序
ORDER BY 语句用于根据指定的列对结果集进行排序
ex:
select 学号,姓名 from student where 成绩 > 60 order by 成绩 desc;
select 学号,姓名 from student where 成绩 > 60 order by 成绩 asc;
7.SQL类型
- INTEGER
- REAL
- TEX
8.多表联合查询
- cross join---交叉连接
select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程 from 学生信息 cross join 学生课程;
- inner join---内连接
select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 inner join 学生成绩 on 学生信息.学号 = 学生成绩.学号;
- left outer join---左连接
select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 left outer join 学生成绩 on 学生信息.学号 = 学生成绩.学号;
- 三表联合查询
select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程, 学生成绩.成绩 as 成绩 from 学生信息 left outer join 学生成绩 on 学生信息.学号 = 学生成绩.学号 left outer join 学生课程 on 学生成绩.课程编号 = 学生课程.编号 where 成绩 > 60 order by 成绩 desc;
9.数据库编程
- sqlite3_open
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打开数据库获得操作数据库的句柄
参数:
filename:打开文件的路径
ppDb:存放数据库句柄空间的首地址
返回值:
成功返回SQLITE_OK
失败返回错误码,可以通过sqlite3_errmsg来获得其对应的英文
- sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3*);
功能:传入sqlite3的句柄返回句柄出错的英文字
- sqlite3_close
int sqlite3_close(sqlite3*);
功能:关闭sqlite3连接句柄
- sqlite3_exec
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated*/
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument tocallback */
char **errmsg /* Error msg writtenhere */
);
功能:执行一条SQL语句
参数:
sqlite3*:数据库句柄
sql:要执行的sql语句
callback:只有select才会用到,执行找到匹配的数据后的操作
对callback回调函数的传参
errmsg:存放出错字符串空间的首地址
返回值:
成功返回SQLITE_OK
失败返回错误
- sqlite3_free
void sqlite3_free(void*);
功能:释放申请的空间

3569

被折叠的 条评论
为什么被折叠?



