本文转载自:https://fangcaicoding.cn/article/72
官方文档:https://dev.mysql.com/doc/refman/8.0/en/
Hello,我是方才。《系统学MySQL系列》不仅仅适用于零基础的小白,对有一定经验但没有深入了解过mysql原理的伙伴,也能帮助其建立一个完整的知识图谱。
本系列完整的知识图谱如下,后续方才会参考该图谱,持续输出相关的内容,如果你最近刚好在学习Mysql,记得关注哟。
image-20241226210223546
对于没有基础的新手来说,看这个图谱会很懵逼,因为对“数据库”没有一个认知。
就好比你让一个连汽车是什么,都没有概念的”部落人“去学习驾驶汽车;他是无从下手的、一脸懵逼的。
所以,今天,我们就先理解下,什么是数据库?
大白话理解下:数据库就是按照一定的规则和结构,把数据组织起来,方便快速查找、添加、修改和删除的软件程序。
再用小学生都能听懂的话理解下(直接看AI的回答了,嘿嘿):
image-20241227165223844
几个关键字对应着理解下,就很清晰了:
基于这个理解,其实稍微有点编程基础的伙伴,就可以自己开发一个数据库系统(和mysql、Oracle这种比较起来,只是实现的功能很简单,增删改查效率很低而已)。
方才就直接让AI,使用JavaScript实现了一个即简版的数据库,它包含了增删改查(CRUD)的基本功能。这个“数据库”将使用一个对象来存储数据,其中每个属性代表一个“表”,每个“表”中的数据将以数组的形式存储。
class SimpleDB {
constructor() {
this.db = {};
}
// 增加记录
insert(table, record) {
if (!this.db[table]) {
this.db[table] = [];
}
this.db[table].push(record);
}
// 查询记录
find(table, query) {
returnthis.db[table].filter(record => {
for (let key in query) {
if (record[key] !== query[key]) {
returnfalse;
}
}
returntrue;
});
}
// 更新记录
update(table, query, updateData) {
const records = this.find(table, query);
records.forEach(record => {
for (let key in updateData) {
record[key] = updateData[key];
}
});
}
// 删除记录
remove(table, query) {
this.db[table] = this.db[table].filter(record => {
for (let key in query) {
if (record[key] === query[key]) {
returnfalse;
}
}
returntrue;
});
}
}
// 使用示例
const db = new SimpleDB();
// 插入数据
db.insert('users', { id: 1, name: '方才', age: 25 });
db.insert('users', { id: 2, name: '方才呀', age: 30 });
// 查询数据
console.log(db.find('users', { name: '方才' })); // 查找名为【方才】的用户
// 更新数据
db.update('users', { id: 1 }, { age: 26 }); // 更新ID为1的用户的年龄
// 删除数据
db.remove('users', { id: 2 }); // 删除ID为2的用户
// 查看更新后的数据
console.log(db.db);
这个一个简单的数据库就实现了,提供基本的CRUD操作:
insert(table, record)
:向指定的表中插入一条记录。find(table, query)
:根据查询条件在指定的表中查找记录。update(table, query, updateData)
:根据查询条件更新指定表中的记录。remove(table, query)
:根据查询条件删除指定表中的记录。运行的效果:
[ { id: 1, name: '方才', age: 25 } ]
{ users: [ { id: 1, name: '方才', age: 26 } ] }
是不是很简单,哈哈。
其实MySQL数据库也是类似是的,只是底层管理数据的数据结构更加复杂,数据文件间的组织更加复杂,增删改查的语法糖更多而已。