一、数据库简介
1.数据data
能够输入计算机并能被计算机程序识别和处理的信息集合
2.数据库Database
数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合
3.文件管理和数据库管理的区别
文件优点:
数据可长期保存
能大量存储数据
文件缺点:
数据冗余度大,数据一致性、完整性难以维持
数据与程序缺乏高度独立性
数据库:
数据组织结构化
数据冗余度小,易扩充
具有较高的数据与程序之间的独立性
统一的数据控制
二、SQLite3
安装数据库
sudo apt-get install sqlite3
打开数据库
sqlite3
数据库命令
.help:打开数据库帮助文档
.databases:列出数据库名称及其依附文件
.tables:显示数据库有哪些表
.schema:显示数据库中表具体结构
.quit:退出数据库
SQLite3语法
SQLite3数据类型
SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。
您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。
存储类 | 描述 |
---|---|
NULL | 值是一个 NULL 值。 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储。 |
SQLite 的存储类稍微比数据类型更普遍。INTEGER 存储类,例如,包含 6 种不同的不同长度的整数数据类型。
SQLite3创建表
例:CREATE TABLE database_name.table_name( column1 datatype PRIMARY KEY(one or more columns), column2 datatype, column3 datatype, ..... columnN datatype, );
创建操作:create table stu (id int primary key not null,name text,score real);
主键(primary key not null)必须唯一,不能重复,并且不能为空
SQLite3删除表
删除操作:drop table stu;
SQL语句(增删查改)
insert
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行
全部插入:sqlite> insert into stu values(1,'zhangsan',78);
部分插入:sqlite> insert into stu (id,name)要插入的列名 values(2,'lisi')对应列的数据;
select
查询表:select * from stu;//表名:stu
精准查询:select * from stu where name = 'zhangsan';//查询名字为张三的
模糊查询:select * from stu where score > 75;//查询成绩大于75的
多条件查询:select * from stu where score > 60 and name = 'zhangsan';
升序查询:select * from stu order by score asc;//asc升序
降序查询:select * from stu order by score desc;//desc降序
update
修改:update stu set score = 66 where name = 'wang';//将姓名为wang的成员成绩改为66;where后的内容为要修改的对象,where前表示要修改的内容
修改:update stu set name = 'wang',score = 69 where id = 4;//将id为4的成员的name和score的内容修改;
delete
SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
删除单行:delete from stu where id = 5;//删除id为5的整行
删除多行:delete from stu where id = 5 and name = 'zhangsan';
alter
用来在已有的表中添加一个新的列
添加一列:alter table stu add column address text;//添加一列名为address,属性为text的列
c接口SQLite3
打开数据库函数
sqlite3_open(const char *filename, sqlite3 **ppDb)
//参数1:数据库名
//sqlite3_exec(sqlite3 *db),
//参数1:句柄的指针
//参数2:sql语句
//参数3:回调函数 函数指针 //参数3.4 查询的时候用,其他时候可以忽略
//参数4:给回调函数传参
//参数5:存储错误信息,不存则NULL
//返回值:失败返回0,成功返回
Select
3.sqlite3_get_table
4.sqlite_close