1.基本介绍
数据库是用来存储和管理数据的系统。它可以被看作是一个大型的电子文件柜,可以存储结构化、半结构化或非结构化的数据。数据库系统可以提供数据的安全性、一致性、可靠性和高效性,同时也提供了灵活的数据操作和查询功能。
简而言之,是专门用于存储数据的工具。按不同的需求,有不同的功能。比如关系型vs 非关系型数据库,隐私vs非隐私数据库。
2.主要分类
商业数据库和开源的重要区别是在需求、成本上,一般商业在购买时都提供稳定可靠的技术支持。此服务对金融企业尤为重要。典型代表是Oracle(商业)和MySQL(很久以前社区开源)数据库。
分类标准 | 数据库类型 | 相关数据库 |
---|---|---|
数据模型 | 关系型数据库(RDBMS)、非关系型数据库(NoSQL) | MySQL、Oracle、SQL Server、MongoDB、Redis、Cassandra、Neo4j 等 |
数据模型复杂度 | 层次型数据库、网状型数据库 | XML 数据库、CODASYL 数据库 |
数据处理方式 | OLTP数据库、OLAP数据库 | 银行系统、电子商务系统、数据仓库系统 |
数据存储位置 | 本地数据库、分布式数据库 | SQLite、Google Spanner、Amazon DynamoDB 等 |
商业模式 | 商业数据库、开源数据库 | Oracle、SQL Server、MySQL、PostgreSQL 等 |
3.如何入门
初级:数据库基础知识,SQL语言,数据库设计,版本控制
中级:数据库管理,事务和锁,索引和优化
高级:性能调优
- 软件工程师要求
1. 数据库基础知识:包括数据库的概念、关系型数据库管理系统(RDBMS)的特点、SQL语言等基础知识。
2. SQL语言:熟练掌握SQL语言,包括数据查询(SELECT语句)、数据操作(INSERT、UPDATE、DELETE语句),笛卡尔积等。
3. 数据库设计:能够设计数据库表结构,包括选择合适的数据类型、设计主键和外键等。
4. 索引和优化:了解如何使用索引来提高查询性能,以及其他一些优化技巧。
5. 事务和锁:了解事务的概念,以及如何使用事务来保证数据的一致性和完整性。
6. 数据库管理:了解数据库的备份、恢复、安全性管理等方面的知识。
7. 数据库性能调优:能够对数据库进行性能调优,包括配置优化、查询优化等。
8. 非关系型数据库:了解非关系型数据库(NoSQL)的基本概念和常见类型,如MongoDB、Redis等。
9. 数据库开发工具:熟悉常用的数据库开发工具,如MySQL Workbench、SQL Server Management Studio等。
10. 数据库版本控制:了解数据库版本控制工具,如Git等,能够进行数据库的版本管理。
- 运维工程师要求
1. 数据库基础知识:包括数据库的概念、关系型数据库管理系统(RDBMS)的特点、SQL语言等基础知识。
2. MySQL的安装和配置:学习如何在不同操作系统上安装MySQL,并进行基本的配置。
3. 数据库设计:学习如何设计数据库表结构,包括选择合适的数据类型、设计主键和外键等。
4. SQL语言:学习SQL语言的基本语法,包括数据查询(SELECT语句)、数据操作(INSERT、UPDATE、DELETE语句)等。
5. 索引和优化:学习如何使用索引来提高查询性能,以及其他一些优化技巧。
6. 事务和锁:了解事务的概念,以及如何使用事务来保证数据的一致性和完整性。
7. 备份和恢复:学习如何备份和恢复MySQL数据库,以及如何进行数据迁移。
8. 安全性:了解如何保护数据库的安全性,包括用户权限管理、数据加密等方面。
9. 性能调优:学习如何对数据库进行性能调优,包括配置优化、查询优化等。
10. 高可用性和容错:了解如何配置MySQL实现高可用性和容错,包括主从复制、集群等技术。
4.案例学习
假设有一个在线书店,需要存储图书信息、用户信息和订单信息等。这个在线书店可以使用数据库来管理这些数据。
- 图书信息:可以创建一个名为Books的表来存储图书信息,包括书名、作者、出版社、价格等字段。
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(255),
Author VARCHAR(255),
Publisher VARCHAR(255),
Price DECIMAL(10, 2)
);
- 用户信息:可以创建一个名为Users的表来存储用户信息,包括用户名、密码、邮箱等字段。
CREATE TABLE Users (
UserID INT PRIMARY KEY,
Username VARCHAR(255),
Password VARCHAR(255),
Email VARCHAR(255)
);
- 订单信息:可以创建一个名为Orders的表来存储订单信息,包括订单号、用户ID、下单时间、订单状态等字段。
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
UserID INT,
OrderDate DATETIME,
Status VARCHAR(255),
FOREIGN KEY (UserID) REFERENCES Users(UserID)
);
5.增删改查
INSERT INTO Books (BookID, Title, Author, Publisher, Price) VALUES
(1, 'Python编程从入门到实践', 'Eric Matthes', '人民邮电出版社', 79.00),
(2, '深入理解计算机系统', 'Randal E. Bryant', '人民邮电出版社', 109.00),
(3, '数据库系统概念', 'Abraham Silberschatz', '机械工业出版社', 99.00);
INSERT INTO Users (UserID, Username, Password, Email) VALUES
(1, 'user1', 'password1', 'user1@example.com'),
(2, 'user2', 'password2', 'user2@example.com'),
(3, 'user3', 'password3', 'user3@example.com');
INSERT INTO Orders (OrderID, UserID, OrderDate, Status) VALUES
(1, 1, '2022-03-01 10:00:00', '待发货'),
(2, 2, '2022-03-02 11:00:00', '已发货'),
(3, 3, '2022-03-03 12:00:00', '已完成');
SELECT * FROM Books;
SELECT * FROM Users;
SELECT * FROM Orders;
UPDATE Books SET Price = 89.00 WHERE BookID = 1;
UPDATE Users SET Email = 'user1_updated@example.com' WHERE UserID = 1;
UPDATE Orders SET Status = '已取消' WHERE OrderID = 1;
DELETE FROM Books WHERE BookID = 3;
DELETE FROM Users WHERE UserID = 3;
DELETE FROM Orders WHERE OrderID = 3;
6.入门步骤
具体每一步问ChatGPT,关键词请解释原理和给出代码例子
- 安装MySQL数据库,Navicat连接到数据库
- 完成建表,增删改查实验
- 了解数据库设计三大范式,完成索引、外键,复杂的多表查询实验
- 完成数据库导入导出实验(备份还原)