Linux软件编程学习笔记(十三)——数据库

一、什么是数据库

数据库是一种能够对大量数据进行增、删、改、查管理的软件。

简单理解:

复制代码
程序
 ↓
数据库
 ↓
保存大量数据
 ↓
增、删、改、查

例如学生信息:

复制代码
学号     姓名     年龄
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
相关推荐
zyseo84 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai6 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o6 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
这个DBA有点耶7 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户6279947182628 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹8 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿8 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪8 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛8 小时前
导出mysql数据结构
数据库·mysql
GlobalTradercrb8 小时前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo