一、什么是数据库
数据库是一种能够对大量数据进行增、删、改、查管理的软件。
简单理解:
程序
↓
数据库
↓
保存大量数据
↓
增、删、改、查
例如学生信息:
学号 姓名 年龄
1001 张三 20
1002 李四 21
1003 王五 22
程序可以通过 SQL 语句对这些数据进行操作。
二、数据库的分类
课程中主要介绍两种数据库。
1. 关系型数据库
关系型数据库的数据通常按照表格的形式进行组织。
常见的关系型数据库:
Oracle
MySQL
SQLite
课程文档中将关系型数据库列为一类,并列出了 Oracle、MySQL、SQLite。
例如:
学生表
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | 张三 | 20 |
| 2 | 李四 | 21 |
+------+--------+------+
2. 非关系型数据库
非关系型数据库一般不采用传统的关系表结构。
课程文档中列举:
Redis
NoSQL
并将 Redis 作为内存数据库进行介绍。
三、SQLite数据库
本次课程重点学习的是:
SQLite
SQLite 是一种轻量级关系型数据库。
它的特点是使用简单,不需要单独启动数据库服务器,数据库通常就是一个文件。
例如:
student.db
里面可以保存我们的数据表。
四、SQLite基本操作
进入 SQLite:
sqlite3 test.db
进入以后可以使用 SQLite 命令。
1. 查看数据库
.databases
功能:
查看当前数据库以及相关文件。
2. 查看数据表
.tables
功能:
查看当前数据库中的表名称。
3. 查看表结构
.schema
也可以指定表:
.schema student
功能:
查看表的创建结构。
4. 设置表头
.headers on
打开列名称显示。
关闭:
.headers off
5. 设置数据显示格式
.mode column
可以让查询结果按照列的形式显示。
课程文档中列出了:
.tables
.databases
.headers on/off
.mode
.schema
这些 SQLite 常用命令。
五、SQLite数据类型
课程中主要介绍4种数据类型:
INTEGER
REAL
TEXT
BLOB
1. INTEGER
表示整数。
例如:
20
100
-5
2. REAL
表示实数、小数。
例如:
3.14
99.5
3. TEXT
表示文本、字符串。
例如:
'张三'
'hello'
4. BLOB
用于保存二进制数据。
例如:
图片
音频
文件
等二进制内容。
六、创建数据表
使用:
CREATE TABLE
例如创建学生表:
CREATE TABLE student
(
id INTEGER,
name TEXT,
age INTEGER
);
表示创建一个 student 表:
student
├── id
├── name
└── age
七、插入数据
使用:
INSERT INTO
例如:
INSERT INTO student
VALUES (1, '张三', 20);
再插入一条:
INSERT INTO student
VALUES (2, '李四', 21);
现在表中有:
id name age
1 张三 20
2 李四 21
课程文档将 insert into 作为基本 SQL 语句之一。
八、查询数据
使用:
SELECT
查询所有数据:
SELECT * FROM student;
结果:
1|张三|20
2|李四|21
也可以只查询指定字段:
SELECT name FROM student;
结果:
张三
李四
九、WHERE条件查询
WHERE 用来设置查询条件。
例如:
SELECT * FROM student
WHERE age = 20;
表示:
查询年龄等于20岁的学生。
查询结果:
1|张三|20
例如:
SELECT * FROM student
WHERE id = 2;
表示查询 id 为2的数据。
课程文档中也将 where 子句和匹配条件作为基本内容。
十、基本SQL操作总结
数据库最重要的就是:
增
↓
INSERT
删
↓
DELETE
改
↓
UPDATE
查
↓
SELECT
本节课程重点学习的基本 SQL 包括:
CREATE TABLE
INSERT INTO
SELECT
WHERE
十一、一个完整的SQLite操作示例
首先创建数据库:
sqlite3 student.db
创建表:
CREATE TABLE student
(
id INTEGER,
name TEXT,
age INTEGER
);
插入数据:
INSERT INTO student VALUES (1, '张三', 20);
INSERT INTO student VALUES (2, '李四', 21);
INSERT INTO student VALUES (3, '王五', 22);
查询全部:
SELECT * FROM student;
查询指定条件:
SELECT * FROM student WHERE age = 21;
查看表:
.tables
查看表结构:
.schema student
十二、数据库和C语言程序
在 Linux C 程序中,可以使用 SQLite 提供的接口操作数据库。
基本流程:
C程序
↓
打开SQLite数据库
↓
执行SQL语句
↓
获取查询结果
↓
处理数据
↓
关闭数据库
例如:
sqlite3 *db = NULL;
sqlite3_open("student.db", &db);
/* 执行SQL语句 */
sqlite3_close(db);
这样就可以让 C 程序和 SQLite 数据库进行交互。
十三、本节重点
1. 数据库
用来对大量数据进行增、删、改、查管理。
2. 两种数据库
关系型数据库
↓
Oracle、MySQL、SQLite
非关系型数据库
↓
Redis、NoSQL
3. SQLite
轻量级
关系型数据库
数据库文件
4. SQLite常用命令
.tables
.databases
.headers on
.mode column
.schema
5. 常见数据类型
INTEGER
REAL
TEXT
BLOB
6. 基本SQL
CREATE TABLE
INSERT INTO
SELECT
WHERE