嵌入式数据库 |
您所在的位置:网站首页 › 嵌入式SQL语言的使用规定 › 嵌入式数据库 |
目录 数据库的基本概念和常用数据库 sqlite介绍 sqlite安装步骤 sqlite常用命令 sqlite3的C语言的API函数详解 sqlite3使用项目案例 数据库的基本概念和常用数据库数据库的基本概念: 数据库(Database):是一个按照规定格式存储数据的仓库。数据库管理系统(Database Management System,DBMS):是一种允许用户定义、创建、维护和控制访问数据库的软件系统。数据表(Table):是由行和列组成的二维表格,是数据库中的基本存储单元。字段(Field):表中列的属性,表示一个数据的特定部分。记录(Record):表中的一行数据。主键(Primary Key):表中唯一标识每个记录的字段。外键(Foreign Key):用于建立两个或多个表之间的关系。索引(Index):用于加快数据的检索速度,类似于书的目录。常用的数据库: MySQL:是一款免费开源的关系型数据库管理系统,被广泛应用于互联网应用领域。Oracle:是一款商业关系型数据库管理系统,具有高性能、高可靠和高安全性等优点。SQL Server:是微软公司开发的关系型数据库管理系统,适用于大型企业应用。MongoDB:是一款基于文档的NoSQL数据库,具有高可扩展性和灵活性。PostgreSQL:是一款开源的关系型数据库管理系统,具有高度的可扩展性和安全性。sqilte:是一个轻型的数据库系统,它不需要一个单独的服务器进程或操作系统,也不需要配置和管理等繁琐的工作,非常适用嵌入式开发。 sqlite介绍SQLite 是一个轻型的数据库系统,它不需要一个单独的服务器进程或操作系统,也不需要配置和管理等繁琐的工作。SQLite 主要包括以下几个概念: 数据库文件:SQLite 基于文件的方式进行存储,每个数据库对应一个文件,文件以 .db 为后缀名。数据库文件中包含了一个或多个表,表包含了多个数据行。 表:表是 SQLite 中的基本数据存储单位。一个表由多个字段组成,每个字段对应表中一列数据。 字段:表中的每个列称为一个字段,字段包含了数据的类型、长度等信息。 数据行:表中的每一行称为一个数据行,每个数据行包含了对应字段的数据。 主键:每个表都必须有一个主键,用来唯一标识表中的每行数据。主键可以是一个或多个字段的组合。在 SQLite 中,每个表可以自动创建一个名为 “rowid” 的隐藏字段作为主键。 SQL:SQL(Structured Query Language)是一种用于管理关系型数据库的语言。SQLite 也支持 SQL,可以使用 SQL 对数据库进行查询、插入、更新、删除等操作。 sqlite安装步骤以下是在Ubuntu上安装SQLite的步骤: 打开终端窗口。 通过以下命令更新Ubuntu软件包列表: sudo apt-get update安装SQLite软件包: sudo apt-get install sqlite3等待安装完成。 检查SQLite是否成功安装: sqlite3 --version如果SQLite版本号被显示出来,说明SQLite已经成功安装。 安装可视化工具 sudo apt-get install sqlitebrowser sqlite常用命令下面是SQLite常用的系统命令: .help:查询SQLite帮助信息。 .tables:列出当前数据库中的所有表。 .schema:列出指定表的架构。 .header on|off:打开或关闭输出的列头。 .mode MODE:设置输出模式,如:line、column、list。 .show:显示当前的设置参数。 .quit:退出SQLite命令行界面。 .backup FILENAME:备份数据库,将当前数据库备份到指定文件中。 .restore FILENAME:恢复备份的数据库。 .dump:将整个数据库导出为SQL脚本。 .timeout MS:设置命令的超时时间。 .echo on|off:打开或关闭命令行输出。 .explain on|off:打开或关闭查询计划的输出。 .separator STRING:设置输出分隔符。 .import FILE TABLE:将指定文件中的数据导入到指定表中。 .exit 退出. 注意:命令前面需要加一个英文的.,表示这是一个系统命令。 下面是sqlite常用的sql语句: 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype, ...); 插入数据:INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); 修改数据:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; 删除数据:DELETE FROM table_name WHERE condition; 查询数据:SELECT column1, column2, ... FROM table_name WHERE condition; 聚合函数:SELECT COUNT(column_name), AVG(column_name), SUM(column_name), MAX(column_name), MIN(column_name) FROM table_name; 排序:SELECT column1, column2, ... FROM table_name ORDER BY column_name [ASC|DESC]; 分组:SELECT column1, column2, ... FROM table_name GROUP BY column_name; 连接查询:SELECT column1, column2, ... FROM table_name1 INNER/LEFT/RIGHT JOIN table_name2 ON table_name1.column_name = table_name2.column_name; 子查询:SELECT column1, column2, ... FROM table_name WHERE column_name IN (SELECT column_name FROM table_name WHERE condition); sqlite3的C语言的API函数详解SQLite是一个轻量级的嵌入式数据库,它的API函数非常简单易用,以下是它的C语言API函数详解和参数定义: 1.sqlite3_open - 打开一个数据库 函数原型:int sqlite3_open(const char *filename, sqlite3 **ppDb); 参数说明: filename:要打开的数据库文件名。ppDb:指向sqlite3 *类型的指针的指针,用于存储打开的数据库的句柄。返回值: 成功返回SQLITE_OK,否则返回其他错误码。2.sqlite3_close - 关闭一个数据库 函数原型:int sqlite3_close(sqlite3 *db); 参数说明: db:要关闭的数据库句柄。返回值: 成功返回SQLITE_OK,否则返回其他错误码。3.sqlite3_exec是一个SQLite C API中的函数,它可以执行一个或多个SQL语句并返回结果,使用简单方便。 函数原型: int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be executed */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ );参数列表: sqlite3 *db:已打开的SQLite数据库句柄;const char *sql:要执行的SQL语句;int (callback)(void,int,char**,char**):回调函数指针(可选参数);void *:回调函数的第一个参数(可选参数);char **errmsg:如果出现错误,错误信息将被记录在这个指针指向的变量中。返回值: 如果执行成功,则返回 SQLITE_OK;如果执行出错,则返回错误代码,返回码的列表可以在文档中查找。使用方法: 下面是一个使用sqlite3_exec函数执行SELECT语句的示例: #include #include int main(int argc, char** argv) { sqlite3* db; char* sql; char* errmsg; int ret; sqlite3_stmt* stmt; const char* tail; const unsigned char* val; // 打开数据库 ret = sqlite3_open("test.db", &db); if (ret != SQLITE_OK) { printf("open database fail:%s\n", sqlite3_errmsg(db)); sqlite3_close(db); return -1; } // 执行查询语句,返回结果集 sql = "SELECT * FROM t_user"; ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg); if (ret != SQLITE_OK) { printf("exec sql fail: %s\n", errmsg); sqlite3_free(errmsg); sqlite3_close(db); return -1; } // 取出查询结果集的值并输出 while (sqlite3_step(stmt) == SQLITE_ROW) { val = sqlite3_column_text(stmt, 0); printf("%s\n", val); } // 释放资源 sqlite3_finalize(stmt); sqlite3_close(db); return 0; } #include #include int callback(void* data, int argc, char** argv, char** azColName) { std::cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |