IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL基础复习(下) -> 正文阅读

[大数据]MySQL基础复习(下)

数据库对象与视图

1.数据库对象

在这里插入图片描述

2.为什么要使用视图?

有时候我们需要针对不同的用户提供不同的查询视图.
①操作简单
②减少数据冗余
③数据安全
④适应灵活多变的需求
⑤能够分解复杂的查询逻辑

3.视图的理解?

①视图可以理解为一个虚拟表,本身不存储数据,本质上可以看做一个存储起来的select语句.
②视图中涉及到的表,叫做基表
③对视图中的数据进行操作,基表中的数据也会发生变化
④删除视图本身,不会对基表产生影响
⑤视图的应用场景: 针对小型项目,不推荐使用视图,大型项目可以考虑。
⑥视图的优点,简化查询,控制数据的访问

视图中的数据大部分情况下是可以更新的,但在以下情况下是不能更新的:
①视图中有基表没有的列
在这里插入图片描述

运行结果:
在这里插入图片描述


②select中使用了join联合查询
在这里插入图片描述
运行结果:
在这里插入图片描述


利用视图进行数据格式化
在这里插入图片描述

视图结构的修改:
在这里插入图片描述

存储过程与函数

存储过程与视图的区别?
①视图理解为一张虚拟表 ---------存储过程理解为sql语句的批处理!
②视图没有经过预编译,存储过程经过了预编译
③视图一般用于查询,结构比较简单
存储过程可以直接操作底层数据表,结构可以很复杂

存储过程和存储函数的区别?
1.存储过程可以没有返回值存储函数必须有返回值
2.存储函数可以用在查询语句当中,存储过程不行

在这里插入图片描述

存储过程

存储过程的三个参数: IN OUT INOUT
在这里插入图片描述
无参数:
在这里插入图片描述

带IN
在这里插入图片描述
带OUT
在这里插入图片描述
带IN OUT
在这里插入图片描述

带INOUT
在这里插入图片描述

存储函数

创建简单的存储函数

在这里插入图片描述
调用简单的存储函数
在这里插入图片描述

变量、流程控制与游标

变量

变量分为系统变量用户自定义变量

1.系统变量

系统变量分为全局系统变量(需要添加global关键字)以及会话系统变量(需要添加session关键字)。
从下图看,可理解到有些系统变量既是全局系统变量又是会话系统变量

在这里插入图片描述

全局系统变量针对于所有会话有效,但是不能重启MySQL服务。
会话系统变量针对当前会话有效。

对于既是全局系统变量又是会话系统变量,我们可以指定他是全局系统变量或者是会话系统变量。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
修改系统变量
在这里插入图片描述

2.用户自定义变量

用户自定义变量又分为会话用户变量和局部变量
①会话用户变量作用范围:当前会话
②局部变量作用范围:begin ---- end之间,所以只能用于存储过程或存储函数

会话用户变量:
在这里插入图片描述
局部变量:

①使用declare定义局部变量
②只能放在begin—end当中
③且必须放在第一行
④还应该有类型

在这里插入图片描述

注意带IN OUT参数存储过程的调用。(call时,OUT参数也要写上,通过select查询)
在这里插入图片描述
在这里插入图片描述

MySQL程序出错的处理机制

定义条件和处理程序

定义条件是事先定义程序执行过程中可能遇到的问题。
处理程序是定义再遇到了问题时应当采取的处理方式。


错误演示:(email不可为空)
在这里插入图片描述
在navicat和命令行下的错误提示:
在这里插入图片描述
在这里插入图片描述
此时x的值为1(要与下面有错误处理程序的存储过程做对比)


1.定义条件

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

2.定义处理程序

在这里插入图片描述
在这里插入图片描述
案例解析:
在这里插入图片描述
最后执行,x的值为3

流程控制

分支结构之IF

在这里插入图片描述

案例解析:
案例一:
在这里插入图片描述
案例二:
在这里插入图片描述
总结:要记着最后要加END IF

分支结构之CASE

在这里插入图片描述
案例解析:
在这里插入图片描述

循环结构之LOOP

在这里插入图片描述

循环结构之WHILE

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

循环结构之REPEAT

在这里插入图片描述

对比三种循环结构:
1.三种循环结构名称都可以被省略,但是如果循环种添加了循环控制语句(LEAVE或ITERATE)则必须添加名称
2.while 先判断后执行
repate 先执行后判断
loop 以上两种情况都可以

LEAVE和ITERATE的使用

leave不仅可以用在循环结构当中,还可以用在begin----end当中,可以理解为java中的break

在这里插入图片描述

iterate只能用在循环结构当中,相当于java中的continue

游标(对结果集中的数据进行逐条读取)

游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。游标让 SQL 这种面向集合的语言有了面向过程开发的能力。可以理解为指针。

游标的缺点:
在使用游标时,会对数据进行加锁,在业务并发量大时,不仅会影响业务之间的效率,还会消耗系统资源,造成内存的不足。

游标的使用步骤

1.声明游标
2.打开游标
3.使用游标
4.关闭游标

案例解析:
在这里插入图片描述

触发器

触发器的作用:
①保证数据完整性
②帮助我们记录日志
③对操作数据前,对数据进行合法性检查

触发器的缺点:
①可读性比较差
②相关数据的变更,导致触发器出错

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

创建触发器

简单案例:
在这里插入图片描述

复杂案例:

在这里插入图片描述
结果:
在这里插入图片描述

查看触发器

在这里插入图片描述

小细节
对一个表建立了触发器,当表中的数据满足了触发器触发的条件时,一定会触发触发器吗?
不一定,当是由于外键约束而造成的触发条件,不会触发触发器。

MySQL8新特性

新特性之窗口函数

窗口函数的特点是可以分组,而且可以在分组内进行排序,另外,窗口函数不会因为分组而减少原表中的行数,这对我们在原表数据基础上进行分组统计、排序非常有用。

自己的理解:
MySQL 8.0之前的分组函数,会将每一组合并成一条记录;而窗口函数,会保留原来的记录数,将结果置于每一条记录当中。

序号函数

以下三种序号函数的区别:
对于排序字段的重复记录的处理不同
在这里插入图片描述

1.ROW_NUMBER()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.RANK()
在这里插入图片描述
在这里插入图片描述
3.DENSE_RANK
在这里插入图片描述
在这里插入图片描述

分布函数

1.PERCENT_RANK()函数
在这里插入图片描述

2.CUME_DIST()函数
在这里插入图片描述

前后函数

1.LAG(expr,n)函数
在这里插入图片描述
2.LEAD(expr,n)函数
在这里插入图片描述

首尾函数

1.FIRST_VALUE(expr)函数
在这里插入图片描述
2.LAST_VALUE(expr)函数
在这里插入图片描述

其他函数

1.NTH_VALUE(expr,n)函数
在这里插入图片描述
2.NTILE(n)函数
在这里插入图片描述

新特性之公用表表达式

在这里插入图片描述

公用表表达式分为普通公用表表达式普通公用表表达式

普通公用表表达式:
子查询和CTE的简单对比:
在这里插入图片描述

递归公用表表达式:
在这里插入图片描述

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:05:45  更:2021-12-07 12:05:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:41:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码