MySQL基础
文章平均质量分 91
主要介绍MySQL数据库的基础知识和操作技巧,包括MySQL数据库的安装配置、基本语法、查询优化等内容。通过对MySQL数据库的学习,可以帮助读者了解数据库的基本概念和操作流程,掌握MySQL数据库的基本操作技巧和开发方法,从而为后续的数据库开发和管理打下坚实的基础。
zhufei463738313
这个作者很懒,什么都没留下…
展开
-
MySQL基础(三十九)MySQL常用命令
由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog 日志管理工具。此选项可以在Mysql客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种方式尤其方便。备份内容包含创建表,及插入表的SQL语句。mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。该mysql不是指mysql服务,而是指mysql的客户端工具。原创 2023-05-20 15:23:29 · 778 阅读 · 1 评论 -
MySQL基础(三十八)数据库备份与恢复
数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL 数据迁移方案大致可以分为物理迁移和逻辑迁移两类。通常以尽可能自动化。原创 2023-05-20 15:16:21 · 1266 阅读 · 0 评论 -
MySQL基础(三十七)主从复制
一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。但并不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的。如果我们的目的在于提升数据库高并发访问的效率,那么首先考虑的是如何优化SQL和索引,这种方式简单有效;其次才是采用缓存的策略,比如使用 Redis将热点数据保存在内存数据库中,提升读取的效率;最后才是对数据库采用主从架构,进行读写分离。原创 2023-05-20 11:38:03 · 1015 阅读 · 0 评论 -
MySQL基础(三十六)其他数据库日志
中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。文件名的格式是:从服务器名 -relay-bin.序号。中继日志还有一个索引文件:从服务器名 -relaybin.index。原创 2023-05-17 11:44:58 · 482 阅读 · 0 评论 -
MySQL基础(三十五)多版本并发控制
MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。使用隔离级别的事务,由于可以读到未提交事务修改过的记录,所以直接读取记录的最新版本就好了。使用。原创 2023-05-16 15:37:40 · 419 阅读 · 0 评论 -
MySQL基础(三十四)锁
在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。原创 2023-05-16 09:09:57 · 433 阅读 · 0 评论 -
MySQL基础(三十三)MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?锁机制重做日志回滚日志有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。原创 2023-05-15 15:44:46 · 531 阅读 · 0 评论 -
MySQL基础(三十二)事务基础知识
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。原创 2023-05-15 14:44:12 · 434 阅读 · 0 评论 -
MySQL基础(三十一)数据库其它调优策略
如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。该语句对于检查的表可能会产生多行信息。因为数据都是存放到数据库中,我们需要从数据库层中取出数据放到内存中进行业务逻辑的操作,当用户量增大的时候,如果频繁地进行数据查询,会消耗数据库的很多资源。跟文本类型数据相比,大整数往往占用 更少的存储空间 ,因此,在存取和比对的时候,可以占用更少的内存空间。原创 2023-05-13 17:28:31 · 1366 阅读 · 0 评论 -
MySQL基础(三十)PowerDesigner的使用
上面的设置好如上图所示,然后下面是关键的地方,点击右边按钮Reference这个按钮,因为是班级对学生是一对多的,所以鼠标从学生拉到班级如下图所示,学生表将发生变化,学生表里面增加了一行,这行是班级表的主键作为学生表的外键,将班级表和学生表联系起来。关系是一对一还是一对多还是多对多的关系,自己需要先规划好再设计,然后就ok了。设置好后如下图所示,需要注意的是有箭头的一方是一,无箭头的一方是多,即一对多的多对一的关系需要搞清楚,学生也可以有很多老师,老师也可以有很多学生,所以学生和老师都可以是主体;原创 2023-05-12 16:25:07 · 2758 阅读 · 0 评论 -
MySQL基础(二十九)数据库的设计规范
在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的 级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询ER 模型中有三个要素,分别是实体、属性和关系。实体。原创 2023-05-12 14:37:29 · 1209 阅读 · 0 评论 -
MySQL基础(二十八)索引优化与查询优化
理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。**理解方式二:**非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT 到 FROM之间查询的列。原创 2023-05-12 11:37:02 · 938 阅读 · 0 评论 -
MySQL基础(二十七)性能分析工具的使用
*定位了查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。**DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MySQL中有专门负责优化SELECT语句的优化器模块,主要功能: 通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)。原创 2023-05-11 15:59:32 · 713 阅读 · 0 评论 -
MySQL基础(二十六)索引的创建与设计原则
列的基数越小,该列中的值越集中。,只需要将待删除的索引设置为隐藏索引,使查询优化器不再使用这个索引(即使使用force index(强制使用索引),优化器也不会使用该索引),确认将索引设置为隐藏索引后系统不受任何响应,就可以彻底删除索引。,因为不仅是聚簇索引中会存储主键值,其他所有的二级索引的节点处都会存储一份记录的主键值,如果主键使用更小的数据类型,也就意味着节省更多的存储空间和更高效的I/O。索引本身可以起到约束的作用,比如唯一索引、主键索引都可以起到唯一性约束的,因此在我们的数据表中,如果。原创 2023-05-11 15:27:11 · 924 阅读 · 0 评论 -
MySQL基础(二十五)InnoDB数据存储结构
页a、页b、页c …页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。原创 2023-05-11 14:55:57 · 875 阅读 · 0 评论 -
MySQL基础(二十四)索引的数据结构
索引(Index)是帮助MySQL高效获取数据的数据结构。**索引的本质:**索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。原创 2023-05-09 17:15:42 · 686 阅读 · 2 评论 -
MySQL基础(二十三)存储引擎
也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。如果在创建表的语句中没有显式指定表的存储引擎的话,那就会默认使用。存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为。原创 2023-05-09 15:13:41 · 73 阅读 · 0 评论 -
MySQL基础(二十二)逻辑架构
需要说明的是,在MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中,如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进行读取。因为缓冲池的大小是有限的,比如磁盘有 200G,但是内存只有 16G,缓冲池大小只有 1G,就无法将所有数据都加载到缓冲池里,这时就涉及到优先级顺序,会。需要说明的是,在MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。原创 2023-05-09 14:41:51 · 1030 阅读 · 0 评论 -
MySQL基础(二十一)用户与权限管理
比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。上述语句中privileges代表权限的名称,多个权限以逗号隔开。权限控制主要是出于安全因素,因此需要遵循以下几个。只要你创建了一个角色,系统就会自动给你一个“,一般是限制成指定IP或者内网IP段。角色名称的命名规则和用户名类似。角色创建并授权后,要赋给用户并处于。这条 SQL 语句的意思是,对。,回收权限或者删除用户。定期清理不需要的用户。连接登录数据库的权限。查询当前已激活的角色。原创 2023-05-09 14:23:23 · 1067 阅读 · 0 评论 -
MySQL基础(二十)MySQL的数据目录
随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用表空间(general tablespace)、临时表空间(temporary tablespace)等。在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同。原创 2023-05-09 14:03:03 · 865 阅读 · 0 评论 -
MySQL基础(十九)Linux下MySQL的安装与使用
是个 通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置。将查询结果从具体的列上使用的字符集转换为character_set_results。在mysql的安装文件目录下执行:(必须按照顺序执行)原创 2023-05-09 13:52:25 · 1044 阅读 · 0 评论 -
MySQL基础(十八)MySQL8其它新特性
MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。原创 2023-05-09 11:57:23 · 1302 阅读 · 0 评论 -
MySQL基础(十七)触发器
MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERTUPDATEDELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。原创 2023-05-09 11:46:27 · 874 阅读 · 0 评论 -
MySQL基础(十六)变量、流程控制与游标
定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行。说明:定义条件和处理程序在存储过程、存储函数中都是支持的。定义条件就是给MySQL中的错误码命名,这有助于存储的程序代码更清晰。它将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在定义处理程序的语句中。DECLARE 错误名称 CONDITION FOR 错误码(或错误条件)和。原创 2023-05-09 11:20:00 · 1058 阅读 · 0 评论 -
MySQL基础(十五)存储过程与函数
存储过程的思想很简单,就是一组经过预先编译的 SQL 语句的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。好处1、简化操作,提高了sql语句的重用性,减少了开发程序员的压力2、减少操作过程中的失误,提高效率3、减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)原创 2023-05-08 17:10:25 · 1038 阅读 · 0 评论 -
MySQL基础(十四)视图
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。最后,我们总结视图的优点。1. 操作简单。原创 2023-05-08 15:39:07 · 1417 阅读 · 0 评论 -
MySQL基础(十三)约束
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”原创 2023-05-08 15:16:15 · 2001 阅读 · 0 评论 -
MySQL基础(十二)数据类型精讲
常见数据类型的属性,如下:整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。它们的区别如下表所示:整数类型的可选属性有三个:: 表示显示宽度,M的取值范围是(0, 255)。例如,int(5):当数据宽度小于5位的时候在数字前面需要用字符填满宽度。该项功能需要配合“”使用,表示用“0”填满宽度,否则指定显示宽度无效。如果设置了显示宽度,那么插入的数据宽度超过显示宽度限制,会不会截断或插入失败?答案:不会对插入的数据有任何影响,还是按原创 2023-05-08 14:26:25 · 2065 阅读 · 0 评论 -
MySQL基础(十一)数据处理之增删改
INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。● Warnings:表明有问题的数据值,例如发生数据类型转换。原创 2023-05-08 11:31:14 · 2069 阅读 · 0 评论 -
MySQL基础(十)创建和管理表
TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。MySQL在执行建表语句时,将id字段的类型设置为int(11),这里的11实际上是int类型指定的显示宽度,默认的显示宽度为11。操作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有任何的确认信息提示,因此执行删除操时应当慎重。的,如果添加了一个不需要的字段,可以将其删除;原创 2023-05-08 11:16:03 · 642 阅读 · 0 评论 -
MySQL基础(九)子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。原创 2023-05-08 09:56:24 · 1606 阅读 · 0 评论 -
MySQL基础(八)聚合函数
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG()SUM()MAX()MIN()聚合函数语法聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。原创 2023-05-07 18:26:30 · 562 阅读 · 0 评论 -
MySQL基础(七)单行函数
函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。从函数定义的角度出发,我们可以将函数分成内置函数和自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。原创 2023-05-07 16:49:34 · 705 阅读 · 0 评论 -
MySQL基础(六)多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。原创 2023-05-06 21:59:39 · 676 阅读 · 0 评论 -
MySQL基础(五)排序与分页
第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);MySQL 8.0中可以使用“LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT 4,3;这样的好处就是 SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。得到与上述方法一致的结果。原创 2023-05-06 16:57:28 · 759 阅读 · 0 评论 -
MySQL基础(四)运算符
算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。1.加法与减法运算符由运算结果可以得出如下结论:2.乘法与除法运算符由运算结果可以得出如下结论:3.求模(求余)运算符将t22表中的字段i对3和5进行求模(求余)运算。可以看到,100对3求模后的结果为3,对5求模后的结果为0。比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NUL原创 2023-05-06 16:50:15 · 1392 阅读 · 0 评论 -
MySQL基础(三)基本的SELECT语句
1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡的波动里,有一门技术从未消失,甚至“老当益壮”,那就是 SQL。45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长了。原创 2023-05-06 16:11:29 · 1782 阅读 · 0 评论 -
MySQL基础(二)MySQL环境搭建
删除后,重新安装即可。按键盘上的“Ctrl + Alt + Delete”组合键,打开“任务管理器”对话框,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选项停止MySQL8.0的服务,如图所示。第二种解决方案如下,用命令行登录MySQL数据库之后,执行如下命令修改用户密码加密规则并更新用户密码,这里修改用户名为“root@localhost”的用户密码规则为“mysql_native_password”,密码值为“123456”,如图所示。原创 2023-05-06 15:10:03 · 1352 阅读 · 0 评论 -
MySQL基础(一)数据库概述
Oracle1979 年,Oracle 2 诞生,它是第一个商用的 RDBMS(关系型数据库管理系统)。随着 Oracle 软件的名气越来越大,公司也改名叫 Oracle 公司。2007年,总计85亿美金收购BEA Systems。2009年,总计74亿美金收购SUN。此前的2008年,SUN以10亿美金收购MySQL。意味着Oracle 同时拥有了 MySQL 的管理权,至此 Oracle 在数据库领域中成为绝对的领导者。2013年,甲骨文超越IBM,成为继Microsoft后全球第二大软件公司。原创 2023-05-06 11:50:59 · 1668 阅读 · 0 评论