【1】数据库基本概念
数据(Data)
能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)
数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合
常用的数据库
1)大型数据库Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。IBM 的DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包Linux在内的一系列平台。中型数据库Server是微软开发的数据库产品,主要支持windows平台。
2)小型数据库mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,2008年被Sun公司收购,开放源码。
3)基于嵌入式的数据库
基于嵌入式Linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDBFirebird是关系型数据库,功能强大,支持存储过程、SQL兼容等SQLite关系型数据库,体积小,支持ACID事务Berkeley DB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中 eXtremeDB是内存数据库,运行效率高
SQLite3基础
SQLite的源代码是C,其源代码完全开放。SQLite第一个Alpha版本诞生于2000年5月。 他是一个轻量级的嵌入式数据库。
SQLite有以下特性:
-
零配置一无需安装和管理配置;
-
储存在单一磁盘文件中的一个完整的数据库;
-
数据库文件可以在不同字节顺序的机器间自由共享;
-
支持数据库大小至2TB;
-
足够小,全部源码大致3万行c代码,250KB;
-
比目前流行的大多数数据库对数据的操作要快;
安装方式
在线安装方式:
1 | 1.确保虚拟机能联网 |
安装成功后,终端输入以下指令,判断是否安装成功:
1 | sqlite3 my.db |
出现下列语句,标识安装成功,版本不一样无所谓,只要出现 sqlite> 即可
1 | SQLite version 3.7.2 |
输入 ".quit "退出数据库
1 | linux@linux:~$ sqlite3 my.db |
【2】sqlite3命令语句
sqlite3不区分大小写;参考网址:https://m.runoob.com/sqlite/
1. sqlite数据库创建
1 | sqlite3 sq.db |
2.系统命令
1 | 系统命令,需要以 . 开头,不需要以 ; 结尾 |
3. sql语句
以分号(;)结尾;不区分大小写;
没有char*类型,用char类型代替
记录:是某一行信息
字段:某一列信息
1)创建表格
1 | create table 表名 (字段名 数据类型, 字段名 数据类型); |
2)删除表格
1 | drop table 表名; |
3)插入记录
1 | 字符串类型可以使用单引号,也可以使用双引号 |
4)查看记录
1 | .header on 打开表头 |
5)修改记录
1 | update 表名 set 字段=数值 where 限制条件; |
6)删除记录
1 | delete from 表名 where 限制条件; |
7)主键(primary key)
1 | primary key 主键; |
8)拷贝
1 | 从a中拷贝所有数据到b中: |
9)增加列
1 | alter table 表名 add column 字段名 数据类型; |
10)修改表名
1 | alter table 旧表名 rename to 新表名; |
11)修改字段名(列名)
1 | 不支持直接修改列名 |
12)删除列
1 | 不支持直接删除列; |
练习:
1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。
2> 添加三条工人信息(可以完整信息,也可以非完整信息)
3> 修改某一个工人的薪资(确定的一个)
4> 展示出工资在10000到20000之间的所有工人信息
5> 删除掉指定姓名工人的信息
6> 工厂倒闭,删除整个工人信息库
【3】sqlite3 API
1. 官网
https://www.sqlite.org/index.html
2. sqlite3的C - APIs
1 | 头文件: |
1)sqlite3_open
1 | int sqlite3_open( |
2)sqlite3_close
1 | int sqlite3_close(sqlite3*); |
3)sqlite3_errmsg
1 | const char *sqlite3_errmsg(sqlite3*); |
4)sqlite3_errcode
1 | int sqlite3_errcode(sqlite3 *db) |
5)sqlite3_exec
1 | int sqlite3_exec( |
6)回调函数
1 | int callback(void* arg,int cols,char** value_text,char** value_name) |
1 |
|
7)sqlite3_get_table
1 | int sqlite3_get_table( |
8)sqltie3_free_table
1 | void sqlite3_free_table(char **result); |
1 |
|
本章完