Mysql从入门到精通

Mysql数据类型

不同类型整数存储所需的字节数是不同的,占用字节数最小的是TINYINT类型,占用字节最大的是BIGINT类型,相应的占用字节越多的类型所能表示的数值范围越大,一般更常用的还是INT这样的普通整数类型
在这里插入图片描述

创建数据库、建表和插入数据

当知道数据库类型之后,我们需要做的就是创建一个数据库,然后对这个数据库当中建立相应的表
1、首先是删除之前用过的数据库,也可以重新创建一个新的数据库
在这里插入图片描述
2、创建数据库并且建立一个新的表
在这里插入图片描述
3、现在向这个表当中添加数据
在这里插入图片描述
这个表示的就是在表当中进行的一些分析和判断,这当中包括了向表中插入对应的数据。
下面来介绍的是对这个表当中的数据进行一个相应的修改,这个时候就要用到对应的update关键字了
在这里插入图片描述
注意
这个时候需要注意的就是对记录进行更新的时候一定要明白的就是对应的位置一定要写,那就是运用where关键字。

数据完整性

这里的数据完整性,指的就是unique之类的东西,在这里,需要介绍的还有一个就是主键和外键的约束
在这里插入图片描述
上图首先建立的是主表,这个主表当中对应的知识就是这样的一个情况,然后就是建立从表,如下图所示
在这里插入图片描述
这个当中对应的外键需要去借助其他表当中的主键的时候就需要去借用reference来进行调用
在这里插入图片描述
通过上图的对比我们不难发现问题,那就是因为表sc当中的数据stu_no是通过表stu来建立对应的外键,所以这个外键对应的数据一定是要在主键当中真实存在的,而不能凭空捏造。

数据查询语言DQL

条件查询

条件查询:顾名思义,就是根据数据栏的条件来对数据进行查询,这个当中需要注意的就是连接词where。

In和like的使用

在这里插入图片描述

下面紧接着就是关于like的介绍
在这里插入图片描述

函数

在这里插入图片描述
ABC()函数就是求值的函数
然后还可以通过对一个表当中的数据通过函数来求出。

查询结果排序与分页

首先我们要创建一个员工表
在这里插入图片描述
然后就是将这个员工表当中的数据插入进去
在这里插入图片描述
在这里插入图片描述
上图显示的就是通过降序排序对应的数据,由于升序当中即使不去设置,直接:select * from employee order by salary;,对应的就是升序,不信的话咱们可以康康:
在这里插入图片描述
这里,当我们想要通过性别来进行排序的时候,就会发现一个很奇怪的现象,那就是这个性别从上到下是女生在上,男生在下进行的
在这里插入图片描述
下面我们再来看看limit的用法

在这里插入图片描述
对应的这个需要我来进行一个解释,那就是说啊,这个limit不仅可以命令出显示几行命令,还可以指出对于这个命令,当limit后面跟上两个数字的时候,指定的还是可以进行分页显示的东西在这里面。

count(*)还有group的用法

在这里插入图片描述
在这里还要讲以下having和where其实是很相似的,这个就是在说明一些东西在里面。
在这里插入图片描述
在这里插入图片描述
上图提到的就是group_concat这样的一个东西在里面,这个东西对应的就是将内容给显示出来.。

使用distinct去除重复数据

在这里插入图片描述

左连接和右连接

在这里插入图片描述
select A.stu_no,A.name,B.course,B.score
from student A
join Score B on(A.stu=B.stu);//这个就是对应的内连接
下面来介绍的是左连接
select A.stu_no,A.name,B.course,B.score
from studentA
left join ScoreB on(A.stu=B.stu);
这个左连接就是说执行的那个左连接对应的是左表对应的信息会全部显示出来,右表只会显示对应的左表当中的信息。
下面来介绍右连接
这个就是说右连接当中对应的右表会全部显示出来,然而左表只会显示出满足右表当中的信息的东西。

慢日志

首先就是对慢日志进行一个查询
在这里插入图片描述
通过上面的查询可以看到slog_query_log的值为ON,表面二进制日志已经打开。
下面是产看二进制日志文件个数及文件名,执行命令及结果如下:
在这里插入图片描述
当你要删除日志的时候,有两种方法进行删除,分别是:

PURGE{MASTER |BINARY}LOGS TO ‘log_name’
PURGE{MASTER|BINARY}LOGS BEFORE ‘date’

这是两种删除方法,第一种方法对应的是删除比该文件名编号要低的日志,第二种方法是删除在日期之前创建的日志,下面就只介绍第一种方法。
在这里插入图片描述

查询分析器EXPLAN

在这里插入图片描述
在这里插入图片描述
下面就来利用一个表来使用EXPLAIN,来观看会发生什么样的状况
在这里插入图片描述

索引的基本使用

创建普通索引

在这里插入图片描述
在这里插入图片描述

这个显示的就是在表当中修改一个普通的索引,结果可以看到下面对应的在employee表当中对应的name字段成功建立的索引,其索引名称name为Mysql自动添加。

创建唯一索引

为什么要创建唯一索引呢,这是在减少查询索引列操作的执行时间,尤其是对比较庞大的数据表。它与前面的普通索引类似,不同的就是:索引的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
在这里插入图片描述

创建单列索引

单列索引是在数据表中的某一个字段建立的索引,一个表中可以创建多个单列索引。前面两个例子创建的都是单列索引。
创建一个表t2,在表的name字段上创建单列索引
在这里插入图片描述

