博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL day11
阅读量:3965 次
发布时间:2019-05-24

本文共 2427 字,大约阅读时间需要 8 分钟。

五、视图的更新

在这里插入图片描述

在这里插入图片描述

#具备以下特点的视图不允许更新

#1.包含以下关键字的sql语句:分组函数、distinct、group by、having、union、或者union all

在这里插入图片描述

在这里插入图片描述

常量视图

在这里插入图片描述

select中包含子查询

在这里插入图片描述

join可以更新 不能插入

在这里插入图片描述

在这里插入图片描述

from一个不能更新的视图

在这里插入图片描述

在这里插入图片描述

where子句的子查询引用了from子句中的表

在这里插入图片描述

在这里插入图片描述

视图和表的对比

在这里插入图片描述

变量

系统变量:

全局变量
会话变量
自定义变量:
用户变量
局部变量

#一、系统变量

注意:
如果是全局级别,则需要加global,如果是会话级别,则需要添加session,如果不写,则默认session
/*说明:变量由系统提供的,不是用户定义,属于服务器层面

使用的语法:

1、查看所有的系统变量

show global | session variables;

2、查看满足条件的部分系统变量

show global |【session】 variables like '%char%';

3、查看指定的某个系统变量的值

select   @@global | 【session】.系统变量名;

4、为某个系统变量赋值

方式一:

set global | 【session】 系统变量名= 值;

方式二:

set @@global | 【session】.系统变量名 = 值;

#全局变量的演示

作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启
#1.查看所有的全局变量

show global variables;

在这里插入图片描述

#2.查看部分的全局变量

show global variables like '%char%';

在这里插入图片描述

#3.查看指定的全局变量的值

select @@global.autocommit;

在这里插入图片描述

#4.为某个指定的全局变量赋值

set @@global.autocommit = 0;

在这里插入图片描述

#会话变量

作用域:仅仅针对于当前会话(连接)有效
在这里插入图片描述

在这里插入图片描述

二、自定义变量

说明:变量是用户自定义的,不是由系统的

使用步骤:
声明
赋值
使用(查看、比较、运算等)

#1.用户变量

作用域:针对于当前会话(连接)有效,同于会话变量的作用域
应用在任何地方,也就是begin end里面或begin end外面
#①声明并初始化

set @用户变量名=值;或者set @用户变量名:=值;或者select @用户变量名:=值;

#②赋值(更新用户变量的值)

方式一:通过set或select

set @用户变量名=值;或者set @用户变量名:=值;或者select @用户变量名:=值;

方式二:通过select into

select 字段 into 变量名from 表;

#③使用(查看用户变量的值)

select @用户变量名;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
#2.局部变量
作用域:仅仅在定义它的begin end中有效
应用在begin end中的第一句话
#①声明

declare 变量名 类型;declare 变量名 类型 default 值;

#②赋值

方式一:通过set或select

set 局部变量名=值;或者set 局部户变量名:=值;或者select @局部变量名:=值;

方式二:通过select into

select 字段 into 局部变量名from 表;

#③使用

select 局部变量名;

对比用户变量和局部变量:

在这里插入图片描述

#存储过程和函数

存储过程和函数:类似于java中的方法

好处:
1、提高代码的重要性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
#存储过程
含义:一组预先编译好的sql语句的集合,理解成批处理语句
#一、创建语法

create procedure 存储过程名(参数列表)begin           存储过程体(一组合法的sql语句)end

注意:

1、参数列表包含三部分
参数模式 参数名 参数类型
举例:
in stuname varchar(20)

参数模式:

in:该参数可以作为输入,也就是该参数需要调用方法入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

2、如果存储过程体仅仅只有一句话,begin end可以省略

存储过程体中的每条sql语句的结尾要求必须加分号
存储过程的结尾可以使用 delimiter 重新设置
语法:
delimiter 结束标记
案例:
delimiter $
#二、调用语法
call 存储过程名(实参列表);
#1.空参列表
#案例:插入到admin表中五条记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#2.创建带in模式参数的存储过程

#案例1:创建存储过程实现 根据女神名,查询对应的男神信息
在这里插入图片描述
在这里插入图片描述

#案例2:创建存储过程实现用户是否登录成功

在这里插入图片描述
在这里插入图片描述
#3、创建带out模式的存储过程
#案例1:根据女神名,返回对应的男神名
在这里插入图片描述
在这里插入图片描述

#案例2:根据女神名,返回对应的男神名和男神魅力值

在这里插入图片描述
在这里插入图片描述
#4.创建带inout模式参数的存储过程
#案例1:传入a和b两个值,最终a和b都翻倍并返回
在这里插入图片描述
在这里插入图片描述
begin end内部相当于局部变量的赋值a,b是局部变量

【存储过程案例一】

#一、创建存储过程实现传入用户名和密码,插入到admin表中
在这里插入图片描述
在这里插入图片描述
#二、创建存储过程实现传入女神编号,返回女神姓名和电话
在这里插入图片描述
在这里插入图片描述
#三、创建存储过程实现传入两个女神的生日,返回大小
在这里插入图片描述
在这里插入图片描述
#三、删除存储过程

语法:drop procedure 存储过程名

在这里插入图片描述

#四、查看存储过程的信息

语法:show create procedure 存储过程名

在这里插入图片描述

【存储过程案例二】
#四、创建存储过程实现传入一个日期,格式化成xx年xx月xx日并返回
在这里插入图片描述
在这里插入图片描述
#五、创建存储过程实现传入女神名称,返回 女神 and 男神 格式的字符串
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#六、创建存储过程根据传入的条目数和起始索引,查询beauty表的记录
在这里插入图片描述
在这里插入图片描述

转载地址:http://xjzki.baihongyu.com/

你可能感兴趣的文章
Flutter UI基础 - Widgets 之 InkWell 和 Ink
查看>>
Spring - sentinel和hystrix比较
查看>>
MySQL - 索引之B+树
查看>>
Spring - Dubbo的底层实现原理和机制
查看>>
Flutter Dio引入和简单的Get/Post请求
查看>>
Flutter Dart 和 Flutter json转实体类(插件自动生成)
查看>>
Flutter 路由跳转fluro
查看>>
Flutter 日期插件date_format 中文 国际化 及flutter_cupertino_date_picker
查看>>
Flutter 插件笔记 | 屏幕适配 flutter_screenutil
查看>>
Flutter UI基础 - 侧拉抽屉菜单
查看>>
Flutter UI基础 - AppBar中标题文字如何居中
查看>>
Flutter UI基础 - Drawer 抽屉视图与自定义header
查看>>
Flutter UI基础 - 点击展开和关闭
查看>>
Flutter UI基础 - GridView
查看>>
Flutter UI - 打造一个圆形滑块(Slider)
查看>>
Flutter UI基础 - 分割线效果实现
查看>>
Flutter UI基础 - DecoratedBox组件
查看>>
Flutter UI基础 - 使用InkWell给任意Widget添加点击事件
查看>>
OC WKWebView的使用
查看>>
Flutter UI基础 - Image.asset 图片铺满布局
查看>>