数据库(mysql)关键知识

MySQL现在用得太多了,各种网站都用它。
关系数据库就是将你提出的问题进行分解,并使用关系将它们连接起来进行查询。
借书时,有三张表:用户表、图书表、图书借阅记录表。
如果你想检查谁借了什么,或者谁借了哪本书,你必须使用关系来检查。

关系数据库有什么范式? 它们是规则。
如果按照规则设计,表就不会乱,插入、删除、修改数据也不会有问题。
共有六种范式:
1 . 1 NF:表的每一列都是完整的,不能拆分。
例如,用户名列不能被分割。
2 . 2 NF:在1 NF的基础上,每条记录必须有唯一的标识符。
例如,每个用户必须有一个ID。
3 . 3 NF:在2 NF的基础上,非主属性不能依赖于其他非主属性。
例如,不能有直接确定地址的用户ID,必须将其分开。
4 . BCNF:基于3 NF,非主属性不能依赖于主键的部分内容。
简单地说,不能存在循环依赖。
5 . 4 NF:基于BCNF,不能存在多值依赖。
也就是说,一个属性不能对应多个值。
6 . 5 NF:处理无损连接。
实际中很少使用,基本没有什么意义。

在 MySQL 中,目录和架构解决命名冲突。
但MySQL直接使用Schema作为数据库名,不支持Catalog。
MySQL有两个引擎,MyISAM支持全文搜索,InnoDB支持事务。

在SQL中,'%'代表任意数量的字符,'_'代表一个字符。
例如,table_name REGEXP '^1 2 .3 4 ' 检查以 1 2 .3 4 开头的名称。
子查询先在内部执行,然后在外部执行。
JOIN 具有外键,这意味着一个表中的列是另一个表的主键。
笛卡尔积是A表的行数乘以B表的列数。
最常用的是等值连接,通过条件关联。
自连接搜索同一个表而不是子查询。
自然连接是删除重复的列。
外部链接包含不相关的行,例如列出所有产品,即使没有人购买它们。

UNION 组合两个查询结果。
该视图查看其他地方的数据,并且本身没有数据。
如果表发生变化,视图也会发生变化。
复杂的视图会影响性能。
视图还可以隐藏复杂的 SQL。
存储过程是 SQL 语句包,使用 CREATE PROCEDURE 创建并使用 CALL 调用。
游标在存储过程中逐行搜索数据。
当存储过程结束时,光标消失。
触发器在发生时自动执行 SQL,并使用 CREATE TRIGGER 创建。

事务确保数据完整性,要么全部执行,要么什么也不执行。
包括事务、回滚、提交和保留点。
回滚是ROLLBACK,但是CREATE和DROP操作不能回滚。
提交就是提交。
复杂事务使用SAVEPOINT,可以回滚到某个点。
保留积分越多越好,交易完成后会自动释放。

MYSQL知识图谱(一、mysql体系架构)

MySQL有四个核心模块:客户端、解析器、优化器和存储引擎。

客户端是一个接收SQL并返回结果的用户门户。
例如,命令行工具就是客户端。

解析器执行两个任务:句法分析+语义分析。
解析将 SQL 拆分为 AST,语义分析检查表字段权限。
如果用户检查不存在的表,解析器会直接报告错误。

优化器根据解析器对执行计划进行优化,包括路径选择(大表使用索引,小表直接扫描)、连接优化(先过滤小表的表)、算法优化(使用内存或磁盘排序)。
查询缓存早就没有了,8 .0直接删除了。

存储引擎接口是连接MySQL和硬盘的插件设计。
InnoDB支持事务,MyISAM不支持。
将优化逻辑转换为硬盘操作。

分层架构是关键。
客户端和存储引擎隔离变化,而解析器和优化器专注于优化。
您选择使用的引擎会影响并发性和弹性。

MySQL必知必会电子书PDF版,建议收藏保存

嘿嘿,我在2 003 年刚开始从事这个行业的时候就读过《MySQL你必须知道》。
这是一个电子 PDF,当时我将副本保存到在线磁盘上。
这是一本好书,里面说的都是事实。

当时我在上海一家小软件公司工作,我记得团队用的是MySQL。
在此之前我对数据库一无所知。
读完这本书,我逐渐学会了如何编写SQL,从最基本的表和字段开始。
像 SELECT FROM table WHERE 条件这样的事情在本书中解释得非常清楚。
我一看,旁边放着速溶咖啡。
喝完一杯,你也许就会明白JOIN的含义。

内容很丰富,包括连接和子查询。
我尝试在项目中使用它,发现它非常有用。
书中有很多例子。
读完后,立即尝试一下。
效果会相当不错。
有一段话给我印象很深。
它是使用正则表达式进行数据过滤。
一开始我很困惑,但花了一些时间看书上的例子后,我终于明白了。
那天晚上,加班后,我在办公室楼下的麻辣烫餐厅吃了晚饭,感觉很幸福。

您有最喜欢的建议吗?我觉得PDF版本真的很有用。
想一想,当我在宿舍的时候,如果我半夜想查点什么,我可以用手机打开一个 PDF 来查看,而无需翻阅它。
另外,这本书是经典,不像那些更新太快,读了两年就过时的书。
我换工作时随身携带了PDF。
每次我需要在新环境中使用MySQL时,我都会先阅读它并快速上手并运行。

但是MySQL版本已经多次更新,因此本书内容可能与最新版本不完全一致。
最近做了一些研究,发现有一个新的功能叫做JSON处理,但是书上似乎没有详细解释。
我以前从来没有接触过,所以我不会废话。
如果你确实想了解最新的信息,你可能需要结合互联网上的信息来阅读。

总之,如果你刚刚学习 MySQL 或者想要系统回顾,这本书很棒。
读完这篇文章,我感觉对MySQL更加熟悉了。
现在看PDF,感觉作者写的很对。
时不时看一眼还是可以的。