创建组合索引

创建表t3,在表中的id,name,age字段上面建立一个组合索引,SQL语句如下:
在这里插入图片描述
在这里插入图片描述
这就是一个很重要的东西在里面。这个可以很明显地显示出来创建了一个

创建全文索引

FullText全文索引可以用于全文搜索。只有MyISAM存储引擎支持FullTEXT索引,并且只为char、varchar和TEXT列创建索引。索引总是对整个列进行,不支持局部索引。
在这里插入图片描述

什么是覆盖索引

覆盖索引又称为索引覆盖,即select地数据列只从索引种就能得到,不必读取数据行,也就是只需要扫描索引就可以得到查询结果。

Mysql高级进阶

事务控制

1、了解什么是事务控制
事务是作为一个逻辑控制单元执行的一系列操作,这些操作要么全部成功,要么全部失败。事务确保对多个数据的修改作为一个单元来处理。

1、在Mysql数据库中,只有使用了Innodb存储引擎的数据库或表才支持事务。
2、事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行
3、事务用于管理insert、UPDATE和DELETE语句。
在这里插入图片描述

在开启一个事务的时候,可以使用start transaction或begin,或者将autocommit的值设置为0.d

理解事务,那就是说小张从银行取出了100元,小王的账户入账100元,那么这二者,一个的账户就需要扣除100元,另外一个的账户就需要增加100元,而且必须满足一致性、原子性、持续性、隔离性。

原子性: 事务必须是原子工作单元,事务中包含的各操作要么都做,要么都不做
一致性: 事务在执行完成时,必须使所有数据都保持一致状态
**持续性:**事务执行完成之后,它对系统的影响是永久性的
**隔离性:**事务独立运行。多个事务之间相互隔离,互不干扰。事务的百分白隔离,会牺牲速度。

首先是截图看看这样进行的一个建表和建立表当中对应的信息
在这里插入图片描述
接下来就是让张三在账户上面增加1000,然后设置书写错误使得李四不能增钱,然后我们来看看结果:
在这里插入图片描述
于是,我们想到了利用事务控制来进行一定的管理
在这里插入图片描述

以上的截图中包含了对于事务的开启和对于事务的关闭,这样就保证了事务的四大特性,使得能够进行。

分区表

分区表就是按照某种规则将同一表的数据分段划分到多个位置存储,对数据的分区存储提高了数据库的性能,被分区存储的数据在物理上是多个文件,但在逻辑上仍然是一个表,对表的任何操作都跟没分区之前一样。在执行增删改查等操作时,数据库会自动找到对应的分区,然后执行操作

视图

视图是一个虚拟表,其内容由select查询语句定义。和真实的表一样,视图也包含行和列,对视图的操作与对表的操作基本一致。视图中的数据是在使用视图时动态生成,视图中的数据都存储在基表中。
可读性:简化了复杂的查询,使复杂的查询更易于理解和使用。
重用性:视图是对复杂查询语句的封装,对数据库重构,不会影响程序的运行。
安全性:视图可以隐藏一些敏感的信息,可以把权限限定到行列级别。
首先我们来创建两个表,这两个表分别表示的是学生个人信息和对应的分数
在这里插入图片描述
下面是对应的分数表
在这里插入图片描述
在这里插入图片描述
这里我们会发现对应的视图也存在于相应的表当中去了,因此,我们需要对这个视图重新进行选出来查看
在这里插入图片描述
前面我们也说了,视图实际上就是一个虚拟的表,因此,我们在做视图的设置的时候,需要做的就是运用连接来进行查看
在这里插入图片描述
在这里插入图片描述
这就是具体的操作步骤
但是需要注意的是,当进行多表关联的一个操作的时候,视图时不能进行修改的。

存储过程及基本使用

什么时存储过程?
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行,类似于编程语言中的方法或函数。
存储过程的优点
存储过程是封装,增强可复用性
存储过程可以隐藏复杂的业务逻辑、商业逻辑
存储过程支持接受参数,并返回运算结果
缺点
存储过程的可移植性较差
无法用Explain对存储过程进行分析
存储过程难以调试和扩展
在这里插入图片描述
call my_sum(10,20,@result);
select result;

其实不需要去过多地死记存储过程当中对应的东西,而只需要对当中的一些业务进行分析就可以了

存储过程实战:给指定用户发邮件通知

1.掌握存储过程的应用
就是说在这个当中先建立表当中的内容,然后利用存储过程来对这个邮件进行发送,最后直接用call进行调用即可

触发器实战

触发器用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,当对某张表进行insert、delete、update操作时就会触发执行它。
首先创建这样的一个表
在这里插入图片描述
在这里插入图片描述
delimiter//
create trigger send_email_trigger after insert on user_info for each row
begin
insert into email_info(email,content,send_time)values(NEW.email,‘欢迎加入MySQL阵营!’,now());
end
//
delimiter;

预处理

大大提高了客户端和服务器端数据传输的效率。当创建一个预定义SQL时,客户端向服务器发送一个SQL语句的原型;服务器端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQl 语句处理句柄。
首先是定义预处理语句
在这里插入图片描述
执行预处理语句
在这里插入图片描述
这当中对应得数据必须是真实存在的,才可以继续进行查询。用完之后还需要对这个东西进行删除才可以,也可以不删除,但是毕竟删除了的话更加清晰。

在这里插入图片描述

定时备份数据库

数据安全肯定是第一位的,
1、熟悉定时备份数据库的解决方案

字符集

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值