
MySQL
文章平均质量分 86
MySQL基础知识
花落随风轻飘舞
我很懒,还没有添加简介
展开
-
MySQL 基础知识(十)之 MySQL 架构
当 MySQL 接收到一个查询请求时,它首先会检查查询缓存中是否已经存在与该查询请求相同的查询结果。如果查询缓存中没有该查询结果,MySQL 会执行查询语句并将结果存储在查询缓存中,以便下次相同的查询可以直接从缓存中获取结果。我们一般不会使用查询缓存,因为一旦查询涉及的表发生改变,该缓存会失效,会被查询缓存清除。MySQL 执行器是 MySQL 服务器中的一个组件,它负责执行优化器生成的执行计划,并返回查询结果。,检查“解析树”中的元素是否在数据库中有对应的实体,并验证操作的合法性。《高性能MySQL》原创 2024-02-19 22:33:31 · 3525 阅读 · 2 评论 -
MySQL 基础知识(九)之视图
视图是一张并不存储数据的虚拟表,其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义,通过 SQL 语句使用视图时,会根据视图的定义进行查询。简化代码:对于复杂的查询,通过视图可以不用写那么多代码增加数据的安全性:通过视图,用户只能对指定的数据进行操作查询性能不好:在很多场景下,对视图的查询无法使用基表(基表是创建视图时使用的表)的索引,需要对所有基表进行全表扫描后,将返回结果保存到临时表,再进行查询维护代价高:基表发生变化时,视图也要进行更改,这需要一定的维护成本。原创 2024-02-17 21:07:42 · 1790 阅读 · 0 评论 -
MySQL 基础知识(八)之用户权限管理
先从 user 表中的 Host、User、Password (MySQL 8.0 版本没有 Password,有 authentication_string)这 3 个字段中判断连接的 IP、用户名、密码是否存在,存在则通过验证。通过连接权限验证后,进行权限分配,按照 user、db、tables_priv、columns_priv 的顺序进行验证。设置相同的用户名,不同的访问地址(主机名),这样我们可以在不同的主机(网络地址)上登录账户连接数据。注意回收权限是回收已经授予的权限,不能回收没有的权限。原创 2024-02-16 16:27:29 · 3361 阅读 · 0 评论 -
MySQL 基础知识(七)之事务
MySql事务及原理详解【数据库】快速理解脏读、不可重复读、幻读。转载 2024-02-15 23:01:24 · 95 阅读 · 0 评论 -
MySQL 基础知识(六)之数据查询(二)
注:MySQL 8.0 版本提供了 hash join 连接算法,其他版本仍是 nested loop join 连接算法,尽量少用 join,不同时连接三张表。对外层循环的结果集进行分块,减少内层循环的次数,时间复杂度 O(n / m * n) ,其中 m 为分片数。上述代码中,表 goods 有 7 行数据,sales 有 4 行数据,通过 cross join 连接的后的表 有 7 * 4 行数据。用小结果集驱动大结果集,将筛选结果小的表首先连接,再去连接结果集比较大的表,即用小的表的取连接大的表。原创 2024-02-15 16:38:13 · 1814 阅读 · 0 评论 -
MySQL 基础知识(六)之数据查询(一)
的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差。通过 as 可以对列名取别名,as 可以省略(列名和别名之间用空格隔开)周 (01-53) ,星期一是一周的第一天,与 %x 使用。通过 distinct 将查询结果的中的重复行去除。可以对列中的数据进行加 +、减 -、乘 *、除 /时间,12-小时(hh:mm:ss AM 或 PM)asc 表示升序,desc 表示降序,默认是升序。时间, 24-小时 (hh:mm:ss)月的天,数值(0-31)月,数值(00-12)原创 2024-02-14 18:55:59 · 1289 阅读 · 0 评论 -
MySQL 基础知识(五)之数据增删改
当要插入的数据为日期/时间类型时,如果插入数据的格式不为“%Y-%m-%d”,需要通过 str_to_date(str,fmt);delete 是 DML 语句,不会自动提交,即可以回滚,drop/truncate 都是 DDL 语句,执行后会自动提交,即不能回滚。通过 delete 进行删除,如果不加 where 条件则删除整张表的数据,但是只是删除数据,表依然存在。truncate 和 delete 只删除数据,不删除表结构, drop 则删除整个表(结构和数据)通过 update 更新数据,原创 2024-02-13 20:17:37 · 750 阅读 · 2 评论 -
MySQL 基础知识(四)之表操作
ENGINE 为存储引擎,AUTO_INCREMENT 为下一条插入数据的主键值,一般是最后一条数据的主键值 + 1,DEFAULT CHARSET 为默认字符集编码格式。改变列名,alter table 表名 change 旧列名 新列名 数据类型 约束。name 列设置为 unique not null,则该列名字不能重复,也不能为 NULL。修改表中列,alter table 表名 modify 列名 数据类型 [约束];sex 列设置为 default,只有不插入该列,才会填入默认值。原创 2024-02-13 17:03:19 · 881 阅读 · 0 评论 -
MySQL 基础知识(三)之数据库操作
重启数据库后,字符集变为之前的编码。不过,我的MySQL因为无法插入中文的问题改了MySQL的配置文件 : my.ini。改完后可以插入中文,但只能在命令行插入,无法通过 source 命令 通过导入 sql 文件插入中文。修改数据库 test 的字符集为 utf8mb4(用于大于4个字节字符,可用来存表情),创建 test 数据库,使用 show databases 查看。utf8 是 utf8mb3 的别名。使用 test 数据库。原创 2024-02-13 11:23:05 · 689 阅读 · 0 评论 -
MySQL 基础知识(二)之数据类型
二进制数,m 的范围从 1 ~ 64,存储数值范围从0~2^m-1。为精度(precision),表示该值的总长度,范围为1〜65。),表示小数点后面的长度,范围是0~30,且 D原创 2024-02-12 23:18:35 · 469 阅读 · 0 评论 -
MySQL 基础知识(一)之数据库和 SQL 概述
RDBMS 通常使用客户端/服务端这样的系统架构,通过客户端向服务器端发送 SQL 语句来实现数据库的读写操作,关系数据库采用被称为数据库表的二维表来管理数据,数据库表由表示数据项目的列(字段)和表示一条数据的行(记录)所组成,以记录为单位进行数据读写。用来确认或者取消对数据库的数据进行的变更。此外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。用来创建或者删除存储数据用的数据库以及数据库中的表等对象。SQL 是用来操作关系数据库的语言。原创 2024-02-12 21:04:14 · 1117 阅读 · 0 评论