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
相关推荐
L·S·P6 小时前
25MB 管理 100+ 种数据库:开源轻量客户端 DBX 介绍与上手
数据库·mysql·开源·database·dbx
笃行3508 小时前
KingbaseES KSQL Developer 的连接管理、数据处理与对象管理
数据库
ha_lydms8 小时前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
Shadow(⊙o⊙)9 小时前
MySQL内置函数
数据库·mysql
笃行3509 小时前
金仓 KingbaseES PL/SQL 开发全攻略:异常处理、数据类型、调试优化与过程语句
数据库
快乐的木子李10 小时前
mysql-26.7.0-linux26.7.0下载安装
数据库·mysql
excel11 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
知行产研11 小时前
易控智驾:毛利率跃升17.2个百分点,矿山无人驾驶从“规模换增长“迈入“盈利拐点“
数据库·mysql
千里码aicood12 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
饺子大魔王的男人12 小时前
Redis 内存和连接异常怎么排查?用 redis_exporter 搭一套可远程抓取的监控链路
数据库·redis·bootstrap