
《MySQL系列》
文章平均质量分 91
零基础学习MySQL系列教程,系列教程包含MySQL基础语法、DDL、DML、DQL、DCL等,索引、锁机制、执行计划、存储引擎、缓存、SQL优化、MVCC、事务原理、海量数据导入、日志、主从复制、JOIN算法、数据库权限管理、系统表、MySQL架构、内核参数优化、MySQL8.0新特性等知识点讲解
緑水長流*z
一个专注于编写自学教程的博主;热衷于分享当下热门的技术~
展开
-
【MySQL系列教程】
本系列教程是为零基础想要学习MySQL的学习者量身定制的系列教程,涵盖绝大部分MySQL知识点。包括:数据库系统的简介、数据库基本的DDL/DML/DQL等操作、数据库字符集、排序、分组、聚合、having、case when语句、数据库备份与恢复、约束、级联、外键、表连接(内连接、左/右连接、全连接)、子查询、复杂查询、表关系、DCL创建用户、删除用户、赋予/回收权限、事务、视图、存储过程、存储函数原创 2022-08-29 09:39:47 · 24669 阅读 · 2 评论 -
22【数据库连接池】
我们使用JDBC操作数据库时,必须首先先建立一个Connection网络连接,使用完毕之后再将这个连接关闭释放对应的资源,连接对象需要不停的创建,不停的关闭。而创建/关闭一个网络连接是非常消耗资源的一个操作,我们希望创建出来的连接使用完毕后不关闭,而是交给某个容器进行管理,等到下次使用的时候再从容器中拿出来;这个容器就是我们所说的连接池!Tips:连接池的思想和我们之前学习过的线程池的概念是一模一样的,只不过线程池里面存储的都是线程,而连接池里面存储的都是Connection连接;......原创 2022-08-29 09:28:38 · 1158 阅读 · 0 评论 -
21【JDBC操作数据库元数据】
当使用语句对象(PreparedStatement、Statement)执行查询获取结果集时,使用结果集对象(ResultSet)可以获取本次查询结果集的元数据,元数据中包含了查询结果集的列数量、指定列的类型、指定列所在的表名等详细情况;当使用PreparedStatement对参数进行预编译处理时,可以获取参数的元数据,例如预编译的参数个数、参数的类型等,但在MySQL驱动大部分方法都不支持,关于这个功能我们了解即可;...原创 2022-08-29 09:27:33 · 934 阅读 · 0 评论 -
20【JDBC的事务处理】
之前我们是使用MySQL的命令来操作事务。接下来我们使用JDBC来操作银行转账的事务。原创 2022-08-29 09:26:44 · 1281 阅读 · 0 评论 -
19【CallableStatement 接口】
CallableStatement是PreparedStatement的子类,主要是调用数据库中的存储过程/存储函数。并通过CallableStatement对象可以获取存储过程/存储函数的执行结果;原创 2022-08-29 09:23:18 · 1628 阅读 · 0 评论 -
18【PreparedStatement接口详细解析】
PreparedStatement 是 Statement 的子类,也能执行Statement之前的所有操作,其中最主要的功能就是提供了占位符传参处理、预编译等功能;我们实际开发中PreparedStatement会使用的更多;PreparedStatement 占位符参数处理:PreparedStatement的方法说明void setXxx(int 参数1,参数2) Xxx数据类型替换SQL语句中的占位符参数1: 占位符的位置,第几个位置,从1开始参数2: 用来替换占位符的真实的值。......原创 2022-08-29 09:20:51 · 2022 阅读 · 0 评论 -
17【JDBC基本操作】
Java Database Connectivity,简称JDBC;是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了操作数据库的所有方法;与我们之前的Navicate一样,JDBC也是一个MySQL的客户端,只不过Navicate提供了一系列图形化的控件让我们操作数据库,现在使用JDBC则需要编写Java代码才能操作数据库;Connection代表一个客户端与服务器端之间创建的一个网络连接对象,只有与数据库服务器连接之后才可以做后续的所有操作;.........原创 2022-08-29 09:12:54 · 1599 阅读 · 1 评论 -
16【数据库的范式】
一般我们设计表都会按照数据库的三大范式,但是在某些情况下我们查询的数据在多张表中,例如我们需要查询员工的信息并且希望带出员工的部门名称,这个时候我们必须使用join关联表查询,如果这些数据是查询非常频繁的,那么无疑会降低数据库的读性能。概念:在满足第一范式的条件下,每一列的数据都完全依赖于主键,不产生局部依赖,每张表都只描述一件事物,每一列都和主键相关联。概念:在满足第二范式的条件下,表中的每一列不存在传递依赖,每列都直接依赖于主键。根据第二范式细化:拆分成学生表、书籍表、借阅表。.........原创 2022-08-28 14:55:08 · 700 阅读 · 1 评论 -
15【存储过程和存储函数】
MySQL中提供存储过程与存储函数机制,我们先将其统称为,一般的SQL语句需要先编译然后执行,存储程序是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,当用户通过指定存储程序的名字并给定参数(如果该存储程序带有参数)来调用才会执行。.........原创 2022-08-28 14:53:28 · 1660 阅读 · 0 评论 -
14【视图】
同真实的表一样,视图包含一系列带有名称的列和行数据。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。视图其实就是一个select返回的结果集,用于方便我们查询而创建的"临时表",简化我们的查询语句。9)如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作。查看test5视图,发现id=2的记录在视图中已经被清空(源表的记录还有)删除视图时,只能删除视图的定义,不会删除数据,也就是说不动基表。如图视图名重复,则表示替换原有视图。8)如果视图中有计算列,则不能更新。.原创 2022-08-28 14:50:59 · 1578 阅读 · 1 评论 -
13【触发器】
触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作。MySQL中触发器共有3种:触发器类型NEW和OLD的使用insert触发器NEW 表示将要或者已经新增的数据update触发器OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数据delete触发器OLD 表示将要或者已经删除的数据。......原创 2022-08-28 14:48:29 · 1580 阅读 · 0 评论 -
12【事务的隔离级别】
当同时有多个用户在访问同一张表中的记录,每个用户在访问的时候都是一个单独的事务。事务在操作时的理想状态是:事务之间不应该相互影响,实际应用的时候会。应该尽量避免这些问题的发生。通过数据库本身的功能去避免,设置不同的。......原创 2022-08-28 12:04:49 · 1376 阅读 · 0 评论 -
11【事务处理】
如果一个业务操作中多次访问了数据库,必须保证每条SQL语句都执行成功。如果其中有一条执行失败,那么所有已经执行过的代码必须回滚(撤销)。回到没有执行前的状态。称为事务。简单来说就是要么所有的SQL语句全部执行成功,要么全部失败。在某些成功的操作完成之后,后续的操作有可能成功有可能失败,但是不管成功还是失败,前面操作都已经成功,可以在当前成功的位置设置一个回滚点。可以供后续失败操作返回到该位置,而不是返回所有操作,这个点称之为回滚点。......原创 2022-08-28 11:51:19 · 846 阅读 · 0 评论 -
10【DCL数据库控制语言】
我们现在默认使用的都是root用户,超级管理员,拥有全部的权限。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。案例:创建zhangsan用户,只能在localhost这个服务器登录mysql服务器,密码为123456。案例:给zhangsan用户分配对test这个数据库操作的权限:创建表,修改表,插入记录,更新记录,查询。,MySQL并不会加载这个文件,这个文件只是MySQL提供给我们复制用的配置文件;案例:给lisi用户分配所有权限,对所有数据库的所有表。......原创 2022-08-28 00:49:18 · 2885 阅读 · 0 评论 -
09【多表查询案例】
确定查询的字段:员工编号(student),员工姓名(student),籍贯(student),学校名称(university),学校简介(university)确定表连接条件:student.s_id=university.id。需求:查询借阅数量大于等于2的大学借阅数量。确定要查询哪些表:学生表和学校表。需求:统计每个大学共借书多少本。学生表对学校表:一对多。学生表对图书表:多对多。......原创 2022-08-28 00:47:13 · 1903 阅读 · 0 评论 -
08【子查询】
如果子查询的结果是多行多列,父查询可以将这个查询结果做为一个虚拟表,进行第2次查询。子查询结果是多行单列的时候,子查询的结果相当于一个集合或数组。如果子查询的结果是一个值,父查询使用比较运算符:> 、 ......原创 2022-08-28 00:45:19 · 1780 阅读 · 0 评论 -
07【连接查询】
现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,老师和学生等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!什么是笛卡尔积:-- 需求:查询所有的员工和所有的部门 select * from dept , emp;结果如下:如果左表是部门表,右表是员工表,左表中每一行记录与右表中的每一行记录全都匹配一次。......原创 2022-08-28 00:43:30 · 6539 阅读 · 0 评论 -
06【数据库的约束】
一般在创建表的时候给表的字段添加各种约束,从而保证输入到表中的数据是正确的。保证数据的正确性,完整性和有效性。违反约束的数据是不能添加到表中去的。如果表已经存在,并且表中已经有数据,添加约束的时候如果表中的数据已经违反了现在要添加的约束,约束会添加失败。部门与员工之间是一对多的关系,一个部门对应多个员工,一个员工属于一个部门。部门是1方,员工是多方。主表: 是一方,部门表从表: 是多方,员工表什么是外键:外键出现在从表中,被主表的主键约束的那一列外键。......原创 2022-08-27 23:35:54 · 1334 阅读 · 0 评论 -
05【数据的备份与恢复】
在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。Tips:这两种类型的导入只适用于临时的数据导入(数据量不会太大),如果数据量大,导入速度会非常慢。source是属于mysql的命令,需要登录进mysql执行(实质也是把里面的sql执行一遍)。没关系,这个时候再将没有乱码的内容复制到文件中即可;mysqldump命令主要用于数据库的备份。默认值为127.0.0.1,......原创 2022-08-27 23:32:41 · 1499 阅读 · 0 评论 -
04【DQL查询】
作用:默认情况下查询所有行,限制查询记录的条数offset:跳过多少条记录,默认是0length:返回多少条记录案例:查询学生表中数据,从第3条开始显示,显示3条。原创 2022-08-27 23:31:13 · 3314 阅读 · 0 评论 -
03【MySQL字符集】
采用的是utf8字符集,两个码表不一致,在我们输入中文完毕后,数据被cmd窗口用GBK编码了,但MySQL以为客户端采用的是UTF8编码,因此采用UTF8进行解码,然后进行数据的传递(在windows下,cmd窗口默认采用的是GBK字符集编码的,MySQL将数据的结果全部以UTF8编码(),然后数据到了cmd窗口时,cmd窗口以GBK进行解码,因此显示乱码,我们可以更改。此时数据的结果编码为GBK,windows窗口的编码也为GBK,因此显示正常;因为我们的cmd窗口是采用gbk字符集,我们客户端(....原创 2022-08-27 22:47:30 · 2194 阅读 · 1 评论 -
02【数据库的基本操作】
包括数据库的DDL、DML、DQL的所有基本操作;建表、修改表结构、删除表、修改字符集、插入、更新、删除记录、清空表、数据库基本查询、比较、逻辑运算符、in关键字、范围查询、like查询、is null等.........原创 2022-08-27 22:45:56 · 1873 阅读 · 0 评论 -
01【数据库的介绍】
结构化查询语言,简称SQL;是一种通用的数据库查询语言,不只在MySQL中可以使用,其它数据库也可以使用。但不同的数据库之间SQL语句会有一些差别。原创 2022-08-27 22:41:05 · 3298 阅读 · 0 评论