深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式
数据库
- 深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式
- 一、SQLite 数据库全方位解析
- (一)创建与基本操作
- (二)数据存储与表结构设计
- (三)数据操作:增删改查
- (四)与 C 语言联合使用
- (五)防止 SQL 注入
- 二、Redis 数据库深度剖析
- (一)数据存储类型与独特结构
- (二)数据持久化策略
- (三)卓越性能表现与应用场景
- 三、MySQL 数据库概览
- (一)创建数据库与表
- (二)数据操作与 C 语言交互
- 四、数据库范式:构建高效数据库的基石
- (一)第一范式(1NF)
- (二)第二范式(2NF)
- (三)第三范式(3NF)
- (四)巴斯 - 科德范式(BCNF)
深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式
在当今数字化浪潮汹涌澎湃的时代,数据已然成为企业和开发者们最为宝贵的资产之一。而数据库作为数据存储与管理的核心工具,其重要性不言而喻。本文将带领读者全面深入地了解 SQLite、Redis 和 MySQL 这三款各具特色的数据库,以及数据库设计范式这一构建高效数据库结构的关键理念。
一、SQLite 数据库全方位解析
(一)创建与基本操作
SQLite 以其轻量级和便捷性备受青睐。在 Windows 系统中,若要使用 SQLite,首先需从官方网站下载适合的预编译二进制文件,并将其解压到指定目录,如C:\Program Files\SQLite
。随后,将该目录添加到系统环境变量PATH
中,如此一来,便能在命令提示符中轻松输入sqlite3
命令。例如,若要创建一个名为ecommerce.db
的数据库,只需在命令提示符中输入sqlite3 ecommerce.db
,若该数据库不存在,SQLite 会自动创建;若已存在,则会直接打开。
(二)数据存储与表结构设计
SQLite 作为关系型数据库,数据存储于表中。以电商场景为例,可创建products
表来存储商品信息,其结构如下:
CREATE TABLE IF NOT EXISTS products (product_id INTEGER PRIMARY KEY AUTOINCREMENT,product_name TEXT NOT NULL,price REAL NOT NULL,stock_quantity INTEGER NOT NULL,category TEXT
);
此表包含product_id
(自增主键)、product_name
(商品名称)、price
(价格)、stock_quantity
(库存数量)和category
(类别)等列。通过类似的方式,还可创建users
表用于存储用户信息,orders
表用于记录订单详情,以及order_items
表来关联订单与商品。
(三)数据操作:增删改查
- 插入数据:向
products
表插入数据可使用如下语句:
INSERT INTO products (product_name, price, stock_quantity, category)
VALUES('iPhone 15', 7999.00, 100, '手机'),('华为 P60', 4488.00, 80, '手机'),('联想笔记本电脑', 5999.00, 30, '电脑'),('罗技无线鼠标', 129.00, 200, '电脑配件');
- 查询数据:查询
products
表中所有数据可执行SELECT * FROM products;
。若要查询某个用户的所有订单信息,可通过关联orders
表和users
表来实现,例如:
SELECT o.*
FROM orders o
JOIN users u ON o.user_id = u.user_id
WHERE u.username = 'user1';
- 更新数据:若要更新
iPhone 15
的价格,可使用UPDATE
语句:
UPDATE products
SET price = 7899.00
WHERE product_name = 'iPhone 15';
- 删除数据:删除库存为 0 的商品(假设联想笔记本电脑库存变为 0)时,需先从
products
表中删除该商品记录,再从order_items
表中删除与之关联的订单项:
DELETE FROM products
WHERE product_name = '联想笔记本电脑';
DELETE FROM order_items
WHERE product_id IN (SELECT product_id FROM products WHERE product_name = '联想笔记本电脑');