哪个网站专注做微信模板,app开发公司有哪些,对做网站有什么建议,国家政务服务平台小程序入口一、基本概念
数据#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合 数据库#xff1a;长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS#xff1a;位于用户与操作系统之间的一层数据管理软件#xff0c;用于操纵和管理数据库
二、安装
在线…一、基本概念
数据能够输入计算机并能被计算机程序识别和处理的信息集合 数据库长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS位于用户与操作系统之间的一层数据管理软件用于操纵和管理数据库
二、安装
在线安装: sudo apt-get install sqlite3 安装数据库软件 sudo apt-get install libsqlite 安装数据库的函数库 离线安装 sudo dpkg -i sqlite3_3.22.0-1ubuntu0.4_amd64.deb 离线安装数据库软件 sudo dpkg -i libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb 离线安装数据库的函数库
注离线安装包可以从官网获取 https://www.sqlite.org/
验证是否安装好 输入sqlite3进入下面的界面说明安好了
三、使用
一系统命令
不同的数据库的系统命令不一样取决于数据库的开发者
.help 查看帮助手册
.exit 退出数据库程序
.quit 退出数据库程序 使用 .q 也可以
.open 打开数据库文件
.tables 列出数据库中所有的数据表
.schema 查看表结构(建表语句)
.headers on|off 查询的结果是否显示表头信息 on 显示 off 不显示注意sqlite3数据库需要先打开数据库文件再操作否则所有的操作都是在内存上的数据不会被保存在硬盘当数据库程序退出时数据就丢了。
打开数据库文件的方式 方式1先使用sqlite3命令进入到sqlite3数据库的终端 然后在终端上使用.open 数据库文件名 的方式打开数据库文件 方式2也可以直接使用 sqlite3 数据库文件名 的方式打开数据库文件并进入数据库的终端
数据库文件名只要符合命名规范即可但是一般我们书写时都以.db结尾方便识别。
二关系型数据库表 一个数据库文件中可以有多个数据表且每个数据表的结构可以不一样
三sql语句
只要是关系型数据库sql语句都通用sql语句不能以 “.” 开头结尾要加 “;”sql语句中关键字不区分大小写但是一般写成大写方便区分sql语句中的字符串需要用单引号或者双引号引起来
1. 建表语句
新创建的数据库文件中是没有数据表的需要自己创建 //注意新创建的数据库文件中是没有数据表的 需要我们自己创建CREATE TABLE 表名(字段名1 字段类型1, 字段名2 字段类型2, ...);字段类型整形 INT 或者 INTEGER字符串 CHAR 或者 TEXT例如CREATE TABLE student(id INT, name CHAR, score INTEGER);2. 插入语句 //sql语句中的字符串需要用 单引号 或者 双引号 引起来//这种插入方式必须从左到右给每个字段都赋值INSERT INTO student VALUES(1001, zhangsan, 98);//如果只想给指定的字段赋值 可以用下面的用法INSERT INTO student(id, name) VALUES(1003, wangwu);3. 查询语句 //查询所有记录的所有字段的内容//其中 * 表示 所有字段SELECT * FROM student;//查询表中所有记录的 name 和 score 字段SELECT name,score FROM student;//查询表中所有namezhangsan 的记录的所有字段SELECT * FROM student WHERE namezhangsan;//多个条件 可使用 AND 或者 OR 连接// AND 并且 OR 或者//查询表中所有 namezhangsan并且score98 的记录的所有字段SELECT * FROM student WHERE namezhangsan AND score98;//查询表中所有namezhangsan的记录的 id 字段SELECT id FROM student WHERE namezhangsan;//对查询结果可以排序// ORDER BY 字段名 根据哪个字段排序// ASC 升序 DESC 降序 不写时 默认是升序//查询表中所有namezhangsan的记录的所有字段 且结果根据成绩降序排序SELECT * FROM student WHERE namezhangsan ORDER BY score DESC;4. 更新语句 //把所有id1005的记录的 score 字段的值都改成100UPDATE student SET score100 WHERE id1005;//一次该多个字段时 中间用 逗号 分隔UPDATE student SET score80,namelihua WHERE id1007;//注意即使没有满足条件的记录 语句执行也不会报错 只不过没有现象发生注即使没有满足条件的记录语句执行也不会报错只不过没有现象发生
5. 删除语句 //删除表中所有 namezhangsan 或者 id1003 的所有记录DELETE FROM student WHERE namezhangsan OR id1003;//注意即使没有满足条件的记录 语句执行也不会报错 只不过没有现象发生注即使没有满足条件的记录语句执行也不会报错只不过没有现象发生
6. 删除表 DROP TABLE 表名;7. 对列的操作一般不会用到
添加一列ALTER TABLE student ADD COLUMN sex CHAR;删除一列sqlite3 不允许直接删除一列1)先创建一张新表CREATE TABLE temp AS SELECT id,name FROM student;2)删除原来的旧表DROP TABLE student;3)对新表重命名ALTER TABLE temp RENAME TO student;8. 主键
主键 PRIMARY KEY 在建表时可以自定某一个字段为 主键 然后在后插入的过程中CREATE TABLE student(id INT PRIMARY KEY, name TEXT, score INT);注主键必须保持唯一 如果插入重复主键的记录 会报错主键冲突
四、常用的API接口函数
使用sqlite3数据的函数 编码时 需要加头文件 #include sqlite3.h 编译时,需要连接sqlite3数据库的库 -lsqlite3
一API接口函数
1. 打开和关闭数据库文件
int sqlite3_open(const char *filename,/* Database filename (UTF-8) */sqlite3 **ppdb /* OUT: SQLite db handle */ );功能打开一个数据库 存在就直接打开 不存在就新建并打开参数filename 数据库文件的路径和名字ppdb 操作数据库的指针句柄。返回值成功 SQLITE_OK失败 error_codeint sqlite3_close(sqlite3 *db);功能关闭一个数据库2. 获取错误信息描述
const char *sqlite3_errmsg(sqlite3 *db);功能获取数据库句柄db对应的最后一次错误信息描述3. 执行sql语句 int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **),void *arg, char **errmsg);功能执行一条sql语句参数db 数据库的句柄指针sql 将要被执行sql语句callback 回调函数只有在查询语句时才会使用回调函数arg 为callback 传参的只有在查询语句时才给回调函数传参errmsg 错误信息的地址如果使用了 需要手动调用 sqlite3_free 来释放空间 防止内存泄漏返回值成功 SQLITE_OK出错 errcode 错误码补充释放sqlite3_exec第五个参数占用的空间void sqlite3_free(void *p);sqlite3_exec 函数的回调函数 callback int callback(void *arg, int ncolumn, char **f_value, char **f_name)功能得到查询结果参数arg 为回调函数传递参数使用的ncolumn 记录中包含的字段的数目f_value 包含每个字段值的指针数组f_name 包含每个字段名称的指针数组返回值成功 0出错 非0注程序中写sql语句结尾无需加分号因为字符串结尾有\0来标识字符串结束。IF NO EXISTS 标识如果存在就使用不报错
CREATE TABLE IF NOT EXISTS student(id INT PRIMARY KEY, name CHAR, score INT)4. 查询数据库的函数
查询数据库的函数int sqlite3_get_table(sqlite3 *db, const char *zSql,char ***pazResult, int *pnRow, int *pnColumn, char **pzErrmsg);功能查询数据库它会创建一个新的内存区域来存放查询的结果信息参数db 数据库操作句柄sql 数据库的sql语句pazResult 查询的结果nRow 行数--不包含字段名nColumn 列数errmsg 错误消息 //和前面一样 如果使用了 要记得使用 sqlite3_free 释放空间返回值成功 0出错 errcode释放 sqlite3_get_table 函数产生的结果集void sqlite3_free_table(char **result)